- 新增 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 ✅ 测试各种短链接场景
6.5 KiB
obsidian-kb 自动触发机制
概述
已实现 obsidian-kb 技能的自动触发机制,当用户通过 WhatsApp/Telegram 等渠道发送视频或文章链接时,技能会自动识别并提示处理。
实现方式
1. SKILL.md 更新
添加了 frontmatter 元数据和详细的触发规则说明:
---
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/*
使用流程
自动触发模式(推荐)
- 用户发送链接
- 系统自动检测链接
- 显示内容预览
- 询问用户确认
- 用户确认后添加到收件箱
- 可选:立即处理
示例
用户: 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 可以通过以下方式集成:
-
手动调用: 使用 CLI 测试和调试
python3 handler.py "text with link" -
Agent 调用: AI Agent 在接收到用户消息后,调用 handler 检测链接
-
插件集成: 未来可创建 OpenClaw 插件,自动监听消息并触发 handler
验收标准
- SKILL.md 添加了触发规则
- Handler 能够检测各种 URL 格式
- 显示友好的预览信息
- 短链接显示友好提示
- 支持批量检测多个链接
- 智能去重避免重复显示
- 所有 URL 模式测试通过
后续工作
短链接解析(P2 优先级) ✅ 已完成
已完成短链接解析功能(2026-02-06):
已实现功能
-
短链接检测模块 (
shortlink_resolver.py)- 检测 B站短链接(b23.tv)
- 支持其他短链接服务(bit.ly, t.cn, dwz.cn 等)
- 提供友好的用户引导信息
-
用户引导(方案A)
- 检测到短链接时显示清晰的操作指南
- 分别针对手机用户和桌面用户提供建议
- 支持单个短链接和多个短链接的不同提示格式
-
浏览器自动化(方案B - 可选)
- 提供了 PlaywrightResolver 类
- 需要额外安装 Playwright:
pip install playwright playwright install chromium - 可在
add_video.py中使用--playwright参数启用
-
集成到现有流程
handler.py集成短链接检测add_video.py支持短链接解析- 短链接会优先显示帮助信息,不会自动处理
使用示例
handler.py 自动触发:
python3 handler.py "Check this: https://b23.tv/oLBZZfK"
add_video.py 手动添加:
python3 add_video.py "https://b23.tv/oLBZZfK"
python3 add_video.py "https://b23.tv/oLBZZfK" --playwright # 使用浏览器解析
shortlink_resolver.py 独立测试:
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 [修改] 添加短链接章节
验收标准
- 短链接能够友好处理(显示引导信息)
- 用户不会感到困惑
- 支持 b23.tv 和其他短链接服务(检测)
- 集成到 handler.py
- 测试各种短链接场景(单个、多个、混合)
YouTube 和知乎支持(P1 优先级)
当前仅 Bilibili 有完整适配器:
- 实现 YouTube 适配器
- 实现知乎适配器
- 添加相应的提取和处理逻辑
总结
自动触发机制已基本完成,用户现在可以通过简单的发送链接来触发 obsidian-kb 技能,大大提升了使用体验。