| name | authoritative-data-harvester |
| description | 自动定位并获取权威公开数据(优先API/官方批量下载),输出可复现抓取与清洗方案。Invoke when用户需要权威数据、官方统计、API下载或数据源爬取。 |
权威数据自动获取(Authoritative Data Harvester)
全局流程协作约束(长对话防漂移)
- 本 skill 不得作为孤立入口。用户要求完整论文、生成 Word、继续流程或不确定阶段时,先回到
paper-workflow-orchestrator 判断当前 S0-S8 阶段。
- 启动或继续本 skill 的正式任务前,必须运行:
python .claude/skills/paper-workflow-orchestrator/scripts/workflow_guard.py --skill authoritative-data-harvester
- 如果输出
[WORKFLOW FAIL] 或报告 status != "PASS",停止本 skill,按 paper_output/qa/workflow_guard_report.json 的失败项回补前置阶段,不得凭记忆继续。
- 本 skill 只写入自己契约范围内的
paper_output/ 产物;完成后必须回到 paper-workflow-orchestrator 判断下一步,并用 context-memory-keeper 记录已完成产物、阻塞项和下一步。
- 长对话中如果上下文变长、阶段不确定或用户分开调用 skill,先运行:
python .claude/skills/paper-workflow-orchestrator/scripts/workflow_guard.py --status
再读取 paper_output/qa/workflow_guard_report.json、paper_output/preflight_report.json、paper_output/input_manifest.json、paper_output/results/run_manifest.json 和本 skill 的上游 JSON 契约,按报告里的 recommended_skill 与 next_action 继续。
- 继续流程前,必须把
paper_output/context/workflow_memory.json 视为长期断点记录;若其中的 current_step、next_step、recommended_skill 与 workflow_guard.py --status 不一致,以 guard 报告为准。
- 每次完成本 skill 的产物后,先回到
paper-workflow-orchestrator 或运行 workflow_guard.py --status,再更新 workflow memory:
python .claude/skills/context-memory-keeper/scripts/update_workflow_memory.py
更新后读取 paper_output/context/workflow_memory.json / .md,确认下一步和推荐 skill 已记录。
执行契约
- 上游输入:用户给出的变量需求,或
paper_output/step1/problem_analysis.json、paper_output/plan/model_route.json 中识别出的外部数据需求。
- 必须输出:可复现的数据源说明、抓取或下载方案,并将原始/处理后数据与来源信息保存到
crawled_data/,优先包含 crawled_data/sources.json。
- 下游交接:
data-cleaning-and-visualization 读取 crawled_data/ 做统一清洗、图表计划和论文级配图。
- 推荐下一步:数据落盘后进入
data-cleaning-and-visualization;完整论文目标应回到 paper-workflow-orchestrator 判断后续阶段。
- 失败回退:若无法自动获取,应给出同级权威替代源、口径差异和人工下载路径;不得使用无来源或不可引用的数据冒充权威数据。
目标
在数学建模任务中,快速找到“权威、可引用、可复现”的公开数据源,并以尽量不爬网页、优先 API/批量下载的方式获取数据,最终输出:
- 数据获取脚本/方案(含链接、参数、时间范围、字段解释)
- 原始数据与清洗后的数据(CSV/Parquet)
- 数据字典与引用信息(来源、更新时间、许可证/条款、访问日期)
何时调用
- 需要权威/官方数据源(统计局、国际组织、政府开放数据)
- 需要可复现的数据抓取流程(接口参数固定、可重复运行)
- 已有变量清单但缺数据,或需要补充替代指标
总原则(必须遵守)
- 优先使用官方 API 或 Bulk Download,最后才做 HTML 解析。
- 遵守 robots.txt 与服务条款,尊重速率限制;不得绕过登录/付费/验证码。
- 全流程可复现:记录来源 URL、接口参数、访问日期、版本/更新时间、字段含义与单位。
- 数据质量优先:对齐口径、单位、频率、地理范围;明确缺失与异常处理策略。
标准工作流(每次执行都按此输出)
1) 需求归一化
输出“数据需求表”,至少包含:
- 变量名(中英)、单位、期望频率(日/月/年)、时间范围
- 地区粒度(国家/省/市/网格)与口径说明
- 允许替代指标(主指标不可得时)
2) 选源策略(先权威后便利)
按任务类型优先匹配:
- 宏观/发展:World Bank、IMF、OECD、UNData
- 人口/社会:UN DESA、World Bank、各国统计局/人口普查
- 公共卫生:WHO(必要时补充二次聚合源并标注来源链)
- 气象/气候:NOAA、NASA(按开放政策选择)
- 欧盟统计:Eurostat
- 中国:国家统计局、部委开放数据、地方统计局(优先可下载/接口)
3) 访问方式决策树
- 有官方 API:直接 API
- 无 API 但有批量下载(CSV/Excel/ZIP):直链下载
- 仅网页表格:优先找页面背后的 XHR/JSON;仍不行再做 HTML 解析
4) 抓取实现规范
交付脚本必须具备:
- 参数化:start/end、region、indicator、output_dir
- 稳健性:重试(指数退避)、超时、速率限制、缓存/断点
- 落盘:raw/ 与 processed/ 分目录;保留原始响应或原始文件
- 日志:只记录必要信息,不输出敏感信息
5) 清洗与校验(最低要求)
- 字段:统一命名(snake_case)、类型转换、单位换算、时间索引对齐
- 缺失:说明缺失原因(不可得/断档/口径变化),给出处理策略
- 异常:基本规则校验(范围、同比/环比跳变阈值)
- 抽检:与来源页面/元数据对照样本行
6) 交付物清单(必须输出)
- 数据文件:raw.*、processed.csv(或 parquet)
- 元数据:sources.json(name/url/access_method/params/license/updated_at/accessed_at)
- 数据字典:字段含义、单位、频率、地区粒度、缺失策略
- 引用格式:可直接用于论文/报告的参考条目
常用权威数据源(可扩展)
- World Bank Data API
- IMF Data
- UNData / UN agencies
- OECD Data
- Eurostat
- WHO
- NOAA / NASA
- 各国统计局与政府开放数据平台
用户输入模板(用于快速启动)
- “我要做【主题】建模,变量有【A,B,C】;时间【YYYY-YYYY】;地区【国家/省/市】;请给权威来源与可复现的数据获取脚本+清洗结果。”
- “我需要【某指标】的官方数据,优先 API,没有就批量下载;请输出 sources.json + processed.csv。”
失败回退策略
当某源不可用/受限:
- 换同级权威源(例如 UN ↔ World Bank ↔ OECD)
- 换替代指标并明确口径差异
- 仅交付最权威的可下载版本,并说明无法自动化获取原因
目录约定(与项目全局对齐)
- 原始下载与接口响应建议保存到:
crawled_data/raw/。
- 清洗后的结构化数据建议保存到:
crawled_data/processed/。
- 来源与可复现信息建议保存为:
crawled_data/sources.json(包含 url、参数、访问日期、许可证/条款)。
前后衔接
- 后续通常先做:
data-cleaning-and-visualization(把 crawled_data/ 里的数据统一清洗并出图)。
- 若要继续到论文草稿:回到
paper-workflow-orchestrator。
约束(必须遵守)
- Memory Interaction (必做):
- 获取数据后:必须调用
context-memory-keeper,记录“新增数据源名称”与“存放路径”到 Short-term Workbench。
- 本技能只负责“把权威数据拿到手并保证可复现”,不负责直接写论文正文;产物必须落盘到
crawled_data/。
- 若数据要进入论文,必须同时满足两点:
crawled_data/sources.json 中记录可引用来源信息。
- 后续调用
data-cleaning-and-visualization,把数据清洗并生成 paper_output/figures/ 的证据图表。