前言¶
在 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