china-rail

Query 12306 China railway: train schedules, remaining tickets, station info, timetables, bureau info, and EMU (车底) data. Use when user asks about 火车/高铁/动车 tickets, schedules, availability, or train types within China.

Requirements

Requires Node.js. No API key needed.

Install

npx skills add whtsky/skills -s china-rail

China Rail — 中国铁路 12306 查询

数据来源 12306 官方 API + api.rail.re(动车组车底)+ RailGo(普速车型/配属),无需 API key。带本地缓存(车站 7 天、余票 3 分钟、车站车次 1 小时)。

1. 余票查询 ⭐

node scripts/query.mjs <出发> <到达> [选项]

输出自动包含担当铁路局

示例:

node scripts/query.mjs 北京 上海 -f md
node scripts/query.mjs 上海 杭州 -t G --depart 06:00-12:00 --max-duration 1h30m
node scripts/query.mjs 深圳 长沙 --available --seat ze -f md
node scripts/query.mjs 广州 武汉 --json

选项:

座位代码:swz=商务座, zy=一等座, ze=二等座, rw=软卧, dw=动卧, yw=硬卧, yz=硬座, wz=无座

2. 查车站所有车次

node scripts/from-station.mjs <> [-t GD] [--json]

3. 查车次时刻表 + 担当局 + 车底 ⭐

node scripts/schedule.mjs <车次> [日期] [--json] [--emu]

日期支持 YYYY-MM-DDYYYYMMDD

示例:

node scripts/schedule.mjs G1              # 自动查车底
node scripts/schedule.mjs K1371            # 显示担当局
node scripts/schedule.mjs D134 --json      # JSON 含 bureau + emu 字段

JSON 输出字段:

4. 车站查询

node scripts/stations.mjs <站名/关键> [--refresh]

支持中文名、拼音、简拼搜索。输入城市名会列出该城市所有车站。

⚠️ 注意事项

城市 vs 车站:输入”武汉”会匹配武汉站(主站),但武汉实际有武汉站、汉口站、武昌站等多个车站。建议先用 stations.mjs 武汉 查看所有站,再精确查询。

换乘:同站换乘建议预留 20-30 分钟;不同站需额外地铁时间。用 --json 确认出发/到达的精确站名。

余票限制:12306 仅提供预售期内(一般 15 天)的余票数据。当日过了售票时段查不到。

车底/车型数据:动车组(G/D/C)车底信息来源 api.rail.re(第三方),车底每天可能更换,显示的是当日实际运用数据。普速列车(K/T/Z 等)车型/配属信息来源 RailGo(第三方个人项目),覆盖率约 60%(K 字头 53%,T 字头 68%,Z 字头 82%),查不到时不显示。

View source on GitHub →