Install
openclaw skills install @zzzhe2333/ninebot-show-skillRead-only Ninebot/九号 electric vehicle status and report skill. Query battery, range, charging, smart-service remaining days, location, monthly/today rides, recent ride details, and generate map or ride-track images through a locally authenticated ninecli session. Use when the user asks about 九号/Nine
openclaw skills install @zzzhe2333/ninebot-show-skillRead-only Agent Skill for Ninebot/九号 electric vehicles. It uses a locally authenticated ninecli session. Never ask the user to paste a Ninebot password, SMS verification code, access token, cookie, or BLE secret into chat.
Treat these as sensitive: phone numbers, SN/serial numbers, VIN/frame numbers, Bluetooth MAC, Ninebot UID/MID, device IDs, tokens, cookies, BLE secrets, exact coordinates/addresses, and account/vehicle-linked service or ride IDs.
district; district reverse-geocoding reduces coordinates to ~1 km precision before transmission. Only use exact when the user explicitly requests a full address.--json follows the same privacy mode. Coordinates appear only in coordinates mode.position= unless the user explicitly requests one; use locate.py --include-map-link only with exact or coordinates.restapi.amap.com; OSM map tiles reveal the requested tile area to tile.openstreetmap.org; weather queries send the configured weather location to wttr.in. See references/network-privacy.md.blue_secret.references/example-data.md.Run from the skill directory:
bash scripts/setup.sh
Then the user completes Ninebot authentication locally:
.venv/bin/ninecli login
.venv/bin/ninecli vehicles --json
Write the returned vehicle wnumber into:
~/.config/ninebot-show-skill/config.json
Do not request that the user sends login credentials or tokens to the Agent.
Environment check:
scripts/run.sh --check
Generate a Chinese report:
scripts/run.sh
Machine-readable JSON:
scripts/run.sh --json
Hide location:
scripts/run.sh --privacy off
Coordinates only:
scripts/run.sh --privacy coordinates --no-weather --json
Location helper:
.venv/bin/python scripts/locate.py --privacy district
Static map:
.venv/bin/python scripts/map_shot.py
Recent ride visualization:
.venv/bin/python scripts/ride_plot.py
Specific ride track:
.venv/bin/python scripts/render_trail.py --out /tmp/track.png --ride <travel_id>
ninecli status <SN> --json: current vehicle state.ninecli battery <SN> --json: main-battery information.ninecli vehicles --json: vehicle metadata. Only use non-secret report fields.ninecli travel <SN> --month YYYYMM --json: monthly aggregate and a limited ride list.smart_service_surplus_days: remaining smart-service days.is_smart_service_expired: smart-service expiration flag.More detailed smart-service endpoints observed in traffic captures are encrypted and are not treated as supported unless the underlying CLI exposes them safely. Never embed HAR authentication headers or encrypted session material to imitate support.
Vehicle status/trail coordinates are treated as WGS-84. Convert to GCJ-02 before using AMap.
For Chinese reverse geocoding or AMap static maps, set either:
AMAP_WEB_KEY=<your AMap Web Service key>
or AMAP_WEBSERVICE_KEY. Prefer process environment variables. An optional fallback file is ~/.config/ninebot-show-skill/.env (or the path in NINEBOT_ENV_FILE). Never include a real .env in a public Skill archive.
trail does not reliably provide timestamps per point, so the speed chart uses distance as the horizontal axis.ninecli adds more fields.Load these only when needed:
references/configuration.md — configuration and privacy modes.references/example-data.md — safe public example values.PRIVACY.md — publication/privacy checklist.README.md — installation paths for Claude Code, Hermes, OpenClaw, and ClawHub.