Weather Query Skill
交互式天气查询工具,支持输入城市名称或选择预设城市查询实时天气信息。
功能特性
- ✅ 完全免费,无需API密钥
- ✅ 直接输入城市名称查询
- ✅ 选择预设热门城市查询
- ✅ 支持中国主要城市
- ✅ 支持全球城市查询
- ✅ 显示实时天气信息(温度、湿度、风速、天气状况等)
- ✅ 显示未来一周天气预报
- ✅ 支持中英文城市名称
- ✅ 显示天气图标和描述
工作流程
Step 1: 选择查询方式
第1步:选择查询方式
[1] ✍️ 直接输入城市名称
[2] 🏙️ 选择预设热门城市
Step 2: 输入/选择城市
- 直接输入: 键入城市名称(如:北京、Shanghai)
- 预设城市: 从热门城市列表中选择
Step 3: 获取天气数据
调用天气API获取实时天气信息。
Step 4: 显示天气信息
显示完整的天气信息,包括:
- 城市名称
- 天气状况
- 当前温度
- 最高温度
- 最低温度
- 体感温度
- 湿度
- 风速和风向
- 气压
- 未来一周天气预报
预设城市列表
支持以下预设城市(无需输入经纬度):
| 序号 | 城市名称 | 英文名称 | |------|----------|----------| | 1 | 北京 | Beijing | | 2 | 上海 | Shanghai | | 3 | 广州 | Guangzhou | | 4 | 深圳 | Shenzhen | | 5 | 杭州 | Hangzhou | | 6 | 成都 | Chengdu | | 7 | 武汉 | Wuhan | | 8 | 西安 | Xian | | 9 | 重庆 | Chongqing | | 10 | 南京 | Nanjing | | 11 | 天津 | Tianjin | | 12 | 苏州 | Suzhou | | 13 | 厦门 | Xiamen | | 14 | 青岛 | Qingdao | | 15 | 大连 | Dalian | | 16 | 宿迁 | Suqian |
支持直接输入任何城市名称(如:London, Tokyo等)进行查询。
依赖安装
pip install requests
直接运行脚本
python .opencode/skills/weather/scripts/weather_query.py
API说明
使用 Open-Meteo 免费天气API,无需注册,无需API密钥!
- 官网: https://open-meteo.com/
- 完全免费,无调用次数限制
- 支持全球城市天气查询
输出示例
========================================
实时天气信息
========================================
城市: 徐州
天气: 大部晴
当前温度: 23.0°C
最高温度: 25.0°C
最低温度: 18.7°C
体感温度: 23.0°C
湿度: N/A
风速: 0.4 km/h
风向: 北
气压: N/A
========================================
========================================
未来一周天气预报
========================================
今天 (2026-09-10): 阴 18.7°C ~ 25.0°C
明天 (2026-09-11): 小毛毛雨 17.6°C ~ 25.4°C
后天 (2026-09-12): 小毛毛雨 18.7°C ~ 24.4°C
周日 (2026-09-13): 中毛毛雨 19.8°C ~ 23.4°C
周一 (2026-09-14): 阴 17.3°C ~ 29.1°C
周二 (2026-09-15): 阴 17.2°C ~ 29.2°C
周三 (2026-09-16): 阴 17.9°C ~ 29.5°C
========================================
注意事项
- 需要联网使用
- 完全免费,无需API密钥
- 支持中国和全球主要城市
- 数据来自Open-Meteo开源天气服务
- 不同天气服务的数据可能存在差异,这是正常现象
验证
查询后检查:
- API响应是否正常
- 天气数据是否完整
- 城市名称是否正确识别
- 温度单位是否正确显示
测试
运行以下命令测试功能:
cd .opencode/skills/weather
python -c "from scripts.weather_query import WeatherQuery; w=WeatherQuery(); print(w.format_weather_display('北京', w.get_weather_by_coords(39.9042, 116.4074)))"
微信扫一扫