Accurate weather forecasts using Open-Meto API (no key required)

基于 Open-Meteo API 实现无密钥天气查询,支持全球城市定位与7天预报。

已扫描
适合谁
需要快速查天气的普通用户、办公自动化需求者
不适合谁
需要高精度商业气象数据的用户、对网络依赖有严格限制的环境
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @deiu/open-meteo-weather

Skill 说明

命令、参数、文件名以原文为准

Open-Meteo 天气

获取任意位置的实时天气状况和未来 7 天每日预报。使用免费的 Open-Meteo API,内置地理编码功能。无需 API 密钥、无需身份验证,非商业用途无速率限制。

快速参考

操作端点
将城市名称转换为经纬度GET https://geocoding-api.open-meteo.com/v1/search?name={city}&count=1&language=en
实时 + 7 天预报GET https://api.open-meteo.com/v1/forecast?latitude={lat}&longitude={lon}&current=temperature_2m,relative_humidity_2m,apparent_temperature,weather_code,wind_speed_10m,wind_direction_10m,precipitation&daily=temperature_2m_max,temperature_2m_min,precipitation_sum,precipitation_probability_max,sunrise,sunset,wind_speed_10m_max,weather_code&timezone=auto

单位设置

默认使用公制单位。在会话中首次请求天气信息时,询问用户:“您更喜欢摄氏度还是华氏度?”并记住用户的偏好,用于整个会话。

  • 使用公制(默认):无需额外参数。
  • 使用英制:在预报 URL 后添加以下参数:
&temperature_unit=fahrenheit&wind_speed_unit=mph&precipitation_unit=inch

响应中的 current_unitsdaily_units 对象会反映所选的单位系统。

地理编码

在调用预报 API 前,需将城市名称解析为纬度和经度。

端点: GET https://geocoding-api.open-meteo.com/v1/search

参数是否必需描述
name城市名称(最少 2 个字符)
count返回结果数量(默认 10,最大 100)。使用 1 可获得最佳匹配
language响应语言(默认为 en

示例:

curl "https://geocoding-api.open-meteo.com/v1/search?name=Berlin&count=1&language=en"

从响应中提取:

字段描述
results[0].latitude纬度(WGS84)
results[0].longitude经度(WGS84)
results[0].name解析后的城市名称
results[0].country国家名称
results[0].admin1省份/州

如果 results 为空或缺失,请告知用户该位置未找到,并请其提供更具体的名称。

若多个城市同名,请使用 count=5 并列出选项(名称、省/州、国家),让用户选择正确的城市。

实时天气状况

在预报请求中包含 current 参数。

请求参数:

current=temperature_2m,relative_humidity_2m,apparent_temperature,weather_code,wind_speed_10m,wind_direction_10m,precipitation

响应字段:

字段描述
current.temperature_2m2 米高度处的气温
current.apparent_temperature体感温度(风寒 / 热指数)
current.relative_humidity_2m相对湿度百分比
current.weather_codeWMO 天气代码(见下方天气代码说明)
current.wind_speed_10m10 米高度处的风速
current.wind_direction_10m风向(度数)
current.precipitation过去一小时内的降水量

单位由 current_units 对象定义。呈现数值时始终包含单位。

wind_direction_10m 的度数转换为最近的方位:

N(338–22)、NE(23–67)、E(68–112)、SE(113–157)、S(158–202)、SW(203–247)、W(248–292)、NW(293–337)。

未来 7 天预报

在请求中包含 daily 参数。始终添加 timezone=auto,以确保时间显示为当地时区。

请求参数:

daily=temperature_2m_max,temperature_2m_min,precipitation_sum,precipitation_probability_max,sunrise,sunset,wind_speed_10m_max,weather_code&timezone=auto

所有 daily 字段均为按天索引的数组。daily.time 包含日期字符串(格式为 YYYY-MM-DD)。

字段描述
daily.time[i]日期
daily.weather_code[i]当日的 WMO 天气代码
daily.temperature_2m_max[i]日最高气温
daily.temperature_2m_min[i]日最低气温
daily.precipitation_sum[i]总降水量
daily.precipitation_probability_max[i]最高降水概率(%)
daily.sunrise[i]日出时间(ISO 8601 格式,本地时间)
daily.sunset[i]日落时间(ISO 8601 格式,本地时间)
daily.wind_speed_10m_max[i]最大风速

天气代码

weather_code 字段返回的 WMO 天气解释代码:

代码描述
0晴空
1大部分晴朗
2部分多云
3全天阴云
45
48积霜雾
51轻微毛毛雨
53中等毛毛雨
55浓密毛毛雨
56轻微冻毛毛雨
57浓密冻毛毛雨
61小雨
63中雨
65大雨
66轻微冻雨
67大量冻雨
71小雪
73中雪
75大雪
77雪粒
80小阵雨
81中等阵雨
82强烈阵雨
85小雪阵雨
86强烈雪阵雨
95雷暴
96伴有轻微冰雹的雷暴
99伴有大量冰雹的雷暴

向用户展示天气时,请使用描述文字,不要显示数字代码。

响应格式化

提供简洁摘要。不要显示原始 JSON、API 地址或技术细节。

实时天气格式:

{城市}, {国家} 的天气
{天气描述},{温度}(体感温度 {体感温度})
湿度:{湿度}%
风速:{风速},来自 {风向}
降水量:{降水量}

预报格式:

在显示实时天气后,以紧凑列表形式展示未来 7 天预报,每天一行:

周一 2月24日:部分多云,8/3℃,10% 降水概率,风速 15 km/h
周二 2月25日:降雨,6/2℃,80% 降水概率,降水量 4.2mm,风速 25 km/h

当用户提出具体问题(如“明天会下雨吗?”、“周五的气温是多少?”)时,直接回答问题,无需展示完整预报。

错误处理

如果任何 API 调用返回非 200 状态码,或无法解析响应,请告知用户天气服务暂时不可用,并建议几分钟后重试。不要显示原始错误信息或状态码。

D
@deiu

已收录 1 个 Skill

相关推荐