asdhabdua/bilibili-video-notes-skill
GitHub: asdhabdua/bilibili-video-notes-skill
一款自动从 B 站教育视频中提取关键帧和字幕,并利用 AI 视觉分析生成结构化 DOCX 学习笔记的工具。
Stars: 8 | Forks: 0
# Bilibili 视频笔记 📝
_p_subtitles.txt # 字幕文本(保留)
├── vision_scores_pXX.json # 帧打分结果(保留)
├── vision_extract_pXX.json # 图中内容提取结果(保留)
└── X.X_章节标题_v1.docx # 最终笔记
```
如果一切正常,直接打开 DOCX 查看即可。
### 手动微调(如需要)
AI 生成的 DOCX 可能需要你微调:
- 某些帧可能选得不太好,可以替换
- 正文部分可能需要根据你的理解补充
- 排版风格可以在 `docx_note_v2.py` 中调整
## 📖 完整工作流
```
129 帧(每10秒全覆盖)
↓ OCR 预筛:去掉空白/面部帧
↓ 哈希去重(视觉结构相似归为一组)→ 20-40 帧
↓ AI 视觉打分(1-10 分)
↓ 人工选出最终 7-12 帧
↓ AI 提取图中文字/公式/表格/概念
↓ 融合字幕 + 图中内容生成 DOCX
↓ 验证 + 清理临时文件
```
### 为什么要分 score 和 extract 两步?
| 步骤 | 看的帧数 | AI 输出内容 | 目的 | token 成本 |
|------|----------|------------|------|-----------|
| score | 20-40 | theme/keywords/score/complete | 选帧 | 低 |
| extract | 7-12 | 图中完整文字/公式/表格/概念 | 写正文 | 高 |
分开可以最小化总 token 和 API 成本,同时避免用任何平台的 `vision_analyze` 串行调用。
## 🔧 命令参考
### 1. 抽帧
```
python scripts/extract_frames.py BV1xx411c7mD \
--page 1 \
--mode cover \
--subtitle \
--workspace ./workspace \
--frames ./frames/pXX
```
### 2. 去重
```
python scripts/smart_select.py ./frames/pXX/fixed \
--output-dir ./frames/pXX/selected \
--skip-clustering
```
### 3. 并发打分
```
python scripts/score_frames_concurrent.py \
--frames ./frames/pXX/selected \
--output ./workspace/vision_scores_pXX.json \
--workers 16
```
### 4. 人工选最终帧
根据 `vision_scores_pXX.json` 的 score 和 theme,人工(其实就是你的模型)决定最终使用哪几帧。
```
mkdir -p ./frames/pXX/final
cp ./frames/pXX/selected/frame_0003.jpg ./frames/pXX/final/
cp ./frames/pXX/selected/frame_0007.jpg ./frames/pXX/final/
# ...
```
### 5. 提取图中内容
```
python scripts/score_frames_concurrent.py \
--frames ./frames/pXX/final \
--output ./workspace/vision_extract_pXX.json \
--mode extract \
--workers 16
```
### 6. 生成 DOCX
```
cp templates/docx_note_v2.py ./workspace/gen_pXX_v1.py
# 编辑 gen_pXX_v1.py 填入 TITLE/SOURCE/FRAMES/SECTIONS
python ./workspace/gen_pXX_v1.py
```
### 7. 验证
```
python scripts/verify_docx.py ./workspace/
标签:Bilibili, OCR, Python, 多模态AI, 无后门, 自动化笔记, 视频处理, 逆向工具