12306 について
12306は、中国鉄道の時刻表と残席を調べるコマンドラインスキルです。旅行の経路を計画する人向けで、駅名検索や条件指定に加え、HTML、Markdown、JSONで結果を出力できます。
主な機能
- 01列車の時刻と残席の検索
- 02日付・列車種別・時刻での絞り込み
- 03座席種別と空席状況での絞り込み
- 04駅名の検索
- 05HTML・Markdown・JSONでの出力
活用シーン
- 01指定日の列車を探す
- 02時間帯と空席状況で列車を絞る
- 03都市内の正確な駅名を確認する
- 04乗り換え区間の駅情報を確認する
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ kirorab/ 12306-skill --skill 12306インストール後、Claude Code で/12306を入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.md.gitignorescripts/query.mjsstations.mjs詳細
12306 列車照会
中国鉄道 12306 の列車時刻表と残りのチケットを照会します。
チケットの照会
node {baseDir}/scripts/query.mjs <from> <to> [options]
- HTML モード(デフォルト):ファイルを書き込み、パスを標準出力に表示します
- Markdown モード(
-f md):表を標準出力に表示します
例
# All trains from Beijing to Shanghai (defaults to today)
node {baseDir}/scripts/query.mjs 北京 上海
# Markdown table output (to stdout, good for chat)
node {baseDir}/scripts/query.mjs 北京 上海 -t G -f md
# Morning departures, 2h max, with second class available
node {baseDir}/scripts/query.mjs 上海 杭州 -t G --depart 06:00-12:00 --max-duration 1h --seat ze
# Only bookable trains arriving before 6pm
node {baseDir}/scripts/query.mjs 深圳 长沙 --available --arrive -18:00
# Custom output path
node {baseDir}/scripts/query.mjs 广州 武汉 -o /tmp/tickets.html
# JSON output (to stdout)
node {baseDir}/scripts/query.mjs 广州 武汉 --json
オプション
-d, --date <YYYY-MM-DD>:乗車日(デフォルト:今日)-t, --type <G|D|Z|T|K>:列車の種類で絞り込みます(組み合わせ可能。例:GD)--depart <HH:MM-HH:MM>:出発時刻の範囲(例:08:00-12:00、18:00-)--arrive <HH:MM-HH:MM>:到着時刻の範囲(例:-18:00、14:00-20:00)--max-duration <duration>:最大乗車時間(例:2h、90m、1h30m)--available:予約可能な列車のみを表示します--seat <types>:指定した座席種別のチケットがある列車のみを表示します(カンマ区切り:swz,zy,ze,rw,dw,yw,yz,wz)-f, --format <html|md>:出力形式 —html(デフォルト。ファイルに保存)またはmd(Markdown 表を標準出力に表示)-o, --output <path>:出力ファイルのパス。HTML モードのみ(デフォルト:{baseDir}/data/<from>-<to>-<date>.html)--json:生の JSON を標準出力に表示します
出力列
| 列 | 意味 |
|---|---|
| 商务/特等 | ビジネスクラス/プレミアム(swz) |
| 一等座 | 1 等座席(zy) |
| 二等座 | 2 等座席(ze) |
| 软卧/动卧 | 軟臥/動臥(rw/dw) |
| 硬卧 | 硬臥(yw) |
| 硬座 | 硬座(yz) |
| 无座 | 立席(wz) |
値:数値=残席数、有=空席あり(数量不明)、—=該当なし
駅の検索
node {baseDir}/scripts/stations.mjs 杭州
node {baseDir}/scripts/stations.mjs 香港西九龙
AI アシスタント向けの重要な注意事項
⚠️ 駅名の解決に関する警告
重要:都市名(例:「武汉」「上海」「深圳」「广州」で照会すると、API は主要駅だけでなく、その都市にある任意の駅を発着する列車を返す場合があります。
よくある落とし穴:
- 武汉には以下が含まれます:武汉站(主要駅)、汉口站(漢口)、武昌站(武昌)、武汉东站
- 上海には以下が含まれます:上海虹桥(虹橋)、上海站(主要駅)、上海南站、上海松江站
- 深圳には以下が含まれます:深圳北站(主要駅)、深圳站(羅湖)、福田站、深圳东站
- 广州には以下が含まれます:广州南站(主要駅)、广州站、广州东站、广州北站
推奨事項 — 必ず正確な駅名を確認してください:
- まず、
stations.mjsを使って都市内のすべての駅を一覧表示します:node {baseDir}/scripts/stations.mjs 武汉 - 次に、正確な駅名を指定して照会し、結果の精度を高めます:
node {baseDir}/scripts/query.mjs 武汉 上海虹桥 -f md
🔄 乗り換えのガイドライン
乗り換えを計画する場合:
- JSON 出力(
--json)を使って正確な駅名を確認します - 両区間で同じ駅を利用するようにします(例:どちらも武汉站を利用し、武汉→汉口のようにしない)
- 同じ駅での乗り換え時間は、最低でも20~30 分を推奨します
- 同じ都市内の異なる駅間の移動には、追加の移動時間が必要です(例:武汉→汉口は地下鉄で 30 分以上)
📋 照会ワークフローの推奨事項
正確な結果を得るには、次のワークフローに従ってください:
-
出発都市の駅を一覧表示します:
node {baseDir}/scripts/stations.mjs 北京 -
到着都市の駅を一覧表示します:
node {baseDir}/scripts/stations.mjs 上海 -
正確な駅名を指定して照会します(例:北京南 → 上海虹桥):
node {baseDir}/scripts/query.mjs 北京南 上海虹桥 -d 2026-03-05 -f md -
乗り換えの場合:JSON 出力の
fromStationとtoStationを確認し、両区間で同じ駅を利用していることを必ず確かめてください。
技術的な注意事項
- データは 12306 の公式 API から直接取得されます(キーは不要です)
- 駅データは
{baseDir}/data/stations.jsonに 7 日間キャッシュされます - すべての列車種別に対応しています:G(高速鉄道)、D(動車)、Z(直達)、T(特快)、K(快速)
コメント
Markdown 対応