11 KiB
11 KiB
name: obsidian-kb description: Detect and process video/article links (Bilibili, YouTube, Zhihu) for Obsidian KB. Auto-trigger on URLs: /kb-add, /kb-process, /kb-inbox, /kb-status. version: 1.0.0 author: OpenClaw
SKILL.md - Obsidian KB Skill
元数据
- 名称: obsidian-kb
- 版本: 1.0.0
- 描述: 多源内容知识库维护系统,支持长视频分段分析
- 作者: OpenClaw
自动触发规则
当检测到以下内容时,本技能会自动激活:
触发模式
-
B站视频链接
- 完整URL:
https://www.bilibili.com/video/BV* - 短链接:
https://b23.tv/*(会提示用户提供完整URL或BV号) - BV号:
BV*(直接支持)
- 完整URL:
-
YouTube视频链接
- 完整URL:
https://www.youtube.com/watch?v=* - 短链接:
https://youtu.be/*
- 完整URL:
-
知乎文章链接
- 专栏文章:
https://zhuanlan.zhihu.com/p/* - 回答:
https://www.zhihu.com/question/*/answer/*
- 专栏文章:
自动触发流程
当用户发送匹配上述模式的链接时:
- 检测链接 → 识别内容类型(B站/YouTube/知乎)
- 提取元数据 → 获取标题、作者、时长等信息
- 显示预览 → 向用户展示内容概要
- 询问确认 → "是否添加到收件箱并处理?(y/n)"
- 用户确认后 → 自动执行
/kb-add命令添加内容 - 可选处理 → 根据用户选择,是否立即执行
/kb-process
批量处理
支持一次发送多个链接,系统会:
- 检测所有匹配的模式
- 显示所有识别到的内容预览
- 询问用户是否批量添加
- 显示处理进度
短链接友好提示
检测到短链接时,显示引导信息:
单个短链接:
🔗 检测到短链接
⚠️ 由于反爬虫保护,短链接无法自动解析
📍 短链接: https://b23.tv/xxxxx
📱 手机用户:
1. 点击/打开链接
2. 在浏览器地址栏复制完整 URL
3. 发送给助手
💻 桌面用户:
1. 发送 BV 号(如:BV1jcFqz7EFW)
2. 或使用完整 URL
💡 提示:完整 URL 格式为:https://www.bilibili.com/video/BVxxxxx
多个短链接:
⚠️ 检测到短链接
[1] B站短链接: https://b23.tv/abc123
需要完整URL或BV号
[2] bit.ly: https://bit.ly/test
需要完整URL
💡 建议:
- 在浏览器打开链接后复制完整URL
- 或者直接发送BV号(仅限B站)
技术说明:
- B站短链接(b23.tv)有反爬虫保护,无法直接解析
- 本技能使用
shortlink_resolver.py模块检测短链接 - 提供 Playwright 可选方案(需额外安装)
pip install playwright playwright install chromium
命令列表
| 命令 | 描述 | 用法 |
|---|---|---|
/kb-add |
添加单个视频/文章 | /kb-add <URL> [--process] [--yes] |
/kb-subscribe |
订阅内容源 | /kb-subscribe <platform> <type> <id> |
/kb-inbox |
查看收件箱 | /kb-inbox [--limit N] [--sort score|date] |
/kb-process |
处理内容 | /kb-process [content_id|all] |
/kb-skip |
跳过内容 | /kb-skip <content_id> [--reason "..."] |
/kb-status |
查看状态 | /kb-status |
/kb-search |
搜索知识库 | /kb-search <query> [--in-tags] |
快速开始
方式1: 自动触发(推荐)
直接发送视频链接或文章链接,技能会自动识别并处理:
# B站视频(完整URL)
https://www.bilibili.com/video/BV1xx411c7mD
# B站视频(BV号)
BV1xx411c7mD
# B站短链接(会提示完整URL)
https://b23.tv/xxxxx
# YouTube视频
https://www.youtube.com/watch?v=dQw4w9WgXcQ
# 知乎文章
https://zhuanlan.zhihu.com/p/123456789
启用字幕生成(可选)
如果视频没有字幕,可以启用本地字幕生成功能:
# 1. 安装依赖
pip install openai-whisper yt-dlp torch
# 2. 启用配置(编辑 config.yaml)
subtitle:
enabled: true
model: base # 推荐使用 base 模型
说明:
- 使用 Whisper 本地模型,数据不上传,隐私安全
- 首次使用会自动下载模型文件(~74MB)
- 10分钟视频约需 2-5 分钟处理时间(取决于硬件)
- 生成的字幕会自动缓存,重复使用无需重新生成
详细文档: 见 SUBTITLE_FEATURE.md
方式2: 使用命令
显式调用命令添加内容:
# 添加单个视频
/kb-add "https://www.bilibili.com/video/BV1xx411c7mD"
# 添加并立即处理
/kb-add "https://www.bilibili.com/video/BV1xx411c7mD" --process
# 跳过确认提示
/kb-add BV1xx411c7mD --yes
命令详解
/kb-add
快速添加单个视频到收件箱。
用法:
/kb-add BV1xx411c7mD
/kb-add "https://www.bilibili.com/video/BV1xx411c7mD"
/kb-add "https://www.bilibili.com/video/BV1xx411c7mD" --process
/kb-add BV1xx411c7mD --yes
参数:
<URL>- 视频URL或BV号- 完整URL:
https://www.bilibili.com/video/BVxxxxx - BV号:
BVxxxxx - 短链接:
https://b23.tv/xxxxx(显示友好提示)
- 完整URL:
--process- 添加后立即处理--yes- 跳过确认提示
输出示例:
📥 正在添加视频: BV1xx411c7mD
→ 标题: Python编程入门教程
→ UP主: CodeMaster
→ 时长: 3600秒
→ 获取字幕... ✅
✅ 视频已添加到收件箱!
Content ID: abc123def456
💡 使用以下命令处理:
python3 src/cli.py process abc123def456
或:
python3 src/cli.py process all
/kb-subscribe
订阅一个内容源,支持自动获取更新。
用法:
/kb-subscribe bilibili:fav:12345678
/kb-subscribe bilibili:up:123456
/kb-subscribe youtube:channel:UCxxx
/kb-subscribe zhihu:collection:12345
支持的源:
bilibili:fav:<fav_id>- Bilibili 收藏夹bilibili:up:<mid>- Bilibili UP主youtube:channel:<channel_id>- YouTube 频道zhihu:collection:<collection_id>- 知乎收藏夹
/kb-inbox
显示待处理的内容列表。
用法:
/kb-inbox
/kb-inbox --limit 10
/kb-inbox --status new
输出示例:
📥 收件箱 (5 items)
────────────────────
1. BV1xx411c7mD | Python入门教程 | ⭐ 85 | 📝 一句话摘要...
2. BV2yy522c8nE | React Hooks详解 | ⭐ 92 | 📝 一句话摘要...
/kb-process
处理内容,生成 Obsidian 笔记。
用法:
/kb-process --all # 处理所有待处理项
/kb-process BV1xx411c7mD # 处理指定内容
/kb-process --id BV1xx411c7mD # 同上
处理流程:
- 轻量扫描 → 生成一句话摘要和评分
- 深度分析 → 生成详细内容(长视频会分段)
- 选择模板 → 根据类型和时长
- 生成笔记 → Markdown 格式
- Git 同步 → 提交到 Obsidian
/kb-skip
跳过指定内容,不进行处理。
用法:
/kb-skip BV1xx411c7mD
/kb-status
显示系统状态和统计信息。
用法:
/kb-status
输出示例:
📊 Obsidian KB 状态
────────────────────
收件箱: 12 待处理 / 45 已完成
Git同步: ✅ 已启用 (最后同步: 5分钟前)
订阅源: 3 个活跃
存储: 128MB / 1GB
/kb-search
搜索已处理的内容。
用法:
/kb-search python tutorial
/kb-search "machine learning" --tag ai
配置说明
配置文件位置
优先级:
./config.yaml(当前目录)~/.obsidian-kb/config.yaml~/.config/obsidian-kb/config.yaml
配置项
# AI 配置
ai:
provider: openai # AI 提供商
model: gpt-4 # 模型名称
api_key: sk-... # API Key (建议使用环境变量)
# 存储配置
storage:
inbox_dir: inbox # 收件箱目录
topics_dir: topics # 主题目录
data_dir: data # 数据目录
# Git 同步配置
git:
enabled: true # 启用 Git 同步
vault_path: ~/ObsidianVault # Obsidian 知识库路径
remote: origin # 远程仓库名
branch: main # 分支名
auto_commit: true # 自动提交
commit_message_template: "Update from obsidian-kb: {count} items"
# 分段配置
chunking:
enabled: true # 启用长视频分段
chunk_duration_seconds: 900 # 分段时长 (15分钟)
max_chunk_duration_seconds: 1800 # 最大分段时长
long_video_threshold: 1800 # 长视频阈值 (30分钟)
# 字幕生成配置(新增)
subtitle:
enabled: false # 是否启用自动生成字幕
model: base # Whisper 模型大小: tiny/base/small/medium/large
language: null # 语言代码: zh/en/null(自动检测)
cache_dir: cache/subtitles # 字幕缓存目录
audio_cache_dir: cache/audio # 音频缓存目录
# 数据源配置
sources:
bilibili:
enabled: true
cookie: '' # Bilibili Cookie (可选)
youtube:
enabled: false
api_key: '' # YouTube API Key
zhihu:
enabled: false
cookie: '' # 知乎 Cookie (可选)
环境变量
可以使用环境变量覆盖配置:
export OPENAI_API_KEY="sk-..."
export AI_MODEL="gpt-4"
export OBSIDIAN_VAULT_PATH="/path/to/vault"
export BILIBILI_COOKIE="..."
模板变量
通用变量
所有模板可用:
{{ title }}- 标题{{ source }}- 来源 (bilibili/youtube/zhihu){{ url }}- 原始 URL{{ author }}- 作者/UP主{{ duration }}- 时长{{ date }}- 日期{{ tags }}- 标签列表{{ one_liner }}- 一句话摘要{{ summary }}- 详细摘要{{ key_points }}- 核心要点列表{{ quality_score }}- 质量评分
教程视频额外变量
仅 tutorial_video.md 可用:
{{ prerequisites }}- 前置知识列表{{ outline }}- 分段大纲列表{{ section.title }}- 分段标题{{ section.time_range }}- 时间段{{ section.summary }}- 分段摘要{{ section.code_snippet }}- 代码片段{{ section.code_language }}- 代码语言
{{ pitfalls }}- 常见坑点列表{{ practice_advice }}- 实践建议列表
输出格式
轻量视频输出
---
title: "视频标题"
source: "bilibili"
url: "https://..."
author: "UP主"
duration: "10:30"
date: "2024-01-01T00:00:00"
tags:
- python
- tutorial
---
#python #tutorial
**一句话摘要**: 这是一句摘要
## 摘要
详细摘要内容...
## 核心要点
1. 要点一
2. 要点二
教程视频输出
---
title: "Python 完整教程"
source: "bilibili"
url: "https://..."
up主: "CodeMaster"
duration: "2:30:00"
quality_score: 95
---
## 🎯 一句话总结
...
## 📚 前置知识
- 基础编程概念
- Python 环境搭建
## 📝 步骤详解
### 环境配置 [00:00-15:00]
如何配置 Python 开发环境
```bash
pip install python
基础语法 [15:00-45:00]
...
💡 关键要点
- 要点一
- 要点二
⚠️ 常见坑点
- Python 2 与 3 的区别
- 缩进问题
🤔 实践建议
- 跟随视频动手编码
- 完成课后练习
## 故障排除
### 无法获取字幕
1. 检查 Bilibili Cookie 是否正确设置
2. 确认视频有字幕/CC字幕
3. 检查网络连接
### Git 同步失败
1. 确认 vault_path 指向正确的 Git 仓库
2. 检查 Git 配置和权限
3. 查看 Git 日志: `git status` 在 vault 目录
### AI 分析失败
1. 检查 API Key 是否有效
2. 确认有可用额度
3. 查看详细错误日志
## 更新日志
### v1.0.0
- 初始版本发布
- 支持 Bilibili、YouTube、知乎
- 长视频分段分析
- Git 自动同步