RayleaBot 官方插件 · raylea.subscription-hub
订阅平台账号并把更新推到指定群聊或私聊,也可按会话解析 B站、微博与抖音链接;Bilibili、微博、抖音和网易云音乐账号及 CK 由插件自己保存、扫码和检查。解析与订阅推送先发送内容卡片,再通过合并聊天记录发送原图、视频或直播片段。
- 在插件「账号管理」页保存、扫码获取和检查平台账号 CK
- 为当前群聊或私聊订阅 Bilibili、微博、抖音、网易云音乐对象
- 按类型筛选:例如只收直播、只收视频、只收图文
- 按昵称搜索 Bilibili UP 主、微博博主和抖音用户,用图片展示候选资料与标识;抖音订阅也可直接使用主页链接、抖音号、昵称或完整
sec_uid - 订阅、取消订阅成功时,Bilibili / 微博 / 抖音发送资料卡片
- Bilibili 直播与动态、微博博文、抖音作品与直播按约每分钟检查一次,有更新则推送卡片,并在后台准备原图或视频后合并转发
- B站、微博、抖音链接解析按群聊或私聊独立开关,默认全部关闭;可开启超级管理员白名单,让超级管理员发送的链接不受会话开关限制
- 解析卡片显示平台提供的互动数据:Bilibili 播放、点赞、投币、收藏、转发、评论和弹幕;微博转发、评论和点赞;抖音点赞、收藏、评论和分享
- 直播默认录制 30 秒;原图、视频和直播片段均合并转发,单个媒体也使用聊天记录
- 抖音视频在后台下载,完成后由独立定时任务自动发送,避免长视频下载占满消息事件的处理时间
- 在插件管理页集中编辑订阅、解析目标、账号资料、冷却防抖和视频策略
- 超级管理员可立即检查、预览卡片、查看全部会话的订阅列表
本插件独立发布,不随 RayleaBot 主程序打包。当前版本要求 RayleaBot 0.4.0 或更高版本。安装后默认停用,需要在插件列表里启用才会工作。推送卡片依赖 RayleaBot 的图片渲染环境,媒体解析使用由 RayleaBot 管理的 FFmpeg / FFprobe,无需单独安装系统 FFmpeg。
- 打开 Web 管理面,进入 插件商店(
/plugins/store)。 - 找到 订阅与解析,安装与当前系统匹配的版本。
- 安装前确认:插件会作为本机原生程序运行。
- 到 插件列表(
/plugins)启用raylea.subscription-hub。
也可以在插件列表中安装本仓库 GitHub Release 里对应平台的 ZIP:
| 平台 | 资源 |
|---|---|
| Windows x64 | windows-x64 |
| Linux x64 | linux-x64 |
| macOS arm64 | macos-arm64 |
- 打开插件详情页的 账号管理 页,为需要访问的平台保存 Cookie 或扫码登录。Bilibili 搜索、用户解析和更新检查需要有效账号;Bilibili 动态检查会自动关注订阅的 up 主(每 6 小时复核一次关注状态),删除订阅后停止维护。微博搜索、资料补全和更新检查需要有效 Cookie;更新检查按订阅 UID 读取博主微博列表,不需要关注订阅博主。通过 UID 或主页链接订阅、取消订阅不以微博账号为前提,资料不完整时卡片使用默认头像和已有标识。抖音昵称搜索、资料补全和更新检查需要有效 Cookie;更新检查按订阅账号读取最新作品列表,不需要关注订阅对象。用户主页链接或完整
sec_uid已足够绑定抖音订阅,不依赖昵称搜索,资料不完整时卡片使用默认头像和已有标识。 - 确认插件已启用;订阅总开关与链接解析开关互不替代。链接解析默认关闭,需要在目标群聊、私聊中使用命令开启,或在插件「链接解析」页逐项开启;超级管理员白名单同样在该页或用命令切换。
- 订阅、取消订阅、立即检查、预览卡片和「全部订阅列表」需要超级管理员。在 权限策略 里配置超级管理员。
命令前缀以管理面 插件设置 为准,下面按默认前缀 / 书写。订阅和取消订阅绑定当前会话:在群里发就推到这个群,私聊发就推到这个私聊。
订阅推送与链接解析目标绑定 OneBot11 机器人账号(QQ 号),不绑定具体连接:删除连接后新建一条并登录同一账号,推送继续有效。管理页的「订阅设置」与「链接解析」按机器人账号分页,由宿主在页面上方切换账号,只显示所选账号的订阅与解析对象;同一目标在不同机器人账号下独立保存。订阅、取消订阅、订阅列表、订阅人资料查询和后台媒体发送都通过当前登录该账号的连接进行。subscriptions 和 resolver.targets 的每项配置包含 source_protocol: "onebot11" 与 bot_id。
| 命令 | 权限 | 说明 |
|---|---|---|
/订阅状态 |
所有人 | 查看启用状态、订阅数量 |
/解析帮助 |
所有人 | 查看当前会话的解析开关、冷却和媒体策略摘要 |
/订阅列表 |
所有人 | 当前会话的全部订阅 |
/b站订阅列表 |
所有人 | 当前会话的 Bilibili 订阅 |
/微博订阅列表 |
所有人 | 当前会话的微博订阅 |
/抖音订阅列表 |
所有人 | 当前会话的抖音订阅 |
/网易云音乐订阅列表 |
所有人 | 当前会话的网易云音乐订阅 |
/b站搜索up <关键词> |
所有人 | 搜索 Bilibili UP 主,图片展示资料和 UID |
/微博搜索博主 <关键词> |
所有人 | 搜索微博博主,图片展示资料和 UID |
/抖音搜索用户 <关键词> |
所有人 | 尝试搜索抖音用户;平台要求安全验证时改用主页链接订阅 |
/b站搜索UP、/B站搜索up、/B站搜索UP 与 /b站搜索up 相同。
别名与原命令使用相同的参数、权限和会话范围。下表列出常用写法。
| 操作 | 别名示例 |
|---|---|
| 订阅 | /订阅b站、/订阅B站、/订阅哔哩哔哩、/订阅微博、/订阅抖音、/订阅网易云 |
| 取消订阅 | /取消订阅b站、/取消B站订阅、/取消订阅微博、/取消抖音订阅、/取消订阅网易云 |
| 搜索账号 | /b站搜索、/搜索B站UP、/微博搜索用户、/搜索微博博主、/抖音搜索、/搜索抖音用户 |
| 当前会话列表 | /查看订阅、/查看订阅列表、/b站订阅、/微博订阅、/抖音订阅、/网易云订阅 |
| 全部会话列表 | /全部订阅、/所有订阅列表、/全部b站订阅、/全部微博订阅、/全部抖音订阅、/全部网易云订阅 |
| 解析开关 | /启用B站解析、/打开微博解析、/禁用抖音解析、/停用抖音解析;B站、微博、抖音均支持这四种动词 |
| 超管白名单 | /开启超级管理员解析、/启用超管解析、/开启超管白名单、/关闭超级管理员解析、/停用超管解析、/关闭超管白名单 |
| 状态与帮助 | /查看订阅状态、/解析状态、/链接解析帮助 |
| 检查与预览 | /检查订阅、/检查订阅更新、/订阅预览、/预览订阅、/订阅卡片预览 |
例如 /订阅抖音 视频 主页链接、/取消订阅微博 123456、/订阅预览 抖音 直播。/抖音订阅 查看列表,添加订阅使用 /订阅抖音。网易云相关命令也支持省略平台名中的“音乐”;原命令保持可用。
解析开关绑定当前会话,超级管理员可使用以下命令:
| 平台 | 开启 | 关闭 |
|---|---|---|
| B站 | /开启B站解析 |
/关闭B站解析 |
| 微博 | /开启微博解析 |
/关闭微博解析 |
| 抖音 | /开启抖音解析 |
/关闭抖音解析 |
超级管理员白名单是全局开关,不绑定会话:/开启超管解析 后,超级管理员发送的 B站、微博、抖音链接不受群聊、私聊解析开关限制,全部解析;/关闭超管解析 恢复按会话开关处理。冷却与媒体策略对白名单同样生效。默认关闭,/解析帮助 卡片会显示当前状态。
解析支持 B站视频、番剧、专栏、动态和直播间,微博博文、图文和视频,以及抖音视频、图文和直播间。短链接会先展开到平台正式链接。发送链接后的输出顺序如下:
- 发送平台专用解析卡片;接口提供互动数据时,卡片显示对应指标和图标。直播卡片显示可用的观看人数。
- 直播正在进行时,默认录制 30 秒并合并转发视频;未开播时只发送卡片。
- 视频在时长策略内时下载并合并转发;B站 DASH 视频由 FFmpeg 合并音视频。
- 图文下载原图并合并转发,避免连续图片刷屏。抖音动态图片存在动态视频时,可合并作品背景音乐。
合并聊天记录顶部使用内容作者的昵称,记录内的发送人使用发链接者的 QQ 号和群名片(没有群名片时使用昵称),头像由 QQ 根据账号显示。订阅推送使用该会话首位有效订阅人的资料;群聊发送前会刷新订阅人资料,刷新失败时使用保存的信息。旧订阅未记录订阅人时,私聊使用目标用户,群聊由适配器使用机器人身份。
B站、微博和抖音卡片中的配图由宿主独立预取,加载完成后再截图。B站图片源失败时会尝试备用 CDN,抖音保留作品提供的镜像地址;只有无法加载的图片位置显示占位图。
原图和视频默认每 50 条分为一份聊天记录,可在「防抖与媒体策略」调整每批数量、时长、清晰度、编码和并发。媒体策略同时用于解析与订阅推送;旧配置中的图片直发阈值、超限转文件开关和文件上传阈值不再生效。NapCat 与 LLBot 共用 messages[].data.uin/name/content 发送媒体和发送人资料,顶部标题使用 source;适配器版本要求见合并转发兼容说明。
订阅卡片成功后,媒体在后台下载或录制,由媒体定时任务发送;队列满、媒体解析或下载失败会记录原因,不重发已送达的卡片。插件停止前尚未发送的下载任务不跨重启恢复。发送结果不确定时保留媒体文件 24 小时且不自动重发;仅整批尚未发送、被明确限流拒绝的任务允许有限次数重试。
媒体缓存保存在 RayleaBot 运行根目录的 cache/plugins/raylea.subscription-hub/media/,发送确认后清理,不随业务数据备份。宿主通过 RAYLEABOT_PLUGIN_CACHE_DIR 提供缓存目录;缺少该目录时插件拒绝启动。媒体处理失败时,聊天只显示简短提示,具体错误记录在插件日志中。
同链接冷却默认开启 10 秒。同平台冷却默认关闭;两个冷却均按会话隔离,可在 Web 管理页调整开关和时间。
| 命令 | 权限 | 说明 |
|---|---|---|
/订阅b站推送 [类型] UID或昵称 |
超级管理员 | 订阅 Bilibili;类型可选 |
/取消b站推送 [类型] UID或昵称 |
超级管理员 | 取消 Bilibili;不填类型表示全部 |
/订阅微博推送 [类型] UID或昵称 |
超级管理员 | 订阅微博;类型可选 |
/取消微博推送 [类型] UID或昵称 |
超级管理员 | 取消微博 |
/订阅抖音推送 [类型] 主页链接、抖音号、昵称或完整 sec_uid |
超级管理员 | 订阅抖音;类型可选 |
/取消抖音推送 [类型] 主页链接、抖音号、昵称或完整 sec_uid |
超级管理员 | 取消抖音订阅 |
/订阅网易云音乐推送 [类型] ID或主页标识 |
超级管理员 | 写入网易云音乐订阅 |
/取消网易云音乐推送 [类型] ID或主页标识 |
超级管理员 | 取消网易云音乐订阅 |
类型可以省略,省略表示该平台全部类型。
| 平台 | 可选类型 |
|---|---|
| Bilibili | 直播 视频 图文 专栏 转发 |
| 微博 | 微博 图片 视频 转发 |
| 抖音 | 视频 图文 直播 |
| 网易云音乐 | 歌曲 专辑 歌单 音乐人 |
Bilibili 的「图文」也可写成「动态」。对象可以是 UID、昵称或主页链接。抖音订阅支持主页链接、抖音号、昵称或完整 sec_uid;优先使用主页链接或完整 sec_uid,昵称和抖音号需要联网解析,可能受到抖音网页安全验证限制。
你:/b站搜索up 永雏塔菲
机器人:(候选 UP 主卡片,含 UID)
你:/订阅b站推送 直播 永雏塔菲
机器人:(订阅成功资料卡片)
你:/订阅b站推送 https://space.bilibili.com/123456
机器人:(订阅该 UID 的全部类型)
你:/订阅微博推送 视频 1234567890
机器人:(微博订阅资料卡片)
你:/取消b站推送 直播 永雏塔菲
机器人:(取消该账号的直播订阅;若还有其他类型则保留)
昵称必须与平台资料完全一致。对不上时,插件会发搜索结果,请改用更准确的昵称或 UID。抖音昵称搜索没有可用结果或进入暂停时,直接粘贴用户主页链接或完整 sec_uid。
同一账号在同一会话里再次订阅,会合并类型并更新资料,而不是重复一条。发订阅命令的人会记为该条订阅的订阅人,出现在 Bilibili / 微博 / 抖音推送卡片上。
| 命令 | 权限 | 说明 |
|---|---|---|
/全部订阅列表 |
超级管理员 | 所有群聊和私聊的订阅 |
/全部b站订阅列表 |
超级管理员 | 全部 Bilibili 订阅 |
/全部微博订阅列表 |
超级管理员 | 全部微博订阅 |
/全部抖音订阅列表 |
超级管理员 | 全部抖音订阅 |
/全部网易云音乐订阅列表 |
超级管理员 | 全部网易云音乐订阅 |
/立即检查订阅 |
超级管理员 | 立刻检查并推送新内容 |
/预览订阅卡片 [类型或链接] |
超级管理员 | 预览 Bilibili / 微博 / 抖音推送卡片 |
预览可用 Bilibili 的 直播、视频、图文、专栏、转发,微博的 微博、图片、视频、转发,抖音的 视频、图文、直播。单独写 视频 或 转发 时预览 Bilibili;微博写成 微博 视频、微博 转发,抖音写成 抖音 直播、抖音 图文。也可以直接跟 Bilibili、微博或抖音链接。
账号页集中管理 Bilibili、微博、抖音和网易云音乐账号:
- 支持手动保存 Cookie、编辑备注和启用状态、删除账号;
- 四个平台均支持扫码登录,抖音扫码使用宿主提供的通用浏览器会话;
- 可随时手动检查 CK,插件也会按账号检查间隔自动复查;
- 账号资料(昵称、UID、头像)和 CK 状态由插件保存,凭据加密写入插件密钥存储;
- 订阅检查直接读取插件保存的账号。
浏览器模式与远程调试地址、账号检查间隔在插件配置中维护。详细说明见 账号管理文档。
在侧栏展开 订阅与解析,可进入 账号管理、订阅设置、链接解析 和 防抖与媒体策略。「订阅设置」与「链接解析」是按机器人账号的页面,只显示并保存所选账号的数据,其他账号的数据不受影响;账号离线时已保存的数据仍可编辑,但不能查询群列表等在线资料;QQ 官方机器人账号暂不支持。「账号管理」与「防抖与媒体策略」是全局页面。聊天命令和管理页共用同一份配置。
| 项目 | 作用 |
|---|---|
| 账号管理 | 添加、编辑、删除平台账号,扫码获取 CK,手动检查 CK 状态 |
| 订阅总开关 | 在「防抖与媒体策略」页设置;关闭后停止定时检查,不改变已保存的解析开关 |
| 投递时效 | 在「防抖与媒体策略」页设置;非直播动态最多补发多久,默认 30 分钟,范围 1~1440 分钟 |
| 添加订阅 | 选择平台、填写账号、校验对象、勾选推送群聊 / 私聊和内容类型 |
| 订阅人 | 填写 QQ 号,显示在推送卡片上 |
| 立即检查 | 立刻跑一遍 Bilibili / 微博 / 抖音检查 |
| 打开 Bilibili 卡片预览 | 打开 Bilibili 更新卡片的模板预览 |
| 打开微博卡片预览 | 打开微博更新卡片的模板预览 |
| 打开抖音卡片预览 | 打开抖音更新卡片的模板预览 |
| 链接解析 | 在同一列表管理所选机器人账号下群聊与私聊的解析开关,可按会话类型筛选;从该账号的群与好友添加对象,聊天中开启解析的会话会自动加入列表 |
| 超级管理员白名单 | 「防抖与媒体策略」页的全局开关;开启后超级管理员发送的链接不受会话开关限制 |
| 防抖与媒体策略 | 设置同链接与同平台冷却、直播时长、转发分批、视频编码、清晰度和并发 |
| 打开解析帮助预览 | 打开动态解析帮助卡片预览 |
链接解析页按机器人账号缓存最近一次成功读取的协议对象和头像 7 天。读取协议超时或重新打开页面时优先显示仍有效的缓存;刷新成功后自动更新。可添加对象以头像卡片展示,点击整张卡片即可加入解析管理列表。
同一平台账号的多个推送目标可以放在一张卡片里编辑。保存前会校验对象和目标;Bilibili / 微博支持按昵称解析。抖音可尝试昵称解析,也可直接使用用户主页链接或完整 sec_uid。
定时任务也会出现在管理面 任务调度,标签为「订阅检查」和「解析媒体发送」。
每轮订阅检查共用 50 秒预算,包含随机等待与收尾;已有定时检查正在执行时跳过本轮,手动检查等待支持取消。平台退避期间不重复请求来源,手动检查结果仍说明暂停原因与预计重试时间。
后台故障按来源、处理阶段和机器可读原因分别聚合,首条立即记录,持续期间每五分钟汇总,确认恢复后记录总次数。日志详情中的 failure_causes 与 failure_counts 保留分类和次数;文案、账号昵称及冷却倒计时不参与聚合键,也不改变调度统计。
发送回执超时表示“结果未确认”,不是已经证明未送达。普通订阅推送在发送前保存去重记录,结果不确定时保留该记录,后续检查不自动重发。媒体发送结果不确定时保留原文件 24 小时;处理中任务与仍有文件的保留任务共用 8 个媒体任务配额,只剩保留标记的旧目录不占配额。重启插件会读取保留记录,但不会重新发送。明确未发送的限流拒绝按现有次数限制重试;部分批次已经发送时不重试整批。
- 会定时拉取并推送:Bilibili 直播、视频、图文动态、专栏、转发;微博博文、图片、视频、转发;抖音视频、图文作品和直播开播。
- 可搜索、可订阅、发资料卡片:微博、抖音。
- 可写入订阅、可用命令查看和取消:网易云音乐。定时检查不会拉取这类更新。
检查规则:
- 约每分钟检查一次;也可在管理页或聊天里立即检查。
- 某条订阅第一次成功连上源时,只记下当前进度,不会把历史内容一次性刷进群里。Bilibili / 抖音直播开播仍会推送。
- Bilibili 动态首轮检查中断或历史状态写入失败时,下轮继续建立基线,不推送历史动态。
- 超过投递时效的非直播内容会被跳过,避免补发过旧内容。
- 卡片发布时间和重试提示使用宿主当前生效的时区,与 Web 管理面一致;修改宿主时区后重启服务生效。投递时效比较绝对时间,不随展示时区变化。微博和 B站无时区的日期字符串按上海时区解析。
- Bilibili / 微博检查和搜索、抖音昵称搜索与更新检查需要有效 Cookie;没有可用账号时会提示先到插件「账号管理」页保存。
- Bilibili 动态检查会自动为订阅的 up 主补关注:账号 CK 含
bili_jct时,未关注的订阅对象会被自动关注,此后每 6 小时复核一次关注状态;删除订阅后停止维护。该行为没有独立开关。 - 微博与抖音检查按订阅账号读取最新作品列表,不需要关注订阅对象。
- 抖音昵称搜索只请求一个用户搜索端点,并最多回退一次搜索页;空结果或安全验证会暂停后续搜索探测。用户主页链接和完整
sec_uid可直接绑定订阅,不触发昵称搜索。 - 抖音直播按会话推送:首次观测只记录状态,之后每次开播推送一条卡片,同一场直播不重复推送;下播不推送卡片。
- 微博 H5 接口返回 HTTP 432 时会进入账号级退避,并提示到插件「账号管理」页检查 CK;该状态也可能来自平台风控,不单独判定 CK 已失效。
- 微博与抖音请求出现明确认证拒绝,或微博返回 HTTP 432、抖音返回 HTTP 403 时,插件会记录观察结果并更新对应账号的 CK 状态;空搜索结果或网页安全验证不单独判定 CK 失效。账号状态由插件唯一保存。
- Cookie / CK 只保存在插件自己的宿主密钥存储命名空间里,账号页面和聊天都不会回显明文。
- 关闭订阅总开关后,已保存的订阅还在,只是停止检查;解析仍以各会话的独立开关为准。
- 取消时若指定了类型,只去掉该类型;该账号在当前会话已没有任何类型时,整条订阅删除。
- 推送失败时查看 实时日志,可按插件
raylea.subscription-hub筛选。 - 卡片发不出来时检查渲染环境;订阅、取消在卡片失败时会回退为文字结果。
插件后端、Vue 管理页、默认配置和渲染模板共同进入独立 artifact。构建或同步失败时继续使用上一个已安装产物。.rayleabot/ 只属于本地开发,不进入提交或发布包。
subscription-hub/
cmd/subscription-hub/ 进程入口
internal/plugin/ 订阅命令、检查流程、调度与公共渲染
internal/platforms/ 各平台的请求、内容解析与卡片适配
internal/testkit/ 共享测试替身与 fixtures 工具
internal/assets/default_config.json 默认开关与投递时效
ui/ Vue 管理页
templates/ 推送与资料卡片模板
LICENSES/ 随 artifact 发布的第三方许可证
info.json manifest v4、内联默认配置与命令分组
- 将本仓库路径写入 RayleaBot 根目录下被 Git 忽略的
plugin-workspace.local.json:
{
"workspace_version": "2",
"plugins": [
{
"path": "../RayleaBotPlugins/subscription-hub"
}
]
}- 在 RayleaBot 主仓库根目录 启动:
$env:RAYLEA_PLUGIN_DEV = "watch"
$env:RAYLEA_SERVER_RELOAD = "watch"
.\start.bat启动器会把主仓库的 Go 与 Vue SDK 映射到 .rayleabot/,构建当前平台 artifact,再通过离线 plugin dev-sync 同步到 plugins/installed/。
联调 Bilibili / 微博能力时,在插件「账号管理」页保存测试用 Cookie。不要把真实凭据写入仓库、fixtures、日志或 README。
go test -race ./...
pnpm --dir ui install --frozen-lockfile
pnpm --dir ui typecheck
pnpm --dir ui test
pnpm --dir ui build
$env:RAYLEA_PLUGIN_BUILD_USE_WORKSPACE = "1"
go run github.com/RayleaBot/RayleaBot/sdk/go/cmd/raylea-plugin build-go --plugin . --backend ./cmd/subscription-hub --target windows-x64 --out distv* 标签对应的发布工作流使用固定 SDK 引用测试 Go 与 Vue 代码,构建 Windows x64、Linux x64 和 macOS arm64 ZIP,并创建 GitHub Release。plugin-catalog 定时读取当前 Release,校验 artifact 并记录各平台 ZIP 的 SHA-256。
本地联调与商店分发说明见 插件商店与独立开发。
Go 使用 go.mod 中可公开获取的 SDK 提交版本;CI 从 .rayleabot-sdk-ref 检出同一提交,使用 Go 1.27.2。
首次执行 pnpm --dir ui install --frozen-lockfile 会通过 pnpm:devPreinstall 准备 Vue SDK,需要 Git 与网络。使用 --ignore-scripts 时,先执行 node scripts/prepare-sdk.mjs。主仓库开发工作区已提供 .rayleabot/sdk/vue 时直接复用。