korea-metropolitan-bus-alerts

Create 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).

7 stars

Best use case

korea-metropolitan-bus-alerts is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Create 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).

Teams using korea-metropolitan-bus-alerts should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/korea-metropolitan-bus-alerts/SKILL.md --create-dirs "https://raw.githubusercontent.com/Demerzels-lab/elsamultiskillagent/main/public/skills/hsooooo/korea-metropolitan-bus-alerts/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/korea-metropolitan-bus-alerts/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How korea-metropolitan-bus-alerts Compares

Feature / Agentkorea-metropolitan-bus-alertsStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Create 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).

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 수도권 버스 도착 알림 (Clawdbot cron)

Scheduled bus arrival alerts powered by **국토교통부 TAGO OpenAPI**.

This skill is designed for users running **Clawdbot Gateway + Clawdbot cron**. Users register rules like:
- "평일 오전 7시, 인천 한빛초등학교, 535"
- "평일 오후 5시30분, 고양 향동초등학교, 730, 503"

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.

## Prerequisites
- A running Clawdbot Gateway (Telegram/Slack/etc. already configured)
- Clawdbot cron enabled/usable
- A data.go.kr API key for TAGO

## One-time setup: TAGO API key
You must set a TAGO service key in your environment (never commit or paste it into markdown).

Recommended env var:
- `TAGO_SERVICE_KEY`

### Option A (fastest): one-off test in your current shell
Good for quick manual tests; **cron jobs will NOT inherit this** unless the Gateway service has it.

```bash
export TAGO_SERVICE_KEY='...'
```

### Option B (recommended): one-command setup (auto-detect systemd unit)
This is the most “set it once and forget it” flow.

Run:
```bash
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:
```bash
python3 korea-metropolitan-bus-alerts/scripts/setup.py --skip-smoke
```

It will:
- Auto-detect your Gateway systemd user service (supports custom unit names)
- Prompt for `TAGO_SERVICE_KEY` (hidden input)
- Save it to `~/.clawdbot/secrets/tago.env` (chmod 600)
- Write a systemd override to load that env file
- Restart the Gateway
- Run a small TAGO smoke test

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

### Safety notes
- Never commit `.env` / `tago.env`.
- Avoid sharing outputs of `docker compose config` or similar commands that may print env values.

## Quick start

### A) Test TAGO connectivity (manual)
```bash
export TAGO_SERVICE_KEY='...'
python3 korea-metropolitan-bus-alerts/scripts/tago_bus_alert.py nearby-stops --lat 37.5665 --long 126.9780
```

### B) Register an alert rule (interactive)
Tell the agent something like:
- "평일 07:00, 인천 한빛초등학교, 535 알림 등록해줘"

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.

### C) List rules
- "버스 알림 목록 보여줘"

### D) Delete a rule
- "버스 알림 3번 삭제해줘" (confirm before delete)

### E) Test a rule (run now)
- "방금 등록한 규칙 테스트해줘" (one-time message)

## Supported schedule expressions (MVP)
- 매일 HH:MM
- 평일 HH:MM
- 주말 HH:MM

(Phase 2: arbitrary cron expressions)

## Cron implementation notes
- Use isolated cron jobs (`sessionTarget: isolated`) + `deliver: true`.
- Delivery is **DM-only** to the registering user.
- See `references/cron_recipe.md` and `scripts/cron_builder.py`.

### Interactive registration helper (server-side)
For integration testing (and for power users), use:
- `scripts/rule_wizard.py register`

It will:
1) Ask for schedule/time/routes
2) Resolve stop candidates via GPS nearby lookup (direction disambiguation)
3) Generate the job JSON
4) Optionally call `clawdbot cron add` to register it

## Data source
Single provider only (MVP):
- 정류장 조회: BusSttnInfoInqireService (15098534)
- 도착 조회: ArvlInfoInqireService (15098530)

## Safety / Security
- Never write API keys/tokens/passwords into markdown files.
- For browser automation on logged-in pages: require explicit user confirmation.
- For destructive operations (cron delete): confirm before acting.
- DM-only delivery (MVP): do not broadcast to groups/channels.

## Implementation notes
- Prefer scripts under `scripts/` for deterministic behavior.
- Put detailed API field mappings in `references/api_reference.md`.

### Deterministic helper script
Use `scripts/tago_bus_alert.py` for deterministic TAGO lookups:
- `nearby-stops` (GPS → stop candidates)
- `arrivals` (cityCode+nodeId → arrivals; optional route filtering)

Related Skills

camelcamelcamel-alerts

7
from Demerzels-lab/elsamultiskillagent

Monitor CamelCamelCamel price drop alerts via RSS and send Telegram notifications when items go on sale. Use when setting up automatic price tracking for Amazon products with CamelCamelCamel price alerts.

rho-telegram-alerts

7
from Demerzels-lab/elsamultiskillagent

Send formatted trading alerts, portfolio updates, and market signals via Telegram.

paylock

7
from Demerzels-lab/elsamultiskillagent

Non-custodial SOL escrow for AI agent deals.

agent-reputation

7
from Demerzels-lab/elsamultiskillagent

summary: Cross-platform AI agent reputation checker with trust scoring and PayLock escrow recommendations.

Telecom Agent Skill

7
from Demerzels-lab/elsamultiskillagent

Turn your AI Agent into a Telecom Operator. Bulk calling, ChatOps, and Field Monitoring.

OpenClaw-Finnhub

7
from Demerzels-lab/elsamultiskillagent

OpenClaw skill for real-time stock quote, and financials via Finnhub API.

```markdown

7
from Demerzels-lab/elsamultiskillagent

# OpenClaw-Last.fm

security-operator

7
from Demerzels-lab/elsamultiskillagent

Runtime security guardrails for OpenClaw agents.

operator-humanizer

7
from Demerzels-lab/elsamultiskillagent

Transform AI-generated text into authentic human writing.

kit-email-operator

7
from Demerzels-lab/elsamultiskillagent

**AI-powered email marketing for Kit (ConvertKit)**.

agora

7
from Demerzels-lab/elsamultiskillagent

Trade prediction markets on Agora — the prediction market exclusively for AI agents. Register, browse markets, trade YES/NO, create markets, earn reputation via Brier scores.

surf-check

7
from Demerzels-lab/elsamultiskillagent

Surf forecast decision engine.