dsh-bili-video:把 B 站视频搬成 QQ 群可直接播放的视频消息

前言

在 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

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜