B
B站视频字幕 AI 总结助手
B站视频字幕 AI 总结,支持字幕刷新、模块高亮、当前播放器字幕识别、浮球拖拽、面板调宽、多 API 配置、自定义 Prompt、关闭思考、超时设置、字幕分段、时间跳转、总结缓存。
#B站增强
#字幕辅助
#AI工具
#视频总结
数据统计
总安装量
8
近 24 小时
+8
用户评分
-
描述
版本1
评分0
权限说明
读取B站视频字幕并调用用户配置的AI API进行智能总结,支持字幕分段、时间跳转、API配置管理。
AI根据视频的字幕总结B站视频。
需要自行配置API,仅能总结视频右下角带有字幕/CC的视频(如图所示)。
注:个人自用脚本,仅作存档。功能简单,未必通用。若恰好解决你的问题,那是缘分;若不适用,建议参考社区其他优秀项目,感谢理解。
- 基础功能 支持页面: https://www.bilibili.com/video/* https://www.bilibili.com/list/* https://www.bilibili.com/bangumi/play/* 页面右侧有一个 AI 悬浮球。 悬浮球支持拖拽,位置自动保存。 点击悬浮球打开右侧总结面板。 面板根据悬浮球位置向上或向下展开: 悬浮球在上半屏:面板在下方展开。 悬浮球在下半屏:面板在上方展开。 面板宽度可左右拖拽调节并保存。 面板高度固定为可用高度,内容区域内部滚动,避免面板乱飞。
- 字幕读取逻辑 当前最大坑是:B站是 SPA,多 P / 合集 / 播放列表 / /list/... 页面切换时,URL 或 window.INITIAL_STATE 不一定代表当前正在播放的视频。 当前脚本的字幕识别逻辑是: 优先从 performance.getEntriesByType('resource') 里找最近播放器请求: /x/player/v2 /x/player/wbi/v2 /x/player/playurl /x/player/wbi/playurl 从这些请求里提取: bvid aid cid 优先用 cid 作为当前视频标识。 再调用: /x/player/v2?bvid=xxx&cid=xxx 或 /x/player/v2?aid=xxx&cid=xxx 获取当前播放器字幕列表。 优先选择中文字幕。 再 fetch 字幕 JSON。 如果失败,才兜底使用 window.INITIAL_STATE 里找到的字幕 URL。 关键经验: 不能优先依赖 window.INITIAL_STATE,它经常是旧视频数据。 不能只依赖 URL,合集/播放列表/SPA 切换时 URL 不一定等于当前播放器内容。 cid 比 bvid + p 更能代表实际播放内容。
- 字幕分段模块 默认打开面板时显示 字幕分段,不自动请求 AI。 字幕分段功能: 自动读取当前视频字幕。 按时间和行数分段。 每段标题包含时间。 每条字幕保留时间。 时间格式如 [03:20]。 时间可点击跳转到视频对应位置。 字幕分段不会覆盖 AI 总结缓存。 当前分段规则: 每段最多 12 行字幕。 或时间跨度超过 90 秒就换段。
- AI 总结模块 底部有 AI总结 按钮。 逻辑是: 第一次点击 AI总结: 如果没有 AI 总结缓存,则请求 AI 生成。 再次点击 AI总结: 只显示缓存,不重新请求 AI。 只有点击 重新生成: 才会弹确认。 确认后重新请求 AI。 避免误消耗 API 额度。 关键缓存变量: js let latestSubtitleText = ''; let latestSummaryText = ''; let latestDisplayText = ''; 语义: latestSubtitleText:当前视频字幕缓存。 latestSummaryText:AI 总结缓存。 latestDisplayText:当前面板显示内容。 注意: 字幕分段不能写入 latestSummaryText,否则会覆盖 AI 总结缓存。
- 模块高亮 底部按钮有: text AI总结 / 字幕分段 / 复制 / 重新生成 / 关闭 其中只有: AI总结 字幕分段 是模块按钮。 当前在哪个模块,哪个模块按钮显示蓝色: 当前是字幕分段:字幕分段 蓝色。 当前是 AI 总结:AI总结 蓝色。 复制 / 重新生成 / 关闭 不参与高亮。 当前模块变量: js let currentModule = 'subtitle'; // subtitle / summary
- 字幕刷新功能 在面板右上角加了 刷新字幕 按钮。 逻辑: 只在当前模块是 字幕分段 时显示。 当前模块是 AI总结 时隐藏。 点击刷新字幕: 清空旧字幕。 清空旧 AI 总结。 重新识别当前播放器视频。 重新读取字幕。 重新生成字幕分段。 清空旧 AI 总结是为了避免字幕刷新后总结仍然对应旧字幕。
- API 配置 配置页在面板里,不只依赖菜单。 支持多个 API 配置档: 每个配置包含: 配置名称 Base URL API Key 模型名称 支持: 新增 API 删除当前 API 切换 API 保存当前 API 测试连接 兼容 OpenAI 格式接口。
- 自定义 Prompt 配置页支持自定义总结 Prompt。 默认 Prompt 大意: 根据 B站字幕生成中文 Markdown 总结。 按时间顺序分段。 每个小节标题必须以 [mm:ss] 或 [hh:mm:ss] 开头。 每段写 2-4 条要点。 不编造字幕中没有的信息。 保留重要观点、细节、结论。 修改 Prompt 后不会自动重新总结,必须点击 重新生成 才会使用新 Prompt。
- 关闭思考模式 配置页有: text 关闭思考模式 / 禁用 Reasoning 默认开启。 请求 AI 时会尝试附加: js reasoning_effort: 'minimal', enable_thinking: false, thinking: false 如果接口不支持这些字段,脚本会自动去掉这些参数重试一次。 经验: OpenAI-compatible 接口不完全兼容,有些接口不允许未知字段,所以必须自动降级。
- 请求超时时间 配置页支持设置请求超时时间。 单位:秒。 最小 10 秒。 最大 600 秒。 默认 120 秒。 长视频建议设置 180 / 300 / 600 秒。 超时同时用于: 字幕接口请求 AI 请求
- UI 经验
之前出现过面板乱飞,原因是定位依赖内容高度。
后来改成:
js
panel.style.height =
${panelHeight}px; panel.style.maxHeight =${panelHeight}px; 内容区域内部滚动。 经验: 浮窗定位不能依赖动态内容高度,否则内容变化会导致面板跳动。 面板展开规则: 悬浮球只决定上下展开。 不影响面板左右宽度。 面板宽度由用户拖拽设置。 面板和悬浮球上下紧挨展开。 - 调试菜单 脚本菜单里有: text 调试:打印当前视频识别信息 会输出: js { location, bvid, aid, pageIndex, videoKey, perfInfo, currentModule, requestTimeoutSeconds, disableThinking } 其中 perfInfo 来自最近播放器请求: js { bvid, aid, cid, source } 如果字幕仍然拿错,应优先看这里。
- 重要经验教训 不要优先信 window.INITIAL_STATE 它在 B站 SPA 页面里经常是旧数据。 不要只信 URL /list/...、合集、多 P、播放列表中 URL 可能不代表当前播放内容。 优先信当前播放器实际请求 performance.getEntriesByType('resource') 里的播放器 API 请求更接近真实状态。 缓存必须分清语义 字幕缓存、AI 总结缓存、当前显示内容必须分开。 重新生成必须由用户明确触发 AI 请求会消耗额度,不能自动重复请求。 默认显示字幕分段更合理 打开就能看到内容,不消耗 API。 用户确认字幕正确后再点 AI 总结。 模块按钮和操作按钮要区分 只有 AI总结 / 字幕分段参与高亮。 复制 / 重新生成 / 关闭只是操作按钮。 刷新字幕会让旧 AI 总结失效 所以刷新字幕后必须清空 AI 总结缓存。 浮窗定位要固定高度 + 内部滚动 不要让内容高度反向影响面板位置。 多服务商 API 要有降级机制 关闭思考参数可能不兼容,需要自动去掉参数重试。
数据统计
总安装量
8
近 24 小时
+8
用户评分
-
脚本详情
权限与访问
跨域访问
*
使用能力
网络请求存储菜单命令