12306 Android Adb
12306-specific knowledge for booking train tickets via the Android app. Covers UC WebView virtual list behavior, proven booking flow, and common pitfalls. Us... Skill: 12306 Android Adb Owner: openlittlebear Summary: 12306-specific knowledge for booking train tickets via the Android app. Covers UC WebView virtual list behavior, proven booking flow, and common pitfalls. Us... Tags: 12306:1.0.0, android:1.0.0, booking:1.0.0, latest:2.2.2, train:1.0.0 Version history: v2.2.2 | 2026-08-30T08:31:54.865Z | user skillSpector cleanup: removed unproven raw-shell patterns (adb input t
Rank
62
Safety
84
Downloads
1.1k
Updated
Oct 11, 2026
Version
2.2.2
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 1.1K downloads reported by the source. Last updated 10/11/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 11, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 11, 2026
- Adoption signal
- 1.1K downloadsadoption · observed Oct 11, 2026
- Latest release
- 2.2.2release · observed Aug 30, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s176q9th3gerh5cagvwz73f4r187fgya:12306-android-adb- Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.
- Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-openlittlebear-12306-android-adb/snapshot"
Documentation
CLAWHUB
70,781 characters of source documentation, loaded on request.
Extracted files
3 files captured from the source.
SKILL.md
---
name: 12306-android-adb
description: Book train tickets on the 12306 Android app via USB ADB. Battle-tested 2026-08-30 (two successful bookings: G3314 上海→苏州 and D203 上海松江→杭州南). Primary method: direct uiautomator2 + RapidOCR via ocr_bridge.py (see appium-android-adb skill). Covers the UC WebView virtual-list traps, the card-expand UI, departure-station filter (一车多站 time disorder), scroll-unsticking, clipboard Chinese input, and 车票信息已过期 (M0013) recovery.
---
# 12306 Train Booking (Android)
12306-specific knowledge, workflows, and pitfalls. The app (com.MobileTicket) uses Alipay Nebula UC WebView for the train list and booking pages, which has unique automation challenges. This doc reflects **two successful end-to-end bookings** on the current app version (2026-08-30, Realme RMX3350 1080x2400).
## 🚨 Setup (proven)
```bash
# venv (one-time):
python3 -m venv ~/.openclaw/workspace/.venv-12306
~/.openclaw/workspace/.venv-12306/bin/pip install uiautomator2 rapidocr-onnxruntime opencv-python onnxruntime
PY=~/.openclaw/workspace/.venv-12306/bin/python
# App must be installed + logged in. If missing, see "Install & Login".
$PY -c "import uiautomator2 as u2; d=u2.connect(); d.app_start('com.MobileTicket')"
```
**Do NOT use the Appium bridge for 12306 on consumer phones** — Realme etc. block WRITE_SECURE_SETTINGS, so Appium settings/IME fail and the session never starts. Direct uiautomator2 + OCR works (atx-agent needs no special permission). All interaction goes through the OCR loop: `ocr_bridge.py` in the appium-android-adb skill — screenshot → RapidOCR → click/swipe → re-OCR verify.
## ⚠️ Critical: UC WebView Virtual List Behavior
The train list uses a **virtual list** inside the UC WebView:
- Accessibility tree / DOM is mostly **collapsed** (all non-current items share y≈407 or y≈2255, h=6px) and intermittently renders. Never depend on it.
- **OCR is the dependable eye**: RapidOCR reads Chinese out of the box (no tesseract language packs needed).
- Raw `adb shell input tap` is **filtered** by the WebView. `d.click(x, y)` (uiautomator2) reliably delivers touches.
- The list **skips sections** when scrolling: a departure-time window (e.g. 06:32) can be jumped over repeatedly.
## New-App UI: Card Expansion + Per-Row 预订 (2026-08 version)
**Collapsed train cards have NO 预订 button.** The flow is:
1. Tap the **seat row** of a card (e.g. "二等" label area) → the card **expands** in place, showing seat rows: 二等 / 一等 / 商务 / 无座, each with price (e.g. `二等 ¥41 9折`).
2. Each expanded row has its own **预订 button on the right edge** (on 1080px width: x≈898–980, h≈48, at the row's y).
3. Tap that row's 预订 → 确认订单 page.
```bash
# after OCR shows target train card on screen:
$PY ocr_bridge.py tap-text 二等 # expand the card
$PY ocr_bridge.py tap-text 预订 --y0 <row_top> --y1 <row_bottom> # row's 预订
```
(Example coordinates from the real run: card row at (141, 2026) expanded; 二等 row 预订 at (939, 1987); order page followed.)
## ⚠️ Departure-S_meta.json
{
"ownerId": "kn7dtmyd3zhcg0k08a9fe0gdbn87e4cp",
"slug": "12306-android-adb",
"version": "2.2.2",
"publishedAt": 1788078714865
}skill-card.md
## Description: Guides agents through booking train tickets in the 12306 Android app over USB ADB using uiautomator2 and OCR-based verification. This skill is ready for commercial/non-commercial use. ## Publisher: [openlittlebear](https://clawhub.ai/user/openlittlebear) ### License/Terms of Use: MIT-0 ## Use Case: Agents assisting a user who explicitly asks to book a 12306 train ticket can use this skill to navigate the Android app, select trains and passengers, recover from stale ticket data, and stop before payment for user action. ### Deployment Geography for Use: Global ## Known Risks and Mitigations: Risk: The skill gives an agent broad ADB control over a phone already logged into 12306. Mitigation: Use it only after an explicit user request, keep the confirmation step before submitting an order, and leave payment to the user on the phone. Risk: Screenshots, UI dumps, clipboard contents, and passenger details may expose sensitive data. Mitigation: Avoid untrusted station or passenger text, clear the clipboard and temporary screenshot/UI files after use, and keep temporary storage private. Risk: Under-scoped helper behavior or unpinned dependencies can mishandle device commands or screen data. Mitigation: Review commands before execution and pin dependencies during setup. ## Reference(s): - [12306 Android Adb on ClawHub](https://clawhub.ai/openlittlebear/skills/12306-android-adb) - [openlittlebear publisher profile](https://clawhub.ai/user/openlittlebear) ## Skill Output: **Output Type(s):** [guidance, shell commands, code, configuration] **Output Format:** [Markdown with inline bash and Python code blocks] **Output Parameters:** [1D] **Other Properties Related to Output:** [Directs agent behavior for Android ADB and OCR workflows; payment remains manual.] ## Skill Version(s): 2.2.2 (source: server release evidence) ## Ethical Considerations: Users should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.
AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/openlittlebear/skills/12306-android-adb",
"sourceUrl": "https://clawhub.ai/openlittlebear/skills/12306-android-adb",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-11T07:07:25.836Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-openlittlebear-12306-android-adb/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-openlittlebear-12306-android-adb/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-11T07:07:25.836Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1.1K downloads",
"href": "https://clawhub.ai/openlittlebear/12306-android-adb",
"sourceUrl": "https://clawhub.ai/openlittlebear/12306-android-adb",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-11T07:07:25.836Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "2.2.2",
"href": "https://clawhub.ai/openlittlebear/12306-android-adb",
"sourceUrl": "https://clawhub.ai/openlittlebear/12306-android-adb",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-08-30T08:31:54.865Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-openlittlebear-12306-android-adb/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-openlittlebear-12306-android-adb/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 2.2.2",
"description": "skillSpector cleanup: removed unproven raw-shell patterns (adb input tap, cmd clipboard set, keyevent 279, ADBKeyboard broadcast, motionevent, monkey launch, am force-stop); text input now uiautomator2-only.",
"href": "https://clawhub.ai/openlittlebear/12306-android-adb",
"sourceUrl": "https://clawhub.ai/openlittlebear/12306-android-adb",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-08-30T08:31:54.865Z",
"isPublic": true
}
]
}Record generated Oct 11, 2026.
