视频转知识库 Skill v2 (video-to-knowledge)
把视频自动转化为深度学习知识库,不只是简单总结,而是以视频为骨架、web搜索为营养、知识点为血肉的系统化学习体系。
v2 核心升级(vs v1)
| 维度 | v1(旧) | v2(新) |
|---|---|---|
| 笔记结构 | 单篇视频笔记,塞"核心知识点+易错点+时间戳" | 两层结构:视频总览 + 每个知识点独立9段式深度笔记 |
| 知识点粒度 | 3-8个,每个1-2句话 | 5-15个细粒度知识点,每个4-6句话+公式+例题 |
| 信源 | 只有视频转写/字幕 | 三信源融合:视频(骨架)+ web深度搜索(扩展)+ 可选教材PDF(定义/定理) |
| 知识关联 | 无 | 每个知识点带前置/后续/关联,构建知识网络 |
| 知识谱系 | 只有 _总览.md 列表索引 |
Mermaid mindmap 全景图 + 知识关联图 + 学习路径 |
| 学习闭环 | 无 | 复习清单(1/3/7/15天间隔重复)+ 掌握检验 checklist |
| web搜索 | 无 | 每个知识点4-6路深度搜索(定义/应用/易错/拓展/关联) |
核心能力
- 三平台支持:YouTube(代理 127.0.0.1:7897)、B站(直连)、抖音(cookie 已配)
- 字幕优先:有字幕直接抓,省转写时间;无字幕用 faster-whisper 本地转写
- 细粒度知识点拆分:LLM 自动拆解为5-15个知识点,每个带时间戳、前置/后续/关联
- web深度搜索扩展:每个知识点4-6路搜索(定义/应用/易错/拓展/关联),DuckDuckGo + LLM总结
- 三信源融合:视频内容(带时间戳)+ web搜索扩展 + 可选教材PDF(复用 topic-knowledge-base 的 MinerU 流程)
- 9段式深度笔记:定义/原理→细分概念→例题应用→易错点→拓展知识→知识关联→掌握检验→学习建议→参考来源
- 知识谱系总图:Mermaid mindmap 全景图 + 知识关联图(前置/后续关系)+ 学习路径
- 学习闭环:复习清单(1/3/7/15天间隔重复)+ 掌握检验 checklist
- 多视频融合:相同题材博主融合对比,互补内容整合
- 自动清理:处理完自动删临时视频/音频,只留笔记
脚本位置
所有脚本在 skills/video-to-knowledge/scripts/:
| 脚本 | 用途 | 版本 |
|---|---|---|
pipeline.py |
主流程:下载→转写→知识点拆分总结(一键跑完),默认GPU,--cpu回退 |
v2 |
batch_process.py |
批量处理B站合集/分P(断点续传、混合模型、--retry-failed) |
v1 |
download.py |
下载模块(平台识别+字幕优先+音频下载,分P独立目录) | v1 |
transcribe.py |
转写模块(faster-whisper,默认RTX4060 GPU加速,长音频8分钟分段+GC+模型四级回退) | v1 |
summarize.py |
LLM总结模块 v2(细粒度知识点拆分,每个带前置/后续/关联/公式/例题) | v2 |
knowledge_deep_dive.py |
web深度搜索扩展:对每个知识点4-6路DuckDuckGo搜索+LLM扩展(定义补充/应用场景/易错点/拓展知识) | v2 新增 |
build_knowledge_graph.py |
知识谱系总图生成:Mermaid mindmap + 知识关联图 + 学习路径 | v2 新增 |
write_obsidian.py |
Obsidian写入模块 v2(两层结构:视频总览+知识点独立9段式笔记+复习清单) | v2 |
fusion_compare.py |
多合集/多博主融合对比,生成 _融合对比.md |
v1 |
rebuild_overview.py |
按现有笔记重建干净的 _总览.md |
v1 |
触发指令
单视频处理(基础版,只有视频信源)
视频笔记 <视频链接>
整理这个视频 <链接>
把这个视频做成笔记 <链接>
学习这个视频 <链接>
单视频处理(深度版,视频+web搜索双信源)
视频深度笔记 <视频链接>
视频建库 <链接>
把这个视频做成知识库 <链接>
批量处理(播放列表/频道/B站合集分P)
批量整理 <播放列表链接>
把这个频道的视频都做成笔记 <频道链接>
视频批量建库 <合集链接>
工作流(Agent 必须严格遵循)
模式选择
| 模式 | 触发词 | 流程 | 预估token |
|---|---|---|---|
| 基础版 | "视频笔记"、"整理这个视频" | 下载→转写→总结→写入(单篇视频笔记) | ~10K |
| 深度版(推荐) | "视频深度笔记"、"视频建库"、"做成知识库" | 下载→转写→知识点拆分→web深度搜索→三信源融合→两层笔记→知识谱系→复习清单 | ~50-80K |
| 批量版 | "批量整理"、"合集" | 批量下载→转写→总结→写入同一主题,最后融合对比 | 每个视频 |
步骤1:确认输入
- 解析用户消息中的视频链接
- 判断模式(基础/深度/批量)
- 如果是批量(播放列表/频道),先列出将处理的视频数量,等用户确认
步骤2:运行主流程(下载→转写→知识点拆分总结)
python "<skill目录>\scripts\pipeline.py" "<视频URL>" --json
- 转写模型默认
small(平衡速度和质量);长视频/学习资料用medium;快速预览用tiny - 有字幕时自动跳过转写;无字幕时自动转写
- v2 总结输出:细粒度知识点列表(5-15个),每个知识点带:名称、详细解释、时间戳、重要性、前置知识、后续延伸、关联知识点、细分概念、关键公式、典型例题
- 同时输出:知识发展脉络(knowledge_chain)、视频内容概述、关键时间戳、学习建议
- 处理完成后自动清理临时大文件:删除视频文件(.mp4等)、音频文件(.mp3等)、转写片段目录(segments/)
- 保留:metadata.json(含视频链接)、字幕文件(.srt/.txt)、总结结果(summary.json)
步骤3(深度版):web深度搜索扩展
python "<skill目录>\scripts\knowledge_deep_dive.py" "<summary.json路径>" --output "<deep_dive.json路径>"
- 对每个知识点自动生成4-6路搜索查询:定义原理、应用场景、易错点、与主题关系、拓展知识
- DuckDuckGo HTML 搜索(不需要API key,禁用代理直连)
- LLM 基于搜索结果生成扩展内容:定义补充、应用场景、常见错误、拓展知识、学习建议、参考链接
- 输出
deep_dive.json(包含原知识点 + web扩展 + 搜索结果) - token优化:每个知识点搜索结果限制10条,LLM扩展限制2000 token;批量处理时相似知识点复用搜索结果
步骤4(深度版):生成知识谱系总图
python "<skill目录>\scripts\build_knowledge_graph.py" "<deep_dive.json路径>" --output "<主题目录>\_知识谱系总图.md" --video-title "<视频标题>"
- 生成 Mermaid mindmap(按重要性分组:核心/重要/了解 → 知识点 → 细分概念)
- 生成知识关联图(graph LR,知识点之间的前置/后续关系连线)
- 生成学习路径(按重要性排序,每个知识点带前置/后续)
- 生成知识点索引表(点击跳转深度笔记)
步骤5:输出主题建议,等用户确认
- 向用户展示:
- 建议主题:(LLM 建议的主题名)
- 归类理由:(为什么建议这个主题)
- 一句话总结:(视频核心内容)
- 知识点数量:N 个细粒度知识点
- 知识发展脉络:(前置→当前→后续)
- 模式:基础版 / 深度版
- 将要写入的路径:
E:\obsidian\rein\<主题>\ - 将要生成的文件:视频总览笔记 + N个知识点笔记 + 知识谱系总图 + 复习清单(深度版)
然后询问:确认写入这个主题吗?回复【确认】写入,或回复【主题=xxx】修改主题后写入
禁止静默写入——必须等用户确认。
步骤6:用户确认后写入 Obsidian
# 基础版(summary.json)
python "<skill目录>\scripts\write_obsidian.py" "<summary.json路径>" --topic "<确认的主题>"
# 深度版(deep_dive.json)
python "<skill目录>\scripts\write_obsidian.py" "<deep_dive.json路径>" --topic "<确认的主题>"
- write_obsidian.py v2 自动识别格式(summary.json v1 或 deep_dive.json v2)
- 两层笔记结构 + 双向跳转:
视频笔记/<平台>_<标题>.md:视频总览(基本信息+核心知识点快速跳转列表🔴高/🟡中/⚪低+可点击wikilink+一句话核心内容,手机端易点击+知识点详细索引表+关键时间戳+学习建议)知识点/<知识点名>.md:每个知识点独立9段式深度笔记,顶部带 📺 返回视频总览 双向跳转链接
- 复习清单:
_复习清单.md(1/3/7/15天间隔重复,每个知识点带复习状态) - 主题总览:
_总览.md(视频索引表,按 video_id 幂等去重) - 合集总谱系:
_合集知识谱系总图.md(多集合集级Mermaid全景,16集→知识点三层) - 临时视频/音频文件已在步骤2自动清理
步骤7:输出完成报告
- 写入的主题目录路径
- 视频总览笔记路径
- 知识点笔记数量和路径
- 知识谱系总图路径(深度版)
- 复习清单路径(深度版)
- 视频链接(方便回看)
9段式深度笔记标准模板(知识点独立笔记)
---
category: "<主题>"
tags: ["知识点", "<知识点名>", "视频学习"]
source: ["视频: <视频标题>", "web深度搜索"]
importance: "高/中/低"
video_timestamp: "05:30"
created: "YYYY-MM-DD"
---
# <知识点名>
> 视频讲解位置:**05:30** — [<视频标题>](<视频URL>)
---
## 📌 一、核心定义与原理
(视频中的详细解释,4-6句话,讲清楚定义/原理/推导)
### 📖 定义补充(web搜索扩展)
(web搜索补充的定义深化,视频没讲透的部分)
### 📐 关键公式
- 公式1
- 公式2
## 🧩 二、细分概念
1. **细分概念1**
2. **细分概念2**
## 📝 三、典型例题与应用
**例1**:(视频中的例题)
### 🌐 应用场景(web搜索扩展)
- 应用场景1(具体实例)
- 应用场景2
## ⚠️ 四、易错点与常见错误
1. 常见错误1(错误做法+正确做法)
2. 常见错误2
## 🚀 五、拓展知识
(web搜索扩展的进阶概念或跨学科联系)
## 🔗 六、知识关联
### 📚 前置知识
- [[知识点/<前置1>|<前置1>]]
### ➡️ 后续延伸
- [[知识点/<后续1>|<后续1>]]
### 🔄 关联知识点
- [[知识点/<关联1>|<关联1>]]
## ✅ 七、掌握检验(自测清单)
- [ ] 能复述核心定义
- [ ] 理解原理和推导
- [ ] 能熟练运用相关公式
- [ ] 能举出应用场景
- [ ] 能区分与相关概念的区别
- [ ] 能独立完成视频中的例题
## 📖 八、学习建议
(web搜索扩展的学习建议,这个知识点应该怎么学、学到什么程度)
## 📚 九、参考来源
- **视频**:[<视频标题>](<视频URL>)(时间戳)
- **web扩展1**:[标题](URL)
- **web扩展2**:[标题](URL)
---
> 📌 本笔记由 video-to-knowledge skill v2 自动生成,基于视频转写 + web深度搜索 + LLM知识关联分析。
知识点拆分规则(summarize.py v2)
- 数量:尽可能细化,至少5个,最多15个,按视频讲解顺序排列
- 每个知识点必须包含:
point:知识点名称(简洁明确)detail:详细解释(4-6句话,定义/原理/推导/应用)timestamp:视频中出现的时间点(如"05:30")importance:高/中/低prerequisites:前置知识(学习这个知识点需要先掌握什么)follow_ups:后续延伸(学完后可以继续学习什么)related:关联知识点sub_points:细分小知识点key_formulas:关键公式(如果有)examples:典型例题或应用案例
- 知识发展脉络(knowledge_chain):必须讲清楚知识点的发展脉络,用"→"连接,不是简单罗列
- 所有内容必须来自转写文本,不要编造;转写文本可能有识别错误,根据上下文合理修正
web深度搜索流程(knowledge_deep_dive.py)
搜索查询生成(每个知识点4-6路)
<知识点> 定义 原理<知识点> 应用场景 实例<知识点> 易错点 常见错误<知识点> 与 <视频主题> 关系<知识点> 拓展知识 进阶
搜索方式(国内环境实测,2026-09 更新)
- 主用必应中国
cn.bing.com/search(国内直连,不需要VPN,最稳定):按<li class="b_algo">分割解析(不依赖</li>闭合,避免嵌套匹配失败),取 h2>a 标题链接 + b_lineclamp/b_caption 摘要,过滤 bing.com/microsoft.com 自身链接 - DuckDuckGo 仅作VPN备选:DDG(html.duckduckgo.com)在国内直连和常见代理端口都不通(实测 ProxyEnable=0、7897/7890/7892 均无监听时全部 Max retries exceeded);只有检测到 7897/7890/7892 端口有活代理时才作为补充
- 统一入口
web_search():先必应,结果不足2条才尝试代理端口的DDG - ⚠️ 关键坑:搜索脚本对B站/必应走直连(禁用代理环境变量),不要误以为"挂了VPN就能用DDG"——VPN若没开系统代理/没监听HTTP端口,Python requests 照样连不上
- 必应返回100KB但解析0条 → 多为正则依赖
</li>闭合导致,必须用re.split('<li class="b_algo">')分割法
LLM 扩展输出(每个知识点)
definition_enhanced:定义补充(2-3句话,视频没讲透的部分)application_scenarios:应用场景列表(具体实例,不空泛)common_mistakes:常见错误列表(错误做法+正确做法)extended_knowledge:拓展知识(2-3句话,进阶概念或跨学科联系)learning_path:学习建议(1-2句话)references:参考资料列表(标题+URL)
token 优化策略
- 每个知识点搜索结果限制10条,每条摘要限制200字
- LLM 扩展限制2000 token输出
- 批量处理时,相似知识点(如"导数"和"微分")复用搜索结果
- 用户说"省token"时,只对高重要性知识点做web搜索,中低重要性直接用视频内容
- 教材PDF可选接入(用户明确要求时),复用 topic-knowledge-base 的 MinerU 流程
知识库输出结构(深度版)
E:\obsidian\rein\<主题>\
├── _知识谱系总图.md ← Mermaid mindmap + 知识关联图 + 学习路径
├── _总览.md ← 视频索引表(按 video_id 幂等去重)
├── _复习清单.md ← 间隔重复(1/3/7/15天),每个知识点带复习状态
├── 视频笔记/ ← 视频总览笔记
│ └── <平台>_<标题>.md ← 基本信息+知识点索引表+关键时间戳+学习建议
├── 知识点/ ← 知识点独立9段式深度笔记
│ ├── <知识点1>.md
│ ├── <知识点2>.md
│ └── ...
└── 99-教材原文/ ← 可选(用户提供PDF时接入)
多视频融合(相同题材博主)
当用户处理了多个相同主题的视频后,主动询问:
检测到你在「<主题>」下已有 N 个视频笔记,是否需要生成「多博主融合对比」? (分析各博主讲解的相关性、区别点、互补内容)
如果用户确认,用 fusion_compare.py 自动汇总临时目录各 summary.json 大纲并调 LLM 生成融合对比文档:
python scripts/fusion_compare.py --topic "<主题名>" --bvs "<BV1>,<BV2>" --names "<合集名1>,<合集名2>"
文档含六部分:各合集定位与内容地图 / 相关性 / 区别点(表) / 互补内容 / 融合学习路线 / 知识盲区。
跨视频知识点融合(v2 增强)
- 多个视频讲同一知识点时,自动识别并在知识点笔记中标注:
- "视频A讲了X,视频B补充了Y"
- 融合对比不只是"区别",而是"互补后的完整知识"
- 知识点笔记的
参考来源部分列出所有讲过这个知识点的视频
红线(必须遵守)
- 只允许在
E:\obsidian\rein\下创建/修改笔记;禁止触碰其他磁盘目录 - 每个主题 = 独立 vault:
E:\obsidian\rein\<主题>\,不混用路径 - 单视频首次写入前必须等用户确认主题;禁止静默写入。同一 video_id 重跑允许幂等覆盖(更新该视频自己的笔记),但绝不覆盖/删除其他视频或其他主题的笔记
- 所有内容必须来自视频转写/字幕 + web搜索结果;视频中没有的信息标注"待补充",不编造;web搜索内容必须标注来源链接
- 不删除任何已有 Obsidian 笔记(清理重复笔记前必须按 video_id 确认有保留件);只自动删除临时下载的视频/音频
- 临时文件只放在
E:\openclaw-video-temp\下 - 抖音 cookie 文件
douyin-cookies.txt在 skill 目录下,不要泄露给用户或写入笔记 - 同一合集同一时刻只允许一个批量实例运行(运行锁 progress/.batch_.lock);切换 CPU/GPU 重跑前,必须确认旧批量进程(含父进程)已全部停止
- web搜索必须禁用代理(DuckDuckGo 国内可直连,代理未运行会导致连接失败)
- 深度版 token 消耗较大(每个视频50-80K),处理前告知用户预估消耗,用户说"省token"时降级为基础版或只对高重要性知识点做web搜索
批量作业标准流程 SOP(处理合集/大量分P时严格遵循)
- 先清环境:所有命令前清空失效系统代理(本机曾出现
HTTP_PROXY=127.0.0.1:7892代理未运行导致全部网络失败): PowerShell 用$env:HTTP_PROXY="";$env:HTTPS_PROXY="";$env:http_proxy="";$env:https_proxy="" - 确认没有旧实例:
Get-Process python | ? {$_.WorkingSet64 -gt 300MB},有残留先停掉(父+子进程都要停),避免两实例重叠产生重复笔记;批量脚本本身也有运行锁拦截。 - 后台启动:
batch_process.py --bvid <BV> --topic "<主题>" --model medium --no-hybrid,用后台任务跑,不要占住前台。 - 监控看三个信号:①进度文件 processed 数增长 ②Obsidian 最新笔记时间戳 ③
nvidia-smiGPU 利用率(GPU 模式应在 50%+)。 - 判断"真卡死"看 CPU 累计时间而非运行时长:进程运行很久但
CPU秒数几乎不涨 = 卡死(如 GPU 与 CPU 批量并行时的初始化挂起),正常转写 CPU 时间会持续增长。 - 失败不慌:网络类失败(音频下载失败等)先让主批量跑完,最后统一
--retry-failed(重试时间隔拉开,成功率高)。 - 收尾三件事:①
--retry-failed清零失败 ②多合集用fusion_compare.py出融合对比 ③用下文"交付自检清单"核对。 - 深度版批量:批量处理时默认用基础版(省token),用户明确要求"深度建库"时,批量转写总结完成后,再对每个视频的 summary.json 运行
knowledge_deep_dive.py+build_knowledge_graph.py+write_obsidian.py(深度版)。
故障排查手册(全部来自实战,按现象速查)
A. 下载 / 网络类
| 现象 | 根因 | 解决 |
|---|---|---|
音频下载失败,十几秒快速报错 |
B站音频流网络抖动/请求过密限流(GPU太快时偶发,约10%) | download.py 已内置3次重试+退避;仍失败就主批量跑完后 --retry-failed |
| 所有下载/API 都连不上、超时 | 系统环境变量里的代理(如 7892)没开 | 清空 4 个代理环境变量;download.py 对 B站已在子进程内自动绕过代理 |
yt-dlp: error: unrecognized arguments: --no-proxy |
该版本 yt-dlp 不支持此参数 | 不要传 --no-proxy,用清空环境变量方式(已内置) |
| 获取分P列表失败 | 缺请求头被风控 | 必须带 User-Agent + Referer: https://www.bilibili.com/video/<BV>(已内置) |
| YouTube 下载失败 | VPN/代理问题 | 确认 VPN 开启、端口为 7897(download.py 已内置该代理) |
| 抖音下载失败/要登录 | cookie 过期或私密内容 | 重新从浏览器导出 douyin-cookies.txt |
| web搜索全部超时/失败 | 系统代理未运行或 DuckDuckGo 被墙 | knowledge_deep_dive.py 已禁用代理直连;仍失败则降级为基础版(跳过web搜索) |
B. 转写 / 内存 / GPU 类
| 现象 | 根因 | 解决 |
|---|---|---|
长视频(30分钟+)报 Unable to allocate/mkl_malloc failed |
整段转写一次性申请连续内存过大 | 已解决:>15分钟自动按 8 分钟分段、逐段转写+时间偏移合并、每段 gc.collect();勿再调大分段 |
| 模型加载阶段就 MemoryError(甚至 import huggingface_hub 都报错) | 内存碎片化/不足 | 已内置四级回退:(指定model,GPU)→(同model,CPU,int8)→(base,CPU)→(tiny,CPU) |
GPU 报 cublas64_12.dll not found / cannot be loaded |
pip 装了 cublas/cudnn 但 DLL 目录没被加载 | transcribe.py 已用 os.add_dll_directory 自动加载 site-packages/nvidia/*/bin;仍失败加 --cpu |
| GPU 进程运行十几分钟、CPU 累计时间却只有十几秒 | 卡死(多为 GPU 测试与 CPU 批量并行争抢,或 cuDNN 初始化挂起) | 不要让 GPU 测试和 CPU 批量并行;验证 GPU 用 15 秒短音频+tiny;卡死就 kill 后单独重跑 |
| 不知道有没有真用上 GPU | — | nvidia-smi 看显存占用(medium约2-4GB)和利用率;日志命令行带"(GPU加速)" |
| 单视频超时被杀 | 超长视频 CPU 转写耗时长 | batch 单视频超时已设 3600 秒;GPU 模式下远用不到 |
| 转写模型怎么选 | — | tiny预览 < base < small < medium学习资料(推荐,GPU下5-8倍实时) |
C. 文件 / 编码 / 解析类
| 现象 | 根因 | 解决 |
|---|---|---|
| 分P之间 metadata/summary 互相覆盖 | 多个分P共用同一临时目录 | 已解决:分P独立目录 bilibili_<BV>_p<N> |
json.load 报 JSONDecodeError(BOM) |
PowerShell Set-Content -Encoding utf8 带 BOM |
已用 utf-8-sig 读取兼容;转写文本读取有 UTF-8→GBK→GB2312→Big5→Latin-1 自动回退 |
| pipeline 解析 summarize 的 stdout 失败 | 中文日志混在 stdout 干扰 JSON 提取 | 已改为优先直接读 output_dir/summary.json,不依赖解析 stdout |
--retry-failed 28-47秒就"假失败" |
根因(内存/下载)没修就重试,必然快速失败 | 先按本表修根因,再 retry;retry 不是万能,先看失败报错本身 |
D. 重复 / 索引类(本次重点踩坑)
| 现象 | 根因 | 解决 |
|---|---|---|
同一视频出现两份笔记、其中一份带 _v2 后缀 |
旧批量父进程没被完全 kill,与新任务短暂重叠,各写一次 | 已三重防护:①批量运行锁 ②write 同视频幂等覆盖不再加_v2 ③总览按 video_id 去重 |
_总览.md 索引条数 > 笔记数、有失效链接 |
重复写入时按文件名去重失效 | 已改为按 video_id 去重;存量损坏用 rebuild_overview.py <主题> 一键重建 |
| 清理重复笔记怕误删 | — | 必须按 video_id 分组,确认每个待删文件都有同 video_id 保留件后才删 |
| 融合对比里合集名和 BV 对错位 | 按 BV 字母序排序打乱了传入顺序 | 已改为严格按 --bvs 传入顺序对应 --names |
E. LLM 总结 / web搜索类
- API 调用失败:检查 key、网络;summarize.py 已禁用代理直连。
- 转写过长自动截断前 12000 字,避免超 token。
- 总结只花 7-11 秒,99% 耗时在转写——提速优先优化转写(GPU),不必纠结总结。
- web搜索(knowledge_deep_dive.py)每个知识点约消耗 3-5K token(搜索结果+LLM扩展),10个知识点约 30-50K token。
- web搜索失败时自动降级:该知识点只用视频内容,不阻塞整体流程。
F. v2 深度版专属坑(2026-09 实战)
| 现象 | 根因 | 解决 |
|---|---|---|
| pipeline 完成后显示"核心知识点 0 个" | summarize.py v2 输出字段是 knowledge_points,而 pipeline.py 旧代码读 core_knowledge_points |
已兼容:pipeline 用 knowledge_points 优先、回退 core_knowledge_points;改总结输出字段名时必须同步改 pipeline 统计 |
视频总览文件名变成 unknown_未知视频.md |
knowledge_deep_dive.py 生成 deep_dive.json 时没把原 summary 的 metadata 带过来 |
已修复:deep_dive.json 必须包含 metadata(title/platform/url/video_id);存量文件用小脚本从 summary.json 补 metadata 即可,无需重跑搜索 |
| 知识点笔记里 wikilink 大量灰色死链 | LLM 生成的前置/后续名是自由文本,和实际知识点文件名不完全一致 | 已用 link_or_text() 智能匹配:精确→包含→字符相似度≥0.7 才建 wikilink,匹配不到转纯文本并标注"(拓展·本库暂无独立笔记)";all_points 同时包含当前视频+主题已有知识点,支持跨视频互链 |
| 知识关联图节点名被截成"线性代数的学科地" | graph LR 节点标签硬截断8字 | 已放宽到12字+省略号,完整名见索引表 |
DuckDuckGo 搜索全部 Max retries exceeded |
DDG 国内被墙,禁用代理直连不通,VPN又没监听HTTP端口 | 改主用必应中国直连(见"搜索方式");不要在没确认代理端口存活时硬跑DDG |
| PowerShell 跑内联 python -c 报"表达式或语句中包含意外标记" | PowerShell 对引号/冒号转义与 bash 不同 | 复杂逻辑写成临时 .py 文件再 python 文件.py,不要用长内联命令 |
交付自检清单(批量完成后逐项核对)
- 每个主题:笔记数 == 进度文件 processed 数 ==
_总览.md索引行数 - 无
_v2重复文件、无 <1KB 空文件、无失效总览链接 - 所有进度文件
failed为 0(否则--retry-failed) - 深度版:已生成
_知识谱系总图.md(Mermaid mindmap 可正常渲染)、_复习清单.md - 深度版:知识点笔记数量 == summary.json 中 knowledge_points 数量
- 深度版:每个知识点笔记包含9段式结构(定义/细分/例题/易错/拓展/关联/自测/建议/来源)
- 多合集同主题:已生成
_融合对比.md E:\openclaw-video-temp无残留 .mp3/.mp4(应只留 metadata/srt/txt/summary,体积很小)- 无大型 python 残留进程、GPU 已释放
- 一键重建总览:
python scripts/rebuild_overview.py "<主题>"
与 topic-knowledge-base skill 的协同
- 视频是骨架,topic skill 是血肉:video-to-knowledge 负责从视频中拆解知识点,topic-knowledge-base 负责对知识点做全网深度搜索建库
- 可串联使用:先用 video-to-knowledge 从视频中得到知识点列表,再用 topic-knowledge-base 对每个知识点做深度建库(web+社媒+教材三信源)
- 教材PDF共享:两个 skill 都复用 MinerU PDF 提取流程(topic skill 的
scripts/split_pdf.py、compress_pdf.py、resplit_textbook.py) - 笔记格式统一:两个 skill 都使用9段式深度笔记模板,确保知识库风格一致