用途
Open-Meteo Flood Fetch 的核心目标是为一个或多个坐标获取 Open-Meteo 洪水数据。它支持包含首尾日期的 start_date 与 end_date 时间窗口,返回机器可读的 JSON,其中包含请求元数据、传输信息、校验摘要和规范化记录,并通过结构化日志和可选日志文件输出保持运行时可观测。
主要能力
- 单次调用支持多个坐标(通过重复 --location 参数)。
- 支持 inclusive 的 start_date 与 end_date 日期窗口。
- 返回 JSON,包含请求元数据、传输信息、校验摘要与规范化记录。
- 结构化日志,支持可选日志文件输出。
- 内置健壮性:对瞬时 HTTP 与网络失败进行指数退避重试;在存在 Retry-After 时予以遵守,超过配置上限则快速失败;通过最小请求间隔进行限流。
- 远程调用前执行安全上限检查:最大坐标数、最大日期跨度、最大每日变量数。
- 传输校验:HTTP 状态处理、JSON content-type、UTF-8 严格解码、JSON 解析。
- 结构校验:响应对象/列表形状、daily 与 daily_units 是否存在、时间轴可解析性与范围检查、请求变量是否存在且数组长度对齐、启用 --ensemble 时可选集合成员字段对齐。
使用方式
环境配置
通过环境变量配置运行时(参见 references/env.md),从 assets/config.example.env 开始。运行命令前加载环境变量:
set -a
source assets/config.example.env
set +a
工作流
- 校验有效配置:
python3 scripts/open_meteo_flood_fetch.py check-config --pretty
- 先对请求计划做 dry-run:
python3 scripts/open_meteo_flood_fetch.py fetch \
--location 52.52,13.41 \
--start-date 2026-03-01 \
--end-date 2026-03-05 \
--daily-var river_discharge \
--timezone GMT \
--dry-run \
--pretty
- 带校验与运行日志执行抓取:
python3 scripts/open_meteo_flood_fetch.py fetch \
--location 52.52,13.41 \
--location 48.85,2.35 \
--start-date 2026-03-01 \
--end-date 2026-03-05 \
--daily-var river_discharge \
--daily-var river_discharge_p75 \
--ensemble \
--cell-selection nearest \
--timezone GMT \
--output ./data/open-meteo/open-meteo-flood-fetch.json \
--log-level INFO \
--log-file ./logs/open-meteo-flood-fetch.log \
--pretty
OpenClaw 调用兼容性
- 触发元数据保留在 name、description 和 agents/openai.yaml 中。
- 使用 $open-meteo-flood-fetch 调用。
- 调用保持原子化,并通过以下参数化:--location、--start-date、--end-date、--daily-var、--ensemble、--cell-selection。
- 周期性任务应使用 OpenClaw 编排,而非本脚本。
OpenClaw 提示模板
可直接在 OpenClaw 中使用以下模板,仅替换方括号占位符。
侦察(dry-run):
Use $open-meteo-flood-fetch.
Run:
python3 scripts/open_meteo_flood_fetch.py fetch \
--location [LATITUDE,LONGITUDE] \
--start-date [YYYY-MM-DD] \
--end-date [YYYY-MM-DD] \
--daily-var river_discharge \
--timezone GMT \
--dry-run \
--pretty
Return only the JSON result.
抓取(洪水验证窗口):
Use $open-meteo-flood-fetch.
Run:
python3 scripts/open_meteo_flood_fetch.py fetch \
--location [LATITUDE,LONGITUDE] \
--start-date [YYYY-MM-DD] \
--end-date [YYYY-MM-DD] \
--daily-var river_discharge \
--daily-var river_discharge_p75 \
--ensemble \
--cell-selection nearest \
--timezone GMT \
--pretty
Return only the JSON result.
校验(质量门):
Use $open-meteo-flood-fetch.
Run:
python3 scripts/open_meteo_flood_fetch.py fetch \
--location [LATITUDE,LONGITUDE] \
--start-date [YYYY-MM-DD] \
--end-date [YYYY-MM-DD] \
--daily-var river_discharge \
--timezone GMT \
--pretty
Check validation_summary.total_issue_count and validation_summary.ok.
Return JSON plus one-line pass/fail verdict.
适用场景
- 需要为指定坐标与日期窗口获取 Open-Meteo 每日河流流量数据的场景。
- 需要机器可读 JSON 输出并附带校验摘要的自动化流程。
- 需要重试、限流与详细日志的可观测抓取任务。
- 作为更大编排流程中的原子抓取步骤,由 OpenClaw 等外部工具负责周期性调用。
限制
- 仅针对 Open-Meteo 洪水端点,保持单一原子抓取实现。
- 不包含告警阈值、地理编码、轮询循环或洪水解释逻辑。
- 如需周期性执行,需由 OpenClaw 等外部编排重复调用。
- 具体收费、价格、平台支持范围等信息暂未提供。
参考资料
- references/env.md
- references/open-meteo-flood-api-notes.md
- references/open-meteo-flood-limitations.md
- references/openclaw-chaining-templates.md
- scripts/open_meteo_flood_fetch.py