摘要:本文实测并详细讲解 OpenClaw Skill 自制全流程,全程零代码、无门槛,无需掌握API和编程知识,仅需简单编辑文本,10分钟即可完成第一个专属AI技能制作。涵盖文件结构、SKILL.md编写、脚本使用、实战操作、调试排查及ClawHub发布,附真实案例和避坑技巧,新手可直接上手。
在用 OpenClaw 过程中,很多开发者会遇到 ClawHub 现有 Skill 不合需求、功能冗余的问题,无需等待他人更新,自己即可快速制作专属 Skill。很多人误以为自制 Skill 需要编程基础,实则不然——OpenClaw 的 Skill 本质是一份「AI 操作指南」,核心仅需一个 SKILL.md 文件,明确触发条件、工作流程和输出格式,AI 即可精准执行。
本文基于2026年最新版本 OpenClaw 实测,从基础认知到实战落地,一步步带大家吃透 Skill 自制全流程,适合所有 OpenClaw 用户,尤其适合新手。
一、核心认知:Skill 是什么?
很多新手初次接触 OpenClaw Skill,容易将其与浏览器插件混淆,误认为需要后台运行时,实则两者差异极大。
OpenClaw Skill 本质是给 AI 编写的「操作说明书」,无需复杂开发,仅需在 SKILL.md 文件中明确3个核心内容,AI 即可按照说明执行操作:
-
触发条件:什么时候启动这个 Skill(如用户主动请求、定时触发)
-
工作流程:启动后按什么步骤执行(如拉取数据、调用脚本、过滤结果)
-
输出格式:执行完成后输出什么内容、以什么格式呈现
实例参考:本人为博客开发的 trend-scout Skill,可定期扫描 V2EX、Hacker News、GitHub Trending 等平台,自动筛选适合博客的选题方向。该 Skill 无需后台服务,仅为普通文件夹,包含 SKILL.md 说明文档和辅助脚本,OpenClaw 启动时会自动扫描注册,无需手动配置。
二、Skill 文件结构(极简版+完整版)
OpenClaw 对 Skill 的文件夹结构要求极简,无需复杂配置,分两种场景按需选择,新手优先推荐极简版。
1. 极简版(新手首选)
仅需1个文件夹+1个核心文件,即可正常运行,适合简单需求(如单一命令执行、简单数据拉取):
~/.openclaw/workspace/skills/
└── my-skill/ # 自定义 Skill 文件夹名称
└── SKILL.md # 核心配置文件,编写操作说明
2. 完整版(带脚本/参考资料)
适合复杂需求(如批量拉取数据、多步骤操作),可添加辅助脚本和参考资料,结构如下(以 trend-scout 为例):
~/.openclaw/workspace/skills/
└── trend-scout/ # Skill 主文件夹
├── SKILL.md # 核心:技能说明+工作流程
├── scripts/ # 辅助脚本文件夹(可选)
│ └── scan-trends.sh # 批量拉取数据的shell脚本
└── references/ # 参考资料文件夹(可选)
└── sources.md # 信息源列表、过滤规则等
关键注意事项
Skill 文件夹必须放在默认路径:~/.openclaw/workspace/skills/,OpenClaw 启动时会自动扫描该目录,无需手动配置,放入即可生效。
三、核心重点:SKILL.md 编写教程(3个核心部分)
SKILL.md 是 Skill 的核心,无论极简版还是完整版,都必须包含以下3个部分,按模板编写即可,无需自主构思。
1. frontmatter(AI 识别关键,必写)
用于定义 Skill 的基本信息,相当于 Skill 的「身份卡」,用3条横线包裹,核心是明确适用场景和不适用场景,避免 AI 误触发。
模板(以 trend-scout 为例):
---
name: trend-scout # Skill 名称,自定义且唯一
description: >
扫描 V2EX、Hacker News、GitHub Trending、少数派、小众软件,
发现适合博客的选题方向。
Use when: 用户要找新选题,或每 2 天定期触发。 # 适用场景
NOT for: 分析已有流量数据(那个用 GSC/Bing 工具直接查)。 # 不适用场景
---
重点说明:description 是 AI 判断是否启用该 Skill 的核心依据,务必写清晰「适用场景(Use when)」和「不适用场景(NOT for)」,后者可有效避免 AI 误触发(本人实测踩坑:未写 NOT for 时,AI 会在查询流量数据时误启动该 Skill)。
2. 触发条件(When to Run)
用自然语言编写,无需代码,明确 AI 启动该 Skill 的场景,如定时触发、用户主动请求等。
示例(以 trend-scout 为例):
## When to Run
- 每 2 天通过 heartbeat 或 cron 定时触发
- 用户主动提问:「有什么可以写的选题」
- 现有关键词数据重复、缺乏新意时
3. 工作流程(Workflow,核心中的核心)
编写 AI 执行的具体步骤,要求越具体越好,避免模糊表述(如「拉取数据」改为「调用具体命令拉取数据」),需明确每一步操作、异常处理方式(如接口拦截后的替代方案)。
示例(以 trend-scout 为例):
## Workflow
1. 读取 `references/sources.md` 文件,获取信息源列表
2. 执行 `scripts/scan-trends.sh` 脚本,拉取 V2EX、HN、GitHub、少数派、小众软件的数据
3. 若来源被 Cloudflare 拦截(如 Linux.do、Reddit),用 web_search 替代:
- `web_search "site:linux.do 热门"`
4. 按照博客受众过滤数据(过滤规则见下方 Filtering 部分)
5. 输出排序后的选题列表
## Filtering Criteria(可选,过滤规则)
匹配条件:
- 受众:国内技术用户,关注 VPS/服务器、AI 工具、免费资源、支付工具
- 排除:企业 SaaS、纯代码教程、无实操价值的新闻
- 优先:有免费版的工具、可自托管项目、需要中文教程的内容
四、进阶:辅助脚本的使用(提升效率)
简单需求可通过纯文字说明完成,若涉及批量操作(如批量拉取多平台数据、复杂数据处理),建议添加辅助脚本,减少 AI 操作误差,提升执行效率。
脚本核心作用:帮 AI 完成重复、复杂的操作,输出统一格式的结果,AI 仅需调用脚本并读取结果即可,无需手动编写复杂命令。
脚本示例(scan-trends.sh)
以下为 trend-scout 中的核心脚本,用于批量拉取 V2EX、Hacker News 等平台数据并保存为 JSON 格式,可直接复制修改使用:
#!/bin/bash
OUTPUT_DIR="${1:-/tmp/trend-scout}"
mkdir -p "$OUTPUT_DIR"
# V2EX 热门话题(公开 API,无需认证)
curl -s "https://www.v2ex.com/api/topics/hot.json" | python3 -c "
import json, sys
data = json.load(sys.stdin)
results = []
for t in data[:10]:
results.append({
'title': t.get('title',''),
'node': t.get('node',{}).get('title',''),
'replies': t.get('replies', 0)
})
print(json.dumps(results, ensure_ascii=False, indent=2))
" > "$OUTPUT_DIR/v2ex.json"
# Hacker News(Firebase 实时数据库,稳定好用)
curl -s "https://hacker-news.firebaseio.com/v0/topstories.json" | python3 -c "
import json, sys, urllib.request
ids = json.load(sys.stdin)[:10]
results = []
for id in ids:
resp = urllib.request.urlopen(f'https://hacker-news.firebaseio.com/v0/item/{id}.json')
item = json.loads(resp.read())
if item and item.get('type') == 'story':
results.append({'title': item.get('title',''), 'score': item.get('score',0)})
print(json.dumps(results, ensure_ascii=False, indent=2))
" > "$OUTPUT_DIR/hn.json"
脚本使用注意事项
-
脚本需放在
scripts/文件夹下,在 Workflow 中直接引用脚本路径即可(如执行 scripts/scan-trends.sh 拉取数据),AI 会自动执行。 -
脚本编写完成后,务必手动执行一次,确认能正常输出结果(实测踩坑:正则表达式错误会导致脚本执行失败,AI 无法获取数据)。
-
若脚本中使用 python3,需确保服务器/本地环境已安装 python3。
五、实战操作:10分钟制作第一个 Skill(新手必做)
结合具体需求,从零开始制作一个 Skill,全程零代码、耗时不超过10分钟,新手可直接跟着操作,快速掌握核心流程。
需求定义
每天早上8点自动生成简报,包含上海天气和 V2EX 热帖前5条,并推送到 Telegram。
步骤1:创建文件夹和核心文件
打开终端,执行以下命令,创建 Skill 文件夹和 SKILL.md 文件:
mkdir -p ~/.openclaw/workspace/skills/daily-brief
touch ~/.openclaw/workspace/skills/daily-brief/SKILL.md
步骤2:编写 SKILL.md(直接复制粘贴)
---
name: daily-brief
description: >
每天早上生成简报:上海天气 + V2EX 热帖前 5 条,推送到 Telegram。
Use when: 用户说"生成今日简报",或 cron 在早上 8 点触发。
NOT for: 详细的天气预报或深度新闻分析。
---
# Daily Brief
## When to Run
- 每天 8:00 AM 通过 cron 定时触发
- 用户主动请求:「给我今天的简报」「今天有什么热点」
## Workflow
1. 拉取上海天气,执行命令:
`curl "https://wttr.in/Shanghai?format=3"`
2. 拉取 V2EX 热帖前 5 条,执行命令:
`curl https://www.v2ex.com/api/topics/hot.json`
提取响应中的 title 和 node.title 字段
3. 按以下固定格式整合内容,推送到 Telegram
## Output Format(固定输出格式)
{今天日期}
🌤 天气:{wttr.in 返回结果}
V2EX 今日热帖:
1. {标题}({节点})
2. ...(共 5 条)
步骤3:重启 OpenClaw Gateway,使 Skill 生效
终端执行以下命令,重启网关,OpenClaw 会自动扫描并注册新创建的 Skill:
openclaw gateway restart
步骤4:测试效果与定时配置
-
手动测试:在 Telegram 中对 OpenClaw 发送指令「给我今天的简报」,AI 会按流程拉取天气、热帖,并推送指定格式的简报。
-
定时配置:执行以下命令,添加 cron 定时任务,实现每天早上8点自动生成并推送简报:
openclaw cron add \
--name "早间简报" \
--cron "0 8 * * *" \
--tz "Asia/Shanghai" \
--session main \
--message "生成今日简报并推送"
实战总结:至此,第一个专属 Skill 制作完成,全程未编写一行逻辑代码,耗时不超过10分钟,新手可轻松上手。
六、常见问题排查:Skill 无法触发怎么办?
很多新手制作完成后,会遇到 AI 不启用 Skill、触发异常等问题,大概率是以下4个原因,逐一排查即可解决。
1. description 表述模糊
AI 判断是否启用 Skill,完全依赖 description 中的描述,若表述宽泛(如「处理各种任务」),AI 会无法判断,直接跳过。
解决方案:按「Use when + NOT for」的格式编写,明确适用和不适用场景,参考前文 daily-brief 示例。
2. 文件夹结构错误
SKILL.md 文件必须直接放在 skills/ Skill 文件夹/ 下,不可嵌套子目录(如 skills/daily-brief/src/SKILL.md 为错误结构)。
正确结构:~/.openclaw/workspace/skills/你的 Skill 文件夹/SKILL.md。
3. 修改后未重启 Gateway
OpenClaw 仅在启动时扫描 skills 目录,修改 SKILL.md 或新增 Skill 后,必须重启网关才能生效。
重启命令:openclaw gateway restart
4. 脚本缺乏执行权限
若 Skill 包含 shell 脚本,未给脚本添加执行权限,AI 会无法执行脚本。
授权命令:chmod +x ~/.openclaw/workspace/skills/你的 Skill 文件夹/scripts/*.sh
调试小技巧:若无法判断问题所在,可在 Telegram 中直接发送指令「用 XX Skill 执行XX操作」(如「用 daily-brief Skill 生成简报」),强制指定 AI 启用该 Skill,快速排查执行过程中的异常。
七、发布到 ClawHub:分享你的 Skill
若制作的 Skill 具有通用性,可发布到 ClawHub,供其他 OpenClaw 用户安装使用,通过 clawhub CLI 工具即可快速完成发布。
步骤1:安装 clawhub CLI(未安装时执行)
npm install -g clawhub
步骤2:初始化发布配置
进入 Skill 文件夹,执行初始化命令,按提示填写 Skill 名称、简介、版本号、分类,完成后会自动生成 clawhub.json 配置文件:
cd ~/.openclaw/workspace/skills/daily-brief
clawhub init
步骤3:登录并发布
clawhub login # 用 GitHub 账号授权登录
clawhub publish # 发布 Skill 到 ClawHub
发布注意事项
-
发布成功后,其他用户可通过命令
npx clawhub install 你的 Skill 名称安装使用。 -
ClawHub 会对 Skill 进行双重安全扫描(VirusTotal + OpenClaw),扫描通过后会显示绿色安全标记。
-
发布前务必检查 SKILL.md 文件,删除硬编码的个人信息(如 API Key、服务器 IP),可替换为占位符或从环境变量读取。
八、避坑技巧:编写 Skill 的4个实用经验
结合本人制作 trend-scout 和 daily-brief 两个 Skill 的实测经验,总结4个避坑技巧,提升 Skill 实用性和稳定性。
1. 工作流程写具体命令,不写模糊意图
避免使用「搜索相关资料」这类模糊表述,改为具体命令(如 web_search "{关键词} site:github.com"),可减少 AI 自由发挥,确保执行精准。
2. 必须添加 NOT for 说明
明确 Skill 的适用边界,避免 AI 在不该触发的场景启用,这是新手最容易忽略的点,也是减少异常触发的关键。
3. 固定输出格式单独编写
若需要固定格式输出(如推送到 Telegram、生成表格),单独添加「Output Format」章节,明确格式模板(包括 emoji、换行、字段占位符),AI 会严格按模板输出。
4. 辅助资料放入 references 目录
避免将大段参考内容(如信息源列表、过滤规则)直接写入 SKILL.md,放入 references/ 子目录,在 Workflow 中引用路径即可,保持 SKILL.md 简洁,提升 AI 读取效率。
总结
OpenClaw Skill 自制门槛极低,核心是「将操作流程写清晰」,无需编程基础、无需掌握 API,仅需会简单编辑 Markdown 文本,即可制作专属 AI 技能。
本文实测的 daily-brief Skill 仅需10分钟即可完成,复杂一点的 trend-scout 也仅需半小时,适合所有 OpenClaw 用户。
想了解更多细节、获取专属支持,可访问一步API官网:[yibuapi.com] 或添加客服微信:xuexiv5876 \ YibuDev,随时咨询交流~
共同学习,写下你的评论
评论加载中...
作者其他优质文章
