bili-2-ppt skill :用 AI 把 B 站课程一键转成学习笔记(附开源地址)
- 2026-11-08 08:18:28
一、项目背景
很长一段时间,我的学习方式就是:在 B 站找到一门优质系统课,兴致勃勃地刷,刷的时候觉得「都懂了」,关掉视频过两周再想复习某个知识点——傻眼了,得从头拖进度条找。
后来我意识到,真正能沉淀下来的学习资料,必须满足三点:
1. 结构清晰:按知识点组织,而不是按视频时间线; 2. 能直接看:代码、命令、报错、表结构这些「画面里的硬信息」原样保留,而不是靠手抄或记忆; 3. 能复用:最好是一份 PPT,再加一份长文(方便自己细读)。
自己手动做这三样,一门 50 多集的课能让人做吐,于是我盯上了开源社区里的一个 Agent Skill:bili-2-ppt。
二、bili-2-ppt 技能是什么
项目地址:https://github.com/ewkzcz/bili-2-ppt
它基于 Rimagination/bili-note 二次开发,核心目标只有一句话——「真正看画面」:视频里出现过的代码、命令、报错、表结构和框图,会被原样抓下来,配在对应讲解旁边;字幕里没有的内容,不靠猜。
你给它一条 B 站视频链接,它能产出三份可以直接用的学习资料:
| 学习笔记 PPT | ||
| 知识博客文章 | ||
| 八股模拟面试 |
其中 PPT 的「图片版」是把视频真实画面原样嵌入,「图形版」是把每处画面重绘成原生矢量元素(文字、表格、形状),两版对照能检查重绘有没有读错内容。
重点:它本质是一个 Agent Skill,需要 LLM(Claude Code / CodeBuddy / WorkBuddy 等本地 Agent)驱动各阶段,不是双击就能跑的 exe。这点后面安装部分会细说。
三、它是怎么跑起来的:四个阶段
整个流程被设计成四个解耦的阶段,子技能之间只通过文件交换数据,不互相硬编码依赖:
链接 / BV 号 ↓阶段 1 字幕与音频转写(找现成字幕 → 网页 AI 字幕 → 本地 ASR) ↓阶段 2 画面采集与去重(后台浏览器按进度条跳转截图、去重、标出覆盖不足区间) ↓阶段 3 知识树与画面分派(立知识树、统一术语、把每张画面派到对应知识点) ↓阶段 4 三份交付物(分页转写 + 建 PPT + 注入动画 + 两层自检)几个关键设计点(也是它比「无脑截图」高级的地方):
• 字幕纠错是强制环节:ASR 或机器字幕一到手就立刻按上下文纠错(同音字、术语、断句),产出纠错稿和 glossary.json术语表。下游只读纠错稿,绝不再做第二遍——因为越往后的阶段 token 消耗越贵。• 画面整幅保留、绝不裁剪:裁掉边缘,往往会把表格最右一列、代码最后一行一起丢掉。进 PPT 只等比缩放,不预裁。 • 去重保留最后一帧:一个知识点在画面上停十几分钟会采出十几张重复图,去重是默认动作,连续重复里保留最后一帧(那才是定格完整的一张)。 • PPT 自检分两层:第一层代码校验全量跑(报错全修),第二层渲染看图只查版面,且最多 3 轮,不会无限循环挑刺。
四、真实案例:把 54 集 SAP 课程做成了资料库
我用它实跑了一条真实的 B 站系列课:SAP FICO(财务会计/管理会计),共 54 集。
最终成果:
• 54 份图片版学习笔记 PPT(Cryo_Academic 模板,每集一个文件,封面 + 去重后关键帧); • 40 篇叙事式知识博客(第 1 集 + 有 B 站 AI 字幕的 39 集); • 54 份去重联系表(每张保留帧的缩略图总览,绿框为保留); • 全部交付物目录体积约 5.3 GB。
举个例子,第 1 集《SAP导论》最终整理成:SAP 是什么、产品演进(R/2→R/3→ERP→S/4HANA)、OLTP/OLAP 统一、HANA 路线图、部署方式、产品组合、SAP GUI 与 Fiori 界面——七个章节、一张画面一页,顺序即课程推进顺序。
五、怎么装(三步)
第 1 步:克隆,保持目录名 bili-2-ppt
git clone https://github.com/ewkzcz/bili-2-ppt.git bili-2-pptcd bili-2-ppt目录名别改。子技能之间靠相对路径互相引用,改名会找不到彼此。
第 2 步:一键构建依赖环境(缺啥补啥)
python scripts/discover_env.py --setup它会先复用你本机已有的 Python 环境、ASR 模型和 ffmpeg,缺的再自动补齐(模型走国内镜像多连接下载、断点续传)。需要的环境分层:
第 3 步:启动带调试端口的浏览器,用 Agent 跑
• 双击 start_browser_debug.bat(它会用脚本目录下的独立 profile 起一个调试 Chrome,监听 9222 端口——原因见第六节);• 在这个调试窗口里登录一次 B 站,登录态会保留在独立 profile,下次复用; • 用你的本地 Agent(Claude Code / CodeBuddy / WorkBuddy 等)打开 bili-2-ppt目录,把agent_prompt.txt的内容粘进去运行即可。
开工前 Agent 会一次性问清选项(要哪几份文档、哪个 PPT 模板、出哪几版、分集范围),答完就可以离开,全程自动跑完,最后交一份验收报告。
六、问题
这部分是我最想写的,任何工具都有边界,这个skill有点“重”,不是很轻量。
1. 字幕:不是每一集都有,而且纠错是体力活
• 缺字幕的集需要额外跑本地 ASR。B 站并非每集都提供 AI 字幕。我这套 54 集里,有 14 集没有 B 站 AI 字幕,必须下载音频、跑本地 ASR(Qwen3-ASR / faster-whisper)才能拿到逐句文本。ASR 很吃资源,官方设计是「同一时间只跑一个进程、逐集串行」,否则本机显存/内存直接卡死。 • 机器字幕噪声大,必须纠错。ASR 和网页 AI 字幕充满同音字和术语错误(比如把「数字键」识别成「游牧键」),需要 LLM 按上下文逐段纠正,并维护一份 glossary.json统一术语写法。这一步省不掉,否则错误会一路流到 PPT 里。• 没字幕的集,博客只能退化成「画面索引式」。没有逐句文本,博客文章就写不出逐段讲解,只能退化成「本集概览 + 如何使用 + 说明」的薄壳,含金量明显下降。 • 网页 AI 字幕依赖本机登录态。它要靠本机已登录 B 站的浏览器 profile 去请求播放器接口;如果 profile 被安全软件锁定、或 cookie 数据库丢失,就取不到,只能退回 ASR 路线。
2. 截图:等距采样会漏掉「快速变化」的画面
「截图的不是特别全」痛点,值得展开:
• 默认按固定时间间隔(每 10 秒)等距采样,靠进度条跳转定位。对于画面长时间静止的讲解(一张 PPT 讲 5 分钟),等距采样会采出一堆重复帧——这部分去重能收拾。 • 但反过来,画面变化很快的片段(快速翻页、一闪而过的报错弹窗、短暂切到的配置界面),等距采样很可能整段漏掉。因为去重只负责「合并重复」,不负责「发现缺失」。漏采的画面,事后补不回来。 • 官方留了补救回路:去重后会产出 resample_hints.json,标出「相邻保留帧跨度过大」的区间,建议局部补采样、重采、再去重。但这依赖人工看contact_sheet.jpg(缩略图总览)去发现缺口并触发,不是全自动闭环。• 去重阈值和间隔是经验值,要人校准。阈值设太高会把内容不同的相邻幻灯片误合并;设太低又保留太多废帧。 settle-ms(跳转后等待截图的时间)默认 250ms,转场半帧/糊帧可能出现,得调到 450ms 重采。这些都是「跑完看一眼再微调」的活。
结论:截图「不全」不是 bug,是「等距采样 + 去重」策略的天然边界。追求高覆盖,就得把采样间隔调小、再人工看联系表补缺——代价是帧更多、PPT 更厚。
3. 清晰度:源的「720p 天花板」绕不过去
• 这门课 B 站源最高只有 720p,没有 1080p/4K。 • 最初用浏览器截图版,等于「720p 画面 + 播放器 UI 叠加 + 再上采样到 1080p」,文字边缘发虚、还带播放器控件。 • 后来换了一套「方案 A」:用 yt-dlp 下载 720p H.264 原画画流 → ffmpeg 在原生分辨率抽帧 → Lanczos 2x 超采样到 2560×1440,并去掉播放器 UI 叠加。文字边缘确实比旧版干净利落了。 • 但要诚实说:这只让「原生干净帧」更利落,并没有凭空增加真实像素。720p 源的清晰度天花板就在那里。对于文字密集、本身就清晰的课件,效果很好;对于本身就糊的原始录屏,神仙难救。
4. 工程环境:Chrome profile 与 cookie 的两个坑
• 本机默认 Chrome profile 可能被策略/安全软件锁定, --remote-debugging-port挂不上。任何用默认 profile 新起的 Chrome 都拿不到调试端口,会导致画面采集全部失败。解决办法是用脚本目录下的独立 debug profile(不与日常 Chrome 冲突)。• Chrome 的 Cookies 库可能丢失。我中途遇到 yt-dlp --cookies-from-browser chrome报Could not copy Chrome cookie database、每集立刻失败。实测发现不登录 B 站也能取到 720p/AVC 流,于是去掉 cookie 依赖、改用匿名下载 + 重试,反而更稳。
5. 体量:54 集原画版 ≈ 5.3 GB
图片版 PPT 是把真实画面整幅嵌入,单集文件几十到两百多 MB 不等,54 集堆起来就是 5 GB 级别。如果是图形版(矢量重绘、不含位图)会小很多,但图形版的「重绘准确性」又是个需要人工核对的新问题。
七、结果与改进
已经稳稳交付的:
• 54 集图片版 PPT(画面即是课件,适合回看和索引); • 40 篇叙事式博客(有字幕的集,逐段讲解); • 54 份去重联系表(缩略图总览,定位知识点快)。
待继续做的:
1. 14 集无字幕的博客待补:需要跑本地 ASR 后按同一叙事样式补写(可选项:OCR 粗补,但准确率不如 ASR); 2. 图形版 PPT 未出:目前只出了图片版,图形版(矢量重绘)适合做轻量分享,但需要逐页核对重绘是否读错; 3. 截图覆盖可再优化:对变化快的集,调小采样间隔 + 人工看联系表补采样,能把「不全」压到最低。
八、写在最后:它适合谁,不适合谁
适合:
• 想把 B 站系统课沉淀成可复用资料的人(考研、考证、技术培训都适用); • 愿意折腾本地 Agent + 浏览器调试端口、接受「一次配置、批量产出」的人; • 对「画面原样保留」有刚需的场景(IT 培训、代码课、配置演示)。
不适合:
• 想要「双击即用、零配置」的小白——它本质是 Agent Skill,需要 LLM 驱动; • 追求 1080p/4K 极致清晰度的——源只有 720p 的天花板; • 不想本地跑模型、也不想登录 B 站浏览器的——字幕和画面采集都依赖这些。
它把「从视频到资料」的机械劳动自动化了,但知识树的梳理、字幕的纠错、截图缺口的发现,仍然需要人的判断。
项目地址:https://github.com/ewkzcz/bili-2-ppt协议:MIT(基于 Rimagination/bili-note 二次开发)使用提醒:请遵守平台条款与著作权规定,仅用于个人学习和已获授权的材料。
欢迎点赞、收藏、分享,您的喜欢=更新的动力