fbcc3df2cf
- 新增 shortlink_resolver.py 模块 * 检测 B站短链接(b23.tv)和其他短链接服务 * 提供友好的用户引导信息 * 支持 Playwright 浏览器自动化解析(可选) - 集成到 handler.py * 短链接自动检测和提示 * 智能区分短链接和完整 URL - 更新 add_video.py * 支持短链接解析 * 添加 --playwright 参数启用浏览器解析 - 新增 test_shortlink.py 测试脚本 * 测试单个短链接检测 * 测试多个短链接检测 * 测试混合内容场景 * 所有测试通过 - 更新文档 * SKILL.md: 添加短链接说明 * AUTO_TRIGGER.md: 添加短链接章节 * obsidian-kb-improvements.md: 标记任务2为已完成 功能特点: - 方案A(用户引导):已实现并作为默认行为 - 方案B(浏览器自动化):提供 PlaywrightResolver 类,可选使用 - 方案C(代理池):未实现(复杂度高,收益低) 验收标准达成: ✅ 短链接能够友好处理(显示引导信息) ✅ 用户不会感到困惑 ✅ 支持 b23.tv 和其他短链接服务(检测) ✅ 集成到 handler.py ✅ 测试各种短链接场景
257 lines
6.5 KiB
Markdown
257 lines
6.5 KiB
Markdown
# obsidian-kb 自动触发机制
|
||
|
||
## 概述
|
||
|
||
已实现 obsidian-kb 技能的自动触发机制,当用户通过 WhatsApp/Telegram 等渠道发送视频或文章链接时,技能会自动识别并提示处理。
|
||
|
||
## 实现方式
|
||
|
||
### 1. SKILL.md 更新
|
||
|
||
添加了 frontmatter 元数据和详细的触发规则说明:
|
||
|
||
```yaml
|
||
---
|
||
name: obsidian-kb
|
||
description: Automatically detect and process video/article links...
|
||
version: 1.0.0
|
||
---
|
||
```
|
||
|
||
在文档中添加了:
|
||
- 自动触发规则章节
|
||
- 触发模式说明
|
||
- 自动触发流程
|
||
- 批量处理支持
|
||
- 短链接友好提示
|
||
|
||
### 2. Handler 脚本
|
||
|
||
创建了 `handler.py` 脚本,功能包括:
|
||
|
||
- **链接检测**: 使用正则表达式匹配多种 URL 模式
|
||
- **元数据提取**: 识别平台、内容类型和 ID
|
||
- **预览生成**: 格式化显示识别到的内容
|
||
- **智能去重**: 避免重复检测相同的链接
|
||
- **短链接处理**: 对 b23.tv 等短链接显示友好提示
|
||
|
||
## 支持的 URL 模式
|
||
|
||
### B站视频
|
||
- 完整 URL: `https://www.bilibili.com/video/BV*`
|
||
- 短链接: `https://b23.tv/*`
|
||
- BV号: `BV*`
|
||
|
||
### YouTube 视频
|
||
- 完整 URL: `https://www.youtube.com/watch?v=*`
|
||
- 短链接: `https://youtu.be/*`
|
||
|
||
### 知乎文章
|
||
- 专栏文章: `https://zhuanlan.zhihu.com/p/*`
|
||
- 回答: `https://www.zhihu.com/question/*/answer/*`
|
||
|
||
## 使用流程
|
||
|
||
### 自动触发模式(推荐)
|
||
|
||
1. 用户发送链接
|
||
2. 系统自动检测链接
|
||
3. 显示内容预览
|
||
4. 询问用户确认
|
||
5. 用户确认后添加到收件箱
|
||
6. 可选:立即处理
|
||
|
||
### 示例
|
||
|
||
```
|
||
用户: https://www.bilibili.com/video/BV1xx411c7mD
|
||
|
||
助手: 🔍 检测到内容链接:
|
||
|
||
📺 [1] B站视频
|
||
URL: https://www.bilibili.com/video/BV1xx411c7mD
|
||
ID: BV1xx411c7mD
|
||
|
||
是否添加到收件箱并处理?(y/n)
|
||
```
|
||
|
||
### 短链接示例
|
||
|
||
```
|
||
用户: https://b23.tv/oLBZZfK
|
||
|
||
助手: 🔍 检测到内容链接:
|
||
|
||
📺 [1] B站视频
|
||
URL: https://b23.tv/oLBZZfK
|
||
⚠️ 短链接,需要用户提供完整URL或ID
|
||
|
||
🔗 检测到短链接
|
||
|
||
⚠️ 由于反爬虫保护,短链接无法自动解析
|
||
|
||
📱 手机用户:
|
||
1. 打开链接
|
||
2. 在浏览器地址栏复制完整 URL
|
||
3. 发送给助手
|
||
|
||
💻 桌面用户:
|
||
1. 发送 BV 号(如:BV1jcFqz7EFW)
|
||
2. 或使用完整 URL
|
||
|
||
💡 提示:完整 URL 格式为:https://www.bilibili.com/video/BVxxxxx
|
||
|
||
其他链接是否立即处理?(y/n)
|
||
```
|
||
|
||
## 批量处理
|
||
|
||
支持一次发送多个链接:
|
||
|
||
```
|
||
用户: 这几个视频不错:
|
||
https://www.bilibili.com/video/BV1xx411c7mD
|
||
BV2yy522c8nE
|
||
https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
||
|
||
助手: 🔍 检测到内容链接:
|
||
|
||
📺 [1] B站视频
|
||
URL: https://www.bilibili.com/video/BV1xx411c7mD
|
||
ID: BV1xx411c7mD
|
||
|
||
📺 [2] B站视频
|
||
URL: https://www.bilibili.com/video/BV2yy522c8nE
|
||
ID: BV2yy522c8nE
|
||
|
||
▶️ [3] YouTube视频
|
||
URL: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
||
ID: dQw4w9WgXcQ
|
||
|
||
是否将上述 3 个内容添加到收件箱?(y/n)
|
||
```
|
||
|
||
## 测试结果
|
||
|
||
已测试所有 URL 模式:
|
||
|
||
✅ B站完整 URL: `https://www.bilibili.com/video/BV1xx411c7mD`
|
||
✅ B站 BV号: `BV1jcFqz7EFW`
|
||
✅ B站短链接: `https://b23.tv/oLBZZfK` (显示友好提示)
|
||
✅ YouTube 视频: `https://www.youtube.com/watch?v=dQw4w9WgXcQ`
|
||
✅ 知乎文章: `https://zhuanlan.zhihu.com/p/123456789`
|
||
✅ 重复检测: 正确去重,避免重复显示
|
||
|
||
## 文件变更
|
||
|
||
```
|
||
skills/obsidian-kb/
|
||
├── SKILL.md [修改] 添加 frontmatter 和触发规则
|
||
├── handler.py [新增] 自动触发处理器
|
||
└── AUTO_TRIGGER.md [新增] 本文档
|
||
```
|
||
|
||
## 与 OpenClaw 集成
|
||
|
||
handler.py 可以通过以下方式集成:
|
||
|
||
1. **手动调用**: 使用 CLI 测试和调试
|
||
```bash
|
||
python3 handler.py "text with link"
|
||
```
|
||
|
||
2. **Agent 调用**: AI Agent 在接收到用户消息后,调用 handler 检测链接
|
||
|
||
3. **插件集成**: 未来可创建 OpenClaw 插件,自动监听消息并触发 handler
|
||
|
||
## 验收标准
|
||
|
||
- [x] SKILL.md 添加了触发规则
|
||
- [x] Handler 能够检测各种 URL 格式
|
||
- [x] 显示友好的预览信息
|
||
- [x] 短链接显示友好提示
|
||
- [x] 支持批量检测多个链接
|
||
- [x] 智能去重避免重复显示
|
||
- [x] 所有 URL 模式测试通过
|
||
|
||
## 后续工作
|
||
|
||
### 短链接解析(P2 优先级) ✅ 已完成
|
||
|
||
已完成短链接解析功能(2026-02-06):
|
||
|
||
#### 已实现功能
|
||
|
||
1. **短链接检测模块** (`shortlink_resolver.py`)
|
||
- 检测 B站短链接(b23.tv)
|
||
- 支持其他短链接服务(bit.ly, t.cn, dwz.cn 等)
|
||
- 提供友好的用户引导信息
|
||
|
||
2. **用户引导(方案A)**
|
||
- 检测到短链接时显示清晰的操作指南
|
||
- 分别针对手机用户和桌面用户提供建议
|
||
- 支持单个短链接和多个短链接的不同提示格式
|
||
|
||
3. **浏览器自动化(方案B - 可选)**
|
||
- 提供了 PlaywrightResolver 类
|
||
- 需要额外安装 Playwright:
|
||
```bash
|
||
pip install playwright
|
||
playwright install chromium
|
||
```
|
||
- 可在 `add_video.py` 中使用 `--playwright` 参数启用
|
||
|
||
4. **集成到现有流程**
|
||
- `handler.py` 集成短链接检测
|
||
- `add_video.py` 支持短链接解析
|
||
- 短链接会优先显示帮助信息,不会自动处理
|
||
|
||
#### 使用示例
|
||
|
||
**handler.py 自动触发:**
|
||
```bash
|
||
python3 handler.py "Check this: https://b23.tv/oLBZZfK"
|
||
```
|
||
|
||
**add_video.py 手动添加:**
|
||
```bash
|
||
python3 add_video.py "https://b23.tv/oLBZZfK"
|
||
python3 add_video.py "https://b23.tv/oLBZZfK" --playwright # 使用浏览器解析
|
||
```
|
||
|
||
**shortlink_resolver.py 独立测试:**
|
||
```bash
|
||
python3 shortlink_resolver.py "Test link: https://b23.tv/abc"
|
||
python3 shortlink_resolver.py "https://b23.tv/abc" --playwright # 浏览器解析
|
||
```
|
||
|
||
#### 文件变更
|
||
|
||
```
|
||
skills/obsidian-kb/
|
||
├── SKILL.md [修改] 添加短链接说明
|
||
├── handler.py [修改] 集成短链接检测
|
||
├── add_video.py [修改] 支持短链接解析
|
||
├── shortlink_resolver.py [新增] 短链接解析模块
|
||
└── AUTO_TRIGGER.md [修改] 添加短链接章节
|
||
```
|
||
|
||
#### 验收标准
|
||
|
||
- [x] 短链接能够友好处理(显示引导信息)
|
||
- [x] 用户不会感到困惑
|
||
- [x] 支持 b23.tv 和其他短链接服务(检测)
|
||
- [x] 集成到 handler.py
|
||
- [x] 测试各种短链接场景(单个、多个、混合)
|
||
|
||
### YouTube 和知乎支持(P1 优先级)
|
||
|
||
当前仅 Bilibili 有完整适配器:
|
||
- 实现 YouTube 适配器
|
||
- 实现知乎适配器
|
||
- 添加相应的提取和处理逻辑
|
||
|
||
## 总结
|
||
|
||
自动触发机制已基本完成,用户现在可以通过简单的发送链接来触发 obsidian-kb 技能,大大提升了使用体验。
|