🎁 Get the FREE AI Skills Starter GuideSubscribe →
BytesAgainBytesAgain
🦀 ClawHub

AI SkillHub

by @eeyan2025-art

OpenClaw AI SkillHub 核心。支持两种触发方式:①「!skill URL」自动模式,AI 自动归纳关键词和分类;②「!skill 关键词 URL」手动模式,用户指定关键词。提取内容 → 生成原始内容.md + SKILL.md → 推送 GitHub。

Versionv2.1.0
Downloads752
TERMINAL
clawhub install ai-skillhub

📖 About This Skill


name: ai-skillhub description: OpenClaw AI SkillHub 核心。支持两种触发方式:①「!skill URL」自动模式,AI 自动归纳关键词和分类;②「!skill 关键词 URL」手动模式,用户指定关键词。提取内容 → 生成原始内容.md + SKILL.md → 推送 GitHub。

AI SkillHub — 全自动知识策展系统

命令格式

!skill               ← 自动模式,AI 自动归纳关键词和分类
!skill <关键词>      ← 手动模式,用户指定关键词


⚡ 第零步:立即回复用户(不得跳过)

收到命令的第一件事是回复:

✅ 收到!正在处理「{URL}」,请稍等...

然后才开始执行下面的步骤。


🗺️ 平台识别 → 执行卡速查表

先看 URL,匹配平台,直接跳到对应执行卡,不要阅读其他部分。

| URL 特征 | 平台 | 执行卡 | |---------|------|--------| | youtube.comyoutu.be | YouTube | → [执行卡 A] | | bilibili.com | B站 | → [执行卡 B] | | mp.weixin.qq.com | 微信公众号 | → [执行卡 C] | | douyin.comv.douyin.com | 抖音 | → [执行卡 D] | | 其他所有网址 | 通用网页 | → [执行卡 E] |


[执行卡 A] YouTube

A1. 先跑字幕脚本(必须第一步,不得绕过)

python3 ~/.openclaw/scripts/yt_transcript.py "{url}"

结果判断:

输出包含 "transcript" 字段 → 提取成功,将 transcript 内容作为正文,进入 [Step 4 归类]

输出包含 "error" 字段 → 字幕不可用,进入 A2


A2. 字幕失败 → 通知用户运行本地流水线

告知用户:

⚠️ 该视频没有字幕,需要在你的 Windows 本地下载音频后转写。

请在你的电脑上打开 PowerShell,运行:

powershell -ExecutionPolicy Bypass -File "C:\Users\admin\Documents\trae_projects\vps skill\yt_local_pipeline.ps1" "{url}" tiny

运行完成后,会在当前目录生成 yt_transcript_XXXXXX.txt 文件。 请把文件内容粘贴回来,我继续处理。

收到用户粘贴的内容后,将其作为正文,进入 [Step 4 归类]。


[执行卡 B] B站

B1. 检查 cookies 并下载音频

BILI_COOKIES="$HOME/.openclaw/cookies/bilibili.txt"
if [ -f "$BILI_COOKIES" ]; then
  COOKIES_ARG="--cookies $BILI_COOKIES"
else
  COOKIES_ARG=""
fi

python3 -m yt_dlp -x --audio-format mp3 --audio-quality 5 \ $COOKIES_ARG \ -o /tmp/content_audio.mp3 \ "{url}" 2>&1

结果判断:

下载成功 → 进入 B2

下载失败且 cookies 不存在 → 告知用户:

❌ B站下载失败:需要登录 cookies。
cookies 文件应在:~/.openclaw/cookies/bilibili.txt
请联系管理员重新导出 cookies 后重试。


B2. Whisper 转写

python3 -c "
import whisper
model = whisper.load_model('tiny')
result = model.transcribe('/tmp/content_audio.mp3', language='zh')
with open('/tmp/原始内容.txt', 'w', encoding='utf-8') as f:
    f.write(result['text'])
print('转写完成,字数:', len(result['text']))
"

> 模型选择:默认 tiny。用户明确说「用 small」「用 medium」时才替换。

转写完成后,将 /tmp/原始内容.txt 内容作为正文,进入 [Step 4 归类]。


[执行卡 C] 微信公众号

C1. 第一步:必须先跑 wx_extract.py(不得跳过,不得用其他工具替代)

python3 ~/.openclaw/scripts/wx_extract.py "{url}"

结果判断:

输出 JSON 包含 "content" 字段且无 "error" 字段 → 提取成功,将 content 内容作为正文,进入 [Step 4 归类]

输出包含 "error": "blocked" 字段 → 进入 C2


C2. 第二步:extract_content_from_websites 浏览器模式

extract_content_from_websites(
  url="{url}",
  mode="browser_only",
  prompt="提取微信公众号文章完整正文,包括标题和所有段落"
)

✅ 成功 → 将结果作为正文,进入 [Step 4 归类]

❌ 失败 → 进入 C3


C3. 第三步:搜索引擎缓存

使用 batch_web_search 搜索: 1. "{文章标题}" 全文 2. "{url中的短ID}" site:weixin.sogou.com

✅ 找到完整内容 → 使用,注明「内容来自搜索缓存」,进入 [Step 4 归类]

❌ 未找到 → 进入 C4


C4. 最终兜底:请用户提供

⚠️ 该微信文章受谷歌云 IP 限制,自动抓取失败。
请在微信中打开文章,复制全文后粘贴给我,我继续处理。


[执行卡 D] 抖音

直接告知用户,不要尝试任何下载:

❌ 抖音视频无法处理。
原因:当前服务器(美国 Google Cloud IP)被抖音 API 封锁,无论是否有 cookies 均无效。
建议:若该内容同时发布在 B站或 YouTube,请提供对应链接。


[执行卡 E] 通用网页(知乎 / 小红书 / 其他)

E1. extract_content_from_websites

extract_content_from_websites(
  url="{url}",
  mode="browser_only",
  prompt="提取这个页面的完整正文内容,包括标题、所有段落,不要省略任何内容"
)

✅ 成功 → 进入 [Step 4 归类]

❌ 失败 → 进入 E2


E2. 搜索引擎兜底

batch_web_search("{页面标题} 全文")

✅ 找到 → 进入 [Step 4 归类]

❌ 找不到 → 告知用户无法提取,请求直接粘贴内容


[Step 4] 自动归类(仅自动模式)

> 手动模式(用户提供了关键词)跳过此步。

llm-task 分析内容,确定 keywordcategory

{
  "prompt": "你是一个知识分类专家。请根据以下内容,输出:\n1. keyword(关键词):2-6个字,概括内容主题,中文或英文均可,作为文件夹名使用(不含特殊字符)\n2. category(分类):从以下分类中选一个最合适的:编程开发 / 法律金融 / 内容创作 / 商业运营 / 效率工具 / 健康生活 / 教育学习 / 其他\n3. reason(理由):一句话说明分类依据\n\n【内容标题】:{title}\n【内容摘要(前500字)】:{content[:500]}\n\n严格按 JSON 格式输出:{\"keyword\": \"...\", \"category\": \"...\", \"reason\": \"...\"}",
  "model": "minimax/auto"
}


[Step 5] 保存原始内容

写入 /tmp/原始内容.md

# 原始内容记录

来源信息

  • URL:{url}
  • 平台:{platform}
  • 关键词:{keyword}
  • 分类:{category}
  • 归类方式:{自动归类 / 用户指定}
  • 提取时间:{datetime}
  • 提取方式:{方式,例:YouTube字幕API / B站yt-dlp+Whisper(tiny) / wx_extract.py / 本地流水线+Whisper(tiny)}
  • 内容正文

    {完整内容,一字不删}


    [Step 6] 事实抽取

    llm-task 扫描全文,重点检测财务/结果类关键词:

    {
      "prompt": "你是一个事实抽取专家。从以下内容中抽取所有关键事件,特别关注【结果、状态、金额、是否成功】。\n\n必须扫描:追回、退款、退回、赔付、胜诉、执行成功、失败、已追回、已退款、钱、款、金额、赔偿\n\n输出格式:\n## 关键事件\n| 事件 | 结果状态 | 证据句子 | 时间/金额 |\n\n## financial_outcome\n- has_financial_outcome: true/false\n- outcome_summary:\n- evidence_sentence:\n\n注意:必须逐句扫描,不得跳段",
      "input": "{原始内容全文}"
    }
    


    [Step 7] 生成 SKILL.md

    写入 /tmp/SKILL.md

    # {关键词} Skill

    ⚠️ 关键结果

    {如果 has_financial_outcome=true,用粗体标注结果}

    核心事件

    {从 Step 6 events 转化}

    详细内容

    {结构化总结}

    重要事实清单

    {其他关键事实}


    [Step 8] 推送 GitHub

    export GITHUB_TOKEN=$(grep GITHUB_TOKEN ~/.openclaw/.env | cut -d= -f2)
    export GITHUB_REPO=$(grep GITHUB_REPO ~/.openclaw/.env | cut -d= -f2)
    export GITHUB_BRANCH=$(grep GITHUB_BRANCH ~/.openclaw/.env | cut -d= -f2-)

    rm -rf /tmp/skillhub_repo git clone "https://${GITHUB_TOKEN}@github.com/${GITHUB_REPO}.git" /tmp/skillhub_repo

    mkdir -p "/tmp/skillhub_repo/skills/{category}/{keyword}" cp /tmp/原始内容.md "/tmp/skillhub_repo/skills/{category}/{keyword}/原始内容.md" cp /tmp/SKILL.md "/tmp/skillhub_repo/skills/{category}/{keyword}/SKILL.md"

    cd /tmp/skillhub_repo git config user.email "openclaw@bot" git config user.name "OpenClaw Bot" git add . git commit -m "Add skill [{category}/{keyword}] - $(date '+%Y-%m-%d')" git push origin ${GITHUB_BRANCH:-main}

    rm -rf /tmp/skillhub_repo


    完成通知

    ✅ Skill 已保存:【{keyword}】
    🏷️ 分类:{category}
    📄 原始内容:skills/{category}/{keyword}/原始内容.md
    🧠 分析摘要:skills/{category}/{keyword}/SKILL.md
    📦 来源:{url}
    🔗 GitHub:https://github.com/{GITHUB_REPO}/tree/main/skills/{category}/{keyword}
    📌 提取方式:{方式}
    


    🚫 禁止事项(违反即为错误)

    1. 禁止对 YouTube 直接用 yt-dlp 下载——VPS 是谷歌云 IP,必然 403,不要尝试 2. 禁止对微信公众号跳过 wx_extract.py——必须先跑脚本,不能直接用浏览器工具或 llm-task 3. 禁止用 llm-task 访问任何 URL——llm-task 只做文本推理,没有联网能力 4. 禁止对抖音尝试任何下载——直接告知用户不可用 5. 禁止只推送一个文件——必须同时推送 原始内容.md + SKILL.md 6. 禁止省略或截断原始内容——原始内容必须一字不删全量保存


    工具与环境

    | 工具/路径 | 用途 | |-----------|------| | python3 ~/.openclaw/scripts/yt_transcript.py | YouTube 字幕提取 | | python3 ~/.openclaw/scripts/wx_extract.py | 微信公众号提取 | | python3 -m yt_dlp | B站/西瓜视频音频下载 | | whisper(Python 库) | 音频转写 | | ~/.openclaw/cookies/bilibili.txt | B站登录 cookies | | ~/.openclaw/.env | GitHub Token / Repo 配置 | | C:\...\yt_local_pipeline.ps1 | YouTube 无字幕时本地下载流水线(用户在 Windows 本地运行) | | exec | 在 VPS 执行 shell 命令 | | extract_content_from_websites | 网页/浏览器内容提取 | | batch_web_search | 搜索引擎兜底 | | llm-task | 纯文本推理(不能联网) |