前言¶
DSH(DeepSeek Harness)采用「一切皆插件」的理念,每个插件解决一个垂直场景。对于需要持续获取 B站 内容并转化为成片的工作流,现有的 DSH 插件要么只做「刷 B站」,要么只做「出片」,缺少从「看」到「做」再到「发」的连续能力。
dsh-bili-workbench 把「刷 B站 / 素材库 / AI 出片 / 审核发布 / 自动互动」放进同一个工作台。它不是又一个「B站信息流面板」,而是一条从看到做再到发的完整流水线。
插件定位¶
插件名称为 dsh-bili-workbench,维护者为 Userluckytian,分类为「工作流」。它通过 DSH 插件机制集成到 DeepSeek Harness 的工作台,提供从内容采集、素材管理、AI 创作到发布审核的全链路能力。
核心功能¶
1. 素材库¶
素材库存储刷到的视频元数据、逐字稿(带时间戳)、关键帧、封面、AI 点评、可引用金句、热评、热门弹幕、热梗。按 BV 幂等,7 天内不重复抓。
2. 刷 B站¶
支持综合热门、关键词搜索、看懂视频三种模式。按多时段 + 每日上限自动采集。每条采完自动判定、抽句、抓热评/弹幕/热梗、刷新日报。
3. 创作 / 出片¶
流程为:一句话出方案 → 改一版(v1/v2…)→ 真实帧 + Edge-TTS 配音 + Remotion 渲染 → 1080p 成片 + 封面。库里没料时自动转成「长任务」。
4. 审核 / 发布¶
提供待审列表、通过/打回、预览成片、删除成片、投稿 dry-run。真投稿默认关,打开后仍需二次确认。
5. 我的¶
提供扫码登录/登出、账号数据、素材库信息、运行日志、模型健康检查、发布权限。
6. 自动互动¶
可选:每条采到的视频自动留一条评论并 @ 你、称呼你;有人回复就自动回。主人身份与只读指令。12 秒发送间隔 + 每日上限。默认关。
环境要求¶
- DSH
>= 0.2.1-rc.1(dsh --version) - Node.js
>= 22 - bili-cli(命令名
bili,PyPI 包bili-agent) - ffmpeg(需要
libass,烧字幕用) - edge-tts(配音)
- Chrome 或 Edge(Remotion 渲染用,自动探测)
- 一个 OpenAI 兼容的模型端点(用于判定、写方案、写评论)
安装¶
方式 A:从 GitHub 直接装(推荐)¶
dsh plugin --profile web add github:Userluckytian/dsh-bili-workbench
仓库所有者是
Userluckytian;如果你 fork 了,把用户名换成自己的。pnpm 会同时安装插件依赖(Remotion / sharp)。
方式 B:克隆后 link(想改代码)¶
git clone https://github.com/Userluckytian/dsh-bili-workbench.git
cd dsh-bili-workbench
npm install
dsh plugin --profile web add link:$PWD
Windows PowerShell:
git clone https://github.com/Userluckytian/dsh-bili-workbench.git
cd dsh-bili-workbench
npm install
dsh plugin --profile web add "link:$PWD"
方式 C:npm(暂未发布)¶
dsh plugin --profile web add dsh-bili-workbench
装完重启 dsh,刷新浏览器页面,会话顶部会出现「B站工作台」页签。
外部命令¶
# bili-cli(需要 Python 3.10+;会装一个 bili 命令)
uv tool install bili-agent
bili auth login
# 配音
uv tool install edge-tts
# ffmpeg(Windows)
winget install Gyan.FFmpeg
# 自检
node scripts/doctor.mjs
第一次使用¶
- 打开 dsh → 会话顶部「B站工作台」。
- 我的 → 扫码登录(登录只在这一处;不要在别处再装老「刷B站」插件,会有两套账号)。
- 刷B站 → 刷B站设置:
- 模型链:一行一个模型名,失败会自动换下一个。
- 模型密钥:llmKey(也可以设环境变量OC_API_KEY)。
- 模型端点:环境变量BILI_OP_LLM_BASE,默认http://127.0.0.1:40080/v1。 - 点「立即跑一轮」,确认能采集、判定、写日报。
- 需要出片时,去「创作 / 出片」生成方案并渲染。
素材包¶
音色 / 片段 / 表情包 / BGM / 贴纸这些素材不打进安装包(体积太大),默认从素材库的兄弟目录找:
<素材库>/../assets-src/
voices/ 参考音 wav(同名 .txt 是参考文本)
clips/ 片段 + index.json
memes/ 表情包(bili-emotes + index.json)
bgm/ BGM + index.json
stickers/ 贴纸(openmoji/png-618x618-color)
- 目录不存在时,素材页会显示「未找到素材目录」,并在「我的 → 自检」里能看到各项状态。
- 可用环境变量
BILI_ASSETS指向你的素材目录(优先级最高),设置后重启生效。 - 首次使用:可从 release 附件下载素材包解压到上述位置,或自行准备(音色也可以在「素材库 → 音色」里采新 / 导入本地 wav)。
自动互动:默认关,打开前请读完¶
自动互动会用你的账号公开发评论 / 回复。为了安全,插件内置默认是:
定时自动刷 关
自动评论 关
自动回复 关
私信监听 关
真投稿 关
打开「自动评论」后,当天每条采到的视频都会留一条评论并 @ 你;打开「自动回复」后,有新回复会自动回。发送间隔固定 12 秒(B站要求至少 10 秒),并有每日上限。命中风控 / 限流 / 操作间隔会立即停止本轮,失败条目不写账本,下一轮再补。
手动「评论 / 回复 / 私信」仍然默认 dry-run:只生成并打印将要提交的内容,不真正发送;勾「真的发」才会发。
公开内容一旦发出就可能被缓存或转发。请自行确认账号、内容和使用场景符合 B站 的社区规则。
主人身份与只读指令¶
在「刷B站 → 刷B站设置」里填两个字段:
| 字段 | 说明 |
|---|---|
| 主人 UID | 你的 B站 UID(例如 498295893)。只有这个 UID 会被当主人 |
| 称呼 | 自动评论 / 回复里怎么称呼你,默认「老弟」 |
设置后:
- 自动评论会在正文里自然称呼你,并把这条评论
@到你(--at 主人UID)。 - 自动回复能区分主人和普通用户:主人留言即使已被界面标记已读也会处理;普通用户仍只回新消息。
- 主人可以问只读问题,答案从本地素材库和互动账本实时计算:
- 「今天逛了多少视频?」
- 「设定的时间是多久 / 时段是什么?」
- 「今天评论、回复多少条?」
- 非主人询问统计、配置、权限、密钥、路径等,会收到一句礼貌拒绝(不沉默、不给数据);让机器人代发/代删/代传的指令同样拒绝。
- 主人要求改配置、投稿、删除、私信、发评论时,只回复「去工作台手动改」,不会在评论里执行。
- 数据类回答会带人设语气:先用本地素材库和账本算出准确数字,再交给模型改写;改写后逐个核对数字,少一个、多一个或改写失败都会自动退回原句。称呼固定用账号设置里的「老弟」。
- 自动回复会跳过账本里已回复的
rpid和自己刚发出的回复文本,避免自问自答循环。
多人 @:设置页「额外 @(可多人)」可以加多个人,每个填「UID 或昵称」和「称呼」(例如爸爸、妈妈)。自动评论会把这些人都 @ 上,并在正文里自然喊出对应称呼;模型漏写时会把缺的称呼补在开头。
B站 一条评论最多
@3 个人,所以主人 UID + 最多再加 2 个;主人 UID 会自动@,不用重复添加。
人设是身份,不是记忆:设置页「人设」描述角色是谁、怎么说话、什么不能做,每次生成都放在提示词最前面,不会写进记忆,也不会被任务复盘改写。账号归属(谁在用这个号)和说话人格分开处理。
自己的视频(B站合集):在设置页填一个合集链接(如 https://space.bilibili.com/<UID>/lists/<ID>),插件会缓存里面每集的标题和日期。写评论、回复、方案时会挑「和当前话题相关的几集 + 最近几集」作为参考,明确要求不硬提、不编造,同样不写进记忆。启动时检查一次,之后每 6 小时看是否过期,也可以点「更新合集」立即刷新。
长期记忆:它记得住(1.0.0)¶
插件自带一套三层记忆,让它越用越顺手:
| 层 | 是什么 | 在哪看 |
|---|---|---|
| 主人画像(USER.md) | 你的口味和纠正:「标题别超过 18 字」「别用某梗」,跨场景生效 | 我的 → 记忆 |
| 工作台笔记(MEMORY.md) | 环境的坑:B站 限制、渲染参数、恢复办法 | 我的 → 记忆 |
| 经历流(events.jsonl) | 它经历过什么:看过哪些视频、出过什么方案、渲染/审核/评论结果 | 我的 → 记忆 |
怎么用:
- 写下来:主人在 B站 评论/回复里说「记住:标题别超过 18 字」,会自动进主人画像并回复确认;普通用户的「记住」会被礼貌拒绝。设置页「人设」下方也有「让咕嘎有记忆」总开关(关掉后行为回到无记忆版本)。
- 自己长记性:每次方案 / 渲染 / 审核 / 投稿结束后自动「复盘」,从最近经历里提炼跨次有效的偏好写进画像(只增不改、每条 ≤60 字、人设永不写入);「我的 → 记忆」里能看、能删、能点「立即复盘」。
- 想起旧素材:出方案和写评论时,会按题材把经历流里相关的过往经历想起来(长任务日志会显示「想起 N 条相关经历」),前两天看过的剧今天就能用上。
- 安全:记忆是纯文本(
<素材库>/memory/),可手改;命中注入扫描(「忽略以上指令」类)的条目写入被拒、注入时替换[BLOCKED]、界面标红;无人值守的修改/删除进待批区等批准。
让成片”活”起来(1.2.0)¶
- broll 全屏直拼:
clip.mjs裁好的名场面片段在方案里全屏一段接一段播放(也可画中画) - 动画形象:右下角循环视频形象(默认内置大肥鱼动画);
mascot:false关闭、mascotVideo换素材 - 自动评论带图:
commentImageEvery(默认 5 条 1 图,0=关),表情包从 B站官方 emote 收集 - 配套工具:
tools/cutout.mjs(rembg 抠图)、tools/fetch-emotes.mjs(表情包收集)
主人 @ 任务:看视频 / 看评论 / 要总结¶
用主人账号在任意 B站 视频评论里 @ 它,写清要什么:
| 你说 | 它做什么 |
|---|---|
总结一下这个视频 BV... |
看视频(字幕 + AI 摘要 + 数据)并总结 |
看看这条视频的评论 BV... |
总结评论区:主要观点、梗、争议、整体氛围 |
视频和评论都看看 BV... |
两者都做 |
只 @ 它、不写 BV |
用你这条评论所在的视频 |
交付规则(重点):
- 默认:总结只走私信 / 工作台,不往评论区发,长文不会进评论区。
- 说「别发评论区 / 不要回复」→ 只发私信。
- 说「私信我」→ 只发私信。
- 说「回评论区」→ 压缩成 ≤45 字短版回评论(同时说「私信」就再发一份全文)。
- 没给 BV → 回一句问你要。
- 私信需要先在「我的」里扫码登录 bili-cli;没登录(B站返回 -101)时,全文留在工作台「消息 → 主人请求」,记录里会提示重新扫码。
- 每 3 分钟检查一次
@,每天最多处理 10 个;每次结果都留在工作台,可以点开看全文。
私信单条最多 500 字,长总结会拆成 2–4 条发;再长会截断并提示看工作台全文。
主人身份只影响回复策略,不会绕过 B站 的权限或风控;所有发送仍然是实名公开操作。
长任务:素材不够,自己去刷 B站¶
在「创作 / 出片」写一句需求(例如「找找素材,出一期新三国的名场面的热梗集锦」),不需要等它立刻出片:
- 先查素材库,按需求拆出的关键词匹配「相关且可用」的视频(有字幕或金句)。
- 够料(默认 3 条)就直接写分镜方案。
- 不够就自己去「刷B站」:按关键词搜索 → 采集字幕 / 关键帧 / 热评 / 弹幕 → 判定抽句 → 再查库。
- 还不够就每 3 小时再找一轮,最多找 5 天;期间任务卡一直显示进度。
- 够料后自动生成方案,停在「方案已生成」,不会自动渲染、不会自动投稿。
创作页下方会为每个任务显示一张卡片,状态包括:
| 状态 | 含义 |
|---|---|
| 排队中 | 刚创建,等宿主开跑 |
| 检查素材库 | 正在按关键词查库 |
| 逛 B站 中 | 正在搜索、采集、判定 |
| 素材不足,继续找 | 这一轮没凑够,过几小时再来 |
| 写方案中 | 素材够了,正在写分镜 |
| 方案已生成 | 可以去下面看方案,再决定是否渲染 |
| 已暂停 / 已停止 | 手动暂停,或到期/出错停止 |
卡片上有「现在再找一轮」「暂停 / 继续」「删除」「查看方案」。任务记录在素材库的 tasks.json;宿主重启后,跑到一半的任务会自动恢复排队。
任务自己采到的新视频也会按「自动评论」设置留评论并 @ 主人,和日常采集共用同一条每日上限。
审核 / 发布怎么走¶
在「创作 / 出片」点「开始渲染」之后,不需要再回创作页做任何操作。成片一完成,就会自动出现在「审核 / 发布」列表(页面每 5 秒刷新一次)。
- 审核按成片(run)为单位:同一方案重新渲染会生成一条新成片,需要重新点「通过」。
- 「预览」可以直接播放成片;「删除成片」只删本地
renders/<runId>,不会删除 B站 上已经发布的内容;关联项目会回到草稿,可以重新渲染。 - 在创作页「删除方案」只删方案本身,已经渲染的成片会留在「审核 / 发布」,需要单独删除。
- 「投稿 dry-run」会完整打印标题、标签、分区、封面、简介和命令,但不会真的发布。
- 「真投稿」默认关闭:先到「我的 → 发布权限」打开「允许真投稿」,再对成片点「通过」,之后才会出现可用的「真投稿」,发送前还有一次确认。
数据与配置¶
默认数据目录:
~/.dsh-bili-workbench/store/
videos/<BV>.json 视频事实 + 判定 + 金句
subs/<BV>.json 逐字稿
frames/<BV>/ 关键帧
covers/<BV>.jpg 封面
plans/<项目>/ 方案与版本
renders/<runId>/ 成片、封面、字幕、配音(升级插件不会丢)
reports/YYYY-MM-DD.md 素材日报
config.json 设置(含模型密钥,注意不要提交)
interactions.json 已评论 / 已回复账本
tasks.json 长任务(素材不够自己去刷B站)
默认位置是 ~/.dsh-bili-workbench/store;从原项目迁移的机器上,如果存在 D:\AI_projects\bibilili\bili-store 且没有设置 BILI_STORE,会自动使用旧目录。也可以:
- 在「我的 → 素材库与运行 → 素材库位置」里直接改,保存后即时切换;新目录为空时会复制现有素材
- 用环境变量
BILI_STORE指定
选择过的位置会写进 ~/.dsh-bili-workbench/location.json,重启后保持不变。
常用环境变量:
| 变量 | 作用 |
|---|---|
BILI_STORE |
素材库目录 |
BILI_OP_DIR |
出片引擎目录(默认用插件内置的 bili-op/) |
BILI_OP_LLM_BASE |
OpenAI 兼容端点,默认 http://127.0.0.1:40080/v1 |
OC_API_KEY |
模型密钥(没设则读 config.json 的 llmKey) |
BILI_OP_CHROME |
指定 Chrome / Edge 可执行文件 |
BILI_BIN |
指定 bili 可执行文件 |
适用场景¶
适合需要持续获取 B站 内容并转化为成片的工作流。包括但不限于:
- 从 B站 热门内容中提取金句和素材制作短视频
- 建立个人 B站 素材库,为后续创作提供参考
- 自动化视频内容的生产流程
插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。
结尾¶
dsh-bili-workbench 提供了从内容采集、素材管理、AI 创作到发布审核的全链路能力,将分散的 B站 工作整合到一个工作台。通过 DSH 插件机制集成,可以与 DeepSeek Harness 的工作流无缝衔接。
- 目录页:https://www.skillhub.cn/plugins/Userluckytian/dsh-bili-workbench
- GitHub:https://github.com/Userluckytian/dsh-bili-workbench