k-skill-korean-ai-tools

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

k-skill

k-skill

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

ara.so开发的Skill —— 2026日常技能集合。
面向韩国用户的AI Agent技能集合。在Claude Code、Codex、Cursor等编码Agent中,可实现SRT购票、KBO赛事查询、彩票开奖确认、KakaoTalk消息发送、首尔地铁到站信息查询、HWP格式转换、邮政编码搜索等自动化操作。

설치

安装

전체 스킬 설치 (권장)

安装全部技能(推荐)

bash
undefined
bash
undefined

npx로 전체 스킬 설치

使用npx安装全部技能

npx k-skill install
npx k-skill install

또는 전역 설치

或全局安装

npm install -g k-skill k-skill install
undefined
npm install -g k-skill k-skill install
undefined

선택 설치

选择性安装

bash
undefined
bash
undefined

SRT만 설치

仅安装SRT技能

npx k-skill install srt
npx k-skill install srt

KBO + 로또만 설치

仅安装KBO和彩票技能

npx k-skill install kbo lotto
undefined
npx k-skill install kbo lotto
undefined

설치 후 초기 설정

安装后初始设置

bash
undefined
bash
undefined

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

执行k-skill-setup技能(配置sops+age,创建secrets文件,检查运行环境)

k-skill-setup

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

---
k-skill-setup

初始设置步骤:
1. 执行`k-skill install`
2. 执行`k-skill-setup` → 生成`sops + age`密钥,初始化公共secrets文件
3. 在本地安全注册secrets值(禁止粘贴至聊天窗口)
4. 查看各功能对应的文档

---

보안 및 시크릿 관리

安全与密钥管理

절대 금지:
  • 채팅 메시지에 비밀번호/API 키 직접 입력
  • .env
    파일을 git에 커밋
  • 코드 내 하드코딩
표준 환경변수 이름:
bash
undefined
绝对禁止:
  • 在聊天消息中直接输入密码/API密钥
  • .env
    文件提交至git
  • 在代码中硬编码密钥
标准环境变量名称:
bash
undefined

SRT

SRT

export SRT_USERNAME="your_id" export SRT_PASSWORD="your_password"
export SRT_USERNAME="your_id" export SRT_PASSWORD="your_password"

KTX/Korail

KTX/Korail

export KORAIL_USERNAME="your_id" export KORAIL_PASSWORD="your_password"
export KORAIL_USERNAME="your_id" export KORAIL_PASSWORD="your_password"

서울 지하철 (공공데이터포털 API 키)

首尔地铁(需公共数据门户API密钥)

export SEOUL_METRO_API_KEY="your_api_key"

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

```bash
export SEOUL_METRO_API_KEY="your_api_key"

**推荐使用sops + age加密存储:**

```bash

age 키 생성

生成age密钥

age-keygen -o ~/.config/sops/age/keys.txt
age-keygen -o ~/.config/sops/age/keys.txt

secrets 파일 암호화

加密secrets文件

sops --age $(cat ~/.config/sops/age/keys.txt | grep "public key" | awk '{print $4}')
--encrypt secrets.yaml > secrets.enc.yaml
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

---
sops --decrypt secrets.enc.yaml | k-skill env inject

---

기능별 사용법

各功能使用方法

1. SRT 예매

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시 이후 첫 열차 창가석으로 예약해줘"

支持列车查询、预订、预订确认及取消。
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);
Agent提示词示例:
"帮我预订4月1日从水原到釜山、08点以后的第一班SRT靠窗座位"

2. KTX 예매

2. KTX购票

⚠️ 현재 작동하지 않습니다. 향후 지원 예정.
javascript
const { KTXClient } = require('k-skill/ktx');
// KTX/Korail 열차 조회, 예약, 예약 확인, 취소 지원 목표
// 현재 개발 중 — 사용 불가

⚠️ 当前无法使用,后续将支持。
javascript
const { KTXClient } = require('k-skill/ktx');
// 目标支持KTX/Korail列车的查询、预订、预订确认及取消
// 目前开发中 — 无法使用

3. 카카오톡 Mac CLI

3. KakaoTalk 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
undefined
在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
});
重要提示: Agent仅在用户明确确认后,才会将
confirmed
设为
true
并执行实际发送操作。
直接使用CLI:
bash
undefined

대화 목록

查看对话列表

kakaocli list
kakaocli list

메시지 전송

发送消息

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

대화 내용 조회

查看对话内容

kakaocli read --name "홍길동" --count 20

---
kakaocli read --name "홍길동" --count 20

---

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

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호선 외선순환 다음 열차 언제 와?"

需公共数据门户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');
Agent提示词示例:
"现在江南站2号线外圈循环的下一班列车什么时候到?"

5. KBO 경기 결과 조회

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', '두산', '한화', '롯데', '삼성', '키움']

无需认证。
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. 로또 당첨 확인

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
}
*/

无需认证。
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 문서 처리

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
undefined
支持将
.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
undefined

단일 파일 변환

单文件转换

k-skill hwp convert document.hwp --format markdown
k-skill hwp convert document.hwp --format markdown

배치 변환

批量转换

k-skill hwp batch ./hwp-folder/ --format json --output ./output/
k-skill hwp batch ./hwp-folder/ --format json --output ./output/

이미지 추출

提取图片

k-skill hwp extract-images document.hwp --output ./images/

---
k-skill hwp extract-images document.hwp --output ./images/

---

8. 우편번호 검색

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');

使用官方邮局邮政编码API,无需认证。
javascript
const { ZipcodeClient } = require('k-skill/zipcode');

const zipcode = new ZipcodeClient();

공통 패턴

通过地址关键词搜索

에러 핸들링

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;
  }
}
const results = await zipcode.search('강남구 테헤란로');
console.log(results); /* [ { zipcode: '06236', roadAddress: '서울특별시 강남구 테헤란로 152', jibunAddress: '서울특별시 강남구 역삼동 736', building: '강남파이낸스센터' }, ... ] */

환경변수 로드 패턴

通过精确建筑名称搜索

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,
});

const exact = await zipcode.search('롯데월드타워');

CLI 전체 명령어 요약

通过邮政编码反向查询

bash
undefined
const byZip = await zipcode.getByZipcode('05510');

---

설치 및 설정

通用模式

错误处理

k-skill install # 전체 스킬 설치 k-skill install srt kbo lotto # 선택 설치 k-skill-setup # sops+age 설정, secrets 초기화 k-skill env inject # 환경변수 주입
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;
  }
}

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 # 예약 취소
javascript
undefined

KBO

使用.env文件时

k-skill kbo today # 오늘 경기 k-skill kbo games --date 20260401 k-skill kbo games --team LG
require('dotenv').config();

로또

使用sops解密后注入环境变量时

执行sops --decrypt secrets.enc.yaml | k-skill env inject后自动注入

k-skill lotto latest # 최신 회차 k-skill lotto result --round 1100 k-skill lotto check --numbers 3,14,22,31,40,43
const { SRTClient } = require('k-skill/srt'); const client = new SRTClient({ username: process.env.SRT_USERNAME, // 引用环境变量 password: process.env.SRT_PASSWORD, });

---

지하철

CLI完整命令汇总

k-skill subway arrivals --station 강남 k-skill subway arrivals --station 강남 --line 2호선
bash
undefined

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 install # 安装全部技能 k-skill install srt kbo lotto # 选择性安装 k-skill-setup # 配置sops+age,初始化secrets k-skill env inject # 注入环境变量

우편번호

SRT相关

k-skill zipcode search "강남구 테헤란로" k-skill zipcode lookup 06236
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 # 取消预订

카카오톡 (macOS)

KBO相关

k-skill kakao list k-skill kakao send --to "홍길동" --message "메시지"

---
k-skill kbo today # 查看今日赛事 k-skill kbo games --date 20260401 k-skill kbo games --team LG

트러블슈팅

彩票相关

SRT_USERNAME
환경변수가 없다는 오류

bash
undefined
k-skill lotto latest # 查看最新一期结果 k-skill lotto result --round 1100 k-skill lotto check --numbers 3,14,22,31,40,43

환경변수 확인

地铁相关

echo $SRT_USERNAME
k-skill subway arrivals --station 강남 k-skill subway arrivals --station 강남 --line 2호선

.env 파일에 등록

HWP相关

echo 'SRT_USERNAME=your_id' >> .env echo 'SRT_PASSWORD=your_password' >> .env
k-skill hwp convert doc.hwp --format markdown k-skill hwp batch ./folder/ --format json k-skill hwp extract-images doc.hwp

sops로 암호화 관리 권장

邮政编码相关

k-skill-setup # 다시 실행하여 secrets 등록
undefined
k-skill zipcode search "강남구 테헤란로" k-skill zipcode lookup 06236

HWP 변환 실패

KakaoTalk (macOS)

bash
undefined
k-skill kakao list k-skill kakao send --to "홍길동" --message "메시지"

---

의존 패키지 확인

故障排除

提示
SRT_USERNAME
环境变量不存在

npm install -g hwp.js
bash
undefined

Python 백엔드 사용 시

检查环境变量

pip install python-hwp
echo $SRT_USERNAME

Windows에서 한컴 앱 직접 제어 시

注册至.env文件

k-skill hwp convert doc.hwp --use-native
undefined
echo 'SRT_USERNAME=your_id' >> .env echo 'SRT_PASSWORD=your_password' >> .env

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

推荐使用sops加密管理

bash
undefined
k-skill-setup # 重新执行以注册secrets
undefined

kakaocli 설치 확인

HWP转换失败

which kakaocli
bash
undefined

없으면 설치

检查依赖包

brew install kakaocli
npm install -g hwp.js

또는

使用Python后端时

npm install -g kakaocli
undefined
pip install python-hwp

서울 지하철 API 키 오류

在Windows上直接控制韩文字处理软件时

bash
undefined
k-skill hwp convert doc.hwp --use-native
undefined

공공데이터포털에서 API 키 발급

KakaoTalk CLI (macOS)无法运行

https://data.seoul.go.kr → 서울시 지하철 실시간 도착정보

export SEOUL_METRO_API_KEY="발급받은_키"
undefined
bash
undefined

Node.js 버전 오류

检查kakaocli是否安装

bash
node --version  # v18 이상 권장
which kakaocli

nvm으로 버전 변경

未安装则执行

nvm install 20 nvm use 20

---
brew install kakaocli

로드맵

현재 포함:
  • ✅ SRT 예매
  • ⚠️ KTX 예매 (개발 중, 현재 미작동)
  • ✅ 카카오톡 Mac CLI
  • ✅ 서울 지하철 도착정보
  • ✅ KBO 경기 결과
  • ✅ 로또 당첨 확인
  • ✅ HWP 문서 처리
  • ✅ 우편번호 검색
다음 후보:
  • 쿠팡 주문 조회
  • 다나와 가격 비교
  • 네이버 스토어 주문 확인
  • 당근마켓 매물 조회
  • 정부24 민원 조회
  • 홈택스 세금 조회

npm install -g kakaocli
undefined

참고 링크

首尔地铁API密钥错误

在公共数据门户申请API密钥

https://data.seoul.go.kr → 首尔市地铁实时到站信息

export SEOUL_METRO_API_KEY="申请到的密钥"
undefined

Node.js版本错误

bash
node --version  # 推荐v18及以上版本

使用nvm切换版本

nvm install 20 nvm use 20

---

路线图

当前已包含:
  • ✅ SRT购票
  • ⚠️ KTX购票(开发中,当前无法使用)
  • ✅ KakaoTalk Mac CLI
  • ✅ 首尔地铁到站信息
  • ✅ KBO赛事结果
  • ✅ 彩票开奖确认
  • ✅ HWP文档处理
  • ✅ 邮政编码搜索
后续候选功能:
  • Coupang订单查询
  • Danawa价格对比
  • Naver Store订单确认
  • 闲鱼市场商品查询
  • 政府24民怨查询
  • 税务厅税务查询

参考链接