SuperAPI AI 工具集

gdelt-gkg-fetch

数据与分析

查看项目

更新于 10-16 03:57

技能介绍

用途

gdelt-gkg-fetch 用于抓取 GDELT 2.0 GKG 表导出文件(*.gkg.csv.zip),数据来源为官方公开端点。它专注于单一具体文件表:GKG。该技能保持原子操作,只做按需的解析与抓取,不包含内部调度器或轮询循环。

主要能力

  • 解析最新可用快照:通过 lastupdate.txt。
  • 解析历史快照:通过 masterfilelist.txt,支持指定 UTC 时间范围。
  • 持久化下载的文件,并返回机器可读的 JSON 清单。
  • 运行时可观测:结构化日志,并可选写入日志文件。

使用方式

需要配置环境变量(参见 references/env.md),可从 assets/config.example.env 开始。加载环境变量:

set -a
source assets/config.example.env
set +a

工作流程示例:

  1. 校验有效配置:
python3 scripts/gdelt_gkg_fetch.py check-config --pretty
  1. 查看最新可用 GKG 快照:
python3 scripts/gdelt_gkg_fetch.py resolve-latest --pretty
  1. 下载前先对历史范围选择做 dry-run:
python3 scripts/gdelt_gkg_fetch.py fetch \
  --mode range \
  --start-datetime 20260301000000 \
  --end-datetime 20260301120000 \
  --max-files 3 \
  --dry-run \
  --pretty
  1. 带传输与结构验证地抓取文件:
python3 scripts/gdelt_gkg_fetch.py fetch \
  --mode latest \
  --max-files 1 \
  --output-dir ./data/gdelt-gkg \
  --preview-lines 2 \
  --validate-structure \
  --expected-columns 27 \
  --quarantine-dir ./data/gdelt-gkg-quarantine \
  --log-level INFO \
  --log-file ./logs/gdelt-gkg-fetch.log \
  --pretty

内置健壮性

  • 对瞬时 HTTP/网络失败应用带指数退避的重试。
  • 对可重试响应,遵循响应中的 Retry-After。
  • 通过设置请求之间的最小间隔来限流。
  • 强制执行 --max-files 安全上限(GDELT_MAX_FILES_PER_RUN),防止意外批量拉取。
  • 在远程调用前校验日期时间格式与范围边界。
  • 下载后执行传输与结构验证:
    • ZIP CRC/完整性检查
    • UTF-8 严格解码检查
    • 制表符列数检查(默认 27)
    • 可选的坏行问题隔离(--quarantine-dir)
  • 输出 JSON 结果,同时把运行日志写入 stderr 和可选日志文件。

范围决策

  • 仅保留一个具体文件表抓取实现:GKG(*.gkg.csv.zip)。
  • 仅保留原子操作;不添加内部调度/轮询循环。

参考文件

  • references/gdelt-data-sources.md
  • references/gdelt-limitations.md
  • references/gdelt-schema.md
  • references/env.md
  • references/openclaw-chaining-templates.md

脚本

scripts/gdelt_gkg_fetch.py

OpenClaw 调用兼容性

  • 技能触发元数据保留在 name、description 和 agents/openai.yaml 中。
  • 在提示词中用 $gdelt-gkg-fetch 调用。
  • 保持技能原子化:仅按需解析/抓取。
  • 使用脚本参数设置抓取条件(--mode range --start-datetime --end-datetime)。
  • 如需轮询,由 OpenClaw 在外部编排重复调用,而不是在该技能内部。

OpenClaw 提示词模板

以下模板可直接在 OpenClaw 中使用,只需替换方括号占位符。

侦察(最新可用性):

Use $gdelt-gkg-fetch.
Run:
python3 scripts/gdelt_gkg_fetch.py resolve-latest --pretty
Return only the JSON result.

抓取(历史窗口,先 dry-run):

Use $gdelt-gkg-fetch.
Run:
python3 scripts/gdelt_gkg_fetch.py fetch \
  --mode range \
  --start-datetime [YYYYMMDDHHMMSS] \
  --end-datetime [YYYYMMDDHHMMSS] \
  --max-files [N] \
  --dry-run \
  --pretty

随后不带 --dry-run 运行,使用:

  --output-dir [OUTPUT_DIR]
  --validate-structure
  --expected-columns 27
  --quarantine-dir [QUARANTINE_DIR]
Return only the JSON result.

验证(下载质量门):

Use $gdelt-gkg-fetch.
Run:
python3 scripts/gdelt_gkg_fetch.py fetch \
  --mode latest \
  --max-files 1 \
  --output-dir [OUTPUT_DIR] \
  --validate-structure \
  --expected-columns 27 \
  --quarantine-dir [QUARANTINE_DIR] \
  --pretty
Check validation.issue_count, decode_error_count, column_mismatch_count.
Return JSON plus one-line pass/fail verdict.

适用场景

适用于需要按需获取 GDELT 2.0 GKG 数据的任务,无论是获取最新快照,还是按 UTC 时间范围获取历史快照。

限制

该技能不包含内部调度或轮询循环,如需轮询需由外部编排重复调用。有关 GDELT 数据源与限制的更多信息参见 references/gdelt-data-sources.md 和 references/gdelt-limitations.md。其他具体收费、价格、平台限制等细节暂未提供。