汽车票余票监控告警

SKILL生活服务

原名 bus-ticket-availability-monitor

生活服务 未标注权限 许可证不明确
安装这个技能

监控指定线路的长途汽车票余票,按阈值触发提醒,并可复用已验证的余票查询接口与监控程序模板快速搭建。

一句话选型结论

按资料字段整理

汽车票余票监控告警是生活服务类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类生活服务 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_27774f5d/ticket-monitor
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

生活服务
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_27774f5d仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验2026-11-06上游最后核验时间 · 数据更新 2026-11-06
正文体量8.4 KBSKILL.md 原文大小,越大说明说明书写得越细

能做什么

0 项能力
上游给出的能力概览与适用场景
监控线路余票设置抢票提醒追踪票务状态

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
行程与攻略

按目的地和天数排行程。

日常信息查询

查天气、交通、办事信息。

生活事务整理

把琐事整理成清单逐项处理。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在生活服务场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
汽车票余票监控告警当前 未标注权限 未标注 未标注 未标注 有
食谱批量下载文件夹 联网访问 GitHub 仓库 28.5 万 Codex、Claude、Cursor 有
食谱创建演示文稿 未标注权限 GitHub 仓库 28.0 万 Codex、Claude、Cursor 有
recipe 备份 sheet AS CSV 联网访问 GitHub 仓库 27.9 万 Codex、Claude、Cursor 有
recipe create Gmail filter 邮件管理 未标注权限 GitHub 仓库 27.8 万 Codex、Claude、Cursor 有
配方观察驱动器变化 联网访问 GitHub 仓库 27.4 万 Codex、Claude、Cursor 有

SKILL.md 全文

8.4 KB
模型实际读到的说明书原文,来自技能仓库

汽车票余票监控

两件事:找到可用的余票数据源 → 套用监控程序模板。

一、数据源优先级

方案 可行性 说明
巴士管家 H5 接口 ✅ 已验证 江苏/广东等多省客运企业的底层票务供应商,含真实余票。首选
官方分销 API(docapi.chebada.com) ❌ 需商户 key,个人拿不到
时刻表类网站(checi.cn / cncn / esk365) ⚠️ 只有时刻表和票价,没有余票,仅可用于确认班次存在
携程 / 同程 / 飞猪 ⚠️ 有数据但签名复杂、风控严,优先级低于巴士管家

确认班次是否真实存在时,可先搜时刻表站点交叉验证发车站名与发车时刻
(注意不同站点数据源可能给出不同时刻,以售票平台为准)。

二、巴士管家余票接口(已实测)

调用步骤

# 1) 先访问首页拿 Cookie(CBDRefId / CBD_SID),否则可能返回不可售
GET https://m.chebada.com/cbdbus/
UA: iPhone Safari 的移动端 UA

# 2) 查询班次
POST https://m.chebada.com/cbdbus/request/Schedule/Schedules
Content-Type: application/json
body: {"departure":"南京","destination":"唐洋",
       "departureDate":"2026-10-02","projectType":1}

关键坑

  1. 参数名是 departure / destination / departureDate。
    写成 dptCity/arrCity/dptDate 会返回 rspCode:1000, rspDesc:"出发地为空"。
    接口会返回带中文的校验错误,顺着错误提示迭代参数名是最快的办法。
  2. 响应是 gzip 压缩,必须解压再 json.loads。
  3. 城市名用售票系统的叫法:南京 而非 南京市;目的地用县级/镇级地名(如 唐洋)。
  4. 判定成功:response.header.rspCode == "0"。
  5. 同一辆车在不同上车站点会各返回一条记录(如南京汽车客运站 08:00、吉祥庵公交站台 08:10、
    南京葛塘站 08:40 是同一车次 DZ6215),ticketLeft 是共享的座位池。
    筛选目标班次要用「发车站关键字 + 发车时刻」联合匹配。

响应字段(response.body.scheduleList[])

字段 含义
coachNo 车次号,如 DZ6215
dptStation / arrStation 发车站 / 到达站
dptDatetime / dptTime 完整发车时间 / 08:40
ticketLeft 余票数量
canBooking 1 可订 / 0 不可订(售罄)
ticketPrice 票价
runThrough 途经/终点备注

其他可复用端点

/Schedule/Departures      出发城市列表(含站点)
/Schedule/Destinations    到达城市列表
/Schedule/GetPartnerSchedule  合作方班次
/Schedule/GetBusSaleDay   可售日期

均为 POST https://m.chebada.com/cbdbus/request + 上述路径,body 用 {"departure":..., ...}。

三、监控程序模板

直接复用现成实现,不要重写:

C:\Users\lychee\WorkBuddy\2026-09-24-15-29-02\bus-ticket-monitor\

纯标准库、零依赖,结构:

run.py            CLI 入口(--once / --list / --test-notify / --status / --mock
                  / --interval / --threshold / --duration / --max-checks)
config.json       监控目标 + 轮询 + 告警 + 通知通道配置
install_task.ps1  注册 Windows 计划任务(pythonw + --once,无黑窗口)
uninstall_task.ps1 卸载计划任务
btms/models.py    班次条目 ScheduleEntry / 快照 Snapshot
btms/sources.py   数据源适配器(ChebadaSource / MockSource)+ 重试
btms/store.py     state.json 持久化,支撑跨重启的变更比对与告警冷却
btms/notifiers.py console / desktop / wecom / file / webhook / smtp / command
btms/monitor.py   变更检测 detect_changes + 告警策略 AlertPolicy + 主循环

适配新线路只改 config.json:

"route": {
  "from_city": "南京", "to_city": "唐洋", "date": "2026-10-02",
  "filter": { "departure_station_keyword": "葛塘",
              "departure_time": "08:40", "coach_no": "" }
},
"alert": { "low_stock_threshold": 10 }

改完先跑 python run.py --list 核对筛选条件是否命中(输出里带 ★ 的就是命中行)。

三·补、通知通道怎么选

通道 适用 备注
console / file 始终开启 留痕、排查用
desktop 人在电脑前 Windows 气泡 + winsound 提示音
wecom 手机推送首选 走本机已授权的 wecom-cli,无需申请 Webhook
webhook 备选手机推送 企业微信/钉钉/飞书群机器人、Server酱、Bark
smtp 邮件留档 —

企业微信 wecom 通道的三个坑

  1. 不要用 npm 生成的 wecom-cli.cmd。它依赖 PATH 里的 node,
    在计划任务环境下会报「系统找不到指定的文件」。优先用原生可执行文件:

<USERPROFILE>\.workbuddy\binaries\node\cli-connector-packages\node_modules \@wecom\cli\node_modules\@wecom\cli-win32-x64\bin\wecom-cli.exe

注意是 @wecom\cli\node_modules\@wecom\... 双层嵌套,glob **/wecom-cli.exe 找最稳。

  1. 发送命令形态:

bash wecom-cli message aibot send --json '{"chat_id":"...","msg_type":"markdown", "markdown":{"content":"..."}}'

chat_id 来自 wecom-cli identity whoami(解析「授权真人用户身份…ID:」),
或 wecom-cli message aibot sessions list 按 chat_name 精确匹配群聊后原样复制。

  1. errcode 850002 = 机器人未开通「消息」权限。此时 CLI 返回的 help_message
    含授权链接,必须逐字原样转达给用户(CLI 明确要求,不得改写/省略 URL)。
    程序侧要把 errcode/errmsg/help_message 从响应体里解析出来抛出,
    并做失败退避,否则每轮都会往日志里刷一大段重复错误。

> 前置检查顺序:wecom-cli --version(≥1.2.1)→ wecom-cli auth show --status(需 authorized)
> → 才可调用业务命令。相关技能:wecomcli-shared、wecomcli-message。

三·补2、部署为 Windows 计划任务

已产出可复用的 install_task.ps1 / uninstall_task.ps1(pythonw.exe "run.py" --once,
每 5 分钟一次,无黑窗口、不累积常驻进程)。注册时的四个坑:

  1. New-ScheduledTaskTrigger -RepetitionDuration ([TimeSpan]::MaxValue)
    会生成 P99999999DT23H59M59S,超出任务计划程序上限,报 HRESULT 0x80041318。
    ✅ 改用 (New-TimeSpan -Days 3650)。
  2. 本机 ExecutionPolicy 常为 Restricted,直接 & script.ps1 会被拦。
    ✅ 用 powershell -NoProfile -ExecutionPolicy Bypass -File xxx.ps1。
  3. 内层脚本和外层 *>> 重定向不能写同一个日志文件,会 FileOpenFailure。
  4. 含中文的 .ps1 必须存成 UTF-8 with BOM(encoding='utf-8-sig'),
    否则 PowerShell 5.1 按 ANSI 读会乱码。

验证:Get-ScheduledTaskInfo -TaskName '<name>',LastTaskResult = 0 即成功。

> 本机 PowerShell 工具的 stdout 不返回内容,所有输出都要重定向到文件再读。

四、逆向 H5 应用找接口的通用方法

复用这套流程处理同类需求:

  1. 用移动端 UA GET 目标 H5 首页,把 HTML 存下来。
  2. 正则抓出 <script src> 里的 JS bundle,用 curl --compressed 下载
    (Python urllib 直接读常报 IncompleteRead,改用 curl 更稳)。
  3. 在 bundle 里搜索这些关键词定位请求封装与接口路径:
    baseUrl、axios.create、requestUrl、apiUrl、/api、serviceName、
    window.App(SSR 注水的运行时状态,常含 sessionId / authCode / 接口前缀)。
  4. 注意路由懒加载:真正页面级接口常在 n.e(<chunkId>).then(...) 加载的分包里,
    首页 bundle 里只有路由表。按 chunk 编号拼出 /assets/<name>.<hash>.chunk.js 再下。
  5. 提取到路径后直接实测:先 GET 首页建 Cookie,再 POST 试。
    服务端的中文校验错误("出发地为空")就是最好的参数名线索,迭代几次即可。

常见问题

5 问
答案由本站依据条目字段整理
汽车票余票监控告警怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_27774f5d/ticket-monitor。安装方式为未标注。装完刷新技能列表或重开客户端。

汽车票余票监控告警支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

汽车票余票监控告警权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

汽车票余票监控告警收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

汽车票余票监控告警用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 2026-11-06。