This repository has been archived on 2026-02-15. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
openclaw-skills/skills/obsidian-kb/SKILL.md
T
OpenClaw Agent fbcc3df2cf feat(obsidian-kb): 实现短链接解析功能
- 新增 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
✅ 测试各种短链接场景
2026-02-06 21:22:45 +08:00

11 KiB
Raw Blame History


SKILL.md - Obsidian KB Skill

元数据

  • 名称: obsidian-kb
  • 版本: 1.0.0
  • 描述: 多源内容知识库维护系统,支持长视频分段分析
  • 作者: OpenClaw

自动触发规则

当检测到以下内容时,本技能会自动激活:

触发模式

  1. B站视频链接

    • 完整URL: https://www.bilibili.com/video/BV*
    • 短链接: https://b23.tv/* (会提示用户提供完整URL或BV号)
    • BV号: BV* (直接支持)
  2. YouTube视频链接

    • 完整URL: https://www.youtube.com/watch?v=*
    • 短链接: https://youtu.be/*
  3. 知乎文章链接

    • 专栏文章: https://zhuanlan.zhihu.com/p/*
    • 回答: https://www.zhihu.com/question/*/answer/*

自动触发流程

当用户发送匹配上述模式的链接时:

  1. 检测链接 → 识别内容类型(B站/YouTube/知乎)
  2. 提取元数据 → 获取标题、作者、时长等信息
  3. 显示预览 → 向用户展示内容概要
  4. 询问确认 → "是否添加到收件箱并处理?(y/n)"
  5. 用户确认后 → 自动执行 /kb-add 命令添加内容
  6. 可选处理 → 根据用户选择,是否立即执行 /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

方式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(显示友好提示)
  • --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  # 同上

处理流程:

  1. 轻量扫描 → 生成一句话摘要和评分
  2. 深度分析 → 生成详细内容(长视频会分段)
  3. 选择模板 → 根据类型和时长
  4. 生成笔记 → Markdown 格式
  5. Git 同步 → 提交到 Obsidian

/kb-skip

跳过指定内容,不进行处理。

用法:

/kb-skip BV1xx411c7mD

/kb-status

显示系统状态和统计信息。

用法:

/kb-status

输出示例:

📊 Obsidian KB 状态
────────────────────
收件箱: 12 待处理 / 45 已完成
Git同步: ✅ 已启用 (最后同步: 5分钟前)
订阅源: 3 个活跃
存储: 128MB / 1GB

搜索已处理的内容。

用法:

/kb-search python tutorial
/kb-search "machine learning" --tag ai

配置说明

配置文件位置

优先级:

  1. ./config.yaml (当前目录)
  2. ~/.obsidian-kb/config.yaml
  3. ~/.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分钟)

# 数据源配置
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]

...

💡 关键要点

  1. 要点一
  2. 要点二

⚠️ 常见坑点

  • 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 自动同步