用途:从 GDELT 2.0 官方公开端点抓取 Global Mentions 表导出文件(*.mentions.CSV.zip)。它可通过 lastupdate.txt 解析最新可用快照,通过 masterfilelist.txt 解析 UTC 时间范围内的历史快照,持久化下载文件并返回机器可读的 JSON 清单,同时以结构化日志保持运行可观测。
主要能力:下载带传输与结构校验;对瞬时 HTTP/网络失败执行指数退避重试,存在 Retry-After 时予以遵循;按最小间隔限流;用 --max-files 安全上限防止意外批量抓取;下载后做 ZIP CRC/完整性、UTF-8 严格解码、制表符列数(默认 16 列)校验,并可将坏行隔离到 --quarantine-dir。
必要用法:先从 assets/config.example.env 配置环境变量,运行前加载:set -a; source assets/config.example.env; set +a。校验配置:python3 scripts/gdelt_mentions_fetch.py check-config --pretty。查看最新快照:python3 scripts/gdelt_mentions_fetch.py resolve-latest --pretty。历史范围先 dry-run:python3 scripts/gdelt_mentions_fetch.py fetch --mode range --start-datetime 20260301000000 --end-datetime 20260301120000 --max-files 3 --dry-run --pretty。正式抓取:python3 scripts/gdelt_mentions_fetch.py fetch --mode latest --max-files 1 --output-dir ./data/gdelt-mentions --preview-lines 2 --validate-structure --expected-columns 16 --quarantine-dir ./data/gdelt-mentions-quarantine --log-level INFO --log-file ./logs/gdelt-mentions-fetch.log --pretty。在提示中用 $gdelt-mentions-fetch 调用。
范围与限制:仅保留一个具体文件表抓取实现(Global Mentions)。仅做原子操作,不含内部调度/轮询循环;如需轮询,应由 OpenClaw 在外部编排重复调用。脚本参数用于抓取条件(--mode range --start-datetime --end-datetime)。运行前校验日期时间格式与范围边界。参考文档见 references 下的 gdelt-data-sources.md、gdelt-limitations.md、gdelt-schema.md、env.md、openclaw-chaining-templates.md;脚本为 scripts/gdelt_mentions_fetch.py。