OpenClaw 天气查询技能开发实录
背景
2026 年 3 月 6 日,我在 OpenClaw Control UI 中向我的 AI 助手提出了一个需求:帮我开发一个获取天气信息的 Skills,主要使用 Open-Meteo API。
这篇文章完整记录了从需求提出到最终实现的整个开发过程,包括技能设计、API 集成、定时任务配置等细节。
需求分析
初始需求
帮我开发一个获取天气信息的 skills,主要使用 https://open-meteo.com/en/docs
核心需求:
- 查询实时天气信息
- 支持天气预报
- 使用 Open-Meteo 免费 API(无需 API key)
- 中文输出
扩展需求
在开发过程中,逐步添加了以下功能:
- 当日最高/最低温度显示
- 每天早上 8:20 自动推送上海天气到 Telegram
- 使用 OpenClaw 原生 cron 定时任务
技能开发过程
1. 初始化技能结构
使用 OpenClaw 提供的技能创建工具:
1 | python3 ~/.npm-global/lib/node_modules/openclaw/skills/skill-creator/scripts/init_skill.py weather \ |
生成的目录结构:
1 | weather/ |
2. 研究 Open-Meteo API
Open-Meteo 是一个免费的开源天气 API,主要特点:
- 无需 API key(非商业用途)
- 全球覆盖
- 支持当前天气 + 7-16 天预报
- 小时级数据
核心 API 端点:
1 | https://api.open-meteo.com/v1/forecast? |
3. 编写核心脚本
创建 scripts/get_weather.py,主要功能:
1 | #!/usr/bin/env python3 |
4. 编写技能文档
SKILL.md 包含:
- 技能描述和触发条件
- 使用示例和参数说明
- 常见城市坐标表
- WMO 天气代码详解
- 输出格式建议
5. 准备参考资料
城市坐标表 (references/city-coordinates.md)
收录 80+ 主要城市的经纬度:
| 城市 | 纬度 | 经度 |
|---|---|---|
| 北京 | 39.9042 | 116.4074 |
| 上海 | 31.2304 | 121.4737 |
| 纽约 | 40.7128 | -74.0060 |
| 东京 | 35.6762 | 139.6503 |
天气代码表 (references/weather-codes.md)
WMO 标准天气代码详解,从 0(晴空)到 99(雷暴伴大冰雹)。
功能迭代
迭代 1:添加当日温度范围
用户反馈:
“当前天气”中再帮我加一个指标,当日最高温度和最低温度
修改 format_weather() 函数:
1 | # 添加今日温度范围 |
输出效果:
1 | 📍 上海 |
迭代 2:创建推送脚本
编写 scripts/daily_weather_push.sh:
1 |
|
定时任务配置
方案对比
| 方案 | 优点 | 缺点 |
|---|---|---|
| OpenClaw Cron | 控制面板可见、会话集成、推送渠道原生支持 | 依赖 Gateway |
| systemd timer | 系统级、独立运行 | 不可见、配置复杂 |
| Linux cron | 简单直接 | 无集成、难管理 |
用户偏好:优先使用 OpenClaw 原生 cron
创建 OpenClaw Cron 任务
1 | openclaw cron add \ |
任务配置:
- Cron 表达式:
20 8 * * *(每天早上 8:20) - 时区: Asia/Shanghai
- 执行模式: isolated(独立会话)
- 推送渠道: Telegram
- 任务 ID:
32cf4d06-28ae-4aac-abc8-f9b9b26f410a
管理命令
1 | # 查看任务 |
最终效果
技能打包
1 | python3 ~/.npm-global/lib/node_modules/openclaw/skills/skill-creator/scripts/package_skill.py \ |
生成:weather.skill (9.1 KB)
推送消息示例
1 | 📍 上海 天气日报 |
经验总结
技能设计原则
- 简洁优先 - SKILL.md 保持精简,详细资料放入 references
- 渐进式加载 - 元数据始终加载,正文触发后加载,参考资料按需加载
- 可复用性 - 脚本设计支持参数化,方便不同场景调用
Open-Meteo API 使用技巧
- 坐标精度 - 小数点后 4 位足够(约 10 米精度)
- 时区处理 - 使用
timezone=auto自动返回本地时间 - 速率限制 - 免费用户约 10,000 次/天,足够个人使用
OpenClaw Cron 最佳实践
- isolated 模式 - 避免污染主会话历史
- announce 推送 - 直接发送到目标渠道,无需额外消息工具
- lightContext - 简单任务可启用轻量级上下文
文件清单
1 | ~/.openclaw/workspace/skills/weather/ |
后续优化方向
- 多城市支持 - 允许用户配置多个关注城市
- 天气预警 - 集成极端天气警报服务
- 历史数据 - 使用 Open-Meteo Historical API
- 语音播报 - 结合 TTS 生成天气语音简报
参考链接
本文记录了完整的 AI 辅助技能开发流程,从需求分析到最终部署,展示了 OpenClaw 技能开发的最佳实践。