mcpField
1
12306

12306

github.com/kirorab其他12642 次安装34 周前更新
代码仓库

关于 12306

12306 是查询中国铁路列车时刻和余票的命令行 Skill,适用于规划出行与筛选车次。它提供车站查询,并支持多种筛选条件及 HTML、Markdown、JSON 输出。

主要功能

  1. 01查询列车时刻与余票
  2. 02按日期、车型和时间筛选
  3. 03按席别与可购票状态筛选
  4. 04查询车站名称
  5. 05输出 HTML、Markdown 或 JSON

适用场景

  1. 01查找指定日期的出发车次
  2. 02筛选指定时段且有票的列车
  3. 03核对城市内具体车站
  4. 04检查中转车次的车站信息

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/kirorab/12306-skill --skill 12306

安装后在 Claude Code 中输入/12306确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
.gitignore
scripts/
query.mjs
stations.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 可能会返回该城市中任意车站的列车,而不仅仅是主站。

常见误区:

  • 武汉包括:武汉站(主站)、汉口站、武昌站、武汉东站
  • 上海包括:上海虹桥、上海站(主站)、上海南站、上海松江站
  • 深圳包括:深圳北站(主站)、深圳站(罗湖)、福田站、深圳东站
  • 广州包括:广州南站(主站)、广州站、广州东站、广州北站

最佳实践 — 始终确认准确的车站:

  1. 首先,使用 stations.mjs 列出该城市的所有车站:
    node {baseDir}/scripts/stations.mjs 武汉
    
  2. 然后,使用准确的车站名称查询,以获得准确结果:
    node {baseDir}/scripts/query.mjs 武汉 上海虹桥 -f md
    
🔄 中转指南

规划中转时:

  • 使用 JSON 输出(--json)确认准确的车站名称
  • 确保两段行程使用同一车站(例如,两段都使用武汉站,而不是武汉→汉口)
  • 同站中转建议至少预留 20-30 分钟
  • 同一城市内的不同车站需要额外的交通时间(例如,武汉→汉口乘地铁需 30 分钟以上)
📋 查询流程建议

为获得准确结果,请按以下流程操作:

  1. 列出出发城市的车站:

    node {baseDir}/scripts/stations.mjs 北京
    
  2. 列出到达城市的车站:

    node {baseDir}/scripts/stations.mjs 上海
    
  3. 使用准确的车站名称查询(例如,北京南 → 上海虹桥):

    node {baseDir}/scripts/query.mjs 北京南 上海虹桥 -d 2026-03-05 -f md
    
  4. 中转时:始终检查 JSON 输出中的 fromStation 和 toStation,确认两段行程使用同一车站。

技术说明

  • 数据直接来自 12306 官方 API(无需密钥)
  • 车站数据会在 {baseDir}/data/stations.json 中缓存 7 天
  • 适用于所有列车类型:G(高铁)、D(动车)、Z(直达)、T(特快)、K(快速)

评论

支持 Markdown