unified-kb

统一知识库入口技能(#kb)。当用户发送内容并标记 #kb 时触发。 自动完成:素材下载 → IMA 知识库存储 → workspace/kb 归档 → memory 记录。 支持:微信公众号文章、网页链接、YouTube 视频(字幕提取)、纯文本、文件路径。

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "unified-kb" with this command: npx skills add sundmop/unified-kb

统一知识库(#kb)技能

触发条件:用户发送内容并包含 #kb 标签 协同存储:IMA(腾讯知识库)+ workspace KB(本地结构化知识库)

工作流程

用户发送 #kb 内容
        ↓
① 判断内容类型
        ↓
② 下载/解析/提取字幕
        ↓
③ 存入 IMA(知识库 + 笔记)
        ↓
④ 存入 workspace/kb
        ↓
⑤ 记录到 memory/YYYY-MM-DD.md
        ↓
⑥ 重建 KB 索引(自动更新 kb_master_index.md)
        ↓
⑦ 向用户确认完成

支持的内容类型

类型示例处理方式
微信公众号文章https://mp.weixin.qq.com/s/xxx下载并导出 Markdown
网页链接https://example.com/articleweb_fetch 抓取内容
YouTube 视频https://youtu.be/xxx下载字幕 → 生成总结 → 存笔记
纯文本/摘要#kb 这段话说的是...直接存储文本
本地文件路径#kb /path/to/file读取文件内容后存储

YouTube 视频 #kb 处理流程(重点)

#kb 链接是 YouTube 视频时,启用完整字幕提取流程。优先级:NotebookLM > 本地 Whisper

YouTube 视频链接
    ↓
① NotebookLM 优先(推荐)
   ├─ notebooklm-kit: add_source(url=YouTube_URL)
   ├─ 等待同步 (~30s)
   └─ generation.chat() 提取完整解说词原文
    ↓
② 本地 Whisper 兜底
   └─ 仅在 NotebookLM 配额不足时使用
      ├─ yt-dlp TV client 下载音频
      ├─ Whisper small 模型转录
      └─ 解析 VTT → 纯文本
    ↓
③ 存入 IMA
    ├─ 知识库:视频链接(来源引用)
    └─ 笔记:总结 + 完整字幕原文
    ↓
④ 存入 workspace/kb
    ├─ kb/YYYYMMDD_视频标题_总结.md
    └─ kb/YYYYMMDD_视频标题_字幕原文.txt
    ↓
⑤ 记录 memory

NotebookLM 优先提取脚本(详见 video-processor skill):

# 1. 添加视频到 notebook
client.add_source(url="YouTube_URL", notebook_id="notebook_id")

# 2. 等待同步后,提问提取原文
response = client.chat("请提取这个视频的完整解说词原文,包括所有数据和论述细节。不要总结,我要原文。")

本地 Whisper 兜底命令(当 NotebookLM 不可用时):

yt-dlp --js-runtimes "node:/usr/bin/node" \
  --cookies /tmp/youtube_cookies.txt \
  --extractor-args "youtube:player_client=tv" \
  --write-subs --skip-download \
  -o "/tmp/subs.%(ext)s" \
  "https://youtu.be/VIDEO_ID"

完整 shell 命令(yt-dlp 字幕下载)

yt-dlp --js-runtimes "node:/usr/bin/node" \
  --cookies /tmp/youtube_cookies.txt \
  --extractor-args "youtube:player_client=tv" \
  --write-subs --skip-download \
  -o "/tmp/subs.%(ext)s" \
  "https://youtu.be/VIDEO_ID"

字幕解析为纯文本(Python)

import re
with open('/tmp/subs.vtt', 'r', encoding='utf-8') as f:
    content = f.read()
segments = re.findall(
    r'(\d{2}:\d{2}:\d{2}\.\d{3}) --> (\d{2}:\d{2}:\d{2}\.\d{3})\s*\n(.+?)(?=\n\n|\n-->)',
    content, re.DOTALL
)
full_text = '\n'.join([s[2].strip().replace('\n', ' ') for s in segments])

IMA 笔记分段上传(字幕过长时)

# 每段 ~12000 字符,分多次 append_doc
chunk_size = 12000
for i in range(0, len(full_text), chunk_size):
    chunk = full_text[i:i+chunk_size]
    # import_doc 第一段,append_doc 后续段

IMA 存储策略

默认目标知识库

默认存入 IMA "个人知识库",不询问用户,除非用户明确指定其他知识库。

⚠️ 知识库 ID 配置:请在 scripts/store_kb.py 顶部的 IMA_KB_ID 变量中设置目标知识库 ID。 当前已配置:个人知识库IMA_KB_ID = "3ABKKskfyVyAHq_ohwX7KrwDyfrapnxTTHlQ85NFR6E="

存储方式

内容类型IMA 模块接口
微信公众号文章/网页链接knowledge-baseimport_urls(批量添加URL)
YouTube 视频链接knowledge-baseimport_urls(仅作来源引用)
YouTube 总结/字幕notesimport_doc + append_doc
纯文本notesimport_doc(新建笔记)
文件knowledge-basecreate_mediaadd_knowledge

⚠️ YouTube 视频特殊处理:视频链接仅作为来源引用存入知识库,不要把链接当成正文内容存入笔记。正文内容(总结 + 字幕)全部通过 import_doc / append_doc 存入笔记。

workspace/kb 存储策略

  • YouTube 视频:两个文件
    • kb/YYYYMMDD_视频标题_总结.md — 精华摘要
    • kb/YYYYMMDD_视频标题_字幕原文.txt — 完整字幕
  • 微信文章/网页:存到 kb/ 目录,文件名前缀 YYYYMMDD_
  • 纯文本:存到 kb/ 目录,文件名前缀 YYYYMMDD_
  • 附加 #tag 标签到文件名和内容中

执行脚本

python3 /home/xdl/.openclaw/workspace/skills/unified-kb/scripts/store_kb.py <content_type> <content> [tags]

YouTube 视频 content_type 为 youtube

python3 store_kb.py youtube "https://youtu.be/m8tpIGpXDBc" #kb #半导体

memory 记录格式

memory/YYYY-MM-DD.md 中记录:

- **KB入库**:[标题/摘要] | 来源:[来源] | 路径:`kb/文件名.md` | IMA笔记:note_id | IMA知识库:✅ | 标签:#kb #标签1

使用示例

  • #kb https://mp.weixin.qq.com/s/xxx → 自动下载 + 存 IMA 知识库 + 存 KB + 记录 memory
  • #kb https://youtu.be/xxx #半导体 → 下载字幕 + 生成总结 + 存 IMA笔记 + 存 KB + 记录 memory
  • #kb 这段话说的是能源托管... → 存 IMA 笔记 + 存 KB + 记录 memory
  • #kb https://example.com/article #暖通 #合同 → 抓取网页 + 存 IMA + 存 KB + 记录 memory(标签自动应用)

YouTube Cookies 配置

YouTube 字幕下载需要浏览器 cookies 绕过机器人验证:

  1. 在浏览器安装 EditThisCookie 插件
  2. 打开 YouTube 视频页面,导出 cookies 为 JSON
  3. 将 JSON 转换为 netscape 格式(/tmp/youtube_cookies.txt
  4. 脚本自动使用该文件

Cookie 文件路径/tmp/youtube_cookies.txt(固定路径)

注意事项

  • IMA 凭证从环境变量读取:IMA_OPENAPI_CLIENTIDIMA_OPENAPI_APIKEY
  • workspace KB 路径:/home/xdl/.openclaw/workspace/kb/
  • IMA 存储失败时,继续存入 workspace/kb,不中断流程
  • 微信文章下载内部调用 wechat-article-reader 脚本(用于下载),但 #kb 入口必须走 store_kb.py —— 它会在下载后自动同步 IMA 笔记 + IMA 知识库 + 本地 KB三重存储
  • 所有 string 字段存入 IMA notes 前必须做 UTF-8 校验(详见 ima-skill notes 模块说明)
  • ⚠️ API 路径注意:IMA Wiki API 路径为 openapi/wiki/v1/...,不是 openapi/knowledgebase/v1/...
  • ⚠️ YouTube 字幕过大处理:字幕原文 > 12000 字符时需分段 append_doc,每段 12000 字符

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Ephemeral Media Hosting

自動削除機能付き一時メディアホスティングシステム

Registry SourceRecently Updated
General

Ethereum Read Only

Foundry castを使用したウォレット不要のオンチェーン状態読み取り

Registry SourceRecently Updated
General

OpenClaw Memory

Manage, optimize, and troubleshoot the OpenClaw memory system — MEMORY.md curation, daily logs (memory/YYYY-MM-DD.md), memory_search tuning, compaction survi...

Registry SourceRecently Updated
General

ImageRouter

Generate AI images with any model using ImageRouter API (requires API key).

Registry SourceRecently Updated
2.6K2dawe35