feat(obsidian-kb): 实现自动触发机制

- 更新 SKILL.md:添加 frontmatter 元数据和自动触发规则说明
- 创建 handler.py:实现链接检测和预览生成
- 支持多种 URL 模式:B站(完整/BV号/短链接)、YouTube、知乎
- 智能去重避免重复显示
- 短链接显示友好提示
- 支持批量检测多个链接
- 添加 AUTO_TRIGGER.md 实现文档
- 更新任务文件:标记任务1已完成

测试通过:
✅ B站完整 URL、BV号、短链接
✅ YouTube 视频
✅ 知乎文章
✅ 批量检测和去重
This commit is contained in:
OpenClaw Agent
2026-02-06 21:05:20 +08:00
parent ee18cde745
commit 7a1ad6088a
8 changed files with 1278 additions and 7 deletions
+167
View File
@@ -115,3 +115,170 @@ skills/obsidian-kb/
🟢 **已完成** - 功能已实现并测试通过
现在30分钟以上的长视频会自动分段处理,不会再出现 "Context overflow: prompt too large for the model" 错误。
---
## 待办事项 - obsidian-kb 技能改进
**记录时间**: 2026-02-06 20:15
**来源**: 用户反馈
### 🔴 高优先级
#### 1. 技能自动触发机制
- **问题**: 用户发送 B站视频链接时,技能未自动触发
- **原因**: SKILL.md 中未定义触发关键词/模式
- **解决方案**:
- 在 SKILL.md 中添加触发规则,识别 B站/YouTube 视频链接
- 或在 _meta.json 中配置触发模式
- **预期**: 用户发送视频链接时,自动添加到收件箱并询问是否处理
#### 2. 短链接解析功能
- **问题**: 手机用户无法获取完整 URL,短链接(b23.tv)会被 B站反爬虫拦截
- **当前状态**: 手动用 curl 解析,但在代码中 412 错误
- **解决方案**:
- 实现更强大的短链接解析(浏览器自动化/代理池)
- 或提供用户友好的引导:检测到短链接时提示用户复制完整URL或BV号
- **技术难点**: B站 412 反爬虫策略
- **预期**: 用户可以发送短链接,系统自动解析
#### 3. 单个视频链接分析功能
- **问题**: 技能设计为批量订阅模式,缺少"快速添加单个视频"的便捷命令
- **临时方案**: 创建了 add_video.py 辅助脚本
- **解决方案**:
- 在 CLI 中添加 `/kb-add` 命令
- 或集成到现有的 `/kb-subscribe` 中,支持 URL 参数
- **预期**: 用户可以用 `/kb-add <URL>` 快速添加单个视频
#### 4. 本地生成字幕功能
- **问题**: 某些视频没有字幕,导致分析内容为空
- **当前状态**: 只能跳过无字幕视频
- **解决方案**:
- 集成语音识别工具(如 OpenAI Whisper、Aliyun 语音识别)
- 下载音频,本地生成字幕
- 支持多语言识别
- **依赖**: 需要额外的语音识别服务/API
- **预期**: 无字幕视频也能生成笔记
### 📋 实施计划
| 优先级 | 任务 | 预计工时 | 依赖 |
|--------|------|----------|------|
| P0 | 自动触发机制 | 1-2h | SKILL.md 研究 |
| P1 | 单个视频添加命令 | 1h | 无 |
| P2 | 短链接解析 | 2-3h | 反爬虫研究 |
| P3 | 本地生成字幕 | 3-5h | Whisper/API 集成 |
### 🔗 相关文件
- 技能目录: `skills/obsidian-kb/`
- 临时脚本: `skills/obsidian-kb/add_video.py`
- 待办详情: `memory/tasks/obsidian-kb-improvements.md`
---
## 新增:自动触发机制完成(20:45)
### 任务1:自动触发机制 - 已完成 ✓
**完成时间**: 2026-02-06 20:45
#### 实现内容
1. **SKILL.md 更新**
- 添加 frontmatter 元数据(name, description, version, author)
- 新增"自动触发规则"章节
- 详细说明支持的 URL 模式和触发流程
- 添加短链接友好提示说明
2. **Handler 脚本(handler.py)**
- 使用正则表达式检测多种 URL 模式
- 支持平台识别:B站、YouTube、知乎
- 智能去重避免重复显示
- 生成友好的预览信息
- 短链接显示用户引导
3. **支持的 URL 模式**
- B站: `https://www.bilibili.com/video/BV*`, `BV*`, `https://b23.tv/*`
- YouTube: `https://www.youtube.com/watch?v=*`, `https://youtu.be/*`
- 知乎: `https://zhuanlan.zhihu.com/p/*`
4. **测试结果**
- ✅ 所有 URL 模式检测正确
- ✅ 短链接显示友好提示
- ✅ 支持批量检测多个链接
- ✅ 智能去重避免重复显示
#### 文件变更
```
skills/obsidian-kb/
├── SKILL.md [修改] 添加 frontmatter 和触发规则
├── handler.py [新增] 自动触发处理器
└── AUTO_TRIGGER.md [新增] 实现文档
```
#### 示例输出
**B站完整 URL:**
```
🔍 检测到内容链接:
📺 [1] B站视频
URL: https://www.bilibili.com/video/BV1xx411c7mD
ID: BV1xx411c7mD
是否添加到收件箱并处理?(y/n)
```
**B站短链接:**
```
🔍 检测到内容链接:
📺 [1] B站视频
URL: https://b23.tv/oLBZZfK
⚠️ 短链接,需要用户提供完整URL或ID
🔗 检测到短链接
⚠️ 由于反爬虫保护,短链接无法自动解析
📱 手机用户:
1. 打开链接
2. 在浏览器地址栏复制完整 URL
3. 发送给助手
💻 桌面用户:
1. 发送 BV 号(如:BV1jcFqz7EFW)
2. 或使用完整 URL
```
**批量链接:**
```
🔍 检测到内容链接:
📺 [1] B站视频
URL: https://www.bilibili.com/video/BV1xx411c7mD
📺 [2] B站视频
URL: https://www.bilibili.com/video/BV2yy522c8nE
▶️ [3] YouTube视频
URL: https://www.youtube.com/watch?v=dQw4w9WgXcQ
是否将上述 3 个内容添加到收件箱?(y/n)
```
#### 验收标准
- [x] SKILL.md 添加了触发规则
- [x] Handler 能够检测各种 URL 格式
- [x] 显示友好的预览信息
- [x] 短链接显示友好提示
- [x] 支持批量检测多个链接
- [x] 智能去重避免重复显示
- [x] 所有 URL 模式测试通过
#### 后续工作
- 实现 YouTube 和知乎适配器(当前仅 Bilibili 完整支持)
- 短链接自动解析(需要浏览器自动化或代理池)
#### 相关文档
- 实现文档: `skills/obsidian-kb/AUTO_TRIGGER.md`
- 任务详情: `memory/tasks/obsidian-kb-improvements.md`