Install
openclaw skills install korea-metropolitan-bus-alertsCreate and manage scheduled bus arrival alerts using Korea TAGO (국토교통부) OpenAPI and Clawdbot cron. Use when a user wants to register weekday/weekend schedules like "평일 오전 7시, <정류소명>, <노선들>" and receive automatic arrival summaries via their configured Gateway messaging (DM only).
openclaw skills install korea-metropolitan-bus-alertsScheduled bus arrival alerts powered by 국토교통부 TAGO OpenAPI.
This skill is designed for users running Clawdbot Gateway + Clawdbot cron. Users register rules like:
Then the system sends arrival summaries to the registering user (DM) on schedule.
Note (MVP): stop resolution is done via stop name search (cityCode + keyword). GPS-based nearby lookup exists but may return 0 results depending on key/region.
systemctl --user 가 동작하는 환경 (systemd user service)clawdbot CLIYou must set a TAGO service key in your environment (never commit or paste it into markdown).
Recommended env var:
TAGO_SERVICE_KEYGood for quick manual tests; cron jobs will NOT inherit this unless the Gateway service has it.
export TAGO_SERVICE_KEY='...'
This is the most “set it once and forget it” flow.
Run:
python3 korea-metropolitan-bus-alerts/scripts/setup.py
If your network blocks the endpoint or TAGO returns 403 during the smoke test, you can still complete setup:
python3 korea-metropolitan-bus-alerts/scripts/setup.py --skip-smoke
It will:
TAGO_SERVICE_KEY (hidden input)~/.clawdbot/secrets/tago.env (chmod 600)(Advanced/manual) If you prefer shell scripts, korea-metropolitan-bus-alerts/scripts/set_tago_key.sh is still available, but setup.py is the recommended UX.
.env / tago.env.docker compose config or similar commands that may print env values.export TAGO_SERVICE_KEY='...'
python3 korea-metropolitan-bus-alerts/scripts/tago_bus_alert.py nearby-stops --lat 37.5665 --long 126.9780
Tell the agent something like:
If the stop name is ambiguous (e.g., opposite side of road), the agent MUST ask a follow-up question to pick the correct direction/stop candidate before creating the rule.
(Phase 2: arbitrary cron expressions)
sessionTarget: isolated) + deliver: true.references/cron_recipe.md and scripts/cron_builder.py.For integration testing (and for power users), use:
scripts/rule_wizard.py registerIt will:
clawdbot cron add to register itSingle provider only (MVP):
scripts/ for deterministic behavior.references/api_reference.md.Use scripts/tago_bus_alert.py for deterministic TAGO lookups:
nearby-stops (GPS → stop candidates)arrivals (cityCode+nodeId → arrivals; optional route filtering)