前言¶
在 DSH 里做内容搬运时,常见情况是:Agent 拿到一个 B 站链接,需要把视频送到 QQ 群里。直接发链接,群里只能跳转外链;想发视频消息,就得自己写解析、下载、转码、上传的整条链路,还要处理官方 QQ Bot 的分片上传协议和群号映射。下面介绍的插件把这一串步骤封装成一个 bili_relay 工具,同时也支持监听群消息自动搬运。
这个插件是 dsh-bili-video(npm 包名同名),独立发布在 lucifermbbgh/dsh-bilivideo-qqbot-forward-plugin,维护者为 lucifermbbgh,分类属于工作流,作者是 dsh-bili-video contributors。插件运行数据由 root 目录自行管理,不随包发布。
核心功能¶
先说明它能做什么。插件的能力边界在 README 里已经明确列出:
- 链接搬运:
bili_relay工具接收 B 站链接、BV 号或b23.tv短链,以及真实群号; - 卡片自动搬运:可选连接 SnowLuma OneBot v11 WebSocket,监听群消息中的 B 站卡片和链接,无需 @;
- 清晰度自适应:有 B 站 Cookie 时优先高画质,未登录时使用匿名可用的流;
- 大文件分片:不超过 4.5MB 直接内联上传,更大的文件走官方分片上传协议,不做群文件;
- 去重与限流:同一 BV 号 6 小时内只搬一次,每群 10 分钟最多 3 条;
- 失败可追踪:失败重试一次,并写入
data/video-failures.ndjson。
限制条件¶
这块直接影响可用性,先看清再装:
- 仅支持 B 站普通视频,不支持分 P、直播、番剧、付费内容;
- 视频时长上限 15 分钟,内联文件上限 30MB;
- 需要官方 QQ Bot 凭据,且目标群已有
group_openid映射; - 需要本机可执行
ffmpeg(或通过配置指定路径)。
安装与启用¶
安装命令来自 README,没有走 github:owner/repo 形式:
dsh plugin --profile desktop add dsh-bili-video
安装后在 profile 的 cordis.patch.yml 中覆盖配置。最小配置示例:
- insert:
- id: bili-video
name: dsh-bili-video
config:
root: /path/to/dsh-bili-video-data
groups: "123456789"
maxBytes: 31457280
maxDurationSec: 900
oneBotWs: ws://127.0.0.1:3001/?access_token=...
这一步的作用是把插件挂进当前 profile,并把数据目录和允许搬运的群号定下来。
配置项¶
| 字段 | 说明 |
|---|---|
root |
数据根目录;默认当前工作目录,也可用 BILI_VIDEO_ROOT 环境变量 |
groups |
允许搬运的真实群号,逗号分隔;留空表示不限制,生产环境不建议留空 |
maxBytes |
内联上限,默认 31457280(30MB) |
maxDurationSec |
时长上限,默认 900(15 分钟) |
ffmpeg |
ffmpeg 可执行文件;默认 ffmpeg,也可用 FFMPEG_PATH |
oneBotWs |
SnowLuma OneBot v11 WS 地址;留空则只保留工具调用 |
cookieFile |
B 站 Cookie 文件;默认 <root>/secrets/bilibili-cookie.txt |
appId / appSecret |
官方 QQ Bot 凭据;也可用 QQBOT_APPID / QQBOT_SECRET |
群号到官方 group_openid 的映射默认读取 <root>/data/official-bot/group-map.json。
典型用法¶
Agent 侧,直接调用 bili_relay 工具,传入视频地址和群号:
{
"url": "https://www.bilibili.com/video/BV1xx411c7mD",
"group_id": "123456789"
}
OneBot 侧,配置 oneBotWs 后,群消息里的 B 站链接或卡片会被自动识别,无需用户 @。同一 BV 号在 6 小时内不会重复发送。
适用场景与注意¶
适合已经在用官方 QQ Bot、且群里确实有人发 B 站链接的智能体工作流。需要强调两点:一是插件以当前 dsh 进程的权限运行,能读到的数据目录、能访问的网络和凭据都取决于运行账号,安装前应先检查源码与许可证;二是官方 QQ Bot 对群视频消息有发送频率和文件大小约束,插件的 groups、限流和去重配置就是为此设计的,生产环境不建议把 groups 留空。
许可证为 MIT,仓库版本号 0.1.1,当前星标 0。代码结构比较简单:src/core.js 负责解析、下载、合并、分片上传和发送,src/index.js 是 Cordis 插件入口,注册 bili_relay 与 OneBot WS 监听。开发自检命令为:
node --check src/core.js
node --check src/index.js
经过上面的步骤,可以直接把 B 站链接在 QQ 群里变成可播放的视频消息,而不需要自己拼上传协议。
目录页:https://www.skillhub.cn/plugins/lucifermbbgh/dsh-bilivideo-qqbot-forward-plugin
源码:https://github.com/lucifermbbgh/dsh-bilivideo-qqbot-forward-plugin