k-skill-korean-ai-tools

AI 에이전트를 위한 한국 서비스 자동화 스킬 모음 — SRT/KTX 예매, KBO, 로또, 카카오톡, 지하철, HWP, 우편번호 등

22 stars

Best use case

k-skill-korean-ai-tools is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

AI 에이전트를 위한 한국 서비스 자동화 스킬 모음 — SRT/KTX 예매, KBO, 로또, 카카오톡, 지하철, HWP, 우편번호 등

Teams using k-skill-korean-ai-tools should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/k-skill-korean-ai-tools/SKILL.md --create-dirs "https://raw.githubusercontent.com/Aradotso/trending-skills/main/skills/k-skill-korean-ai-tools/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/k-skill-korean-ai-tools/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How k-skill-korean-ai-tools Compares

Feature / Agentk-skill-korean-ai-toolsStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

AI 에이전트를 위한 한국 서비스 자동화 스킬 모음 — SRT/KTX 예매, KBO, 로또, 카카오톡, 지하철, HWP, 우편번호 등

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# k-skill

> Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection.

한국인을 위한 AI 에이전트 스킬 모음집. Claude Code, Codex, Cursor 등 코딩 에이전트에서 SRT 예매, KBO 조회, 로또 확인, 카카오톡 전송, 서울 지하철 도착정보, HWP 변환, 우편번호 검색 등을 자동화할 수 있습니다.

---

## 설치

### 전체 스킬 설치 (권장)

```bash
# npx로 전체 스킬 설치
npx k-skill install

# 또는 전역 설치
npm install -g k-skill
k-skill install
```

### 선택 설치

```bash
# SRT만 설치
npx k-skill install srt

# KBO + 로또만 설치
npx k-skill install kbo lotto
```

### 설치 후 초기 설정

```bash
# k-skill-setup 스킬 실행 (sops+age 설정, secrets 파일 생성, 런타임 확인)
k-skill-setup
```

초기 설정 순서:
1. `k-skill install` 실행
2. `k-skill-setup` 실행 → `sops + age` 키 생성, 공통 secrets 파일 초기화
3. secrets 값 로컬에 안전하게 등록 (채팅창에 붙여넣기 금지)
4. 각 기능별 문서 확인

---

## 보안 및 시크릿 관리

**절대 금지:**
- 채팅 메시지에 비밀번호/API 키 직접 입력
- `.env` 파일을 git에 커밋
- 코드 내 하드코딩

**표준 환경변수 이름:**

```bash
# SRT
export SRT_USERNAME="your_id"
export SRT_PASSWORD="your_password"

# KTX/Korail
export KORAIL_USERNAME="your_id"
export KORAIL_PASSWORD="your_password"

# 서울 지하철 (공공데이터포털 API 키)
export SEOUL_METRO_API_KEY="your_api_key"
```

**sops + age로 암호화 저장 (권장):**

```bash
# age 키 생성
age-keygen -o ~/.config/sops/age/keys.txt

# secrets 파일 암호화
sops --age $(cat ~/.config/sops/age/keys.txt | grep "public key" | awk '{print $4}') \
  --encrypt secrets.yaml > secrets.enc.yaml

# 복호화하여 환경변수 주입
sops --decrypt secrets.enc.yaml | k-skill env inject
```

---

## 기능별 사용법

### 1. SRT 예매

열차 조회, 예약, 예약 확인, 취소를 지원합니다.

```javascript
const { SRTClient } = require('k-skill/srt');

const client = new SRTClient({
  username: process.env.SRT_USERNAME,
  password: process.env.SRT_PASSWORD,
});

// 로그인
await client.login();

// 열차 조회
const trains = await client.searchTrains({
  departure: '수서',
  arrival: '부산',
  date: '20260401',   // YYYYMMDD
  time: '080000',     // HHmmss
  passengers: 1,
});

console.log(trains);
// [{ trainNo: 'SRT123', departTime: '08:00', arrivalTime: '10:30', price: 59800, seats: 'available' }, ...]

// 예약
const reservation = await client.reserve({
  trainNo: trains[0].trainNo,
  passengers: 1,
  seatType: 'normal', // 'normal' | 'window' | 'aisle'
});

console.log(reservation.reservationId);

// 예약 확인
const myReservations = await client.getReservations();
console.log(myReservations);

// 예약 취소
await client.cancelReservation(reservation.reservationId);
```

**에이전트 프롬프트 예시:**
```
"4월 1일 수서→부산 SRT 08시 이후 첫 열차 창가석으로 예약해줘"
```

---

### 2. KTX 예매

> ⚠️ 현재 작동하지 않습니다. 향후 지원 예정.

```javascript
const { KTXClient } = require('k-skill/ktx');
// KTX/Korail 열차 조회, 예약, 예약 확인, 취소 지원 목표
// 현재 개발 중 — 사용 불가
```

---

### 3. 카카오톡 Mac CLI

macOS에서 `kakaocli`를 사용한 대화 조회, 검색, 메시지 전송. 인증 불필요.

```javascript
const { KakaoTalkMac } = require('k-skill/kakaotalk-mac');

const kakao = new KakaoTalkMac();

// 대화 목록 조회
const conversations = await kakao.listConversations();
console.log(conversations);
// [{ name: '홍길동', lastMessage: '안녕', unread: 2 }, ...]

// 특정 대화 검색
const results = await kakao.searchConversations('개발팀');

// 테스트 전송 (실제 전송 전 확인)
const preview = await kakao.previewSend({
  to: '홍길동',
  message: '안녕하세요!',
});
console.log(preview); // { to: '홍길동', message: '안녕하세요!', confirmed: false }

// 실제 전송 (사용자 확인 후)
await kakao.send({
  to: '홍길동',
  message: '안녕하세요!',
  confirmed: true, // 반드시 사용자 동의 후 true
});
```

> **중요:** 에이전트는 사용자가 명시적으로 확인한 경우에만 `confirmed: true`로 실제 전송합니다.

**CLI 직접 사용:**

```bash
# 대화 목록
kakaocli list

# 메시지 전송
kakaocli send --to "홍길동" --message "테스트 메시지"

# 대화 내용 조회
kakaocli read --name "홍길동" --count 20
```

---

### 4. 서울 지하철 도착정보 조회

공공데이터포털 API 키 필요.

```javascript
const { SeoulSubway } = require('k-skill/seoul-subway');

const subway = new SeoulSubway({
  apiKey: process.env.SEOUL_METRO_API_KEY,
});

// 역 이름으로 실시간 도착정보 조회
const arrivals = await subway.getArrivals('강남');

console.log(arrivals);
/*
[
  {
    line: '2호선',
    station: '강남',
    direction: '성수방면',
    nextTrain: '1분 후',
    followingTrain: '5분 후',
    trainNo: '2234'
  },
  ...
]
*/

// 특정 노선 필터링
const line2 = await subway.getArrivals('강남', { line: '2호선' });

// 역 코드로 조회
const byCode = await subway.getArrivalsByCode('0222');
```

**에이전트 프롬프트 예시:**
```
"지금 강남역 2호선 외선순환 다음 열차 언제 와?"
```

---

### 5. KBO 경기 결과 조회

인증 불필요.

```javascript
const { KBOClient } = require('k-skill/kbo');

const kbo = new KBOClient();

// 오늘 경기 일정/결과
const today = await kbo.getGames();
console.log(today);

// 특정 날짜
const games = await kbo.getGames({ date: '20260401' }); // YYYYMMDD

// 팀별 필터링
const lgGames = await kbo.getGames({
  date: '20260401',
  team: 'LG',
});

console.log(lgGames);
/*
[
  {
    homeTeam: 'LG',
    awayTeam: 'KIA',
    homeScore: 5,
    awayScore: 3,
    status: 'final',   // 'scheduled' | 'live' | 'final'
    stadium: '잠실',
    startTime: '18:30'
  }
]
*/

// 팀 목록
const teams = kbo.getTeamList();
// ['LG', 'KIA', 'SSG', 'NC', 'KT', '두산', '한화', '롯데', '삼성', '키움']
```

---

### 6. 로또 당첨 확인

인증 불필요.

```javascript
const { LottoClient } = require('k-skill/lotto');

const lotto = new LottoClient();

// 최신 회차 당첨번호
const latest = await lotto.getLatestResult();
console.log(latest);
/*
{
  round: 1162,
  date: '2026-03-28',
  numbers: [3, 14, 22, 31, 40, 43],
  bonusNumber: 7,
  prizes: {
    first: { winners: 12, amount: 2500000000 },
    ...
  }
}
*/

// 특정 회차
const specific = await lotto.getResult(1100);

// 내 번호 대조
const myNumbers = [3, 14, 22, 31, 40, 43];
const check = await lotto.checkNumbers(myNumbers);

console.log(check);
/*
{
  round: 1162,
  myNumbers: [3, 14, 22, 31, 40, 43],
  matched: [3, 14, 22, 31, 40, 43],
  bonusMatched: false,
  rank: 1,  // 1~5등 또는 null
  prize: 2500000000
}
*/
```

---

### 7. HWP 문서 처리

`.hwp` 파일을 JSON/Markdown/HTML로 변환, 이미지 추출, 배치 처리 지원. 인증 불필요.

```javascript
const { HWPProcessor } = require('k-skill/hwp');

const hwp = new HWPProcessor();

// HWP → Markdown 변환
const markdown = await hwp.toMarkdown('./document.hwp');
console.log(markdown);

// HWP → JSON 변환
const json = await hwp.toJSON('./document.hwp');
console.log(json.paragraphs);

// HWP → HTML 변환
const html = await hwp.toHTML('./document.hwp');

// 이미지 추출
const images = await hwp.extractImages('./document.hwp', {
  outputDir: './extracted-images',
});
console.log(images); // ['./extracted-images/image_001.png', ...]

// 배치 처리 (디렉토리 내 전체 HWP 파일)
const results = await hwp.batchConvert('./hwp-files/', {
  format: 'markdown',
  outputDir: './converted/',
});

// Windows 직접 제어 (한글과컴퓨터 앱 설치된 경우)
const winHwp = new HWPProcessor({ useWindowsApp: true });
const nativeResult = await winHwp.toMarkdown('./document.hwp');
```

**CLI 사용:**

```bash
# 단일 파일 변환
k-skill hwp convert document.hwp --format markdown

# 배치 변환
k-skill hwp batch ./hwp-folder/ --format json --output ./output/

# 이미지 추출
k-skill hwp extract-images document.hwp --output ./images/
```

---

### 8. 우편번호 검색

공식 우체국 우편번호 API 사용. 인증 불필요.

```javascript
const { ZipcodeClient } = require('k-skill/zipcode');

const zipcode = new ZipcodeClient();

// 주소 키워드로 검색
const results = await zipcode.search('강남구 테헤란로');

console.log(results);
/*
[
  {
    zipcode: '06236',
    roadAddress: '서울특별시 강남구 테헤란로 152',
    jibunAddress: '서울특별시 강남구 역삼동 736',
    building: '강남파이낸스센터'
  },
  ...
]
*/

// 정확한 건물명으로 검색
const exact = await zipcode.search('롯데월드타워');

// 우편번호로 역조회
const byZip = await zipcode.getByZipcode('05510');
```

---

## 공통 패턴

### 에러 핸들링

```javascript
const { SRTClient, SRTError, SRTAuthError } = require('k-skill/srt');

try {
  const client = new SRTClient({
    username: process.env.SRT_USERNAME,
    password: process.env.SRT_PASSWORD,
  });
  await client.login();
  const trains = await client.searchTrains({ ... });
} catch (err) {
  if (err instanceof SRTAuthError) {
    console.error('로그인 실패. 아이디/비밀번호를 확인하세요.');
  } else if (err instanceof SRTError) {
    console.error('SRT 오류:', err.message, err.code);
  } else {
    throw err;
  }
}
```

### 환경변수 로드 패턴

```javascript
// .env 파일 사용 시
require('dotenv').config();

// sops 복호화 후 환경변수 주입 시
// sops --decrypt secrets.enc.yaml | k-skill env inject 실행 후 자동 주입됨

const { SRTClient } = require('k-skill/srt');
const client = new SRTClient({
  username: process.env.SRT_USERNAME,   // 환경변수 참조
  password: process.env.SRT_PASSWORD,
});
```

---

## CLI 전체 명령어 요약

```bash
# 설치 및 설정
k-skill install                    # 전체 스킬 설치
k-skill install srt kbo lotto      # 선택 설치
k-skill-setup                      # sops+age 설정, secrets 초기화
k-skill env inject                 # 환경변수 주입

# SRT
k-skill srt search --from 수서 --to 부산 --date 20260401 --time 080000
k-skill srt reserve --train SRT123 --passengers 1
k-skill srt list                   # 예약 목록
k-skill srt cancel --id RES456     # 예약 취소

# KBO
k-skill kbo today                  # 오늘 경기
k-skill kbo games --date 20260401
k-skill kbo games --team LG

# 로또
k-skill lotto latest               # 최신 회차
k-skill lotto result --round 1100
k-skill lotto check --numbers 3,14,22,31,40,43

# 지하철
k-skill subway arrivals --station 강남
k-skill subway arrivals --station 강남 --line 2호선

# HWP
k-skill hwp convert doc.hwp --format markdown
k-skill hwp batch ./folder/ --format json
k-skill hwp extract-images doc.hwp

# 우편번호
k-skill zipcode search "강남구 테헤란로"
k-skill zipcode lookup 06236

# 카카오톡 (macOS)
k-skill kakao list
k-skill kakao send --to "홍길동" --message "메시지"
```

---

## 트러블슈팅

### `SRT_USERNAME` 환경변수가 없다는 오류

```bash
# 환경변수 확인
echo $SRT_USERNAME

# .env 파일에 등록
echo 'SRT_USERNAME=your_id' >> .env
echo 'SRT_PASSWORD=your_password' >> .env

# sops로 암호화 관리 권장
k-skill-setup  # 다시 실행하여 secrets 등록
```

### HWP 변환 실패

```bash
# 의존 패키지 확인
npm install -g hwp.js

# Python 백엔드 사용 시
pip install python-hwp

# Windows에서 한컴 앱 직접 제어 시
k-skill hwp convert doc.hwp --use-native
```

### 카카오톡 CLI (macOS) 실행 안 됨

```bash
# kakaocli 설치 확인
which kakaocli

# 없으면 설치
brew install kakaocli
# 또는
npm install -g kakaocli
```

### 서울 지하철 API 키 오류

```bash
# 공공데이터포털에서 API 키 발급
# https://data.seoul.go.kr → 서울시 지하철 실시간 도착정보

export SEOUL_METRO_API_KEY="발급받은_키"
```

### Node.js 버전 오류

```bash
node --version  # v18 이상 권장

# nvm으로 버전 변경
nvm install 20
nvm use 20
```

---

## 로드맵

현재 포함:
- ✅ SRT 예매
- ⚠️ KTX 예매 (개발 중, 현재 미작동)
- ✅ 카카오톡 Mac CLI
- ✅ 서울 지하철 도착정보
- ✅ KBO 경기 결과
- ✅ 로또 당첨 확인
- ✅ HWP 문서 처리
- ✅ 우편번호 검색

다음 후보:
- 쿠팡 주문 조회
- 다나와 가격 비교
- 네이버 스토어 주문 확인
- 당근마켓 매물 조회
- 정부24 민원 조회
- 홈택스 세금 조회

---

## 참고 링크

- [GitHub 저장소](https://github.com/NomaDamas/k-skill)
- [설치 가이드](https://github.com/NomaDamas/k-skill/blob/main/docs/install.md)
- [보안/시크릿 정책](https://github.com/NomaDamas/k-skill/blob/main/docs/security-and-secrets.md)
- [전체 로드맵](https://github.com/NomaDamas/k-skill/blob/main/docs/roadmap.md)

Related Skills

kordoc-korean-document-parser

22
from Aradotso/trending-skills

Parse HWP, HWPX, and PDF Korean documents to Markdown using kordoc — supports CLI, programmatic API, and MCP server integration.

humanize-korean-ai-text

22
from Aradotso/trending-skills

AI가 쓴 한글 글을 사람이 쓴 것처럼 윤문해주는 Claude Code 스킬 — 번역투·관용구·구조적 AI 패턴 40+ 서브 패턴 탐지 및 수술적 수정

```markdown

22
from Aradotso/trending-skills

---

zeroboot-vm-sandbox

22
from Aradotso/trending-skills

Sub-millisecond VM sandboxes for AI agents using copy-on-write KVM forking via Zeroboot

yourvpndead-vpn-detection

22
from Aradotso/trending-skills

Android app that detects VPN/proxy servers (VLESS/xray/sing-box) via local SOCKS5 vulnerability, exposing exit IPs and server configs without root

xata-postgres-platform

22
from Aradotso/trending-skills

Expert skill for Xata open-source cloud-native Postgres platform with copy-on-write branching, scale-to-zero, and Kubernetes deployment

x-mentor-skill-nuwa

22
from Aradotso/trending-skills

AI-powered X (Twitter) content strategy skill that distills methodologies from 6 top creators + open-source algorithm data into actionable writing, growth, and monetization guidance.

wx-favorites-report

22
from Aradotso/trending-skills

End-to-end pipeline to extract, decrypt, and visualize WeChat Mac favorites from encrypted SQLite DB into an interactive HTML report.

wterm-web-terminal

22
from Aradotso/trending-skills

Web terminal emulator with Zig/WASM core, DOM rendering, and React/vanilla JS bindings

worldmonitor-intelligence-dashboard

22
from Aradotso/trending-skills

Real-time global intelligence dashboard with AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking

witr-process-inspector

22
from Aradotso/trending-skills

CLI and TUI tool that explains why processes, services, and ports are running by tracing causality chains across supervisors, containers, and shells.

wildworld-dataset

22
from Aradotso/trending-skills

WildWorld large-scale action-conditioned world modeling dataset with 108M+ frames from a photorealistic ARPG game, featuring per-frame annotations, 450+ actions, and explicit state information for generative world modeling research.