{
  "schemaVersion": "1.0",
  "item": {
    "slug": "12306",
    "name": "12306 Train Query",
    "source": "tencent",
    "type": "skill",
    "category": "其他",
    "sourceUrl": "https://clawhub.ai/kirorab/12306",
    "canonicalUrl": "https://clawhub.ai/kirorab/12306",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/12306",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=12306",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "scripts/query.mjs",
      "scripts/stations.mjs"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "12306",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-24T19:37:37.737Z",
      "expiresAt": "2026-05-01T19:37:37.737Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=12306",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=12306",
        "contentDisposition": "attachment; filename=\"12306-1.0.2.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "12306"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/12306"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/12306",
    "agentPageUrl": "https://openagent3.xyz/skills/12306/agent",
    "manifestUrl": "https://openagent3.xyz/skills/12306/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/12306/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "12306 Train Query",
        "body": "Query train schedules and remaining tickets from China Railway 12306."
      },
      {
        "title": "Query Tickets",
        "body": "node {baseDir}/scripts/query.mjs <from> <to> [options]\n\nHTML mode (default): writes file, prints path to stdout\nMarkdown mode (-f md): prints table to stdout"
      },
      {
        "title": "Examples",
        "body": "# All trains from Beijing to Shanghai (defaults to today)\nnode {baseDir}/scripts/query.mjs 北京 上海\n\n# Markdown table output (to stdout, good for chat)\nnode {baseDir}/scripts/query.mjs 北京 上海 -t G -f md\n\n# Morning departures, 2h max, with second class available\nnode {baseDir}/scripts/query.mjs 上海 杭州 -t G --depart 06:00-12:00 --max-duration 1h --seat ze\n\n# Only bookable trains arriving before 6pm\nnode {baseDir}/scripts/query.mjs 深圳 长沙 --available --arrive -18:00\n\n# Custom output path\nnode {baseDir}/scripts/query.mjs 广州 武汉 -o /tmp/tickets.html\n\n# JSON output (to stdout)\nnode {baseDir}/scripts/query.mjs 广州 武汉 --json"
      },
      {
        "title": "Options",
        "body": "-d, --date <YYYY-MM-DD>: Travel date (default: today)\n-t, --type <G|D|Z|T|K>: Filter train types (combinable, e.g. GD)\n--depart <HH:MM-HH:MM>: Depart time range (e.g. 08:00-12:00, 18:00-)\n--arrive <HH:MM-HH:MM>: Arrive time range (e.g. -18:00, 14:00-20:00)\n--max-duration <duration>: Max travel time (e.g. 2h, 90m, 1h30m)\n--available: Only show bookable trains\n--seat <types>: Only show trains with tickets for given seat types (comma-separated: swz,zy,ze,rw,dw,yw,yz,wz)\n-f, --format <html|md>: Output format — html (default, saves file) or md (markdown table to stdout)\n-o, --output <path>: Output file path, html mode only (default: {baseDir}/data/<from>-<to>-<date>.html)\n--json: Output raw JSON to stdout"
      },
      {
        "title": "Output Columns",
        "body": "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)\n\nValues: number = remaining seats, 有 = available (qty unknown), — = not applicable"
      },
      {
        "title": "Station Lookup",
        "body": "node {baseDir}/scripts/stations.mjs 杭州\nnode {baseDir}/scripts/stations.mjs 香港西九龙"
      },
      {
        "title": "Notes",
        "body": "Data comes directly from 12306 official API (no key needed)\nStation data is cached for 7 days in {baseDir}/data/stations.json\nSupports city names (resolves to main station) or exact station names\nWorks for all train types: G (高铁), D (动车), Z (直达), T (特快), K (快速)"
      }
    ],
    "body": "12306 Train Query\n\nQuery train schedules and remaining tickets from China Railway 12306.\n\nQuery Tickets\nnode {baseDir}/scripts/query.mjs <from> <to> [options]\n\nHTML mode (default): writes file, prints path to stdout\nMarkdown mode (-f md): prints table to stdout\nExamples\n# All trains from Beijing to Shanghai (defaults to today)\nnode {baseDir}/scripts/query.mjs 北京 上海\n\n# Markdown table output (to stdout, good for chat)\nnode {baseDir}/scripts/query.mjs 北京 上海 -t G -f md\n\n# Morning departures, 2h max, with second class available\nnode {baseDir}/scripts/query.mjs 上海 杭州 -t G --depart 06:00-12:00 --max-duration 1h --seat ze\n\n# Only bookable trains arriving before 6pm\nnode {baseDir}/scripts/query.mjs 深圳 长沙 --available --arrive -18:00\n\n# Custom output path\nnode {baseDir}/scripts/query.mjs 广州 武汉 -o /tmp/tickets.html\n\n# JSON output (to stdout)\nnode {baseDir}/scripts/query.mjs 广州 武汉 --json\n\nOptions\n-d, --date <YYYY-MM-DD>: Travel date (default: today)\n-t, --type <G|D|Z|T|K>: Filter train types (combinable, e.g. GD)\n--depart <HH:MM-HH:MM>: Depart time range (e.g. 08:00-12:00, 18:00-)\n--arrive <HH:MM-HH:MM>: Arrive time range (e.g. -18:00, 14:00-20:00)\n--max-duration <duration>: Max travel time (e.g. 2h, 90m, 1h30m)\n--available: Only show bookable trains\n--seat <types>: Only show trains with tickets for given seat types (comma-separated: swz,zy,ze,rw,dw,yw,yz,wz)\n-f, --format <html|md>: Output format — html (default, saves file) or md (markdown table to stdout)\n-o, --output <path>: Output file path, html mode only (default: {baseDir}/data/<from>-<to>-<date>.html)\n--json: Output raw JSON to stdout\nOutput Columns\nColumn\tMeaning\n商务/特等\tBusiness class / Premium (swz)\n一等座\tFirst class (zy)\n二等座\tSecond class (ze)\n软卧/动卧\tSoft sleeper / Bullet sleeper (rw/dw)\n硬卧\tHard sleeper (yw)\n硬座\tHard seat (yz)\n无座\tStanding (wz)\n\nValues: number = remaining seats, 有 = available (qty unknown), — = not applicable\n\nStation Lookup\nnode {baseDir}/scripts/stations.mjs 杭州\nnode {baseDir}/scripts/stations.mjs 香港西九龙\n\nNotes\nData comes directly from 12306 official API (no key needed)\nStation data is cached for 7 days in {baseDir}/data/stations.json\nSupports city names (resolves to main station) or exact station names\nWorks for all train types: G (高铁), D (动车), Z (直达), T (特快), K (快速)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/kirorab/12306",
    "publisherUrl": "https://clawhub.ai/kirorab/12306",
    "owner": "kirorab",
    "version": "1.0.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/12306",
    "downloadUrl": "https://openagent3.xyz/downloads/12306",
    "agentUrl": "https://openagent3.xyz/skills/12306/agent",
    "manifestUrl": "https://openagent3.xyz/skills/12306/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/12306/agent.md"
  }
}