Openclaw技能开发指导
在 OpenClaw 的生态里,技能(skill)是让 AI 从“理解”到“执行”的关键一步。OpenClaw 的技能主要可以分为两类:一类是社区贡献的、拿来即用的现成技能;另一类则是你可以亲手打造,满足个性化需求的自定义技能。
下面我们先从宏观上了解技能的分类,再重点深入自定义技能的开发。
OpenClaw 的技能生态非常庞大,你可以把它们想象成一个“工具超市”,大致可以归为这几类 :
- 内置基础技能:OpenClaw 本身就自带了一些“吃饭的家伙”,开箱即用。比如浏览器自动化(agent-browser) 可以帮你抓取网页数据,文件管理(file-manager) 能读写整理本地文件,系统命令(system-command) 则让你用自然语言执行服务器指令 。
- 社区热门技能:社区是 OpenClaw 的灵魂。这里有近3000个由开发者贡献的高质量技能,覆盖了从开发到生活的方方面面 。比如:
- 开发辅助:coding-agent(代码生成)、github(仓库管理)、debug-pro(代码调试)。
- 办公效率:gmail-manager(邮件处理)、nano-pdf(PDF编辑)、notion-manager(笔记管理)。
- 生活服务:weather(天气查询)、qqbot-cron(定时提醒)、AnyList(购物清单管理)。
自定义技能:当现成的技能无法满足你的特定需求时,就需要进入下一个阶段——亲手为 AI 打造“专属工具” 。
一、如何开发 OpenClaw Skills
1. 基本结构
每个 Skill 是一个包含 SKILL.md 文件的目录,通常位于:
~/.openclaw/workspace/skills/(工作区技能,优先级最高)
~/.openclaw/skills/(托管/本地技能,共享给所有智能体)
捆绑技能(随 OpenClaw 安装)
2. SKILL.md 文件格式
---
name: skill_name # 技能名称(使用下划线或连字符)
description: 技能描述 # 简洁的功能描述
metadata: {"openclaw": {"requires": {"bins": ["curl"]}}} # 可选元数据
---
# 技能标题
这里是技能的具体使用说明和指导...
3. 技能开发步骤
步骤 1:创建技能目录
mkdir -p ~/.openclaw/workspace/skills/你的技能名称
步骤 2:编写 SKILL.md
包含:
YAML frontmatter:名称、描述、元数据
Markdown 内容:详细的使用说明、示例、最佳实践
工具说明:指导智能体如何使用现有工具(如 bash、browser、exec 等)
步骤 3:测试技能
重启 OpenClaw 或让智能体"刷新技能"
测试:openclaw agent --message "使用我的新技能"
4. 技能类型示例
简单工具技能(如 weather):
主要使用 exec 工具调用命令行工具
提供具体的命令示例和参数说明
API 集成技能(如 feishu-wiki):
使用现有的 API 工具(如 feishu_wiki、feishu_doc)
提供 API 调用示例和最佳实践
复杂集成技能:
可以包含自定义脚本或工具
可能需要额外的依赖安装
二、自定义技能开发示例:创建skillhub高分skills拉取技能
OpenClaw的核心优势在于其极简的技能开发体系——无需复杂的API对接,仅需“文件夹+SKILL.md描述文件”,AI即可自动理解并调用。以下以“skillhub高分skills拉取”技能为例,手把手教新手开发首个自定义技能,全程无需专业开发知识。
开发核心原理
OpenClaw的技能遵循Anthropic AgentSkills开放标准,核心是SKILL.md文件,AI通过阅读该文件即可掌握技能的使用方法。
步骤1:创建技能目录(华为云服务器端操作)
远程连接华为云openclaw服务器,执行命令创建技能专属目录:
# 进入技能根目录
cd /home/openclaw/.openclaw/workspace/skills/
# 创建skillhub高分skills拉取技能目录
mkdir skillhub-scraper
# 进入技能目录
cd skillhub-scraper
步骤2:编写核心SKILL.md文件(关键步骤)
SKILL.md是技能的“说明书”。使用Vim编辑器创建并编辑该文件,执行命令vim SKILL.md,按“i”进入编辑模式,粘贴以下内容:
---
name: skillhub-scraper
description: 访问 skillhub 官网,获取排名前20的skills信息并生成markdown报告。
metadata: {"openclaw": {"emoji": "📊", "requires": {"bins": ["curl", "jq", "pup", "skillhub"]}}
---
# SkillHub 爬取技能
这个技能用于访问 SkillHub 官网 (https://skillhub.tencent.com/#categories),获取排名前20的skills信息,并以markdown格式输出。
## 功能
1. 访问 SkillHub 官网
2. 解析网页内容获取skills信息
3. 按下载量排序,获取前20名
4. 生成包含链接、功能介绍、适用场景的markdown报告
## 方法
由于 SkillHub 是单页应用(SPA),数据通过JavaScript动态加载,有以下几种方法:
### 方法1:使用skillhub命令行工具(推荐)
```bash
#!/bin/bash
# 创建输出文件
output_file="skillhub_top20_$(date +%Y%m%d_%H%M%S).md"
echo "# SkillHub Top 20 Skills 报告" > "$output_file"
echo "" >> "$output_file"
echo "生成时间: $(date)" >> "$output_file"
echo "" >> "$output_file"
# 搜索热门技能关键词并获取结果
echo "## 通过skillhub命令搜索的热门技能" >> "$output_file"
echo "" >> "$output_file"
echo "| 技能名称 | 描述 | 版本 |" >> "$output_file"
echo "|----------|------|------|" >> "$output_file"
# 搜索常见技能关键词
keywords=("weather" "file" "system" "github" "notion" "obsidian" "summarize" "pdf" "api" "feishu" "google" "tmux" "health" "skill" "search" "discord")
for keyword in "${keywords[@]}"; do
echo "搜索: $keyword"
skillhub search "$keyword" 2>/dev/null | head -5 | while read -r line; do
if [[ $line =~ ^([a-zA-Z0-9_-]+)\ +(.+)\ +- ]]; then
skill_name="${BASH_REMATCH[1]}"
skill_desc="${BASH_REMATCH[2]}"
echo "| $skill_name | $skill_desc | 1.0.0 |" >> "$output_file"
fi
done
sleep 1 # 避免请求过快
done
echo "" >> "$output_file"
echo "## 注意" >> "$output_file"
echo "以上是通过skillhub命令搜索的结果,不是SkillHub官网的实时排名。" >> "$output_file"
echo "SkillHub官网可能需要浏览器自动化才能获取完整的技能列表和下载量数据。" >> "$output_file"
echo "报告已保存到: $output_file"
cat "$output_file"
```
### 方法2:使用浏览器自动化(需要安装playwright)
```bash
#!/bin/bash
# 安装playwright(如果未安装)
# pip install playwright
# playwright install
# 创建Python脚本
cat > scrape_skillhub.py << 'EOF'
import asyncio
from playwright.async_api import async_playwright
import json
async def scrape_skillhub():
async with async_playwright() as p:
browser = await p.chromium.launch(headless=True)
page = await browser.new_page()
print("正在访问 SkillHub 官网...")
await page.goto('https://skillhub.tencent.com/#categories')
# 等待页面加载完成
await page.wait_for_timeout(5000)
# 尝试提取技能数据
# 注意:实际选择器需要根据SkillHub页面结构调整
skills = await page.evaluate('''() => {
const skills = [];
// 这里需要根据实际页面结构编写JavaScript代码
// 例如:document.querySelectorAll('.skill-item')
const skillElements = document.querySelectorAll('[class*="skill"], [class*="card"]');
skillElements.forEach(el => {
const name = el.querySelector('.skill-name, .name')?.textContent || '未知';
const desc = el.querySelector('.skill-desc, .description')?.textContent || '无描述';
const downloads = el.querySelector('.downloads, .stats')?.textContent || '0';
const link = el.querySelector('a')?.href || '#';
skills.push({
name: name.trim(),
description: desc.trim(),
downloads: downloads.trim(),
link: link
});
});
return skills.slice(0, 20); # 只取前20个
}''')
await browser.close()
return skills
if __name__ == "__main__":
skills = asyncio.run(scrape_skillhub())
# 生成markdown报告
output = "# SkillHub Top 20 Skills 报告\n\n"
output += "生成时间: 2026-03-19\n\n"
output += "| 排名 | 技能名称 | 下载量 | 链接 | 功能介绍 |\n"
output += "|------|----------|--------|------|----------|\n"
for i, skill in enumerate(skills, 1):
output += f"| {i} | {skill['name']} | {skill['downloads']} | [{skill['name']}]({skill['link']}) | {skill['description']} |\n"
print(output)
# 保存到文件
with open('skillhub_top20.md', 'w', encoding='utf-8') as f:
f.write(output)
print("报告已保存到 skillhub_top20.md")
EOF
# 运行Python脚本
python3 scrape_skillhub.py
```
### 方法3:使用curl和HTML解析(简单但可能不完整)
```bash
#!/bin/bash
# 获取页面内容
curl -s "https://skillhub.tencent.com/#categories" > skillhub.html
# 尝试提取技能信息(需要根据实际HTML结构调整)
echo "尝试解析HTML内容..."
if command -v pup >/dev/null 2>&1; then
# 使用pup解析HTML
echo "使用pup解析..."
cat skillhub.html | pup 'script' | grep -i skill | head -20
else
echo "请安装pup: sudo apt-get install pup 或 brew install pup"
fi
# 创建模拟报告
create_mock_report() {
output_file="skillhub_top20_mock_$(date +%Y%m%d_%H%M%S).md"
cat > "$output_file" << 'EOF'
# SkillHub Top 20 Skills 报告(模拟数据)
生成时间: $(date)
## 说明
由于SkillHub官网是单页应用(SPA),数据通过JavaScript动态加载,
直接爬取较为困难。以下是基于常见AI技能分类的模拟数据。
## 排名前20的Skills
| 排名 | 技能名称 | 下载量 | 链接 | 功能介绍 | 适用场景 |
|------|----------|--------|------|----------|----------|
| 1 | weather | 5000+ | https://skillhub.tencent.com/skill/weather | 获取天气信息 | 需要查询天气时使用 |
| 2 | file-manager | 4500+ | https://skillhub.tencent.com/skill/file-manager | 文件管理工具 | 文件操作和管理 |
| 3 | system-info | 4200+ | https://skillhub.tencent.com/skill/system-info | 获取系统信息 | 系统监控和诊断 |
| 4 | github | 4000+ | https://skillhub.tencent.com/skill/github | GitHub操作 | GitHub项目管理和协作 |
| 5 | notion | 3800+ | https://skillhub.tencent.com/skill/notion | Notion API集成 | 知识管理和项目管理 |
| 6 | obsidian | 3500+ | https://skillhub.tencent.com/skill/obsidian | Obsidian笔记管理 | 个人知识管理 |
| 7 | summarize | 3300+ | https://skillhub.tencent.com/skill/summarize | 内容摘要工具 | 快速阅读和理解 |
| 8 | nano-pdf | 3100+ | https://skillhub.tencent.com/skill/nano-pdf | PDF编辑工具 | PDF文档处理 |
| 9 | api-gateway | 3000+ | https://skillhub.tencent.com/skill/api-gateway | API集成网关 | 多平台API集成 |
| 10 | feishu-doc | 2800+ | https://skillhub.tencent.com/skill/feishu-doc | 飞书文档操作 | 飞书文档自动化 |
| 11 | feishu-wiki | 2700+ | https://skillhub.tencent.com/skill/feishu-wiki | 飞书知识库管理 | 飞书知识库组织 |
| 12 | feishu-drive | 2600+ | https://skillhub.tencent.com/skill/feishu-drive | 飞书云存储管理 | 飞书文件管理 |
| 13 | gog | 2500+ | https://skillhub.tencent.com/skill/gog | Google Workspace CLI | Google Workspace自动化 |
| 14 | tmux | 2400+ | https://skillhub.tencent.com/skill/tmux | tmux远程控制 | 远程CLI操作 |
| 15 | healthcheck | 2300+ | https://skillhub.tencent.com/skill/healthcheck | 系统安全检查 | 主机安全审计 |
| 16 | skill-creator | 2200+ | https://skillhub.tencent.com/skill/skill-creator | 技能创建工具 | 技能开发和打包 |
| 17 | find-skills | 2100+ | https://skillhub.tencent.com/skill/find-skills | 技能发现工具 | 技能搜索和安装 |
| 18 | weather-api | 2000+ | https://skillhub.tencent.com/skill/weather-api | 天气API集成 | 专业天气服务 |
| 19 | tavily-search | 1900+ | https://skillhub.tencent.com/skill/tavily-search | 智能搜索集成 | 网络信息收集 |
| 20 | discord | 1800+ | https://skillhub.tencent.com/skill/discord | Discord操作 | Discord社区管理 |
## 实际获取建议
如需获取真实的SkillHub数据,建议:
1. 使用浏览器自动化工具(Playwright/Selenium)
2. 分析页面JavaScript请求
3. 查找API端点
4. 可能需要认证或特定请求头
EOF
echo "模拟报告已保存到: $output_file"
}
create_mock_report
```
## 使用场景
**用户**: 获取SkillHub排名前20的skills
**助手**: 使用 skillhub-scraper 技能爬取数据并生成报告
**用户**: 分析热门skills趋势
**助手**: 获取技能数据并进行分析
**用户**: 发现新skills
**助手**: 浏览SkillHub上的热门skills
## 配置
### 安装依赖
```bash
# Ubuntu/Debian
sudo apt-get install curl jq pup
# macOS
brew install curl jq pup
# 安装playwright(用于浏览器自动化)
pip install playwright
playwright install
```
### 设置环境变量(可选)
```bash
export SKILLHUB_URL="https://skillhub.tencent.com/#categories"
export OUTPUT_DIR="./reports"
```
## 输出格式
生成的markdown文件包含:
1. 报告标题和生成时间
2. 技能排名表格
3. 技能详细信息
4. 数据来源说明
5. 获取方法建议
## 错误处理
```bash
# 检查网络连接
if ! curl -s --head https://skillhub.tencent.com > /dev/null; then
echo "错误:无法连接到 SkillHub 官网"
echo "请检查网络连接"
exit 1
fi
# 检查依赖工具
for cmd in curl jq; do
if ! command -v $cmd > /dev/null 2>&1; then
echo "错误:$cmd 未安装"
echo "请安装: sudo apt-get install $cmd"
exit 1
fi
done
```
## 注意事项
1. **网站结构变化**: SkillHub的页面结构可能变化,需要定期更新解析逻辑
2. **动态内容**: 单页应用需要JavaScript执行,建议使用浏览器自动化
3. **API限制**: 避免频繁请求,可能触发反爬虫机制
4. **数据准确性**: 模拟数据仅供参考,真实数据需要实际爬取
5. **合规性**: 遵守网站的使用条款和robots.txt
## 测试
```bash
# 测试网络连接
curl -s --head https://skillhub.tencent.com
# 测试skillhub命令
skillhub search "weather"
# 运行模拟报告
bash skillhub_scraper.sh
```
## 备用方案
如果无法自动爬取,可以:
1. 手动访问 https://skillhub.tencent.com/#categories
2. 使用浏览器开发者工具查看网络请求
3. 查找实际的API端点
4. 使用Postman或curl测试API
---
**提示**: SkillHub可能是腾讯内部的技能市场,实际访问可能需要权限或认证。建议先使用skillhub命令行工具获取技能信息。
编辑完成后,按“Esc”键,输入“:wq”保存并退出Vim编辑器。
步骤3:加载并激活自定义技能
执行命令让OpenClaw加载新创建的技能,并验证状态:
# 登录openclaw用户
su openclaw
# 加载skills
openclaw skills reload
# 重启openclaw网关服务
openclaw gateway restart
# 验证技能状态
openclaw skills status --name "skillhub-scraper"
若输出skillhub-scaper: active (1.0.0),说明技能加载成功。
步骤4:实战测试自定义技能
登录channel(飞书)向OpenClaw发送自然语言指令,测试技能效果:
搜索关键词: 16个热门分类关键词
数据来源: skillhub CLI工具(cn-optimized registry)
-
天气相关 (20个技能)
-
weather, maomao-weather, free-weather-api, weather-pollen, weathercli等
-
文件管理 (20个技能)
-
file-batcher-tool, file-upload-to-local-workspace, file-manager-service, find等
-
系统工具 (20个技能)
-
system-load-monitor, system-monitor-tool, system-resource-report等
-
GitHub集成 (20个技能)
-
github, github-gem-seeker, github-actions, github-integration等
-
Notion集成 (20个技能)
-
notion, notion-api-skill, notion-cli, notion-sync等
-
Obsidian (20个技能)
-
obsidian, obsidian-ontology-sync, obsidian-direct等
-
文档总结 (20个技能)
-
summarize, summarizer, summarize-pro, youtube-summarizer等
-
PDF处理 (20个技能)
-
pdf-smart-tool-cn, pdftk-server, pdfreader, nano-pdf等
-
API集成 (20个技能)
-
apiary, api-sports, api2pdf, api-ninjas等
-
飞书集成 (20个技能)
-
feishu-clawbot-card, feishu-doc-editor, feishu-post, feishu-voice等
-
Google集成 (20个技能)
-
google-sheets-reporting, google-business-optimizer, google-sheets-integration等
-
Tmux工具 (20个技能)
-
tmux, tmux-agents, tmux-remote-control, cursor-agent等
-
健康管理 (20个技能)
-
healthcheck-ready, health-guide, healthsync, health-auto-log等
-
技能管理 (20个技能)
-
mrp, skill-just-say, skill-validator, skills-5等
-
搜索工具 (20个技能)
-
search-with-tavily, searcher-os, search-viewer, search-layer等
-
Discord集成 (20个技能)
-
discord, discord-voice, discord-chat, discord-hub等
|
分类
|
技能数量
|
示例技能
|
|---|---|---|
|
天气相关
|
20+
|
weather, maomao-weather, weather-api
|
|
文件管理
|
20+
|
file-batcher-tool, nano-pdf, obsidian
|
|
系统工具
|
20+
|
system-load-monitor, tmux, healthcheck
|
|
文档处理
|
20+
|
feishu-doc, feishu-wiki, summarize
|
|
API集成
|
20+
|
api-gateway, weather-api, notion, github
|
-
技能总数: 搜索到了 320+ 个技能(16个分类 × 20个技能)
-
热门类别: 天气、文件管理、GitHub、Notion、Obsidian 是最热门的技能类别
-
技能多样性: 涵盖了从基础工具到复杂API集成的各种技能
-
中国优化: 很多技能都有中文描述和中文名称
-
数据来源: 使用skillhub CLI工具而非SkillHub官网(官网是SPA应用,需要浏览器自动化)
-
排序方式: 按关键词搜索匹配度排序,非官方下载量排名
-
完整性: 可能不是完整的SkillHub技能列表
-
天气类技能 非常丰富(20+个),但仍有细分空间
-
文件管理 和 系统工具 类技能需求旺盛
-
API集成 类技能(GitHub、Notion、飞书等)很受欢迎
-
文档处理(PDF、总结、转换)是热门方向
# 进入workspace目录 cd /home/openclaw/.openclaw/workspace/
# 查看markdown文档ls
- 点赞
- 收藏
- 关注作者
评论(0)