OpenClaw技能开发指导

举报
Alon 发表于 2026/03/19 16:40:22 2026/03/19
【摘要】 在 OpenClaw 的生态里,技能(skill)是让 AI 从“理解”到“执行”的关键一步。OpenClaw 的技能主要可以分为两类:一类是社区贡献的、拿来即用的现成技能;另一类则是你可以亲手打造,满足个性化需求的自定义技能。

在 OpenClaw 的生态里,技能(skill)是让 OpenClaw 从“理解”到“执行”的关键一步。OpenClaw 的技能主要可以分为两类:一类是社区贡献的、拿来即用的现成技能;另一类则是你可以亲手打造,满足个性化需求的自定义技能。

下面我们先从宏观上了解技能的分类,再重点深入自定义技能的开发。

OpenClaw 的技能生态非常庞大,你可以把它们想象成一个“工具超市”,大致可以归为这几类 :

  1. 内置基础技能:OpenClaw 本身就自带了一些“吃饭的家伙”,开箱即用。比如浏览器自动化(agent-browser) 可以帮你抓取网页数据,文件管理(file-manager) 能读写整理本地文件,系统命令(system-command) 则让你用自然语言执行服务器指令 。
  2. 社区热门技能:社区是 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 功能及实现步骤

ScreenShot_20260320103439.PNG


步骤2:OpenClaw 创建对应技能

ScreenShot_20260320103543.PNG

ScreenShot_20260320171019.PNG

步骤3:测试技能

ScreenShot_20260320103739.PNG

三、技能开发示例:创建 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 发送指令,测试技能效果:

ScreenShot_20260320170746.PNG


进入 OpenClaw 服务器可查看生成的 markdown 报告 skillhub_top20_***.md
# 进入workspace目录
cd /home/openclaw/.openclaw/workspace/
# 查看markdown文档
ls
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。