12306 Train Query

Query China Railway 12306 for train schedules, remaining tickets, and station info. Use when user asks about train/高铁/火车 tickets, schedules, or availability...

kirorab

@kirorab

What This Skill Does

Command-line tool to query China Railway 12306 for train schedules, remaining tickets, and station information. Supports filtering by date, train type, departure/arrival time windows, max duration, and seat availability, with output in HTML, Markdown, or JSON.

Replaces manually checking the 12306 website or app by providing a scriptable CLI to fetch real-time train data and ticket availability directly from the official API.

When to Use It

  • Check available trains and remaining seats from Beijing to Shanghai for tomorrow
  • Filter high-speed G trains departing between 8 AM and noon with second-class seats available
  • Look up the exact station name for Hong Kong West Kowloon
  • Find bookable trains from Shenzhen to Changsha arriving before 6 PM
  • Get a Markdown table of all trains from Shanghai to Hangzhou with max 1-hour travel time

Install

$ openclaw skills install @kirorab/12306

12306 Train Query

Query train schedules and remaining tickets from China Railway 12306.

Query Tickets

node {baseDir}/scripts/query.mjs <from> <to> [options]
  • HTML mode (default): writes file, prints path to stdout
  • Markdown mode (-f md): prints table to stdout

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 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

Options

  • -d, --date <YYYY-MM-DD>: Travel date (default: today)
  • -t, --type <G|D|Z|T|K>: Filter train types (combinable, e.g. GD)
  • --depart <HH:MM-HH:MM>: Depart time range (e.g. 08:00-12:00, 18:00-)
  • --arrive <HH:MM-HH:MM>: Arrive time range (e.g. -18:00, 14:00-20:00)
  • --max-duration <duration>: Max travel time (e.g. 2h, 90m, 1h30m)
  • --available: Only show bookable trains
  • --seat <types>: Only show trains with tickets for given seat types (comma-separated: swz,zy,ze,rw,dw,yw,yz,wz)
  • -f, --format <html|md>: Output format — html (default, saves file) or md (markdown table to stdout)
  • -o, --output <path>: Output file path, html mode only (default: {baseDir}/data/<from>-<to>-<date>.html)
  • --json: Output raw JSON to stdout

Output Columns

ColumnMeaning
商务/特等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

  • Data comes directly from 12306 official API (no key needed)
  • Station data is cached for 7 days in {baseDir}/data/stations.json
  • Supports city names (resolves to main station) or exact station names
  • Works for all train types: G (高铁), D (动车), Z (直达), T (特快), K (快速)

Related skills

cpbl

@ichendong

Query CPBL 中華職棒 scores schedules live games standings player stats news and Taiwan baseball history for Taiwan users Use when the user asks about CPBL 戰績 賽程 即時比分 球員數據 排行榜 新聞 年度獎項 二軍 熱身賽 總冠軍賽 or historical CPBL facts

01.1k

Claude Code Usage

@azaidi94

Check Claude Code OAuth usage limits (session & weekly quotas). Use when user asks about Claude Code usage, remaining limits, rate limits, or how much Claude usage they have left. Includes automated session refresh reminders and reset detection monitoring.

166.4k

OpenClaw Backup

@alex3alex

Backup and restore OpenClaw data. Use when user asks to create backups, set up automatic backup schedules, restore from backup, or manage backup rotation. Handles ~/.openclaw directory archiving with proper exclusions.

8932k

n8n Automation

@dilomcfly

Manage n8n workflows from OpenClaw via the n8n REST API. Use when the user asks about n8n workflows, automations, executions, or wants to trigger, list, create, activate, or debug n8n workflows. Supports both self-hosted n8n and n8n Cloud instances.

96.5k

Clawdbot Logs

@satriapamudji

Analyze Clawdbot logs and diagnostics. Use when the user asks about bot performance, response times, errors, session stats, token usage, API costs, or wants to debug slow responses.

84.8k

Zotero

@terwox

Manage Zotero reference libraries via the Web API. Search, list, add items by DOI/ISBN/PMID (with duplicate detection), delete/trash items, update metadata and tags, export in BibTeX/RIS/CSL-JSON, batch-add from files, check PDF attachments, cross-reference citations, find missing DOIs via CrossRef, and fetch open-access PDFs. Supports --json output for scripting. Use when the user asks about academic references, citation management, literature libraries, PDFs for papers, bibliography export, or Zotero specifically.

64.7k