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
OpenClaw Agent 5507b1d986 feat: Add KB knowledge base series skills
- kb-link-parser: Multi-platform URL parser (Bilibili, YouTube, Zhihu)
- kb-bilibili-metadata: Bilibili video/article/up主 metadata extractor
- kb-zhihu-metadata: Zhihu question/answer/user metadata extractor
- kb-bilibili-content: Bilibili video download and content extraction
- kb-ocr-processor: OCR text extraction from video frames
- kb-deep-analyzer: AI-powered deep content analysis
- kb-workflow: Workflow orchestration (inbox, archive, subscriptions, report)

Also add:
- ARCHITECTURE_FLOWCHART.md: System architecture diagrams
- DETAILED_DESIGN.md: Complete design documentation
2026-02-10 12:18:52 +08:00
..

Obsidian KB Skill

多源内容知识库维护系统,整合了 bilibili-extractor,支持 Bilibili、YouTube、知乎等平台的内容聚合,智能分类,以及长视频分段分析。

功能特性

  • 多源内容聚合: 支持 Bilibili、YouTube、知乎等平台
  • 增强型 Bilibili 提取: 使用 Playwright 绕过反爬检测,支持字幕和弹幕提取
  • 知乎内容提取: 使用 DrissionPage + Cookie,支持回答、文章和问题,完整 Markdown 格式保留
  • 智能收件箱: AI 质量评分,自动分类
  • 长视频分段分析: 30分钟+ 视频自动分段处理
  • 无字幕处理: 智能处理无字幕视频,基于元数据生成内容
  • 主题组织: 基于标签的自动主题归类
  • Git 自动同步: 自动同步到 Obsidian 知识库
  • CLI 命令: 完整的命令行接口

快速开始

安装

# 克隆项目
git clone <repository-url>
cd obsidian-kb

# 安装依赖
pip install -r requirements.txt

# 配置
cp config.example.yaml config.yaml
# 编辑 config.yaml,设置 API key 等

配置

创建 config.yaml:

# AI 配置
ai:
  provider: openai
  model: gpt-4
  api_key: your-api-key-here  # 或设置 OPENAI_API_KEY 环境变量

# 存储配置
storage:
  inbox_dir: inbox
  topics_dir: topics
  data_dir: data

# 输出配置
output:
  format: markdown         # 输出格式
  encoding: utf-8
  include_timestamp: true  # 包含时间戳
  include_source: true     # 包含源链接

# Git 同步配置
git:
  enabled: true
  vault_path: ~/ObsidianVault  # Obsidian 知识库路径
  remote: origin
  branch: main
  auto_commit: true

# 分段配置
chunking:
  enabled: true
  chunk_duration_seconds: 900  # 15 分钟分段
  long_video_threshold: 1800   # 30 分钟以上视为长视频

# 数据源配置
sources:
  bilibili:
    enabled: true
    cookie: your-bilibili-cookie  # 可选,用于获取字幕

# Bilibili 提取器配置
bilibili_extraction:
  use_playwright: true     # 使用 Playwright 绕过检测
  headless: true           # 无头模式
  cookie_file: ''          # Cookie 文件路径 (可选)
  enable_subtitle: true    # 启用字幕提取
  subtitle_language: zh-CN # 字幕语言
  enable_danmaku: false    # 启用弹幕提取
  timeout_seconds: 30      # 超时时间
  max_retries: 3           # 最大重试次数

首次使用

  1. 获取 Bilibili Cookie (可选但推荐)

    为了更好的字幕提取体验,建议设置 Bilibili Cookie:

    • 在浏览器中登录 Bilibili
    • 打开开发者工具 (F12)
    • 切换到 Network 标签
    • 刷新页面,找到任意请求
    • 复制 Cookie 头的值
    • 将其粘贴到配置文件的 bilibili.cookie 字段
  2. 初始化 Playwright (首次使用需要)

    # 安装 Playwright 浏览器
    playwright install chromium
    
  3. 测试提取器

    # 测试 Bilibili 提取器
    python -c "from obsidian_kb.extractors.bilibili import BilibiliExtractor; e = BilibiliExtractor(); print(e.extract_video('https://www.bilibili.com/video/BV1xx411c7mD'))"
    

基本使用

# 订阅 Bilibili 收藏夹
/kb-subscribe bilibili:fav:12345678

# 查看收件箱
/kb-inbox

# 处理所有内容
/kb-process --all

# 处理指定内容
/kb-process BV1xx411c7mD

# 跳过内容
/kb-skip BV1xx411c7mD

# 查看状态
/kb-status

# 搜索知识库
/kb-search python tutorial

提取器特性

无字幕处理:

系统会自动处理没有字幕的视频:

  • 使用视频标题、描述和标签生成内容
  • AI 分析视频元数据生成摘要
  • 在笔记中标注"无字幕"状态

字幕提取:

支持多种字幕源:

  • CC 字幕 (官方字幕)
  • AI 字幕 (自动生成)
  • 自动选择最佳字幕源

反爬检测:

使用 Playwright 绕过 Bilibili 的反爬机制:

  • 无头模式运行
  • 自动重试机制
  • 可配置超时时间

项目结构

obsidian-kb/
├── src/
│   ├── __init__.py
│   ├── models.py           # 数据模型
│   ├── config.py           # 配置管理
│   ├── storage.py          # 存储管理
│   ├── template_renderer.py # 模板渲染
│   ├── content_chunker.py  # 内容分块
│   ├── pipeline.py         # 处理管道
│   ├── cli.py              # 命令行接口
│   ├── git_sync.py         # Git 同步
│   └── sources/
│       ├── __init__.py
│       ├── base.py         # 适配器基类
│       └── bilibili.py     # Bilibili 适配器
├── templates/
│   ├── light_video.md      # 轻量视频模板
│   ├── tutorial_video.md   # 教程视频模板
│   ├── article.md          # 文章模板
│   └── topic_index.md      # 主题索引模板
├── tests/                  # 测试
├── config.yaml             # 配置文件
└── README.md

模板系统

根据内容类型和时长自动选择模板:

  • 轻量视频 (< 30分钟): light_video.md
  • 教程视频 (≥ 30分钟): tutorial_video.md - 包含详细分段、前置知识、常见坑点
  • 文章: article.md

知乎提取

支持知乎回答、文章和问题的提取。

支持的内容类型:

  • ✅ 知乎回答:https://www.zhihu.com/question/xxx/answer/yyy
  • ✅ 知乎文章:https://zhuanlan.zhihu.com/p/xxx
  • ✅ 知乎问题:https://www.zhihu.com/question/xxx

技术方案:

  • 使用 DrissionPage 浏览器自动化工具
  • 通过 Cookie 验证登录状态
  • 完整 Markdown 格式输出

优势:

  • 稳定可靠,绕过反爬虫保护
  • 支持无头模式,适合服务器环境
  • Cookie 管理灵活(文件/环境变量/配置文件)
  • 内存占用低,每次提取独立启动浏览器

输出格式

提取的内容包含以下信息:

{
    'type': 'answer' | 'article' | 'question',
    'title': '标题',
    'author': '作者',
    'content': 'HTML 内容',
    'content_markdown': 'Markdown 内容',  # 完整格式
    'publish_time': '发布时间',
    'vote_up': 点赞数,
    'url': '原始 URL',
    'content_id': '内容 ID'
}

Markdown 格式保留

知乎提取器保留完整的 Markdown 格式:

  • ✅ 标题(H1-H6)
  • ✅ 代码块(支持语法高亮)
  • ✅ 表格
  • ✅ 引用块
  • ✅ 列表(有序/无序)
  • ✅ 粗体、斜体
  • ✅ 链接

配置

在 config.yaml 中配置知乎提取:

zhihu:
  enabled: true
  use_drissionpage: true      # 使用 DrissionPage(推荐)
  cookie_file: ~/.obsidian-kb/zhihu_cookies.json  # Cookie 文件路径
  cookie_str: ""  # 可选:直接在配置中填入 Cookie JSON
  timeout: 30
  headless: true

Cookie 获取方式:

  1. 在有浏览器的机器上登录知乎
  2. 打开开发者工具 (F12)
  3. 进入 Application → Cookies → https://www.zhihu.com
  4. 导出所有 Cookie 为 JSON 文件
  5. 上传到服务器指定路径

Cookie 文件格式:

[
  {
    "name": "z_c0",
    "value": "xxx",
    "domain": ".zhihu.com",
    "path": "/",
    "expiry": 1234567890,
    "secure": true,
    "httpOnly": false
  }
]

Cookie 加载优先级:

  1. 配置文件中的 cookie_str(最高优先级)
  2. 环境变量 ZHIHU_COOKIE
  3. Cookie 文件(最低优先级)

长视频分段策略

时长 策略 分段数
< 10分钟 直接处理 1
10-30分钟 截断处理 1
30-60分钟 两段式 2
60分钟+ 多段式 每15分钟一段

开发

# 运行测试
pytest tests/

# 运行特定测试
pytest tests/test_models.py

# 覆盖率报告
pytest --cov=src tests/

许可证

MIT License