feat: integrate bilibili-extractor into obsidian-kb
- Add extractors layer with BilibiliExtractor (Playwright stealth mode) - Add outputs layer with ObsidianWriter and GitSync - Implement subtitle/no-subtitle graceful degradation - Update config with output and bilibili extraction settings - Complete integration pipeline: extract → process → output → sync - Add comprehensive tests (100% pass rate) - Update documentation (SKILL.md, README.md, requirements.txt)
This commit is contained in:
@@ -0,0 +1,134 @@
|
||||
# obsidian-kb + bilibili-extractor 整合 - 实现计划
|
||||
|
||||
**Goal:** 将 bilibili-extractor 的提取能力整合到 obsidian-kb,输出markdown到Obsidian按UP主分类管理
|
||||
|
||||
**Approach:** 保持 obsidian-kb 现有架构,新增提取层和输出层,替换原有提取逻辑
|
||||
|
||||
**Estimated Total Time:** 90-120 分钟
|
||||
|
||||
---
|
||||
|
||||
## Checkpoint 1: 代码结构调整
|
||||
- [ ] Task 1: 创建 extractors 目录结构 (~3 min)
|
||||
- **Action:** `mkdir -p /home/admin/.openclaw/workspace/skills/obsidian-kb/src/extractors`
|
||||
- **Verify:** `ls -la` 确认目录存在
|
||||
- [ ] Task 2: 创建 outputs 目录结构 (~3 min)
|
||||
- **Action:** `mkdir -p /home/admin/.openclaw/workspace/skills/obsidian-kb/src/outputs`
|
||||
- **Verify:** `ls -la` 确认目录存在
|
||||
- [ ] Task 3: 创建 __init__.py 文件 (~2 min)
|
||||
- **Action:** 在 extractors/ 和 outputs/ 创建 __init__.py
|
||||
- **Verify:** 文件创建成功
|
||||
|
||||
---
|
||||
|
||||
## Checkpoint 2: 提取器基类和配置扩展
|
||||
- [ ] Task 1: 创建提取器基类 (~5 min)
|
||||
- **Action:** 创建 `src/extractors/base.py`,定义 Extractor 基类和接口
|
||||
- **Verify:** 基类定义完成,包含 extract() 抽象方法
|
||||
- [ ] Task 2: 扩展 config.py 配置 (~5 min)
|
||||
- **Action:** 在 DEFAULT_CONFIG 中添加 output.organize_by, output.filename_format, sources.bilibili.extraction
|
||||
- **Verify:** 配置项添加成功,支持环境变量覆盖
|
||||
|
||||
---
|
||||
|
||||
## Checkpoint 3: B站提取器实现
|
||||
- [ ] Task 1: 移植 bilibili-extractor 核心逻辑 (~10 min)
|
||||
- **Action:** 创建 `src/extractors/bilibili_extractor.py`,从 bilibili_extractor.py 移植 Playwright 提取逻辑
|
||||
- **Verify:** 提取器能独立运行,返回元数据+字幕
|
||||
- [ ] Task 2: 测试提取器 (~5 min)
|
||||
- **Action:** 用真实BV号测试(BV1MnFNz5EDL)
|
||||
- **Verify:** 成功提取视频信息、统计数据、字幕
|
||||
|
||||
---
|
||||
|
||||
## Checkpoint 4: 处理器接口调整
|
||||
- [ ] Task 1: 调整 analyzer 接口 (~5 min)
|
||||
- **Action:** 修改 `src/processors/analyzer.py`,从提取器数据结构接收输入
|
||||
- **Verify:** 接口调整完成
|
||||
- [ ] Task 2: 实现无字幕降级逻辑 (~5 min)
|
||||
- **Action:** 添加无字幕分支处理(使用视频简介,只保留默认标签)
|
||||
- **Verify:** 无字幕场景逻辑正确
|
||||
- [ ] Task 3: 调整 chunker 接口 (~3 min)
|
||||
- **Action:** 修改 chunker 接收提取器数据
|
||||
- **Verify:** 接口调整完成
|
||||
|
||||
---
|
||||
|
||||
## Checkpoint 5: 输出器实现
|
||||
- [ ] Task 1: 实现 ObsidianWriter (~8 min)
|
||||
- **Action:** 创建 `src/outputs/obsidian_writer.py`,实现按UP主分类写入
|
||||
- **Verify:** 能创建 `vault/videos/bilibili/{author}/` 目录并写入文件
|
||||
- [ ] Task 2: 实现 GitSync (~5 min)
|
||||
- **Action:** 创建 `src/outputs/git_sync.py`,实现 git commit/push
|
||||
- **Verify:** Git 同步逻辑正确
|
||||
- [ ] Task 3: 测试输出器 (~5 min)
|
||||
- **Action:** 用测试数据验证输出
|
||||
- **Verify:** 文件结构、frontmatter、内容格式正确
|
||||
|
||||
---
|
||||
|
||||
## Checkpoint 6: 主流程集成
|
||||
- [ ] Task 1: 集成提取层到主流程 (~8 min)
|
||||
- **Action:** 修改 handler.py 或主入口,调用提取器→处理器→输出器
|
||||
- **Verify:** 完整数据流打通
|
||||
- [ ] Task 2: 添加错误处理 (~5 min)
|
||||
- **Action:** 在各层添加 try-except,返回友好错误提示
|
||||
- **Verify:** 错误场景有明确提示
|
||||
- [ ] Task 3: 添加日志记录 (~3 min)
|
||||
- **Action:** 添加详细错误日志
|
||||
- **Verify:** 日志记录完整
|
||||
|
||||
---
|
||||
|
||||
## Checkpoint 7: 集成测试
|
||||
- [ ] Task 1: 完整流程测试(有字幕)(~8 min)
|
||||
- **Action:** 用有字幕BV号测试完整流程
|
||||
- **Verify:** Obsidian笔记生成正确,内容完整
|
||||
- [ ] Task 2: 降级流程测试(无字幕)(~5 min)
|
||||
- **Action:** 用无字幕BV号测试
|
||||
- **Verify:** 优雅降级,输出基础元数据笔记
|
||||
- [ ] Task 3: 错误场景测试 (~5 min)
|
||||
- **Action:** 测试网络错误、无效BV号等
|
||||
- **Verify:** 错误提示友好,不崩溃
|
||||
|
||||
---
|
||||
|
||||
## Checkpoint 8: 文档更新
|
||||
- [ ] Task 1: 更新 SKILL.md (~5 min)
|
||||
- **Action:** 添加提取器说明、配置说明、使用示例
|
||||
- **Verify:** 文档完整准确
|
||||
- [ ] Task 2: 更新 README.md (~3 min)
|
||||
- **Action:** 更新项目说明、快速开始
|
||||
- **Verify:** README 清晰易懂
|
||||
- [ ] Task 3: 更新 requirements.txt (~2 min)
|
||||
- **Action:** 添加新依赖(playwright, undetected-playwright)
|
||||
- **Verify:** 依赖完整
|
||||
|
||||
---
|
||||
|
||||
## Verification Criteria
|
||||
- [ ] 所有 checkpoint 完成
|
||||
- [ ] 有字幕视频:生成完整深度分析笔记
|
||||
- [ ] 无字幕视频:优雅降级生成基础笔记
|
||||
- [ ] 按 UP 主分类:目录结构正确
|
||||
- [ ] 错误处理:所有错误场景有友好提示
|
||||
- [ ] 文档完整:SKILL.md 和 README.md 更新
|
||||
- [ ] 用户测试通过:真实视频验证成功
|
||||
|
||||
---
|
||||
|
||||
## 执行选项
|
||||
|
||||
计划已保存到 `memory/plans/obsidian-kb-integration.md`
|
||||
|
||||
**1. Single-Agent(本会话串行执行)**
|
||||
- 我在这里按顺序完成任务
|
||||
- 每个 checkpoint 汇报进度
|
||||
- 有问题随时调整
|
||||
|
||||
**2. Dispatch Multiple Agents(并行执行)**
|
||||
- 派多个子代理并行处理独立任务
|
||||
- 整合结果
|
||||
- 适合大项目加速
|
||||
|
||||
选择哪种执行方式?
|
||||
Reference in New Issue
Block a user