12306 Backup
by @danihe001
Query China Railway 12306 for train schedules, remaining tickets, and station info. Use when user asks about train/高铁/火车 tickets, schedules, or availability...
clawhub install 12306-backup📖 About This Skill
name: "12306" description: Query China Railway 12306 for train schedules, remaining tickets, and station info. Use when user asks about train/高铁/火车 tickets, schedules, or availability within China. metadata: {"openclaw":{"emoji":"🚄","requires":{"bins":["node"]}}}
12306 Train Query
Query train schedules and remaining tickets from China Railway 12306.
Query Tickets
node {baseDir}/scripts/query.mjs [options]
-f md): prints table to stdoutExamples
# 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 mdMorning departures, 2h max, with second class available
node {baseDir}/scripts/query.mjs 上海 杭州 -t G --depart 06:00-12:00 --max-duration 1h --seat zeOnly bookable trains arriving before 6pm
node {baseDir}/scripts/query.mjs 深圳 长沙 --available --arrive -18:00Custom output path
node {baseDir}/scripts/query.mjs 广州 武汉 -o /tmp/tickets.htmlJSON output (to stdout)
node {baseDir}/scripts/query.mjs 广州 武汉 --json
Options
-d, --date : Travel date (default: today)-t, --type : Filter train types (combinable, e.g. GD)--depart : Depart time range (e.g. 08:00-12:00, 18:00-)--arrive : Arrive time range (e.g. -18:00, 14:00-20:00)--max-duration : Max travel time (e.g. 2h, 90m, 1h30m)--available: Only show bookable trains--seat : Only show trains with tickets for given seat types (comma-separated: swz,zy,ze,rw,dw,yw,yz,wz)-f, --format : Output format — html (default, saves file) or md (markdown table to stdout)-o, --output : Output file path, html mode only (default: {baseDir}/data/--.html )--json: Output raw JSON to stdoutOutput Columns
| Column | Meaning | |--------|---------| | 商务/特等 | Business class / Premium (swz) | | 一等座 | First class (zy) | | 二等座 | Second class (ze) | | 软卧/动卧 | Soft sleeper / Bullet sleeper (rw/dw) | | 硬卧 | Hard sleeper (yw) | | 硬座 | Hard seat (yz) | | 无座 | Standing (wz) |
Values: number = remaining seats, 有 = available (qty unknown), — = not applicable
Station Lookup
node {baseDir}/scripts/stations.mjs 杭州
node {baseDir}/scripts/stations.mjs 香港西九龙
Notes
{baseDir}/data/stations.json💡 Examples
# 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 mdMorning departures, 2h max, with second class available
node {baseDir}/scripts/query.mjs 上海 杭州 -t G --depart 06:00-12:00 --max-duration 1h --seat zeOnly bookable trains arriving before 6pm
node {baseDir}/scripts/query.mjs 深圳 长沙 --available --arrive -18:00Custom output path
node {baseDir}/scripts/query.mjs 广州 武汉 -o /tmp/tickets.htmlJSON output (to stdout)
node {baseDir}/scripts/query.mjs 广州 武汉 --json
Options
-d, --date : Travel date (default: today)-t, --type : Filter train types (combinable, e.g. GD)--depart : Depart time range (e.g. 08:00-12:00, 18:00-)--arrive : Arrive time range (e.g. -18:00, 14:00-20:00)--max-duration : Max travel time (e.g. 2h, 90m, 1h30m)--available: Only show bookable trains--seat : Only show trains with tickets for given seat types (comma-separated: swz,zy,ze,rw,dw,yw,yz,wz)-f, --format : Output format — html (default, saves file) or md (markdown table to stdout)-o, --output : Output file path, html mode only (default: {baseDir}/data/--.html )--json: Output raw JSON to stdoutOutput Columns
| Column | Meaning | |--------|---------| | 商务/特等 | Business class / Premium (swz) | | 一等座 | First class (zy) | | 二等座 | Second class (ze) | | 软卧/动卧 | Soft sleeper / Bullet sleeper (rw/dw) | | 硬卧 | Hard sleeper (yw) | | 硬座 | Hard seat (yz) | | 无座 | Standing (wz) |
Values: number = remaining seats, 有 = available (qty unknown), — = not applicable
⚙️ Configuration
-d, --date : Travel date (default: today)-t, --type : Filter train types (combinable, e.g. GD)--depart : Depart time range (e.g. 08:00-12:00, 18:00-)--arrive : Arrive time range (e.g. -18:00, 14:00-20:00)--max-duration : Max travel time (e.g. 2h, 90m, 1h30m)--available: Only show bookable trains--seat : Only show trains with tickets for given seat types (comma-separated: swz,zy,ze,rw,dw,yw,yz,wz)-f, --format : Output format — html (default, saves file) or md (markdown table to stdout)-o, --output : Output file path, html mode only (default: {baseDir}/data/--.html )--json: Output raw JSON to stdoutOutput Columns
| Column | Meaning | |--------|---------| | 商务/特等 | Business class / Premium (swz) | | 一等座 | First class (zy) | | 二等座 | Second class (ze) | | 软卧/动卧 | Soft sleeper / Bullet sleeper (rw/dw) | | 硬卧 | Hard sleeper (yw) | | 硬座 | Hard seat (yz) | | 无座 | Standing (wz) |
Values: number = remaining seats, 有 = available (qty unknown), — = not applicable
📋 Tips & Best Practices
{baseDir}/data/stations.json