SKILL.md
3.1 KB查看排版效果| 1 | --- |
| 2 | name: oil-price-watcher |
| 3 | description: 国内成品油调价日提醒。只在调价窗口日自动检查油价调整通知(16/17 时左右发改委发布),通知一出就把本省新价格、涨跌幅和下一次调价窗口日推送到 QQ;平时不跑,按调价日历动态调度。 |
| 4 | --- |
| 5 | |
| 6 | # 油价调价提醒 |
| 7 | |
| 8 | 能做什么:盯住国内成品油调价窗口日(发改委每 10 个工作日调一次),只在调价日当天自动检查调价通知是否发布,一发布就推送新价格、涨跌幅度和下一次调价日期;日常不联网不运行,按调价日历动态调度 cron。 |
| 9 | |
| 10 | - 带脚本:是(纯 Python 标准库,无第三方依赖) |
| 11 | - 联不联网:联网(搜油价网 soyoujia.cn,免费) |
| 12 | - 写不写文件:会读写同目录下的 `oil_notify_config.json`(推送参数)、`oil_notify.log`(运行日志)、`crontab.bak`(crontab 备份),并重写用户 crontab 里的油提醒调度行 |
| 13 | |
| 14 | ## 用法 |
| 15 | |
| 16 | ``` |
| 17 | python3 oil_notify.py # 正常跑:在调价日检查通知并推送,然后重写下次 cron |
| 18 | python3 oil_notify.py --dry-run # 只打印,不推送、不改 cron |
| 19 | python3 oil_notify.py --sim-date 2026-11-12 # 模拟指定日期测试各分支 |
| 20 | ``` |
| 21 | |
| 22 | ## 第一次安装 |
| 23 | |
| 24 | 1. 把本文件夹放到固定位置(例如 `~/oil-notify`)。 |
| 25 | 2. 复制配置模板并填好推送参数: |
| 26 | |
| 27 | ``` |
| 28 | cp oil_notify_config.json.example oil_notify_config.json |
| 29 | # 编辑 oil_notify_config.json:qq_user_id / one_bot_url / one_bot_token |
| 30 | ``` |
| 31 | |
| 32 | 也可以不建配置文件,改用环境变量 `QQ_USER_ID`、`ONE_BOT_URL`、`ONE_BOT_TOKEN`。 |
| 33 | |
| 34 | 3. 先手动跑一次,把 cron 装好(会算出下一次调价窗口日并写入 crontab): |
| 35 | |
| 36 | ``` |
| 37 | cd ~/oil-notify && python3 oil_notify.py |
| 38 | ``` |
| 39 | |
| 40 | 4. 确认 `crontab -l | grep oil_notify` 里有一行 `0 17 <日> <月> * cd ... && python3 oil_notify.py >> oil_notify.log 2>&1`。 |
| 41 | |
| 42 | ## 机制说明 |
| 43 | |
| 44 | - 数据源:搜油价网 `https://www.soyoujia.cn/`(首页有「距下次调整还有 N 天(M月D日)」倒计时,省份页有近 3 个月调价表)。 |
| 45 | - 调价规律:发改委调价日 17:00 左右发布调价通知(要调价时;搁浅时 15:00 左右),24 时生效。默认 17:00 查询。 |
| 46 | - 动态调度:脚本每次跑完把 crontab 里的调度行重写为下一次调价窗口日(只写一条,不克隆旧行,并有 `crontab.bak` 备份)。 |
| 47 | - 防漏:窗口日 17:00 若页面还没更新,自动改到次日 08:00 补查一次;非调价日误触发只校准日期、不推送。 |
| 48 | - 推送内容:新价格(89/92/95/98 汽油 + 0 号柴油)、较上次涨跌幅、下一次调价窗口日。 |
| 49 | |
| 50 | ## 通知(可选) |
| 51 | |
| 52 | 默认推送到 OneBot 兼容网关(如 NapCat / Lagrange 的 HTTP API)。在 `oil_notify_config.json` 填: |
| 53 | |
| 54 | ```json |
| 55 | { |
| 56 | "qq_user_id": "123456789", |
| 57 | "one_bot_url": "http://127.0.0.1:3000/send_private_msg", |
| 58 | "one_bot_token": "你的OneBot访问token" |
| 59 | } |
| 60 | ``` |
| 61 | |
| 62 | 不想要推送时把 `qq_user_id` 留空,脚本只写日志不发送。cron 行里不写任何密钥,token 只放在 `oil_notify_config.json`(该文件不要分享给任何人)。 |
文件内容是平台检查时读出的文本,只供查看。平台不会运行包里的任何脚本或程序。

