Skip to content
Back to skills

Ai Skillhub

BSecurity

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

  • 2 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 9, 2026
developmentpythongoshellbashgitapi

Works with

  • api

Security analysis

B80/100
  • highPerforms destructive filesystem operations
  • criticalSends environment variables or credentials to an external URL

Pro shows the line behind each finding and how to fix it

Scanned September 9, 2026

npx -y skills add Lord1Egypt/awesome-skill-forge --skill ai-skillhub --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ai Skillhub?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ai Skillhub
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/lord1egypt-ai-skillhub/badge)](https://www.skillsdirectory.com/skills/lord1egypt-ai-skillhub)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

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

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

## 命令格式

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

---

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

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

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

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

---

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

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

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

---

## [执行卡 A] YouTube

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

```bash
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 并下载音频

```bash
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 转写

```bash
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(不得跳过,不得用其他工具替代)

```bash
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` 分析内容,确定 `keyword` 和 `category`:

```json
{
  "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`:

```markdown
# 原始内容记录

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

## 内容正文
{完整内容,一字不删}
```

---

## [Step 6] 事实抽取

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

```json
{
  "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`:

```markdown
# {关键词} Skill

## ⚠️ 关键结果
{如果 has_financial_outcome=true,用粗体标注结果}

## 核心事件
{从 Step 6 events 转化}

## 详细内容
{结构化总结}

## 重要事实清单
{其他关键事实}
```

---

## [Step 8] 推送 GitHub

```bash
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` | 纯文本推理(不能联网) |

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…