名称: tabussen
描述: 韦斯特博滕省及于默奥市公共交通行程规划工具(Tabussen/Ultra)。使用 ResRobot API 规划公交行程。支持韦斯特博滕省内的站点、地址、坐标、区域及本地线路。
许可证: MIT
compatibility: 需要 curl 和 jq。适用于 Claude Code 及兼容代理。
元数据:
author: simskii
version: "1.0.0"
region: sweden-vasterbotten
规划瑞典韦斯特博滕省的公共交通行程,包括于默奥本地交通(Ultra)和区域线路(韦斯特博滕省交通局)。
本工具使用 ResRobot API(Trafiklab)为 Tabussen/Ultra 提供行程规划。ResRobot 是瑞典覆盖所有运营商(包括韦斯特博滕省交通局)的全国性公共交通 API。
覆盖范围:
- Ultra(于默奥本地公交)
- 韦斯特博滕省交通局(区域公交)
- 往返瑞典其他地区的连接
- 适用的火车连接
搜索站点、车站或兴趣点。
./search-location.sh <查询词> [数量限制]
| 参数 | 描述 |
|---|---|
查询词 |
要搜索的地点名称(添加 ? 进行模糊搜索) |
数量限制 |
显示的结果数量(默认:5,最大:10) |
输出包含:
- ID - 站点标识符(用于行程搜索)
- 名称 - 站点的官方名称
- 坐标 - 纬度、经度
- 权重 - 交通流量指标(越高表示流量越大)
搜索提示:
- 使用 ? 后缀进行模糊/部分匹配:"Vasaplan?"
- 不使用 ? 进行精确搜索:"Vasaplan"
- 包含城市名称以提高精度:"Umeå Vasaplan"
使用两个地点的 ID 规划它们之间的行程。
./journey.sh <起点ID> <终点ID> [日期时间] [模式]
| 参数 | 描述 |
|---|---|
起点ID |
起点站点 ID(来自搜索) |
终点ID |
终点站点 ID |
日期时间 |
可选:"18:30"、"明天 09:00"、"2026-01-28 14:00" |
模式 |
可选:"depart"(默认)或 "arrive" |
基于坐标的搜索:
./journey.sh "63.825#20.263" <终点ID> [日期时间] [模式]
使用 纬度#经度 格式(WGS84 十进制度)。
在搜索之前,理解用户的需求:
| 用户表述 | 意图 | 如何查询 |
|---|---|---|
| "现在"、"下一班车"、"我怎么去..." | 现在出发 | 不使用日期时间参数 |
| "30分钟后"、"1小时后" | 稍后出发 | 计算时间,使用 depart 模式 |
| "大约15:00"、"下午某个时间" | 大约时间 | 使用偏移时间查询(见下文) |
| "18:00前到达"、"需要在9点到达" | 在指定时间前到达 | 使用 arrive 模式 |
| "明天早上"、"周五10点" | 未来时间 | 使用具体日期时间 |
当用户想要“大约”某个时间的选项时,提前 15-30 分钟查询以显示前后选项:
# 用户:"我想在大约15:00出行"
# 在14:30查询以获取14:30-16:00+的选项
./journey.sh ... "14:30" depart
将相对时间转换为绝对时间:
| 用户表述 | 当前时间:14:00 | 查询时间 |
|---|---|---|
| "30分钟后" | -> | "14:30" |
| "1小时后" | -> | "15:00" |
| "2小时后" | -> | "16:00" |
向用户呈现行程结果时,请使用以下表情符号和格式化指南。
| 表情符号 | 用途 |
|---|---|
bus |
公交车(Tabussen/Ultra) |
train |
火车 |
walk |
步行路段 |
clock |
时间/时长 |
clock1 |
出发时间 |
goal |
到达时间 |
pin |
站点/车站 |
house |
起点(家/起点) |
target |
目的地 |
warning |
延误或中断 |
check |
准点 |
arrows_counterclockwise |
换乘 |
始终包含工具输出中的这些关键要素:
对于简单的直达行程:
**现在出发** 从 Vasaplan
**Vasaplan** -> **Universitetet**
1 路公交车(开往 Mariehem)于 09:07 出发
09:18 到达 Universitetet
总计:11 分钟
对于需要换乘的行程:
**08:45 出发**
步行 300 米至 Vasaplan(约 4 分钟)
**Vasaplan** -> **Umeå C** -> **Skellefteå**
**第一段:**
1 路公交车于 08:51 出发
09:05 到达 Umeå C
在 Umeå C 换乘(15 分钟)
**第二段:**
100 路公交车(开往 Skellefteå)于 09:20 出发
11:45 到达 Skellefteå 汽车站
总计:3 小时 | 1 次换乘
始终显示步行详情:
- 距离(米)
- 在“出发时间”计算中包含步行时间
- 步行时间估算:约 100 米/分钟(正常步行速度)
显示行程选项时,明确说明时间:
我为您找到了 3 个选项:
**选项 1 - 现在出发 (09:00)** 推荐
步行 5 分钟 -> 09:07 的 1 路公交车 -> 09:25 到达
总计:25 分钟
**选项 2 - 15 分钟后出发 (09:15)**
步行 5 分钟 -> 09:22 的 1 路公交车 -> 09:40 到达
总计:25 分钟
**选项 3 - 30 分钟后出发 (09:30)**
步行 5 分钟 -> 09:37 的 8 路公交车 -> 09:48 到达
总计:18 分钟 | 出发较晚但更快
哪个最适合您?
当用户询问行程时,请遵循此工作流程:
解析用户需求:
- "我怎么去..." -> 现在出发
- "我需要在18:00到达那里" -> 到达模式
- "大约下午3点左右" -> 查询 14:30,显示范围
- "大约一小时后" -> 从当前时间计算
分别搜索起点和终点:
./search-location.sh "Vasaplan?"
./search-location.sh "Universitetet?"
仔细检查每个结果:
当结果不匹配或模糊时,提出澄清问题:
我搜索了 "centrum" 并找到了多个地点:
1. Umeå Vasaplan(中央公交枢纽)
2. Skellefteå centrum
3. Lycksele centrum
您指的是哪一个?
当未找到结果时,尝试以下策略:
尝试添加城市名:
bash
# 如果 "Storgatan 10" 失败,尝试:
./search-location.sh "Storgatan 10, Umeå?"
尝试常见变体:
bash
# "Universitetet" -> "Umeå universitet"
# "Sjukhuset" -> "NUS" 或 "Norrlands universitetssjukhus"
使用模糊搜索(添加 ?):
bash
./search-location.sh "univ?"
一旦确认了两个地点的 ID:
./journey.sh <起点ID> <终点ID> [日期时间] [模式]
使用上述格式化指南清晰地呈现结果。始终使用工具输出的实际数字 - 切勿估算或推测。
搜索 API 对格式化敏感。请遵循以下规则:
| 用户表述 | 搜索词 |
|---|---|
| "Vasaplan"、"centrum" | "Umeå Vasaplan?" |
| "Universitetet"、"uni" | "Umeå universitet?" |
| "NUS"、"sjukhuset" | "Norrlands universitetssjukhus?" |
| "Ikea" | "IKEA Umeå?" |
| "Flygplatsen" | "Umeå Airport?" |
| "Järnvägsstationen"、"tåget" | "Umeå centralstation?" |
| 目的地 | 搜索词 |
|---|---|
| Skellefteå | "Skellefteå busstation?" |
| Lycksele | "Lycksele busstation?" |
| Vindeln | "Vindeln station?" |
| Robertsfors | "Robertsfors centrum?" |
| Holmsund | "Holmsund centrum?" |
包含城市名称以提高准确性:
./search-location.sh "Storgatan 25, Umeå?"
./search-location.sh "Kungsgatan 10, Skellefteå?"
用户:"我怎么从 Vasaplan 去 NUS?"
./search-location.sh "Umeå Vasaplan"
./search-location.sh "NUS?"
./journey.sh 740020116 740023840
响应:
**现在出发** 从 Vasaplan
**Vasaplan** -> **Universitetssjukhuset**
8 路公交车(开往 Lyktvägen)于 11:01 出发
11:06 到达
总计:5 分钟 | 直达,无需换乘
用户:"我明天 8 点需要从于默奥去谢莱夫特奥"
./search-location.sh "Umeå Vasaplan"
./search-location.sh "Skellefteå?"
./journey.sh 740020116 740000053 "明天 08:00"
响应:
**明天 08:04 出发** 从 Vasaplan
步行 766 米至 Umeå 汽车站(约 11 分钟)
**Umeå 汽车站** -> **Skellefteå 汽车站**
20 路公交车(省交通局,开往 Haparanda)于 08:15 出发
10:40 到达 Skellefteå 汽车站
总计:2 小时 36 分钟 | 直达(含步行)
用户:"我明天 08:00 前需要到达 NUS"
./search-location.sh "Umeå Vasaplan"
./search-location.sh "NUS?"
./journey.sh 740020116 740023840 "明天 08:00" arrive
响应:
**08:00 前到达** NUS
**Vasaplan** -> **Universitetssjukhuset**
9 路公交车于 **07:51** 出发
**07:56** 到达 - 4 分钟缓冲时间
请在 07:51 前从 Vasaplan 出发以确保准时到达!
用户:"我在于默奥的 Storgatan 50,怎么去宜家?"
./search-location.sh "Storgatan 50, Umeå?"
# 如果无结果,使用坐标
./journey.sh "63.826#20.263" 740066123
所有时间均为瑞典当地时间(CET/CEST)。
| 格式 | 示例 | 含义 |
|---|---|---|
| (空) | 现在出发 | |
HH:MM |
"08:30" |
今天 08:30 |
明天 HH:MM |
"明天 09:00" |
明天 09:00 |
YYYY-MM-DD HH:MM |
"2026-01-28 14:00" |
特定日期 |
==============================================================
选项 1: Vasaplan -> Universitetet
==============================================================
日期: 2026-01-28
出发: 09:04
到达: 09:12
换乘次数: 0
路段:
-> 公交车 省交通局 - 1 路公交车
从: 09:04 Vasaplan (Umeå kn)
到: 09:12 Universitetet (Umeå kn)
方向: 开往 Mariehem
| 类型 | 描述 |
|---|---|
BUS |
Tabussen/Ultra/省交通局公交车 |
JLT |
区域公交车(省交通局) |
JRE |
区域火车 |
WALK |
步行路段 |
| 运营商 | 描述 |
|---|---|
| Länstrafiken Västerbotten | 区域和本地公交车 |
| Ultra | 于默奥本地交通(属于省交通局) |
| SJ | 长途火车 |
| Norrtåg | 区域火车 |
搜索未返回任何结果。
策略:
1. 检查拼写(瑞典语:å, ä, ö)
2. 尝试添加城市名后缀
3. 使用模糊搜索(添加 ?)
4. 尝试常见的替代名称
5. 向用户请求澄清
没有可用的路线。
策略:
1. 检查该时段是否有服务(深夜班次有限)
2. 尝试不同的出发时间
3. 建议附近的替代站点
4. 注意某些区域线路班次有限
| 问题 | 解决方案 |
|---|---|
| "Vasaplan" 返回多个结果 | 使用 "Umeå Vasaplan" |
| 站点未找到 | 尝试使用 ? 进行模糊搜索 |
| 深夜无线路 | Ultra 夜间服务有限 |
| 等待时间长 | 区域线路可能每小时一班 |
| 站点 | ID | 备注 |
|---|---|---|
| Vasaplan | 740020116 | 中央枢纽 |
| Universitetssjukhuset (NUS) | 740023840 | 医院 |
| Universum | 740026881 | 大学区 |
| Umeå Busstation | - | 区域公交车出发点 |
| Västerslätt Centrum | 740045407 | 西部郊区 |
| 站点 | ID | 备注 |
|---|---|---|
| Skellefteå busstation | 740000053 | 区域枢纽 |
| Lycksele busstation | - | 内陆枢纽 |
| Vindeln station | - | 火车连接点 |
| Robertsfors centrum | - | 沿海线路 |
本工具使用 Trafiklab 的 ResRobot API v2.1。
基础 URL: https://api.resrobot.se/v2.1/
端点:
- 站点查询:/location.name
- 行程规划器:/trip
关键参数:
- accessId - API 密钥(必需)
- format - json 或 xml
- originId / destId - 站点 ID
- date / time - 出行日期/时间
- searchForArrival - 1 表示到达时间搜索
获取 API 密钥: 在 https://developer.trafiklab.se 注册