linz-public-transport

Browser & Automation
v1.0.1
Benign

Query Linz Linien raw EFA endpoints for stop lookup and live departures.

2467 downloads467 installsby @fjrevoredo

Setup & Installation

Install command

clawhub install fjrevoredo/linz-public-transport

If the CLI is not installed:

Install command

npx clawhub@latest install fjrevoredo/linz-public-transport

Or install with OpenClaw CLI:

Install command

openclaw skills install fjrevoredo/linz-public-transport

or paste the repo link into your assistant's chat

Install command

https://github.com/openclaw/skills/tree/main/skills/fjrevoredo/linz-public-transport

What This Skill Does

Queries Linz Linien EFA endpoints to look up stops by name and fetch live departure times. Uses a Python script against the official Linz AG API with no external dependencies beyond the standard library.

Queries the official Linz Linien EFA API directly instead of relying on third-party transit apps or scrapers, giving access to raw departure data programmably.

When to Use It

  • Check next tram departures from a Linz stop before leaving home
  • Resolve a stop name to its numeric stop ID for automation
  • Fetch departures for a specific stop ID in a script or workflow
  • Find stops matching a partial name or street
  • Monitor upcoming buses from a stop during a commute
View original SKILL.md file
# Linz Public Transport

Use this skill to interact with Linz Linien EFA endpoints:
- `GET /efa/XML_STOPFINDER_REQUEST`
- `GET /efa/XML_DM_REQUEST`

Read endpoint details in `{baseDir}/references/endpoints.md` before implementation.
Use `{baseDir}/scripts/linz_transport.py` as the default execution path.

## Workflow
1. Resolve the API base URL.
2. Run the script subcommand that matches the task.
3. Return a compact, user-facing summary.

## Primary Tooling
- Script path: `{baseDir}/scripts/linz_transport.py`
- Runtime: Python 3, standard library only.
- Base URL input:
  - `--base-url <url>` argument, or
  - `LINZ_TRANSPORT_API_BASE_URL` environment variable, or
  - default `http://www.linzag.at/linz2`.

Preferred commands:
- Search stops:
  - `python {baseDir}/scripts/linz_transport.py stops "taubenmarkt"`
- Fetch departures by stop ID:
  - `python {baseDir}/scripts/linz_transport.py departures --stop-id 60501160 --limit 10`
- Resolve stop and fetch departures in one call:
  - `python {baseDir}/scripts/linz_transport.py next "taubenmarkt" --limit 10 --pick-first`

## Step 1: Resolve Base URL
- Use user-provided base URL first.
- Otherwise use `LINZ_TRANSPORT_API_BASE_URL` if available.
- If neither exists, use `http://www.linzag.at/linz2`.

## Step 2: Present Output
- Sort by `countdownInMinutes` ascending if needed.
- Show the next 5-10 departures unless user asks for more.
- Include both relative (`countdownInMinutes`) and absolute (`time`) times.
- Keep field names stable when returning JSON.

## Error Handling
- If stop search returns empty list, suggest nearby spellings and retry with a shorter query token.
- If multiple stop matches are returned, rerun with explicit `--stop-id` or use `next ... --pick-first` only when ambiguity is acceptable.
- If departures response is empty, state that no upcoming departures are currently available.
- If HTTP request fails, report status code, endpoint, and retry guidance.
- If EFA response includes a `message` code, include that code in diagnostics.

## Minimal Examples

```bash
python {baseDir}/scripts/linz_transport.py stops "taubenmarkt"
python {baseDir}/scripts/linz_transport.py departures --stop-id 60501160 --limit 10
python {baseDir}/scripts/linz_transport.py next "taubenmarkt" --limit 10 --pick-first
```

```powershell
python "{baseDir}/scripts/linz_transport.py" stops "taubenmarkt"
python "{baseDir}/scripts/linz_transport.py" departures --stop-id 60501160 --limit 10
python "{baseDir}/scripts/linz_transport.py" next "taubenmarkt" --limit 10 --pick-first
```

Example Workflow

Here's how your AI assistant might use this skill in practice.

INPUT

User asks: Check next tram departures from a Linz stop before leaving home

AGENT
  1. 1Check next tram departures from a Linz stop before leaving home
  2. 2Resolve a stop name to its numeric stop ID for automation
  3. 3Fetch departures for a specific stop ID in a script or workflow
  4. 4Find stops matching a partial name or street
  5. 5Monitor upcoming buses from a stop during a commute
OUTPUT
Query Linz Linien raw EFA endpoints for stop lookup and live departures.

Share this skill

Security Audits

VirusTotalBenign
OpenClawBenign
View full report

These signals reflect official OpenClaw status values. A Suspicious status means the skill should be used with extra caution.

Details

LanguageMarkdown
Last updatedFeb 26, 2026