新手必看!OpenClaw Skill调用第三方API超详细教程,零复杂操作
本文详细讲解了如何在OpenClaw Skill中调用外部API,从免费接口到需要密钥的API都涵盖。主要内容包括:1)API调用原理,即通过Python脚本发送网络请求获取数据;2)实战开发"随机文案Skill",使用一言API的完整步骤;3)处理需要API密钥的接口方法;4)三种常见API调用方式(GET、POST、带Token请求)。教程提供可直接复用的代码模板,适合零基
之前分享了OpenClaw Skill的基础开发和功能扩展,有很多小伙伴留言问:“怎么让我的Skill调用外部API呀?”“需要API密钥的接口,在Skill里怎么配置?”
其实答案超级简单——Skill调用API,本质就是在Python脚本里发个网络请求,不用懂复杂的接口原理,不用写高深的代码,只要掌握一个万能模板,任何第三方API(免费的、需要密钥的、自己开发的)都能轻松集成到Skill里,让你的Skill功能直接翻倍!
今天就把这份新手友好型教程分享给大家,从核心原理到实战案例,从免费API到带密钥的接口,全程实操,跟着走就能学会,哪怕是零代码基础也能轻松上手~
一、先搞懂:Skill调用API,到底是什么意思?
用一句大白话解释:API就像是“别人做好的功能接口”,比如查天气、查文案、查热搜、查快递,这些功能不用我们自己从零开发,只要调用别人做好的API,就能直接拿到数据。
而OpenClaw的Skill,就是一个“桥梁”——把API的功能,变成AI能调用的工具。简单说:
Skill调用API = 让AI通过你的脚本,去“问”API要数据,再把数据整理好返回给你。
比如我们之前做的天气查询Skill,就是调用了免费的天气API;今天我们做一个更简单的实战案例——调用“一言”API,让AI返回一句随机文案,全程零复杂操作,帮你吃透核心逻辑。
二、核心准备:3步搞定前置工作(超简单)
在开始之前,只需要做好3件事,不用装额外的复杂工具,有电脑、有OpenClaw就够:
-
安装requests库(发网络请求的核心工具):打开终端,输入一句命令即可,复制粘贴就能执行:
pip install requests(只需要安装一次,后续所有API调用都能用); -
找一个API接口(新手推荐免费公开API,不用密钥,避免踩坑);
-
准备好Skill的基础文件结构(还是熟悉的SKILL.md + scripts文件夹,不用新建额外文件)。
这里给新手推荐几个免费公开API(直接能用,不用密钥),方便大家测试:
-
一言API:https://v1.hitokoto.cn/(返回随机文案、语录);
-
天气API:https://cn.apihz.cn/api/tianqi/tqybip.php

三、实操实战:开发一个“随机文案Skill”(调用一言API)
我们以“一言API”为例,开发一个能返回随机文案的Skill,全程分4步,每一步都有现成代码,复制粘贴就能搞定,建议边看边操作,印象更深刻。
步骤1:创建Skill目录(固定结构)
和之前开发Skill一样,先在你的OpenClaw项目目录下,新建一个Skill文件夹,命名为“quote-skill”(名字可自定义,建议英文),然后创建以下结构:
quote-skill/
├─ SKILL.md # 技能配置文件(AI识别用)
└─ scripts/
└─ quote.py # 核心脚本(调用API的逻辑)
这个结构和我们之前做的hello-skill、weather-skill完全一致,新手不用记新规则,沿用之前的逻辑即可。
步骤2:编写SKILL.md(告诉AI怎么用)
SKILL.md还是老样子,相当于技能的“说明书”,告诉AI这个Skill是什么、什么时候用、需要传什么参数。因为我们调用的一言API不需要参数,所以args为空,直接复制下面的内容粘贴即可:
---
name: quote-skill
description: 获取一句随机文案、励志语录、短句,无需传入参数
version: 1.0.0
author: 你的名字
type: script
scope: local
command: python3 scripts/quote.py
args: [] # 无需参数,为空即可
---
# 技能使用说明
当用户需要随机文案、励志语录、短句,或者想要一句治愈文案时,自动调用此技能。
无需传入任何参数,直接调用即可返回结果。
这里重点说明:如果你的API需要参数(比如天气API需要城市名),就在args里添加对应的参数,和我们之前天气Skill的写法完全一样,后面会详细讲。
步骤3:编写quote.py(核心!调用API的代码)
这一步是核心,但代码超级简单,全程套用“万能模板”,只需要替换API地址和数据提取逻辑即可。直接复制下面的代码,粘贴到scripts/quote.py里,我会逐行解释,帮你理解每一步的作用:
import requests # 导入发网络请求的库(之前安装的)
# 1. 定义要调用的API地址(一言API,免费公开,不用密钥)
api_url = "https://v1.hitokoto.cn/"
try:
# 2. 发送GET请求,调用API(timeout=10表示超时时间10秒,避免卡壳)
response = requests.get(api_url, timeout=10)
# 3. 将API返回的结果转换成JSON格式(方便提取数据)
data = response.json()
# 4. 从JSON数据中提取我们需要的内容(文案和来源)
# 可以先打印data,查看API返回的所有数据,再提取对应字段
quote_content = data["hitokoto"] # 文案内容
quote_source = data["from"] # 文案来源
# 5. 输出结果(必须用print,AI才能读取并返回给用户)
print(f"📝 随机文案:{quote_content}")
print(f"✍️ 文案来源:{quote_source}")
# 捕获异常(避免网络不稳、API失效导致Skill崩溃)
except Exception as e:
print(f"调用API失败啦,原因:{str(e)}")
逐行解释(新手必看):
-
import requests:导入我们之前安装的库,没有这个库,就无法发送网络请求;
-
api_url:就是我们要调用的API地址,换成其他API,只需要改这里;
-
requests.get():发送GET请求(最常用的请求方式,查数据都用这个);
-
response.json():把API返回的内容转换成JSON格式,就像“整理好的字典”,方便我们提取需要的数据;
-
print():必须打印结果,AI才能读取到,然后返回给用户,这一步不能少;
-
try...except:捕获错误,比如网络不好、API地址写错,都会提示错误信息,不会让Skill直接崩溃,新手一定要加上。
步骤4:部署并测试Skill(30秒搞定)
和之前部署Skill的方法完全一样,不用额外操作:
-
把“quote-skill”文件夹,放到你的OpenClaw项目目录下的“skills”文件夹里(没有skills就新建一个);
-
重启OpenClaw会话(关闭再重新打开);
-
测试调用:输入“给我一句随机文案”,AI会自动调用quote-skill,返回类似这样的结果:
📝 随机文案:人生没有白走的路,每一步都算数。
✍️ 文案来源:未知
到这里,你就成功在Skill里调用了第三方API!是不是超级简单?第一次成功的时候,我特意多调用了几次,看着不同的文案弹出,成就感拉满~
四、进阶:API需要密钥(API Key)怎么办?
上面我们用的是免费公开API,不用密钥,但大部分实用API(比如高德地图、百度AI、开放天气)都需要API Key(密钥),用来验证身份,避免接口被滥用。
其实用法和免费API差不多,只是多了一步“传入密钥”,给大家一个标准写法(复制就能用),以“开放天气API”为例:
import requests
# 1. 配置API密钥和参数
API_KEY = "你的API密钥" # 替换成你自己的密钥
city = "北京" # 要查询的城市
# 2. API地址(带参数占位符)
api_url = "https://api.openweathermap.org/data/2.5/weather"
# 3. 传入参数(把密钥和城市名放进去)
params = {
"q": city, # 城市参数
"appid": API_KEY, # 密钥参数
"lang": "zh_cn", # 中文返回
"units": "metric" # 摄氏度
}
try:
response = requests.get(api_url, params=params, timeout=10)
data = response.json()
# 提取数据并打印(根据API返回的字段调整)
print(f"🌤️ {city} 实时天气:{data['weather'][0]['description']}")
print(f"温度:{data['main']['temp']}℃")
except Exception as e:
print(f"调用失败:{str(e)}")
重点提醒:API Key一定要妥善保存,不要泄露,最好不要直接写在脚本里(可以用环境变量,新手暂时先直接写,后续再优化)。
五、Skill调用API的3种常见方式(全掌握,应对所有场景)
不同的API,可能需要不同的请求方式,这里给大家总结3种最常用的方式,覆盖99%的场景,新手记好这3种,不管什么API都能搞定:
1. GET请求(最常用)
适用场景:查数据(天气、文案、热搜、快递),参数直接拼在URL里,或者用params传入,就像我们上面做的两个案例:
# 方式1:参数拼在URL里
requests.get("https://api.qinmingyu.com/api/weather?city=北京")
# 方式2:用params传入参数(更规范,推荐)
params = {"city": "北京"}
requests.get("https://api.qinmingyu.com/api/weather", params=params)
2. POST请求(提交数据)
适用场景:提交数据(比如发送消息、提交表单),参数放在请求体里,用法如下:
import requests
url = "https://xxx-api.com/submit"
data = {"name": "小明", "content": "测试内容"} # 要提交的数据
# 发送POST请求,传入JSON格式的数据
response = requests.post(url, json=data, timeout=10)
print(response.json())
3. 请求头带Token/Key(进阶)
适用场景:部分API会要求把密钥放在请求头里,而不是参数里,用法如下:
import requests
url = "https://xxx-api.com/data"
headers = {
"Authorization": "Bearer 你的Token", # 替换成你的Token/Key
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers, timeout=10)
print(response.json())
六、新手必看:4个避坑要点(我踩过的坑,你别再踩)
1. 忘记安装requests库:调用API时会报错“no module named requests”,解决方法:终端输入pip install requests,重新运行即可;
2. API地址写错:一定要复制完整的API地址,注意http和https的区别,写错会提示“请求失败”;
3. 没有捕获异常:网络不稳、API失效时,Skill会直接崩溃,一定要加上try...except,让错误信息更友好;
4. 忘记print结果:AI无法读取脚本的返回值,哪怕API调用成功,也不会返回给用户,这一步是新手最容易忘的!
七、总结:Skill调用API,本质就是“3步走”
其实不管是免费API、带密钥的API,还是不同的请求方式,核心逻辑都是一样的,总结下来就是3步:
-
导入requests库,准备好API地址和参数(密钥);
-
发送请求,获取API返回的数据;
-
提取需要的数据,用print输出,让AI能读取。
而且一个Skill里,完全可以调用多个API——比如做一个“全能工具Skill”,同时调用天气API、文案API、笑话API,只需要在脚本里加多个函数,用参数控制切换功能,和我们之前讲的Skill功能扩展完全一致。
更多推荐




所有评论(0)