监控任务按固定间隔轮询,检测到变化(如微博新动态、虎牙开播/下播)时通过推送通道发送通知。配置节点在 config.yml 中为 weibo、huya、bilibili、douyin、douyu、xhs。
监控指定微博用户的最新动态,有新微博时推送通知(不检测开播)。
| 配置项 | 类型 | 必填 | 说明 |
|---|---|---|---|
enable |
布尔 | 否 | 是否启用该监控,默认 true;设为 false 时任务暂停,热重载生效 |
cookie |
字符串 | ✅ | 微博网页版登录后的 Cookie,用于请求接口 |
uids |
字符串 | ✅ | 要监控的用户 UID,多个用英文逗号分隔,如 1234567890,9876543210 |
concurrency |
整数 | 否 | 并发数,建议 2~5,避免触发限流,默认 3 |
monitor_interval_seconds |
整数 | 否 | 监控间隔(秒),默认 300(5 分钟) |
push_channels |
列表 | 否 | 推送通道名称列表,为空时使用全部已配置通道 |
- 使用浏览器登录 微博网页版。
- 按
F12打开开发者工具,切到 Network(网络)。 - 刷新页面或随便点开一条微博,在请求列表中选任意一个请求,在请求头里找到 Cookie,完整复制。
- 将复制的内容填入
config.yml中weibo.cookie。
!!! warning "注意" Cookie 会过期,若监控不再推送可重新按上述步骤获取并更新,保存后约 5 秒热重载生效,无需重启。
- 打开要监控的用户的微博主页,看浏览器地址栏。
- 地址形如:
https://weibo.com/u/1234567890或https://weibo.com/1234567890,其中 数字部分即为 UID(如1234567890)。 - 多个用户用英文逗号拼接到
uids,如:uids: 1234567890,9876543210。
weibo:
enable: true # 是否启用微博监控
cookie: "SUB=xxx; SUBP=xxx; ALF=xxx; ..." # 从浏览器开发者工具复制完整 Cookie
uids: 1234567890,9876543210 # 要监控的用户 UID,逗号分隔
concurrency: 3
monitor_interval_seconds: 300
push_channels: [] # 为空则使用全部通道微博监控在拉取用户信息时,会自动:
- 将头像相关图片缓存到
data/weibo/<用户名>/目录下,包含:profile_image.jpg(profile_image_url)avatar_large.jpg(avatar_large)avatar_hd.jpg(avatar_hd)cover_image_phone.jpg(cover_image_phone,手机端封面图)
- 首次下载成功后会复用本地文件,后续监控只在文件不存在时才尝试重新下载。
配合 config.yml 中的 app.base_url 与 Web 服务暴露的静态目录:
- 当
app.base_url配置为例如http://localhost:8866时,封面图可通过
http://localhost:8866/weibo_img/<用户名>/cover_image_phone.jpg访问; - 大部分支持
picurl的推送通道(如企业微信应用、钉钉机器人、PushPlus 等)会直接使用该 URL 作为卡片图片; - 对于支持本地图片上传的通道(当前为
telegram_bot),系统会优先读取本地cover_image_phone.jpg,通过官方 Bot API 上传原图。
提示:微博侧的图片链接通常带有过期时间与签名参数,系统会在链接仍有效时尽快缓存到本地;若远端链接已全部失效,则该用户将不再更新本地封面图,但不影响监控与文本推送。
- 微博开放平台(了解接口与限制):https://open.weibo.com
监控指定虎牙直播间的开播/下播状态,状态变化时推送通知。
| 配置项 | 类型 | 必填 | 说明 |
|---|---|---|---|
enable |
布尔 | 否 | 是否启用该监控,默认 true;设为 false 时任务暂停,热重载生效 |
rooms |
字符串 | ✅ | 要监控的房间号,多个用英文逗号分隔,如 123456,654321 |
concurrency |
整数 | 否 | 并发数,建议 5~10,默认 7 |
monitor_interval_seconds |
整数 | 否 | 监控间隔(秒),默认 65 |
push_channels |
列表 | 否 | 推送通道名称列表,为空时使用全部已配置通道 |
- 打开虎牙直播间页面,看浏览器地址栏。
- 地址形如:
https://www.huya.com/123456,其中 数字部分即为房间号(如123456)。 - 多个房间用英文逗号拼接到
rooms,如:rooms: 123456,654321。
huya:
enable: true
rooms: 123456,654321
concurrency: 7
monitor_interval_seconds: 65
push_channels: []- 虎牙开放平台:https://open.huya.com(本任务为轮询网页/接口,不强制要求开放平台账号)
监控指定 B 站 UP 主的动态发布与直播开播/下播,检测到变化时推送通知。
| 配置项 | 类型 | 必填 | 说明 |
|---|---|---|---|
enable |
布尔 | 否 | 是否启用该监控,默认 true;设为 false 时任务暂停,热重载生效 |
uids |
字符串 | ✅ | 要监控的 UP 主 UID,多个用英文逗号分隔 |
cookie |
字符串 | 否 | 可选,防 ban,建议用小号 |
payload |
字符串 | 否 | 可选,用于 -352 时自动获取 buvid3 |
skip_forward |
布尔 | 否 | 是否跳过转发类型动态,默认 true |
concurrency |
整数 | 否 | 并发数,默认 2 |
monitor_interval_seconds |
整数 | 否 | 监控间隔(秒),默认 60 |
push_channels |
列表 | 否 | 推送通道名称列表 |
- 打开 UP 主空间页,如
https://space.bilibili.com/1795147802,其中 数字部分即为 UID。
bilibili:
enable: true
cookie: ""
payload: ""
uids: 1795147802,1669777785
skip_forward: true
concurrency: 2
monitor_interval_seconds: 60
push_channels: []监控指定抖音直播间的开播/下播状态,状态变化时推送通知。
| 配置项 | 类型 | 必填 | 说明 |
|---|---|---|---|
enable |
布尔 | 否 | 是否启用该监控,默认 true;设为 false 时任务暂停,热重载生效 |
douyin_ids |
字符串 | ✅ | 抖音号列表,逗号分隔,如 ASOULjiaran,Nana7mi0715 |
concurrency |
整数 | 否 | 并发数,默认 2 |
monitor_interval_seconds |
整数 | 否 | 监控间隔(秒),默认 30 |
push_channels |
列表 | 否 | 推送通道名称列表 |
- 打开抖音直播间,URL 形如
https://live.douyin.com/ASOULjiaran,路径最后的字符串即为抖音号。
douyin:
enable: true
douyin_ids: ASOULjiaran,Nana7mi0715
concurrency: 2
monitor_interval_seconds: 30
push_channels: []监控指定斗鱼直播间的开播/下播状态,状态变化时推送通知。
| 配置项 | 类型 | 必填 | 说明 |
|---|---|---|---|
enable |
布尔 | 否 | 是否启用该监控,默认 true;设为 false 时任务暂停,热重载生效 |
rooms |
字符串 | ✅ | 房间号列表,逗号分隔 |
concurrency |
整数 | 否 | 并发数,默认 2 |
monitor_interval_seconds |
整数 | 否 | 监控间隔(秒),默认 300 |
push_channels |
列表 | 否 | 推送通道名称列表 |
- 打开斗鱼直播间,URL 形如
https://www.douyu.com/307876,数字部分即为房间号。
douyu:
enable: true
rooms: 307876,12306
concurrency: 2
monitor_interval_seconds: 300
push_channels: []监控指定小红书用户的最新笔记,有新笔记时推送通知(类似微博动态)。
| 配置项 | 类型 | 必填 | 说明 |
|---|---|---|---|
enable |
布尔 | 否 | 是否启用该监控,默认 true;设为 false 时任务暂停,热重载生效 |
profile_ids |
字符串 | ✅ | Profile ID 列表,逗号分隔 |
cookie |
字符串 | 否 | 可选,防 ban |
concurrency |
整数 | 否 | 并发数,默认 2 |
monitor_interval_seconds |
整数 | 否 | 监控间隔(秒),默认 300 |
push_channels |
列表 | 否 | 推送通道名称列表 |
- 打开用户主页,URL 形如
https://www.xiaohongshu.com/user/profile/52d8c541b4c4d60e6c867480,路径最后的字符串即为 Profile ID。
xhs:
enable: true
cookie: ""
profile_ids: 52d8c541b4c4d60e6c867480
concurrency: 2
monitor_interval_seconds: 300
push_channels: []- 启用开关:各监控任务支持
enable配置,设为false时暂停该监控,热重载生效;未配置时默认为true。 - 启动时:程序启动后会按配置的间隔开始轮询,无需额外触发。
- 热重载:修改各监控任务配置并保存
config.yml后,约 5 秒内生效,无需重启。 - 推送:若配置了
quiet_hours(免打扰),在免打扰时段内不会推送,但监控仍会执行并更新数据。
配置节点为 kuaishou,默认关闭;首次取得状态只建立基线,之后确认开播/下播时通知。网络失败、风控、缺少状态或主播身份不匹配时保留旧状态,日志报告获取失败。免打扰期间更新状态但不推送。
kuaishou:
enable: false
targets:
- "https://live.kuaishou.com/profile/主播ID"
# 也支持主播 ID、/u/主播ID 直播地址和 v.kuaishou.com 分享短链
cookie: ""
concurrency: 2
monitor_interval_seconds: 60
push_channels: []targets 支持 YAML 列表、逗号或换行分隔的文本。不同链接解析为同一主播后只监控一次,映射保存在数据库中;删除最后一个引用才清理该主播。分享短链逐跳校验域名,解析失败时建议改用网页版主页。只支持主播主页/直播分享,不支持作品链接。
Cookie 可通过 WEBMONITER_KUAISHOU_COOKIE 环境变量提供,优先于 YAML 字段,不写回配置或回显到表单。Compose 已透传此变量;使用 docker run 时添加 -e WEBMONITER_KUAISHOU_COOKIE。并发范围 1–10,间隔至少 10 秒,建议使用默认 60 秒。
验证状态:短链及 Web 流程通过,真实直播状态验收未完成。 2026-10-02 的只读探测首次取得包含 isLiving: true 与主播字段的真实页面,后续 HTTP 客户端和 Chrome 均遇到“请求过快,请稍后重试”。这类响应虽然包含 isLiving: false,但同时存在 errorType 且缺少主播 ID,解析器拒绝将其记录为下播。尚未取得可信的真实下播样本或观察到完整开播/下播转换。
后续复核公开主播 Chili020202 的直播间仍返回错误页,c.kuaishou.com/fw/user/... 与 /fw/live/... 落地页则返回 HTTP 200 空正文。按参考项目的 userInfoQuery 查询 name/living,实际返回 HTTP 502 且没有 data。这些响应均不能证明下播,因此没有将分享页或未经验证的 GraphQL 接口加入状态获取回退。
进一步核对当前官方页面脚本发现,受限房间也可能包含 isLiving: false。解析器现在同时要求 status.forbiddenState 为整数 1(成功)或 671(明确未开播),并拒绝状态码与直播状态冲突的响应。公开主播 XFZ11200 的直播详情接口虽然返回 HTTP 200,实际 data.result 为 2(请求过快);首页与分类列表的 living 也不能作为可信下播依据,均未加入回退。请求期间删除目标时,轮询结束会按最新配置清理记录。
两个公开 App 短链已通过实际解析:https://v.kuaishou.com/JCgShg → qiuqianjieshuo,https://v.kuaishou.com/dzXtEg → Chili020202。后一链接实际跳转至 c.kuaishou.com/fw/user/...,已补充白名单与回归测试。短链可失效,长期监控使用持久化后的主播 ID。
完整镜像的隔离浏览器验证已通过配置加载、保存、刷新后回读、平台切换、状态卡片及直播间链接展示;展示数据为隔离 SQLite 中的测试记录,不能代替真实直播状态验收。解析依据为公开页面结构中的 liveroom.playList[0].isLiving,同时核对主播 ID;接口或页面变化会报告失败,不推断下播。页面结构与短链来源。本监控不依赖浏览器,可使用精简镜像。
隔离的 MySQL 8.4.11 实测通过建表、中文及 emoji、首次基线静默、开下播通知去重、SQLite 镜像、实际停库后的离线更新、配置触发重连同步,以及多个链接引用同一主播的删除清理。直播状态由测试输入提供,通知仅在本地捕获,没有发送到外部通道。验证记录及官方脚本来源。