@nomadamas/k-skill 0.2.5 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/package.json +1 -1
  2. package/skills/bok-ecos-stats/instruction.md +1 -1
  3. package/skills/bunjang-search/references/DISCLAIMER.md +23 -0
  4. package/skills/coupang-product-search/references/DISCLAIMER.md +23 -0
  5. package/skills/daangn-cars-search/references/DISCLAIMER.md +23 -0
  6. package/skills/daangn-jobs-search/references/DISCLAIMER.md +23 -0
  7. package/skills/daangn-realty-search/references/DISCLAIMER.md +23 -0
  8. package/skills/daangn-used-goods-search/references/DISCLAIMER.md +23 -0
  9. package/skills/daishin-report-search/references/DISCLAIMER.md +23 -0
  10. package/skills/daiso-product-search/references/DISCLAIMER.md +23 -0
  11. package/skills/danawa-price-search/references/DISCLAIMER.md +23 -0
  12. package/skills/delivery-tracking/references/DISCLAIMER.md +23 -0
  13. package/skills/express-bus-booking/references/DISCLAIMER.md +23 -0
  14. package/skills/fine-dust-location/skill.json +1 -7
  15. package/skills/flight-ticket-search/references/DISCLAIMER.md +23 -0
  16. package/skills/foresttrip-vacancy/references/DISCLAIMER.md +23 -0
  17. package/skills/intercity-bus-booking/references/DISCLAIMER.md +23 -0
  18. package/skills/job-posting-match/references/DISCLAIMER.md +23 -0
  19. package/skills/jobkorea-talent-search/references/DISCLAIMER.md +23 -0
  20. package/skills/k-skill-setup/skill.json +1 -7
  21. package/skills/kakao-bar-nearby/references/DISCLAIMER.md +15 -0
  22. package/skills/kakao-map/references/DISCLAIMER.md +15 -0
  23. package/skills/kakaotalk-mac/references/DISCLAIMER.md +15 -0
  24. package/skills/kbl-results/references/DISCLAIMER.md +13 -0
  25. package/skills/kbo-results/references/DISCLAIMER.md +13 -0
  26. package/skills/keris-academic-search/references/DISCLAIMER.md +13 -0
  27. package/skills/keris-academic-search/references/TRADEMARK-LEGAL-STATEMENT.md +7 -0
  28. package/skills/kleague-results/references/DISCLAIMER.md +13 -0
  29. package/skills/kopis-performance-search/references/DISCLAIMER.md +13 -0
  30. package/skills/kopis-performance-search/references/TRADEMARK-LEGAL-STATEMENT.md +7 -0
  31. package/skills/kopis-performance-search/skill.json +3 -4
  32. package/skills/korean-cinema-search/references/DISCLAIMER.md +13 -0
  33. package/skills/korean-stock-search/references/DISCLAIMER.md +14 -0
  34. package/skills/korean-stock-search/references/TRADEMARK-LEGAL-STATEMENT.md +7 -0
  35. package/skills/korean-transit-route/references/DISCLAIMER.md +13 -0
  36. package/skills/ktx-booking/instruction.md +38 -221
  37. package/skills/ktx-booking/references/AUTOMATION-LEGAL-STATEMENT.md +10 -0
  38. package/skills/ktx-booking/references/DISCLAIMER.md +14 -0
  39. package/skills/ktx-booking/scripts/ktx_booking.py +176 -1274
  40. package/skills/ktx-booking/scripts/ktx_booking.py.lock +27 -0
  41. package/skills/ktx-booking/scripts/ktx_timetable.py +141 -0
  42. package/skills/ktx-booking/skill.json +3 -11
  43. package/skills/lck-analytics/references/DISCLAIMER.md +13 -0
  44. package/skills/lotto-results/references/DISCLAIMER.md +13 -0
  45. package/skills/market-kurly-search/references/DISCLAIMER.md +13 -0
  46. package/skills/myrealtrip-search/instruction.md +3 -1
  47. package/skills/myrealtrip-search/references/DISCLAIMER.md +13 -0
  48. package/skills/myrealtrip-search/scripts/myrealtrip_mcp.py +30 -8
  49. package/skills/myrealtrip-search/scripts/test_myrealtrip_mcp.py +62 -0
  50. package/skills/naver-ad-performance/references/DISCLAIMER.md +13 -0
  51. package/skills/naver-blog-research/references/DISCLAIMER.md +13 -0
  52. package/skills/naver-news-search/references/DISCLAIMER.md +13 -0
  53. package/skills/naver-shopping-search/references/DISCLAIMER.md +13 -0
  54. package/skills/ohou-today-deal/references/DISCLAIMER.md +13 -0
  55. package/skills/olive-young-search/references/DISCLAIMER.md +13 -0
  56. package/skills/popbill/references/DISCLAIMER.md +13 -0
  57. package/skills/saramin-talent-search/references/DISCLAIMER.md +13 -0
  58. package/skills/seoul-weather-risk/instruction.md +28 -35
  59. package/skills/seoul-weather-risk/scripts/seoul_weather_risk.py +15 -68
  60. package/skills/seoul-weather-risk/skill.json +2 -2
  61. package/skills/srt-booking/instruction.md +48 -154
  62. package/skills/srt-booking/references/AUTOMATION-LEGAL-STATEMENT.md +25 -0
  63. package/skills/srt-booking/references/DISCLAIMER.md +13 -0
  64. package/skills/srt-booking/scripts/srt_booking.py +134 -235
  65. package/skills/srt-booking/scripts/srt_booking.py.lock +207 -0
  66. package/skills/srt-booking/skill.json +3 -15
  67. package/skills/store-longevity-radar/scripts/__pycache__/store_longevity_download.cpython-312.pyc +0 -0
  68. package/skills/ticket-availability/references/DISCLAIMER.md +13 -0
  69. package/skills/{toss-securities → toss-investment}/instruction.md +1 -1
  70. package/skills/toss-investment/references/DISCLAIMER.md +14 -0
  71. package/skills/{toss-securities → toss-investment}/references/TRADEMARK-LEGAL-STATEMENT.md +1 -1
  72. package/skills/{toss-securities → toss-investment}/skill.json +2 -2
  73. package/src/assemble.js +1 -1
  74. package/src/execute.js +13 -3
  75. package/skills/lovebug-report/instruction.md +0 -185
  76. package/skills/lovebug-report/skill.json +0 -9
  77. package/skills/srt-booking/scripts/srt_seats.py +0 -156
@@ -0,0 +1,13 @@
1
+ # DISCLAIMER — `kbo-results`
2
+
3
+ 이 스킬은 제3자 상표권자·서비스 운영사의 공식 기능 또는 공식 지원 도구가 아니며, 공식 제휴·후원·승인·인증 또는 협업한 사실이 전혀 없습니다. 상표와 서비스명은 기능, 조회 대상 또는 호환 대상을 설명하기 위해서만 사용합니다.
4
+
5
+ 대법원 2005. 6. 10. 선고 [2005도1637 판결](https://www.law.go.kr/LSW/precInfoP.do?precSeq=83920)(소니용 리모컨 사건)은 기능 설명용 표장과 출처표시를 구별했습니다. [상표법 제2조](https://www.law.go.kr/법령/상표법/제2조), [제89조](https://www.law.go.kr/법령/상표법/제89조), [제90조](https://www.law.go.kr/법령/상표법/제90조), [제108조](https://www.law.go.kr/법령/상표법/제108조)에 따른 출처 혼동 판단은 별도입니다.
6
+
7
+ 대법원 2022. 5. 12. 선고 [2021도1533 판결](https://www.law.go.kr/LSW/precInfoP.do?precSeq=221765)은 공개정보의 기계적 수집만으로 곧바로 [정보통신망법 제48조](https://www.law.go.kr/법령/정보통신망이용촉진및정보보호등에관한법률/제48조) 위반이 되는 것은 아니라고 볼 수 있는 사정을 제시했지만, 크롤링의 일반적 허용을 뜻하지 않습니다. [저작권법 제93조](https://www.law.go.kr/법령/저작권법/제93조)의 데이터베이스 권리와 [형법 제314조 제2항](https://www.law.go.kr/법령/형법/제314조)의 서비스 장애·영업 방해 책임은 별도입니다.
8
+
9
+ - 공개정보 자동 수집은 반드시 개인의 정보 조회용으로만 사용하고 조직적·대량 크롤링이나 별도 DB 구축을 하지 않습니다.
10
+ - 사실정보를 필요한 범위에서만 요약하며 원본 DB·이미지·중계·기사 콘텐츠를 재배포하지 않습니다.
11
+ - 접근통제·차단·rate limit을 우회하거나 공격적 polling으로 서비스를 방해하지 않습니다.
12
+
13
+ 이 문서는 적법성을 보증하는 법률 자문이 아닙니다.
@@ -0,0 +1,13 @@
1
+ # DISCLAIMER — `keris-academic-search`
2
+
3
+ 이 스킬은 KERIS·RISS 또는 자료 제공기관의 공식 기능 또는 공식 지원 도구가 아니며, 공식 제휴·후원·승인·인증 또는 협업한 사실이 전혀 없습니다. 관련 상표와 서비스명은 학술정보 조회 기능과 대상을 설명하기 위해서만 사용합니다.
4
+
5
+ 대법원 2005. 6. 10. 선고 [2005도1637 판결](https://www.law.go.kr/LSW/precInfoP.do?precSeq=83920)(소니용 리모컨 사건)은 기능 설명용 표장과 출처표시를 구별했습니다. [상표법 제2조](https://www.law.go.kr/법령/상표법/제2조), [제89조](https://www.law.go.kr/법령/상표법/제89조), [제90조](https://www.law.go.kr/법령/상표법/제90조), [제108조](https://www.law.go.kr/법령/상표법/제108조)에 따른 출처 혼동 판단은 별도입니다.
6
+
7
+ 대법원 2022. 5. 12. 선고 [2021도1533 판결](https://www.law.go.kr/LSW/precInfoP.do?precSeq=221765)은 공개정보 수집 사안의 객관적 접근 제한을 기준으로 판단했으나, 기관·비영리 자격으로 발급된 API 키의 범위를 넘는 사용이나 학술 원문 다운로드를 허용하지 않습니다. 공개되어 누구나 얻을 수 있는 메타데이터의 기계적 수집만으로 곧바로 [정보통신망법 제48조](https://www.law.go.kr/법령/정보통신망이용촉진및정보보호등에관한법률/제48조) 위반이 되는 것은 아니지만 [저작권법 제93조](https://www.law.go.kr/법령/저작권법/제93조)의 데이터베이스 권리, 원문 저작권, API 계약과 [형법 제314조 제2항](https://www.law.go.kr/법령/형법/제314조)은 별도입니다.
8
+
9
+ - 공개 메타데이터 자동 수집은 승인된 API 자격 범위에서 개인의 정보 조회용으로만 사용합니다.
10
+ - 조직적·대량 크롤링, 원문 수집, 별도 DB 구축·재배포를 하지 않습니다.
11
+ - 접근통제·차단·quota를 우회하거나 서비스 장애·영업 방해를 일으키지 않습니다.
12
+
13
+ 이 문서는 적법성을 보증하는 법률 자문이 아닙니다.
@@ -0,0 +1,7 @@
1
+ # 상표 사용 법적 고지 — `keris-academic-search`
2
+
3
+ 이 스킬에서 `KERIS`와 `RISS` 명칭은 학술자료 메타데이터 조회 대상과 API 호환 대상을 식별하기 위해 사용합니다. k-skill의 출처를 해당 기관으로 표시하거나 공식·제휴·후원·승인·협업 관계를 주장하려는 사용이 아닙니다.
4
+
5
+ 대법원 2005. 6. 10. 선고 [2005도1637 판결](https://www.law.go.kr/LSW/precInfoP.do?precSeq=83920)은 타인의 표장을 출처표시가 아니라 기능 또는 적용 대상을 밝히기 위해 사용하고 상표 사용으로 인식될 수 없는 경우를 구별했습니다. 실제 표시 태양과 거래계 인식에 따라 결론이 달라질 수 있으므로 평문으로 필요한 범위에서만 사용하고 로고·공식·제휴·후원·인증 표현을 사용하지 않습니다.
6
+
7
+ 공개정보 접근과 사용 제한을 포함한 전체 조건은 `npx -y @nomadamas/k-skill@0 read keris-academic-search references/DISCLAIMER.md`에서 확인합니다.
@@ -0,0 +1,13 @@
1
+ # DISCLAIMER — `kleague-results`
2
+
3
+ 이 스킬은 제3자 상표권자·서비스 운영사의 공식 기능 또는 공식 지원 도구가 아니며, 공식 제휴·후원·승인·인증 또는 협업한 사실이 전혀 없습니다. 상표와 서비스명은 기능, 조회 대상 또는 호환 대상을 설명하기 위해서만 사용합니다.
4
+
5
+ 대법원 2005. 6. 10. 선고 [2005도1637 판결](https://www.law.go.kr/LSW/precInfoP.do?precSeq=83920)(소니용 리모컨 사건)은 기능 설명용 표장과 출처표시를 구별했습니다. [상표법 제2조](https://www.law.go.kr/법령/상표법/제2조), [제89조](https://www.law.go.kr/법령/상표법/제89조), [제90조](https://www.law.go.kr/법령/상표법/제90조), [제108조](https://www.law.go.kr/법령/상표법/제108조)에 따른 출처 혼동 판단은 별도입니다.
6
+
7
+ 대법원 2022. 5. 12. 선고 [2021도1533 판결](https://www.law.go.kr/LSW/precInfoP.do?precSeq=221765)은 공개정보의 기계적 수집만으로 곧바로 [정보통신망법 제48조](https://www.law.go.kr/법령/정보통신망이용촉진및정보보호등에관한법률/제48조) 위반이 되는 것은 아니라고 볼 수 있는 사정을 제시했지만, 크롤링의 일반적 허용을 뜻하지 않습니다. [저작권법 제93조](https://www.law.go.kr/법령/저작권법/제93조)의 데이터베이스 권리와 [형법 제314조 제2항](https://www.law.go.kr/법령/형법/제314조)의 서비스 장애·영업 방해 책임은 별도입니다.
8
+
9
+ - 공개정보 자동 수집은 반드시 개인의 정보 조회용으로만 사용하고 조직적·대량 크롤링이나 별도 DB 구축을 하지 않습니다.
10
+ - 사실정보를 필요한 범위에서만 요약하며 원본 DB·이미지·중계·기사 콘텐츠를 재배포하지 않습니다.
11
+ - 접근통제·차단·rate limit을 우회하거나 공격적 polling으로 서비스를 방해하지 않습니다.
12
+
13
+ 이 문서는 적법성을 보증하는 법률 자문이 아닙니다.
@@ -0,0 +1,13 @@
1
+ # DISCLAIMER — `kopis-performance-search`
2
+
3
+ 이 스킬은 KOPIS·예매처·공연기획사 또는 자료 제공자의 공식 기능 또는 공식 지원 도구가 아니며, 공식 제휴·후원·승인·인증 또는 협업한 사실이 전혀 없습니다. 관련 상표와 서비스명은 공연정보 조회·예매 대상 설명을 위해서만 사용합니다.
4
+
5
+ 대법원 2005. 6. 10. 선고 [2005도1637 판결](https://www.law.go.kr/LSW/precInfoP.do?precSeq=83920)(소니용 리모컨 사건)은 기능 설명용 표장과 출처표시를 구별했습니다. [상표법 제2조](https://www.law.go.kr/법령/상표법/제2조), [제89조](https://www.law.go.kr/법령/상표법/제89조), [제90조](https://www.law.go.kr/법령/상표법/제90조), [제108조](https://www.law.go.kr/법령/상표법/제108조)에 따른 출처 혼동 판단은 별도입니다.
6
+
7
+ 대법원 2022. 5. 12. 선고 [2021도1533 판결](https://www.law.go.kr/LSW/precInfoP.do?precSeq=221765)은 공개정보 수집만으로 곧바로 [정보통신망법 제48조](https://www.law.go.kr/법령/정보통신망이용촉진및정보보호등에관한법률/제48조) 위반이 되는 것은 아닌 사정을 제시했지만, 크롤링·좌석 선점·결제 자동화를 일반적으로 허용하지 않습니다. [저작권법 제93조](https://www.law.go.kr/법령/저작권법/제93조)의 데이터베이스 권리와 [형법 제314조 제2항](https://www.law.go.kr/법령/형법/제314조)의 서비스 장애·영업 방해 책임은 별도입니다.
8
+
9
+ - 공개 공연정보 자동 수집은 반드시 개인의 정보 조회용으로만 사용합니다.
10
+ - 조직적·대량 크롤링, 별도 DB 구축, 반복 좌석 선점이나 구매 자동화에 사용하지 않습니다.
11
+ - 접근통제·CAPTCHA·차단·rate limit을 우회하지 않으며 예매처의 정상 영업을 방해하지 않습니다.
12
+
13
+ 이 문서는 적법성을 보증하는 법률 자문이 아닙니다.
@@ -0,0 +1,7 @@
1
+ # 상표 사용 법적 고지 — `kopis-performance-search`
2
+
3
+ 이 스킬에서 `KOPIS`와 예매처 명칭은 공연정보 조회 대상과 공식 예매 연결 대상을 식별하기 위해 사용합니다. k-skill의 출처를 해당 기관·업체로 표시하거나 공식·제휴·후원·승인·협업 관계를 주장하려는 사용이 아닙니다.
4
+
5
+ 대법원 2005. 6. 10. 선고 [2005도1637 판결](https://www.law.go.kr/LSW/precInfoP.do?precSeq=83920)은 타인의 표장을 출처표시가 아니라 기능 또는 적용 대상을 밝히기 위해 사용하고 상표 사용으로 인식될 수 없는 경우를 구별했습니다. 실제 표시 태양과 거래계 인식에 따라 결론이 달라질 수 있으므로 평문으로 필요한 범위에서만 사용하고 로고·공식·제휴·후원·인증 표현을 사용하지 않습니다.
6
+
7
+ 공개정보 접근과 사용 제한을 포함한 전체 조건은 `npx -y @nomadamas/k-skill@0 read kopis-performance-search references/DISCLAIMER.md`에서 확인합니다.
@@ -1,10 +1,9 @@
1
1
  {
2
2
  "name": "kopis-performance-search",
3
- "description": "KOPIS 공연 목록·상세·시설을 조회하고, 돌쇠에서는 공식 예매처의 좌석·예약·승인 기반 결제까지 이어간다.",
3
+ "description": "KOPIS 공연 목록·상세·시설을 조회한다. 조회 전용.",
4
4
  "profiles": [
5
5
  "proxy",
6
- "vault",
7
- "action:booking"
6
+ "lookup"
8
7
  ],
9
- "frontmatter": "name: kopis-performance-search\ndescription: KOPIS 공연 목록·상세·시설을 조회하고, 돌쇠에서는 공식 예매처의 좌석·예약·승인 기반 결제까지 이어간다.\nlicense: MIT\nmetadata:\n category: culture\n locale: ko-KR\n phase: v1"
8
+ "frontmatter": "name: kopis-performance-search\ndescription: KOPIS 공연 목록·상세·시설을 조회한다. 조회 전용.\nlicense: MIT\nmetadata:\n category: culture\n locale: ko-KR\n phase: v1"
10
9
  }
@@ -0,0 +1,13 @@
1
+ # DISCLAIMER — `korean-cinema-search`
2
+
3
+ 이 스킬은 영화관 운영사·예매처의 공식 기능 또는 공식 지원 도구가 아니며, 공식 제휴·후원·승인·인증 또는 협업한 사실이 전혀 없습니다. 상표와 서비스명은 영화관·상영작·시간표·좌석 조회 대상을 설명하기 위해서만 사용합니다.
4
+
5
+ 대법원 2005. 6. 10. 선고 [2005도1637 판결](https://www.law.go.kr/LSW/precInfoP.do?precSeq=83920)(소니용 리모컨 사건)은 기능 설명용 표장과 출처표시를 구별했습니다. [상표법 제2조](https://www.law.go.kr/법령/상표법/제2조), [제89조](https://www.law.go.kr/법령/상표법/제89조), [제90조](https://www.law.go.kr/법령/상표법/제90조), [제108조](https://www.law.go.kr/법령/상표법/제108조)에 따른 출처 혼동 판단은 별도입니다.
6
+
7
+ 대법원 2022. 5. 12. 선고 [2021도1533 판결](https://www.law.go.kr/LSW/precInfoP.do?precSeq=221765)은 공개정보 수집만으로 곧바로 [정보통신망법 제48조](https://www.law.go.kr/법령/정보통신망이용촉진및정보보호등에관한법률/제48조) 위반이 되는 것은 아닌 사정을 제시했지만, 크롤링·좌석 선점·결제 자동화를 일반적으로 허용하지 않습니다. [저작권법 제93조](https://www.law.go.kr/법령/저작권법/제93조)의 데이터베이스 권리와 [형법 제314조 제2항](https://www.law.go.kr/법령/형법/제314조)의 서비스 장애·영업 방해 책임은 별도입니다.
8
+
9
+ - 공개 상영정보 자동 수집은 반드시 개인의 정보 조회용으로만 사용합니다.
10
+ - 조직적·대량 크롤링, 별도 DB 구축, 원본 이미지·콘텐츠 재배포를 하지 않습니다.
11
+ - 접근통제·CAPTCHA·차단·rate limit을 우회하거나 영화관·예매처의 정상 영업을 방해하지 않습니다.
12
+
13
+ 이 문서는 적법성을 보증하는 법률 자문이 아닙니다.
@@ -0,0 +1,14 @@
1
+ # DISCLAIMER — `korean-stock-search`
2
+
3
+ 이 스킬은 KRX·거래소·상장사 또는 자료 제공자의 공식 기능 또는 공식 지원 도구가 아니며, 공식 제휴·후원·승인·인증 또는 협업한 사실이 전혀 없습니다. 관련 상표와 명칭은 종목·시장정보 조회 기능과 대상을 설명하기 위해서만 사용합니다.
4
+
5
+ 대법원 2005. 6. 10. 선고 [2005도1637 판결](https://www.law.go.kr/LSW/precInfoP.do?precSeq=83920)(소니용 리모컨 사건)은 기능 설명용 표장과 출처표시를 구별했습니다. [상표법 제2조](https://www.law.go.kr/법령/상표법/제2조), [제89조](https://www.law.go.kr/법령/상표법/제89조), [제90조](https://www.law.go.kr/법령/상표법/제90조), [제108조](https://www.law.go.kr/법령/상표법/제108조)에 따른 출처 혼동 판단은 별도입니다.
6
+
7
+ 대법원 2022. 5. 12. 선고 [2021도1533 판결](https://www.law.go.kr/LSW/precInfoP.do?precSeq=221765)은 공개정보 수집만으로 곧바로 [정보통신망법 제48조](https://www.law.go.kr/법령/정보통신망이용촉진및정보보호등에관한법률/제48조) 위반이 되는 것은 아닌 사정을 제시했지만, 시장데이터의 대량 재배포나 계약·quota 위반을 허용하지 않습니다. [저작권법 제93조](https://www.law.go.kr/법령/저작권법/제93조)의 데이터베이스 권리와 [형법 제314조 제2항](https://www.law.go.kr/법령/형법/제314조)은 별도입니다.
8
+
9
+ - 공개 시장정보 자동 수집은 반드시 개인의 정보 조회용으로만 사용합니다.
10
+ - 조직적·대량 크롤링, 시세 DB 구축·재판매·재배포를 하지 않습니다.
11
+ - 접근통제·차단·quota를 우회하거나 서비스 장애·영업 방해를 일으키지 않습니다.
12
+ - 결과는 투자 참고정보일 뿐 투자 권유·자문이나 수익 보장이 아닙니다.
13
+
14
+ 이 문서는 적법성을 보증하는 법률 자문이 아닙니다.
@@ -0,0 +1,7 @@
1
+ # 상표 사용 법적 고지 — `korean-stock-search`
2
+
3
+ 이 스킬에서 `KRX`와 `한국거래소` 명칭은 시장·종목정보 조회 대상과 데이터 출처를 식별하기 위해 사용합니다. k-skill의 출처를 해당 기관으로 표시하거나 공식·제휴·후원·승인·협업 관계를 주장하려는 사용이 아닙니다.
4
+
5
+ 대법원 2005. 6. 10. 선고 [2005도1637 판결](https://www.law.go.kr/LSW/precInfoP.do?precSeq=83920)은 타인의 표장을 출처표시가 아니라 기능 또는 적용 대상을 밝히기 위해 사용하고 상표 사용으로 인식될 수 없는 경우를 구별했습니다. 실제 표시 태양과 거래계 인식에 따라 결론이 달라질 수 있으므로 평문으로 필요한 범위에서만 사용하고 로고·공식·제휴·후원·인증 표현을 사용하지 않습니다.
6
+
7
+ 공개정보 접근과 사용 제한을 포함한 전체 조건은 `npx -y @nomadamas/k-skill@0 read korean-stock-search references/DISCLAIMER.md`에서 확인합니다.
@@ -0,0 +1,13 @@
1
+ # DISCLAIMER — `korean-transit-route`
2
+
3
+ 이 스킬은 제3자 상표권자·서비스 운영사의 공식 기능 또는 공식 지원 도구가 아니며, 공식 제휴·후원·승인·인증 또는 협업한 사실이 전혀 없습니다. 상표와 서비스명은 기능, 조회 대상 또는 호환 대상을 설명하기 위해서만 사용합니다.
4
+
5
+ 대법원 2005. 6. 10. 선고 [2005도1637 판결](https://www.law.go.kr/LSW/precInfoP.do?precSeq=83920)(소니용 리모컨 사건)은 기능 설명용 표장과 출처표시를 구별했습니다. [상표법 제2조](https://www.law.go.kr/법령/상표법/제2조), [제89조](https://www.law.go.kr/법령/상표법/제89조), [제90조](https://www.law.go.kr/법령/상표법/제90조), [제108조](https://www.law.go.kr/법령/상표법/제108조)에 따른 출처 혼동 판단은 별도입니다.
6
+
7
+ 대법원 2022. 5. 12. 선고 [2021도1533 판결](https://www.law.go.kr/LSW/precInfoP.do?precSeq=221765)은 공개정보의 기계적 수집만으로 곧바로 [정보통신망법 제48조](https://www.law.go.kr/법령/정보통신망이용촉진및정보보호등에관한법률/제48조) 위반이 되는 것은 아니라고 볼 수 있는 사정을 제시했지만, 크롤링의 일반적 허용을 뜻하지 않습니다. [저작권법 제93조](https://www.law.go.kr/법령/저작권법/제93조)의 데이터베이스 권리와 [형법 제314조 제2항](https://www.law.go.kr/법령/형법/제314조)의 서비스 장애·영업 방해 책임은 별도입니다.
8
+
9
+ - 공개정보 자동 수집은 반드시 개인의 정보 조회용으로만 사용하고 조직적·대량 크롤링이나 별도 DB 구축을 하지 않습니다.
10
+ - 공식 API의 quota·약관을 지키고 접근통제·차단을 우회하지 않습니다.
11
+ - 공격적 polling이나 병렬 대량 호출로 정상 서비스를 방해하지 않습니다.
12
+
13
+ 이 문서는 적법성을 보증하는 법률 자문이 아닙니다.
@@ -1,244 +1,61 @@
1
- # KTX Booking
1
+ # KTX Official Timetable Lookup
2
2
 
3
3
  ## What this skill does
4
4
 
5
- `korail2` 위에 `scripts/ktx_booking.py` helper 얹어 KTX/Korail 조회, 호차별 좌석번호 확인, 예약, 예약 확인, 취소를 처리한다.
5
+ 한국철도공사가 로그인 없이 공개하는 최신 KTX 운행시간표 XLSX를 내려받아 출발역·도착역·출발시간 조건에 맞는 열차를 찾는다.
6
6
 
7
- 최근 Korail 앱의 Dynapath anti-bot 체크 때문에 원본 `korail2` 0.4.0 예제만으로는 `MACRO ERROR` 가 날 수 있다. 이 스킬은 helper `x-dynapath-m-token`, `Sid`, 최신 app version(`250601002`)을 붙여 실제 예매 흐름을 복구하는 것을 전제로 한다.
7
+ 이 스킬은 **공식 계획 시간표 조회 전용**이다.
8
8
 
9
- ## When to use
9
+ - 회원 로그인, credential, Korail 앱 내부 API를 사용하지 않는다.
10
+ - Dynapath 또는 anti-bot token을 생성·재현·우회하지 않는다.
11
+ - 실시간 잔여석, 실제 운휴·지연, 호차·좌석번호는 조회하지 않는다.
12
+ - 예약, 예약대기, 좌석 선점, 결제, 취소, 자동 재조회는 실행하지 않는다.
13
+ - 구매와 실시간 운행 확인은 공식 코레일 페이지에서 사용자가 직접 진행한다.
10
14
 
11
- - "서울에서 부산 가는 KTX 찾아줘"
12
- - "코레일 예약 확인해줘"
13
- - "KTX 취소해줘"
14
- - "오전 9시 이후 KTX 중 제일 빠른 거 잡아줘"
15
- - "KTX 남은 좌석 번호 확인해줘"
16
- - "이 열차 콘센트 있는 꿀팁 좌석부터 보여줘"
17
- - "KTX 5호차 남은 자리만 봐줘"
18
- - "예약하기 전에 호차별 좌석 확인해줘"
19
- - "N카드로 할인 열차 찾아줘"
20
- - "내 N카드 목록 보여줘"
21
- - "N카드 할인 적용해서 예약해줘"
15
+ 실행 환경에는 Python 3.11 이상과 `uv`가 필요하다. `uv`가 helper에 고정된 `openpyxl` 환경을 자동 설치한다.
22
16
 
23
- ## When not to use
24
-
25
- - SRT 예매인 경우
26
- - 돌쇠가 아니며 실결제 확정까지 자동화해야 하는 경우
27
- - credential 을 평문으로 넣으려는 경우
28
-
29
- ## Prerequisites
30
-
31
- - Python 3.10+
32
- - `python3 -m pip install korail2-ncard pycryptodome`
33
-
34
- ## Required environment variables
35
-
36
- - `KSKILL_KTX_ID`
37
- - `KSKILL_KTX_PASSWORD`
38
-
39
- ### Credential handling
40
-
41
- - 돌쇠 credential mode에서는 `vault-run` capability를 사용하고, 없으면 `request_vault_credential`을 호출한다. ID/PW 원문을 채팅이나 shell에 넣지 않는다.
42
- - 그 밖의 환경에서는 이미 주입된 환경변수 → host vault → `~/.config/k-skill/secrets.env` 순서로 사용한다.
43
-
44
- ## Inputs
45
-
46
- - 출발역
47
- - 도착역
48
- - 날짜: `YYYYMMDD`
49
- - 희망 시작 시각: `HHMMSS`
50
- - 인원 수와 승객 유형
51
- - 좌석 선호
52
- - 좌석 상세 조건: 객실 등급, 호차 번호, 남은 좌석만 보기, 콘센트 꿀팁 좌석 우선
53
- - 조회 결과에서 복사한 `train_id`
54
-
55
- ## Workflow
56
-
57
- ### 0. Install the package globally when missing
58
-
59
- `python3 -c 'import korail2, Crypto'` 가 실패하면 다른 구현으로 우회하지 말고 전역 Python 패키지 설치를 먼저 시도한다.
60
-
61
- ```bash
62
- python3 -m pip install korail2-ncard pycryptodome
63
- ```
64
-
65
- ### 1. Ensure credentials are available
66
-
67
- 돌쇠 credential mode에서는 `vault-run`의 Korail capability를 확인하고, 없으면 `request_vault_credential`로 앱 vault 입력 UI를 호출한다. generic fallback에서만 `KSKILL_KTX_ID`, `KSKILL_KTX_PASSWORD` 환경변수를 확인한다.
68
-
69
- 시크릿이 없다는 이유로 웹사이트를 직접 긁거나 다른 비공식 경로를 찾지 않는다.
70
-
71
- ### 2. Search first via the helper
72
-
73
- 항상 helper 를 통해 조회한다.
74
-
75
- ```bash
76
- npx -y @nomadamas/k-skill@0 exec ktx-booking scripts/ktx_booking.py -- search 서울 부산 20260328 090000 --limit 5
77
- ```
78
-
79
- 기본 `--train-type` 은 `ktx` 다. ITX-청춘(예: 남춘천↔용산)·ITX-새마을·무궁화호처럼 KTX 외 노선을 잡으려면 `--train-type` 으로 지정한다.
80
-
81
- ```bash
82
- npx -y @nomadamas/k-skill@0 exec ktx-booking scripts/ktx_booking.py -- search 남춘천 용산 20260503 150000 --train-type itx-cheongchun
83
- ```
84
-
85
- 선택지: `ktx`, `itx-saemaeul`, `mugunghwa`, `nuriro`, `tonggeun`, `itx-cheongchun`, `airport`, `all`.
86
-
87
- 예약 단계(`reserve`)에서도 같은 `--train-type` 값을 그대로 넘겨야 stable `train_id` 매칭이 깨지지 않는다.
88
-
89
- 좌석이 없는 열차도 후보에 포함하려면 `--include-no-seats`, 예약 대기 가능한 열차도 같이 보고 싶으면 `--include-waiting-list` 를 붙인다.
90
-
91
- ### 3. Present the shortlist
92
-
93
- 예매 전에 항상 아래를 확인한다.
94
-
95
- - `index`
96
- - `train_id`
97
- - 출발/도착 시각
98
- - 열차 종류 (`train_type`)
99
- - 일반실/특실 가능 여부
100
- - 예약 대기 가능 여부
101
-
102
- ### 4. Inspect detailed seats when the user asks for good seats
103
-
104
- `search` 의 좌석 가능 여부는 열차 단위 플래그다. 사용자가 "남은 좌석 번호", "호차별 좌석", "콘센트", "꿀팁 좌석", "창측/순방향 자리", "예약 전에 자리 확인"처럼 구체적인 좌석을 물으면 예약 전에 `seats` 를 호출한다.
105
-
106
- 기본 상세 좌석 조회:
107
-
108
- ```bash
109
- npx -y @nomadamas/k-skill@0 exec ktx-booking scripts/ktx_booking.py -- seats 서울 부산 20260328 090000 --train-id <train_id>
110
- ```
111
-
112
- 일반실/특실은 `--room` 으로 나눈다.
113
-
114
- ```bash
115
- npx -y @nomadamas/k-skill@0 exec ktx-booking scripts/ktx_booking.py -- seats 서울 부산 20260328 090000 --train-id <train_id> --room special
116
- ```
117
-
118
- 남은 좌석번호만 보고 싶으면 `--available-only` 를 쓴다.
119
-
120
- ```bash
121
- npx -y @nomadamas/k-skill@0 exec ktx-booking scripts/ktx_booking.py -- seats 서울 부산 20260328 090000 --train-id <train_id> --available-only
122
- ```
123
-
124
- 특정 호차를 지정하지 않으면 `seats` 는 **5호차를 최우선**으로 탐색한다. 5호차가 없으면 5호차와의 거리가 가까운 호차 순으로, 같은 거리에서는 낮은 호차 번호 순으로 탐색한다(예: 1~8호차 편성은 `5, 4, 6, 3, 7, 2, 8, 1`, 1~4호차 편성은 `4, 3, 2, 1`). 일반 KTX, KTX-산천(분류 코드 07·10), KTX-청룡 모두 같은 규칙을 적용한다. 각 호차 안의 좌석은 콘센트 힌트가 있는 좌석(`direct`, `adjacent`)을 먼저, 같은 조건에서는 순방향 좌석을 먼저 보여준다.
125
-
126
- 특정 호차만 확인하려면 `--car-no` 를 쓴다.
127
-
128
- ```bash
129
- npx -y @nomadamas/k-skill@0 exec ktx-booking scripts/ktx_booking.py -- seats 서울 부산 20260328 090000 --train-id <train_id> --car-no 5 --available-only
130
- ```
131
-
132
- 콘센트 꿀팁 자리부터 확인하려면 `--power-only` 를 붙인다. 응답의 `power_outlet` 은 `direct`, `adjacent`, `none` 중 하나다.
133
-
134
- ```bash
135
- npx -y @nomadamas/k-skill@0 exec ktx-booking scripts/ktx_booking.py -- seats 서울 부산 20260328 090000 --train-id <train_id> --available-only --power-only
136
- ```
137
-
138
- `seats` 도 `search` 와 같은 `--train-type` 을 넘겨야 한다. ITX-청춘 등 KTX 외 열차를 조회했다면 상세 좌석 조회에도 같은 값을 사용한다.
139
-
140
- ```bash
141
- npx -y @nomadamas/k-skill@0 exec ktx-booking scripts/ktx_booking.py -- seats 남춘천 용산 20260503 150000 \
142
- --train-id <train_id> \
143
- --train-type itx-cheongchun \
144
- --available-only
145
- ```
146
-
147
- 상세 좌석 응답을 보여줄 때는 사용자 의도에 맞춰 아래를 우선 요약한다.
148
-
149
- - 호차별 `remaining_seats`, `available_seat_count`
150
- - 남은 좌석 번호 (`available_seats`)
151
- - 좌석별 `direction`, `position`, `seat_type`
152
- - 콘센트 힌트 (`power_outlet`)
153
- - 문 근처 여부 (`near_door`)
154
-
155
- 이 기능은 좌석을 선택/선점하지 않는다. 실제 예약은 다음 단계의 `reserve` 로만 진행한다.
156
-
157
- ### 5. Reserve only after the target train is unambiguous
158
-
159
- 조회 결과의 `train_id` 를 고른 뒤에만 예약한다. 이 값은 helper 가 열차 번호/운행일/시각/역 코드를 묶어 만든 stable selector 이므로, 재조회 시 같은 열차가 아직 있으면 그대로 잡고 없으면 실패한다.
17
+ ## Commands
160
18
 
161
19
  ```bash
162
- npx -y @nomadamas/k-skill@0 exec ktx-booking scripts/ktx_booking.py -- reserve 서울 부산 20260328 090000 --train-id <train_id> --seat-option general-first
20
+ npx -y @nomadamas/k-skill@0 exec ktx-booking scripts/ktx_booking.py -- \
21
+ search --dep 서울 --arr 부산 --date 20260819 --time 0600 --time-limit 1200 --limit 5
163
22
  ```
164
23
 
165
- ITX 등 KTX 외 노선을 search 단계에서 골랐다면 reserve 에도 똑같이 `--train-type` 을 넘긴다.
166
-
167
24
  ```bash
168
- npx -y @nomadamas/k-skill@0 exec ktx-booking scripts/ktx_booking.py -- reserve 남춘천 용산 20260503 150000 --train-id <train_id> --train-type itx-cheongchun --seat-option general-first
25
+ npx -y @nomadamas/k-skill@0 exec ktx-booking scripts/ktx_booking.py -- source
169
26
  ```
170
27
 
171
- 응답에는 예약번호, 운임, 구입기한이 포함된다. 이 시점에 **좌석 확보는 완료되었다**고 안내한다. generic fallback에서는 결제를 handoff하고, 돌쇠에서는 아래 결제 단계로 계속 진행한다.
172
- 좌석이 없을 때는 조회 단계에서 `--include-waiting-list` 를 켜고 예약 단계에서 `--try-waiting` 으로 예약 대기까지 시도할 수 있다.
173
-
174
- ### 5-1. N-card discounted reservation
175
-
176
- N카드 할인을 적용하려면 먼저 보유 N카드 목록을 조회해 카드 번호를 확인한다.
177
-
178
- ```bash
179
- npx -y @nomadamas/k-skill@0 exec ktx-booking scripts/ktx_booking.py -- ncard-list
180
- ```
181
-
182
- N카드로 할인 열차를 조회한다 (`--ncard-index` 는 `ncard-list` 결과의 순번). `ncard-list` 는 로그/셸 노출을 줄이기 위해 카드 번호를 마스킹해 출력한다.
183
-
184
- ```bash
185
- npx -y @nomadamas/k-skill@0 exec ktx-booking scripts/ktx_booking.py -- ncard-search 대전 서울 20260512 100000 --ncard-index 1 --train-type ktx
186
- ```
187
-
188
- 응답의 `train_id` 를 복사해 `reserve` 에 같은 `--ncard-index` 를 붙여 예약한다.
189
-
190
- ```bash
191
- npx -y @nomadamas/k-skill@0 exec ktx-booking scripts/ktx_booking.py -- reserve 대전 서울 20260512 100000 \
192
- --train-id <train_id> \
193
- --ncard-index 1
194
- ```
195
-
196
- `--ncard-index` 를 지정하면 `--adults` 등 승객 옵션은 무시되고 N카드 승객 1명으로 처리된다. `--ncard-no` 직접 입력도 지원하지만 셸 히스토리에 남을 수 있어 권장하지 않는다. generic fallback에서는 결제를 handoff하고, 돌쇠에서는 아래 결제 단계로 계속 진행한다.
197
-
198
- N카드 기능은 `korail2-ncard` 패키지가 필요하다. 없으면 해당 커맨드 실행 시 설치 안내가 출력된다.
199
-
200
- ### 6. Continue to payment in Dolshoi
201
-
202
- 돌쇠에서 사용자가 예매 완료를 요청했다면 예약 성공에서 멈추지 않는다.
203
-
204
- 1. CloakBrowser의 공식 Korail 예약/결제 화면에서 방금 만든 예약번호를 다시 식별한다.
205
- 2. vault-backed login을 사용하고 N카드/할인, 승객, 좌석, 결제수단을 확인한다.
206
- 3. 실제 결제 버튼 직전에 `clarify`로 열차, 날짜·시각, 승객, 좌석 등급, 할인, 총액을 보여주고 승인받는다.
207
- 4. 승인되면 결제를 실행하고 결제 완료 화면, 예약번호, 영수증/결제 상태를 확인한다.
208
-
209
- 돌쇠가 아니거나 공식 결제 표면을 사용할 수 없으면 예약번호와 구입기한을 제공하고 generic handoff로 종료한다.
210
-
211
- ### 7. Inspect or cancel
212
-
213
- 취소는 대상 예약을 다시 조회해 식별한 뒤에만 진행한다.
214
-
215
- ```bash
216
- npx -y @nomadamas/k-skill@0 exec ktx-booking scripts/ktx_booking.py -- reservations
217
- ```
28
+ ## Inputs
218
29
 
219
- 취소 실행 직전에 `clarify`로 예약번호, 열차, 날짜·시각, 승객, 환불/위약금 정보를 확인하고 승인받는다.
30
+ - `--dep`: 출발역명. `서울`과 `서울역` 모두 허용한다.
31
+ - `--arr`: 도착역명.
32
+ - `--date`: `YYYYMMDD`.
33
+ - `--time`: 가장 이른 출발시각 `HHMM`, 기본 `0000`.
34
+ - `--time-limit`: 가장 늦은 출발시각 `HHMM`, 기본 `2359`.
35
+ - `--limit`: 최대 결과 수, 1~50.
220
36
 
221
- ```bash
222
- npx -y @nomadamas/k-skill@0 exec ktx-booking scripts/ktx_booking.py -- cancel <reservation_id>
223
- ```
37
+ ## Output
224
38
 
225
- ## Done when
39
+ - `count`
40
+ - `trains[]`: `train_no`, `train_type`, `dep`, `arr`, `dep_time`, `arr_time`
41
+ - `date`
42
+ - `schedule_note`
43
+ - `source`: 공식 게시물 제목·게시일·XLSX URL·게시판 URL
44
+ - `booking_url`
226
45
 
227
- - 조회면 열차 후보가 정리되어 있다
228
- - 좌석 상세 확인이면 호차별 남은 좌석번호와 필요한 꿀팁 조건이 정리되어 있다
229
- - 예약이면 예약 결과와 제한 시간이 확인되어 좌석 확보 완료를 안내했다
230
- - 돌쇠의 예매 완료 요청이면 `clarify` 승인 후 결제 완료 상태와 영수증/예약번호를 확인했다
231
- - 취소면 어떤 예약을 취소했는지 남아 있다
46
+ 항상 결과는 **공개 운행계획 시간표**이며 실시간 잔여석·운휴·지연 정보가 아니라는 점을 명시한다.
232
47
 
233
48
  ## Failure modes
234
49
 
235
- - 로그인 실패
236
- - 매진
237
- - Korail anti-bot 규칙 변경
50
+ - 공식 시간표 게시판 또는 XLSX 다운로드 실패
51
+ - 요청일에 적용되는 KTX 시간표 없음
52
+ - XLSX 형식 변경으로 header를 찾지 못함
53
+ - 요청 구간·시간대 결과 없음: 오류가 아니라 `count: 0`
54
+ - 잘못된 날짜·시간·limit: 실행 전 오류
238
55
 
239
- ## Notes
56
+ ## Hard boundaries
240
57
 
241
- - `scripts/ktx_booking.py` upstream `korail2` anti-bot 회귀를 보완하는 helper 다
242
- - `korail2` KTX/Korail 전용 표면이라 train type 과 passenger model 이 분명하다
243
- - 결제 자동화 금지는 generic fallback에만 적용한다. 돌쇠에서는 `clarify` 승인 후 공식 결제 표면으로 완료한다
244
- - aggressive polling 피한다
58
+ - 로그인·credential 요청 금지
59
+ - `ScheduleView`, `korail2`, Dynapath 내부 경로 사용 금지
60
+ - 예약·결제·취소·좌석 선점 금지
61
+ - CAPTCHA·인증·anti-bot 통제 우회 금지
@@ -0,0 +1,10 @@
1
+ # KTX 공식 시간표 조회 관련 고지
2
+
3
+ 이 스킬은 한국철도공사가 공개한 시간표 게시판과 XLSX 첨부파일만 읽는다.
4
+
5
+ - 회원 로그인과 credential을 사용하지 않는다.
6
+ - Korail 앱 내부 API, `ScheduleView`, Dynapath token을 호출·생성·재현하지 않는다.
7
+ - CAPTCHA, anti-bot 또는 접근통제를 우회하지 않는다.
8
+ - 실시간 잔여석, 예약, 좌석 선점, 결제, 취소를 실행하지 않는다.
9
+
10
+ 결과는 공개 운행계획 시간표이며 실제 운휴·지연·잔여석 정보가 아니다. 실제 이용 전에는 공식 코레일 예매 페이지에서 다시 확인해야 한다.
@@ -0,0 +1,14 @@
1
+ # DISCLAIMER — `ktx-booking`
2
+
3
+ 이 스킬은 한국철도공사·코레일·KTX의 공식 기능 또는 공식 지원 도구가 아니며, 공식 제휴·후원·승인·인증 또는 협업한 사실이 전혀 없습니다. 상표와 서비스명은 열차 조회·호환 대상을 설명하기 위해서만 사용합니다.
4
+
5
+ 대법원 2005. 6. 10. 선고 [2005도1637 판결](https://www.law.go.kr/LSW/precInfoP.do?precSeq=83920)(소니용 리모컨 사건)은 기능 설명용 표장과 출처표시를 구별했습니다. [상표법 제2조](https://www.law.go.kr/법령/상표법/제2조), [제89조](https://www.law.go.kr/법령/상표법/제89조), [제90조](https://www.law.go.kr/법령/상표법/제90조), [제108조](https://www.law.go.kr/법령/상표법/제108조)에 따른 출처 혼동 판단은 별도입니다.
6
+
7
+ 대법원 2022. 5. 12. 선고 [2021도1533 판결](https://www.law.go.kr/LSW/precInfoP.do?precSeq=221765)은 공개정보 수집만으로 곧바로 [정보통신망법 제48조](https://www.law.go.kr/법령/정보통신망이용촉진및정보보호등에관한법률/제48조) 위반이 되는 것은 아닌 사정을 제시했지만, 철도 예매 자동화·접근통제 우회·반복 선점을 허용하지 않습니다. [저작권법 제93조](https://www.law.go.kr/법령/저작권법/제93조)와 [형법 제314조 제2항](https://www.law.go.kr/법령/형법/제314조)도 별도입니다.
8
+
9
+ - 공개 운행정보 자동 수집은 반드시 개인의 정보 조회용으로만 사용합니다.
10
+ - 매진 감시, 조직적·대량 크롤링, 반복 선점·예약·취소, 공격적 polling을 하지 않습니다.
11
+ - CAPTCHA·anti-bot·로그인·접근통제·rate limit·IP 차단을 우회하거나 차단 회피를 하지 않습니다.
12
+ - `MACRO ERROR`나 접근 거부가 나타나면 즉시 중단하며 정상 예매 영업을 방해하지 않습니다.
13
+
14
+ 이 문서는 적법성을 보증하는 법률 자문이 아닙니다.