DeepSeek Harness Hub
← 返回列表

YZz-S/dsh-bili-summary

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

DeepSeek Harness Host 插件:注册模型工具 bilisummary,一次调用取回 B…

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/16 · 已提供中文文档

DeepSeek Harness 宿主插件:bili_summary 工具 - Bilibili 视频元数据、字幕时间轴、清晰帧同步图像、内置错误处理与降级、跨平台纯 Node 实现

综合分
27.4
GitHub 分
27.4
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add YZz-S/dsh-bili-summary
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/18(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

bili-summary

English · 中文

DeepSeek Harness Host 插件:注册模型工具 bili_summary,一次调用取回 B 站视频的元数据、字幕时间轴与可选配图素材(sharp 切帧),供 Agent 生成带时间点跳转链接的结构化总结笔记。

DeepSeek Harness Host 插件:注册模型工具 bili_summary,一次调用取回 B 站视频的元数据、字幕时间轴与可选配图素材(sharp 切帧),供 Agent 生成带时间点跳转链接的结构化总结笔记。

English

中文 · ← 返回 DeepSeekHarnessPlugins

功能特性

- 一个工具搞定全流程:video 输入接受 BV 号、bilibili.com/video/ 链接和 b23.tv 短链(自动解析重定向)
- 字幕优先:AI/人工字幕时间轴 → SRT 缓存;字幕过长时写入文件并仅内联摘录——模型用 read 分段读取其余部分
- 可选配图(仅在用户明确要求"配图"时):封面 + 每章节一张代表性帧,由 sharp 从播放器快照 API 提取,本地存储,以相对路径引用
- 错误处理即代码行为:B 站错误码映射(-404/-412/-352/62002…)、超时、指数退避重试、风控自动重试;业务失败返回结构化 JSON 而非抛出异常
- 渐进式降级:字幕 → "无字幕"提示;切帧 → 仅封面 → 纯文本——每个降级原因都会返回给模型
- 跨平台:纯 Node(≥ 20.9),无 shell 调用,无编码陷阱;文件名净化处理 Windows 非法字符和保留名称
- 多分 P 视频:page 参数切换分 P,每个分 P 有独立 cid;超出范围时返回总分 P 数

安装(dsh.bundle)

本仓库同时是可安装的 dsh 插件包(package.json 声明 dsh.bundle,cordis.patch.yml 声明插入行):

dsh plugin --profile web add github:YZz-S/dsh-bili-summary

安装后,用 dsh --profile web 启动,bili_summary 工具会自动挂载;无头用户将 profile 切换为 headless。注意事项:

- dsh plugin 内部转发到 pnpm(需先安装 pnpm);首次运行时 profile 会自动初始化;
- 如果 pnpm 要求批准构建脚本,批准 sharp 即可启用切帧;也可以不安装它——插件会自动降级为"仅封面配图";
- 行级配置(outputDir / cookie 等)在 profile 自身的 cordis.patch.yml 中,行 id 为 bili-summary 下覆盖。

安装(agent 预设行)

1. 准备你自己的 DSH agent 预设(用户预设位于 ${DSH_HOME}/.agent-presets//,组合文件为 agent.cordis.yml)。
2. 将 bili-summary.js 放入预设目录,并在组合中添加一行:

- id: tool-bili-summary
name: ./bili-summary.js
config:
outputDir: bili-output
(examples/cordis.row.yml 中有一个完整示例;这一行只会在宿主 tools 注册表中注册该工具,并且不发布任何服务,因此不需要 isolate realm。)

3. sharp(可选):在插件目录树中运行 npm install。没有它也能工作——会自动降级为“仅封面图片”,并在结果中说明这一点。
4. 使用 standingKeyFor() 验证挂载,然后打开一个新会话,并确认 bili_summary 出现在工具列表中。

工具参数

| 参数 | 类型 | 描述 |
| --- | --- | --- |
| video | string(必填) | Bilibili 链接(b23.tv 短链接、bilibili.com/video/ 链接)或 BV ID |
| withImages | boolean | 默认 false(纯文本);仅在用户明确要求“带图片”时传入 true |
| page | number | 多分P视频的分P编号(默认 1) |
| maxFrames | number | 图片模式下提取的最大帧数(1–48,默认 12) |
| refresh | boolean | 忽略磁盘缓存重新获取(默认 false) |

配置(内联 config)

| 字段 | 默认值 | 描述 |
| --- | --- | --- |
| outputDir | bili-output | 输出根目录:images/_/、cache//(meta.json / subtitle.json / subtitle.srt) |
| cookie | 空 | SESSDATA=...; bili_jct=...。在触发风控(-412)或登录(-352)时使用;仅用于请求头,绝不写入日志或结果 |
| userAgent | 内置浏览器 UA | 覆盖默认 UA |
| timeoutMs | 15000 | 每次 HTTP 超时 |
| retries | 2 | 网络失败 / 5xx / 风控的重试次数(指数退避) |
| maxFrames | 12 | 图片模式下的最大帧数 |
| chapterIntervalSec | 180 | 章节粒度(存在字幕时吸附到最近的字幕起点) |
| inlineSubtitleLimit | 10000 | 返回的内联字幕最大字符数 |

已知限制

- 明确不支持番剧/影视(redirect_url)、直播和互动视频(返回结构化错误,而不是盲目尝试)
- 字幕走旧版 view/player/v2 端点,不进行 WBI 签名;如果 Bilibili 收紧这一点,字幕会降级为“无字幕”并附带说明
- videoshot 是 Bilibili 的非官方接口,可能会变化;部分视频没有快照数据
- 插件使用进程级 Node fs 写入 outputDir(绕过会话文件沙箱)——请将挂载它的预设视为可信
- 为什么不使用 cordis_define 动态插件形式:动态 Host 沙箱没有 fetch/require/sharp,并且此部署的 web 服务没有 fetch provider

测试

npm test        # 或 node test/sanity.mjs

不需要网络或依赖。覆盖输入解析、sprite 帧提取数学回归(多 sprite Y 坐标 bug)、文件名清理、SRT 格式化、帧选择去重和章节吸附。

安全(依赖)
- sharp 版本要求:≥ 0.35.3(内置 libvips 8.18.3)。sharp  DeepSeek Harness Host 插件:注册模型工具 bili_summary,一次调用取回 B 站视频的元数据、字幕时间轴与可选配图素材(sharp 切帧),供 Agent 生成带时间点跳转链接的结构化总结笔记。

特性

- 一个工具走完全流程:video 输入支持 BV 号、bilibili.com/video/ 链接与 b23.tv 短链(自动解析跳转)
- 字幕优先:AI 字幕/人工字幕时间轴 → SRT 缓存;字幕过长时写文件并只内联返回摘录,模型用 read 分段阅读
- 可选配图(仅当用户明确要求“带图”):封面 + 每章代表帧,sharp 从播放器快照接口切出,本地存储、相对路径引用
- 错误处理是代码行为:B 站错误码映射(-404/-412/-352/62002…)、超时、指数退避重试、风控自动重试,业务失败返回结构化 JSON 不抛异常
- 逐级降级:字幕 → 无字幕说明;切帧 → 仅封面 → 纯文字,每级失败原因都返回给模型
- 跨平台:纯 Node 实现(≥20.9),无 shell 调用、无编码坑;文件名清洗兼容 Windows 非法字符与保留名
- 多P视频:page 参数切换分P,每 P 独立 cid;越界给出总 P 数

安装(dsh.bundle)

本仓库同时是可安装的 dsh 插件包(package.json 声明 dsh.bundle,cordis.patch.yml 声明插入行):

dsh plugin --profile web add github:YZz-S/dsh-bili-summary

安装后以 dsh --profile web 启动即自动挂载 bili_summary 工具;headless 用户把 profile 换成 headless。注意:

- dsh plugin 内部转发给 pnpm(需先装 pnpm),首次会自动初始化 profile;
- 若 pnpm 提示批准构建脚本,批准 sharp 可获得切帧能力;不批准也能安装,插件自动降级为“仅封面配图”;
- 行级配置(outputDir / cookie 等)在 profile 自己的 cordis.patch.yml 中按行 id bili-summary 覆盖。

安装(agent preset 行)

1. 准备一个自己的 DSH agent preset(用户 preset 位于 ${DSH_HOME}/.agent-presets//,组合文件 agent.cordis.yml)。
2. 把 bili-summary.js 放进 preset 目录,在组合里加一行:

- id: tool-bili-summary
name: ./bili-summary.js
config:
outputDir: bili-output

(完整示例见 examples/cordis.row.yml;该行只向宿主 tools 注册表注册工具、不发布服务,不需要 isolate realm。)

3. sharp(可选):在插件目录树内执行 npm install。不装也能用——自动降级为“仅封面配图”并在结果里说明。
4. 用 standingKeyFor() 挂载校验,然后开新会话确认工具列表出现 bili_summary。

工具参数

| 参数 | 类型 | 说明 |
| --- | --- | --- |
| video | string(必填) | B 站链接(b23.tv 短链、bilibili.com/video/ 链接)或 BV 号 |
| withImages | boolean | 默认 false(纯文字);仅当用户明确要求“带图”时传 true |
| page | number | 多P视频分P序号(默认 1) |
| maxFrames | number | 带图模式最多切帧数(1–48,默认 12) |
| refresh | boolean | 忽略磁盘缓存重新抓取(默认 false) |

配置(行内 config)

| 字段 | 默认 | 说明 |
| --- | --- | --- |
| outputDir | bili-output | 输出根目录:images/_/、cache//(meta.json / subtitle.json / subtitle.srt) |
| cookie | 空 | SESSDATA=...; bili_jct=...。风控(-412)/需登录(-352)时启用;仅用于请求头,绝不写入日志或结果 |
| userAgent | 内置浏览器 UA | 覆盖默认 UA |
| timeoutMs | 15000 | 单次 HTTP 超时 |
| retries | 2 | 网络失败 / 5xx / 风控重试次数(指数退避) |
| maxFrames | 12 | 带图模式最多切帧数 |
| chapterIntervalSec | 180 | 章节划分粒度(有字幕时吸附到最近字幕起点) |
| inlineSubtitleLimit | 10000 | 字幕内联返回字符上限 |

已知限制

- 番剧/影视(redirect_url)、直播、互动视频明确不支持(结构化报错而非瞎试)
- 字幕走 view/player/v2 遗留接口,未实现 WBI 签名;B 站收紧时字幕会降级为“无字幕”并说明
- videoshot 为 B 站非官方接口,可能变动;部分视频无快照数据
- 插件以进程级 Node fs 写 outputDir(不经过会话文件沙箱)——挂载它的 preset 视为可信
- 为什么不做 cordis_define 动态插件形态:动态 Host 沙箱无 fetch/require/sharp,且本部署 web 服务无 fetch provider

测试

npm test        # 或 node test/sanity.mjs

无需网络与依赖。覆盖输入解析、精灵图切帧数学回归(多精灵图 Y 坐标 bug)、文件名清洗、SRT 格式、帧选择去重、章节吸附。

安全(依赖)

- sharp 版本要求:≥ 0.35.3(内置 libvips 8.18.3)。< 0.35.0 的 sharp 自带 libvips 存在
CVE-2026-33327 / CVE-2026-33328 / CVE-2026-35590 / CVE-2026-35591(处理恶意构造的图片可触发,
其中两项 CVSSv4 为高危);本插件只解码 B 站 CDN 的封面与快照图,实际暴露面有限,但升级无副作用,务必保持最新。
- Node 要求:sharp 0.35 起要求 Node ≥ 20.9.0,本包 engines 已同步。
- 可选加固(standalone 使用场景):如需进一步缩小解码面,可在插件初始化处限制解码器:

sharp.block({ operation: ['VipsForeignLoadNsgif', 'VipsForeignLoadTiff', 'VipsForeignLoadVips'] })

注意 sharp.block 是进程级全局生效:若与处理 GIF/TIFF 的其他程序共享进程(例如 DSH harness 内的其他插件),请勿启用,以免影响它们。

合规与免责声明

依赖 B 站非官方接口,仅供个人学习与笔记用途;请遵守 B 站用户协议、控制请求频率、勿用于商业抓取;截图与字幕仅限个人使用;总结应为概括性内容而非大段复制原文。

GitHub About

Description:DeepSeek Harness Host 插件:bili_summary 工具——B站视频元数据、字幕时间轴与 sharp 切帧配图,错误处理与降级内置,跨平台纯 Node 实现

Topics:bilibili bilibili-api deepseek-harness cordis ai-agents llm-tools video-summary subtitle sharp markdown nodejs

License

MIT(见 LICENSE)。

English · 中文

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群