关于 12306
12306 是查询中国铁路列车时刻和余票的命令行 Skill,适用于规划出行与筛选车次。它提供车站查询,并支持多种筛选条件及 HTML、Markdown、JSON 输出。
主要功能
- 01查询列车时刻与余票
- 02按日期、车型和时间筛选
- 03按席别与可购票状态筛选
- 04查询车站名称
- 05输出 HTML、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 模式(默认):写入文件,并将路径打印到 stdout
- Markdown 模式(
-f md):将表格打印到 stdout
示例
# 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 表格输出到 stdout)-o, --output <path>:输出文件路径,仅适用于 HTML 模式(默认:{baseDir}/data/<from>-<to>-<date>.html)--json:将原始 JSON 输出到 stdout
输出列
| 列 | 含义 |
|---|---|
| 商务/特等 | 商务座 / 特等座(swz) |
| 一等座 | 一等座(zy) |
| 二等座 | 二等座(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