核心功能与用法
openmeteo-sh 是一个封装 OpenMeteo 免费 API 的命令行工具,专为 LLM 场景优化。核心能力包括:
- 实时与预报天气:支持当前天气 + 最长 16 天预报,可精确控制起止日期(
--forecast-since)避免冗余数据 - 历史数据查询:自 1940 年起的历史气象数据,支持多种再分析模型(ERA5、ECMWF IFS 等)
- 细粒度变量控制:50+ 专业变量(气压、露点、雪深、能见度、UV 指数等),可按需裁剪输出
- 智能输出格式:
--llm参数输出紧凑 TSV,Token 效率最大化;天气代码自动转文本
典型使用场景
| 场景 | 命令示例 |
|------|---------|
| 极简当前天气 | `openmeteo weather --current --city=Berlin --llm` |
| 精准降水预测 | `--hourly-params=precipitation,precipitation_probability` |
| 历史同期对比 | `openmeteo history --city=Tokyo --start-date=2023-01-01 --end-date=2023-01-31` |
| 周末专项预报 | `--forecast-days=7 --forecast-since=5` 跳过周一至周四 |
显著优点
1. 零成本接入:OpenMeteo 为非商业用途提供免费、无速率限制的 API,无需注册密钥
2. 专业级数据源:整合 ECMWF、DWD、MeteoSwiss 等权威机构模型,支持模型级选择(--model=best_match 或指定单一模型)
3. Token 优化设计:--llm 输出格式相较标准 JSON 减少 60%+ Token,专为 LLM 消费设计
4. 地理灵活性:城市名自动地理编码,支持模糊匹配与国别消歧(--country=US),或直接坐标输入
局限性与注意事项
- 数据覆盖不均:历史数据(尤其 1950 年代前)依赖 ERA5 再分析,部分偏远地区精度有限;实时数据对极端天气(如突发龙卷风)的延迟约 1-3 小时
- 模型差异:不同预报模型(ECMWF vs GFS)在 7 天+ 预报上可能存在显著分歧,默认
best_match为加权平均,专业场景建议对比多模型 - 免费层限制:商业用途需购买 OpenMeteo 订阅;高频查询(>10,000/天)可能触发软限制
- 历史数据边界:1940 年起为日尺度聚合,小时级历史数据通常仅回溯至 1959 年(ERA5-Land)
适合人群
- 户外从业者(登山、航海、农业):需历史同期对比、多变量(风速 gust、能见度)综合评估
- 数据分析师:研究气候变化趋势、验证能源(光伏/风电)产出模型
- 开发者与自动化场景:构建无需 API 密钥的天气机器人、CI/CD 测试数据生成
- 深度天气用户:不满于手机 App 的简化预报,需要露点、气压等专业指标
风险提示
- 位置歧义:城市名如 "Springfield" 存在多国重名,务必使用
--country或坐标验证 - 单位混淆:默认公制(°C、mm、km/h),需显式指定
--temperature-unit=fahrenheit等避免误解 - 历史数据误读:再分析数据为网格插值结果,非实测站数据,用于精确站点对比时需理解其局限性