From k-skill
Routes Korean door-to-door public transit (subway+bus+walking) via ODsay API with Kakao geocoding. Activated for Korean transit queries like 지하철/버스 길찾기.
How this skill is triggered — by the user, by Claude, or both
Slash command
/k-skill:korean-transit-routeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
한국 대중교통(지하철+버스+도보) 도어투도어 길찾기 스킬. ODsay LIVE API + Kakao Local geocoding.
한국 대중교통(지하철+버스+도보) 도어투도어 길찾기 스킬. ODsay LIVE API + Kakao Local geocoding.
ODSAY_API_KEY 가 있으면 사용. 없으면 ~/.config/k-skill/secrets.env 에서 로드.k-skill-proxy 경유로 호출하므로 사용자 쪽 KAKAO_REST_API_KEY 는 불필요하다. self-host proxy 운영자만 KAKAO_REST_API_KEY 를 서버에 설정한다.자연어 입력에서 출발/도착을 추출. 좌표가 없으면 반드시 geocoding 먼저 (ODsay는 좌표만 받음).
기본 hosted proxy를 사용한다. Proxy가 Kakao Local REST API 키를 서버에서만 주입하고, caller apiKey 는 무시한다.
https://k-skill-proxy.nomadamas.org/v1/kakao-local/geocode?q=<주소/장소명>address.json → 결과 없으면 keyword.json응답 documents[0].x(경도), .y(위도) 사용.
import os, urllib.parse, urllib.request, json
PROXY=os.environ.get('KSKILL_PROXY_BASE_URL','https://k-skill-proxy.nomadamas.org').rstrip('/')
def geocode(q):
url=PROXY+'/v1/kakao-local/geocode?q='+urllib.parse.quote(q)
with urllib.request.urlopen(url,timeout=10) as resp:
d=json.loads(resp.read())
if d.get('documents'):
doc=d['documents'][0]
return float(doc['x']), float(doc['y']), doc.get('place_name') or doc.get('address_name')
return None
지하철역명만 정확히 알 때는 ODsay searchStation 도 OK 하지만, 도어투도어 결과를 원하면 실제 출발지/도착지 좌표를 써야 첫/끝 도보 구간이 계산됨.
set -a; . ~/.config/k-skill/secrets.env; set +a
KEY=$(python3 -c "import os,urllib.parse;print(urllib.parse.quote(os.environ['ODSAY_API_KEY'],safe=''))")
curl -s "https://api.odsay.com/v1/api/searchPubTransPathT?apiKey=${KEY}&SX=${SX}&SY=${SY}&EX=${EX}&EY=${EY}&OPT=0&SearchPathType=${TYPE}"
Parameters:
SX,SY 출발 경도/위도, EX,EY 도착 경도/위도 (WGS84)OPT: 0 추천순(기본), 4 최소시간, 5 최소환승SearchPathType: 0 지하철+버스, 1 지하철만, 2 버스만result.path[] 배열, 각 path:
pathType: 1=지하철, 2=버스, 3=지하철+버스info.totalTime(분), info.payment(원), info.subwayTransitCount, info.busTransitCount, info.totalWalk(m), info.firstStartStation, info.lastEndStationsubPath[]: 구간별. trafficType 1=지하철 2=버스 3=도보. 지하철이면 lane[0].name, startName, endName, passStopList.stations[](경유역)subPath 의 각 구간을 trafficType 별로 표시. 첫/끝 도보 구간은 출발지·도착지에서 역까지 실제 도보를 의미하므로 반드시 포함.
🚇 범안로95번길 32 → SKT타워
경로 1: 54분 · 1,950원 · 환승 2회 · 도보 688m
🚶 도보 1분
🚌 19번 부천범박힐스테이트 → 역곡역 (9분)
🚶 도보 2분
🚇 1호선 역곡 → 종각 (15정거장, 35분)
🚶 도보 7분
3개 이내 경로 비교 권장. OPT=4(최소시간) / OPT=5(최소환승) 옵션을 사용자가 선호 표시하면 그쪽으로 호출.
좌표 모르고 역명만 아는 경우 — searchStation 으로 변환:
curl -s "https://api.odsay.com/v1/api/searchStation?apiKey=${KEY}&stationName=강남&CID=1000"
CID=1000 = 수도권. 결과 result.station[].x,y 가 좌표.
searchPubTransPathT + searchStation 호출이 합산되니 한 질문당 호출 최소화.error 키 있으면 즉시 사용자에게 표시(ApiKey/IP 문제 진단에 유용).error 응답: msg 필드를 그대로 사용자에게 표시하고, ApiKey 미등록 또는 IP 화이트리스트 누락 가능성을 안내한다.npx claudepluginhub nomadamas/k-skill --plugin k-skillSearches Kakao Local places (keyword/category/coordinate) and gets car directions from Kakao Mobility via proxy. No API key needed.
Analyzes transit accessibility (subway, KTX/train, bus terminals) for a Korean address or complex name, producing a grade, summary, and interactive HTML report with map.
Automates Korean services — SRT/KTX ticket booking, KBO scores, lottery numbers, KakaoTalk messaging, Seoul subway arrivals, HWP file conversion, and postal code lookup — with sops+age secret management.