OpenClaw技能开发指导
在 OpenClaw 的生态里,技能(skill)是让 OpenClaw 从“理解”到“执行”的关键一步。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 或让智能体"刷新技能"
登录 channel 测试技能
4. 当然我们也可以使用最简单的方式开发适合自己的 skill,直接让 OpenClaw 自己创建 skill !!!
我们只需要明确 skill 核心功能,详细描述技能实现步骤即可
从“想到”到“自动化工具”的完整路径
步骤1:告知目标:明确“做什么”
步骤2:梳理流程:明确“怎么做”
二、技能开发示例:创建 skillhub 高下载量 skills 拉取技能( OpenClaw 自己创建技能)
步骤1:登录到 OpenClaw 连接的 channel 平台(以飞书为例),描述 skill 功能及实现步骤

步骤2:OpenClaw 创建对应技能


步骤3:测试技能

三、技能开发示例:创建 skillhub 高下载量 skills 拉取技能(编辑 SKILL.md 文件)
OpenClaw 的核心优势在于其极简的技能开发体系——无需复杂的API对接,仅需“文件夹 + SKILL.md 描述文件”,AI即可自动理解并调用。以下以“ skillhub 高下载量 skills 拉取”技能为例,开发自定义技能。
开发核心原理
OpenClaw 的技能遵循 Anthropic AgentSkills 开放标准,核心是 SKILL.md 文件,OpenClaw 通过阅读该文件即可掌握技能的使用方法。
步骤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 ”保存并退出编辑器。
步骤3:加载并激活技能
执行命令让 OpenClaw 加载新创建的技能:
# 登录openclaw用户
su - openclaw
# 加载skills
openclaw skills reload
# 重启openclaw网关服务
openclaw gateway restart
步骤4:测试技能
登录 channel(飞书)向 OpenClaw 发送指令,测试技能效果:

# 进入workspace目录 cd /home/openclaw/.openclaw/workspace/ # 查看markdown文档ls
- 点赞
- 收藏
- 关注作者
评论(0)