OpenViking
基于OpenViking的RAG系统,支持文档查询、知识管理与向量检索。
基于 Open-Meteo API 实现无密钥天气查询,支持全球城市定位与7天预报。
openclaw skills install @deiu/open-meteo-weather命令、参数、文件名以原文为准
获取任意位置的实时天气状况和未来 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}¤t=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 |
默认使用公制单位。在会话中首次请求天气信息时,询问用户:“您更喜欢摄氏度还是华氏度?”并记住用户的偏好,用于整个会话。
&temperature_unit=fahrenheit&wind_speed_unit=mph&precipitation_unit=inch响应中的 current_units 和 daily_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_2m | 2 米高度处的气温 |
current.apparent_temperature | 体感温度(风寒 / 热指数) |
current.relative_humidity_2m | 相对湿度百分比 |
current.weather_code | WMO 天气代码(见下方天气代码说明) |
current.wind_speed_10m | 10 米高度处的风速 |
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)。
在请求中包含 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 状态码,或无法解析响应,请告知用户天气服务暂时不可用,并建议几分钟后重试。不要显示原始错误信息或状态码。
已收录 1 个 Skill