创建一个OpenClaw Skill
OpenClaw 的 Skills 怎么写?(2026年最新风格指南)OpenClaw(以前叫 Clawdbot / Moltbot)的 Skills 系统是目前本地运行的自主AI代理(Agent)生态里最活跃、最实用的扩展方式之一。写一个高质量的 Skill,大致可以分为这几种主流写法(从简单→进阶):
1. 最简单 / 最推荐的写法
在 ~/.openclaw/skills/ 目录下新建一个文件夹,例如:
~/.openclaw/skills/my-first-tool/
里面必须有(至少)这两个核心文件:
-
SKILL.md(最重要!这是给大模型的“说明书”)
-
tool.json 或 manifest.json(可选,但强烈推荐)
最经典的 SKILL.md 模板(复制粘贴改改就能用)
# 技能名称:网页实时截图 + OCR文字提取
## 描述(Description)
当用户需要查看任意网页当前真实样子、需要提取网页里的文字、验证码、价格、动态加载内容时调用我。
## 使用场景(When to use)
- 需要看到“登录后”才能看到的页面
- 动态JS渲染的内容(React/Vue/Angular)
- 验证码、图片文字、价格波动、库存数字
- 任何“让我看一眼网页”的需求
- 不信任搜索引擎截图的场景
## 参数(Parameters)
必须用 JSON Schema 格式:
```json
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "要访问的完整网址(必须带 https://)"
},
"wait": {
"type": "integer",
"description": "等待页面加载的额外秒数(建议0~15,默认3)",
"default": 3
},
"full_page": {
"type": "boolean",
"description": "是否截取整页(很长页面建议false)",
"default": false
},
"ocr": {
"type": "boolean",
"description": "是否同时对截图进行中文+英文OCR文字识别",
"default": true
}
},
"required": ["url"]
}
调用示例(Examples)
用户:淘宝上iPhone 16 Pro Max 1TB黑钛现在多少钱?
→ 调用 { "url": "https://item.taobao.com/item.htm?id=xxxxxxxx", "wait":5, "ocr":true }
返回格式(Expected Output)
-
成功:返回图片(如果支持) + OCR提取的全部可读文字
-
失败:返回错误原因 + 建议的重试方式
注意事项 / 边界(Constraints)
-
不要访问违法/色情/赌博网站
-
单次最多等待20秒
-
如果页面需要登录,请直接告诉用户“需要登录才能看到”
把这个文件保存好后,重启 OpenClaw(或者点刷新技能列表),大模型立刻就能调用了。
2. 带实际执行代码的 Skill(进阶)
如果你希望这个 Skill 真的能做事,而不是只做 prompt 层面的伪工具,就需要再加一个执行文件。
目前最常见的几种实现方式(选一种就好):
| 方式 | 难度 | 实时性 | 推荐场景 | 文件示例 |
|---|---|---|---|---|
| Python脚本 | ★★☆ | 高 | 最通用、生态最好 | run.py |
| Node.js | ★★☆ | 高 | 需要调用大量现代API | index.js |
| Shell脚本 | ★☆☆ | 中 | 简单系统操作、调用已有CLI工具 | run.sh |
| Go/Rust二进制 | ★★★ | 极高 | 性能敏感、要打包发给别人 | 可执行文件 |
| HTTP服务器 | ★★★ | 高 | 想做复杂交互、多步操作 | 一个FastAPI/Express服务 |
最简单示例(Python版):
在同一个文件夹里再放一个 run.py
# run.py
import sys
import json
from playwright.sync_api import sync_playwright
def main():
input_data = json.load(sys.stdin)
url = input_data["url"]
wait = input_data.get("wait", 3)
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
page.goto(url, wait_until="networkidle", timeout=20000)
page.wait_for_timeout(wait * 1000)
screenshot = page.screenshot(full_page=input_data.get("full_page", False))
# 这里可以再加OCR逻辑...
print(json.dumps({
"status": "success",
"screenshot_base64": screenshot.hex(), # 或保存到文件再返回路径
"final_url": page.url
}))
browser.close()
if __name__ == "__main__":
main()
````
然后在 SKILL.md 里补充一行:
```markdown
## 执行方式
用 Python 3.10+ 执行 run.py,输入为JSON(从stdin),输出为JSON(到stdout)
3. 快速上手建议路径(新手2026推荐路线)
-
先只写 SKILL.md(纯描述型Skill),10分钟搞定一个
-
熟练后加 tool.json(规范参数格式)
-
最后考虑加多步推理(plan-act-observe)的复杂Skill
4.常见高质量 Skill 参考方向(目前最火)
-
网页实时截图 + OCR
-
本地文件读写/搜索/总结
-
Git 操作代理(commit / pr / rebase)
-
多模型仲裁(给Claude / Gemini / Qwen / DeepSeek同时问)
-
日历/邮件/飞书/企业微信读写
-
代码审查 + 自动修复链
-
视频/播客下载 + 字幕生成 + 总结
一句话总结目前写 Skill 的核心心法:“把你希望AI能『一键完成』的那件事,写成一份清晰的说明书 + 可执行的工具”需要我帮你写某个具体方向的 Skill 完整模板吗?(例如:飞书读写、Git提交、淘宝比价、本地PDF智能问答……)直接说需求就好~

