Install
openclaw skills install @miaoshou.dev/cdc-dataLocate, verify, optionally download, and extract five official China CDC report types: China influenza weekly reports, acute respiratory infectious-disease sentinel weekly reports, national COVID-19 monthly updates, global infectious-disease event risk assessments, and China key-infectious-disease/p
openclaw skills install @miaoshou.dev/cdc-dataLocate one official report, verify its identity and carrier, then perform only the action the user requested.
Users can ask Codex:
For a precise request, use this template:
查找 {year} 年第 {week} 周中国 CDC 流感周报,并返回:
- 官方页面 URL
- PDF URL
- 年份、周次、期号
- 本地下载路径(如果已下载)
https://www.chinacdc.cn/.vision > extract > download > locate; default to locate.Read references/source-registry.md, select one source, then read only its linked adapter.
influenza_weeklyrespiratory_weeklycovid_monthlyglobal_infectious_risk_monthlychina_public_health_risk_monthlyIf the type remains ambiguous, return the matching choices. Only influenza supports issue-number lookup.
| Carrier | Reports | Locate result |
|---|---|---|
html_with_pdf | influenza | detail page and PDF |
html | respiratory, COVID-19 | detail page |
pdf | global risk, China risk | direct PDF |
For HTML-only reports, do not search for or create a PDF.
references/matching-rules.mdreferences/report-schema.mdreferences/output-schema.md and references/artifact-schema.mdreferences/pdf-extraction-rules.mdreferences/vision-task-rules.mdreferences/metric-schema.mdreferences/source-schema.mdNormalize applicable fields:
report_type, year, week, month, issue_number, publish_date,
reference_date, latest, action, output_format
latest, inspect all valid records on the first list page; prefer highest issue for influenza, otherwise reporting period then publication date.not_found only after a complete healthy search; technical failures are not absence.Before using PDF extraction, install the bundled Python dependency with the same interpreter that will run the extractor:
python3 -m pip install -r requirements.txt
HTML-only extraction, locating, and downloading do not require pdfplumber.
If it is missing, PDF extraction stops before downloading the document and
prints an installation command for the active Python interpreter.
For locate, download, and native extract, prefer the single-process runner:
python3 scripts/fetch_report.py \
--report-type <id> (--latest | --year <year> (--week <week> | --month <month>)) \
[--issue <issue>] --action <locate|download|extract>
It keeps one browser-session lifecycle, routes HTML and PDF carriers without unneeded work, reuses valid extraction artifacts, manages extract-only PDFs in an automatically cleaned temporary directory, and prints only a compact result. The verification and fallback requirements below still apply.
index_url; assert the final host, allowed path, and index_marker.title_pattern.下一页, 尾页, or numeric links), tracking visited canonical URLs. Search at most eight list pages.latest.If browser startup, navigation, timeout, final URL, marker, or carrier verification fails, record the failed assertion and use ordinary HTTP only as a read-only page-access fallback. Apply the same host, path, title, content-type, and nonempty-body checks. Never learn or persist a replacement route.
For html_with_pdf, verify the detail heading and at least one allowed official PDF link. For html, verify the detail heading and set document_url=null. For pdf, verify the list title and direct allowed PDF URL, set detail_url=null, and use the index URL as Referer.
Save a PDF only when the user explicitly requests a download. Transfer verified bytes only with:
python3 scripts/download_official_document.py \
--url <verified-pdf-url> \
--referer <verified-detail-or-index-url> \
--allowed-path-prefix <adapter-prefix> \
--report-type <id> --year <year> (--week <week> | --month <month>) \
[--issue <issue>] --output-dir <artifact-directory>
Accept only downloader JSON with status=success. The downloader owns redirects, URL scope, Referer, PDF validation, SHA-256, atomic writes, reuse, and collisions.
For PDF extraction without explicit download, use the same downloader in a task-temporary directory and delete that directory after success or failure. Do not transfer PDF bytes with browser controls, Base64, screenshots, or ad hoc curl.
artifacts/<report-id>/extracted.json.content. Do not save HTML, DOM, or snapshots.references/pdf-extraction-rules.md and process the local verified PDF directly into one extracted.json.requires_vision=true and add only its page number to vision_pages.Use vision only when explicitly requested, only on relevant entries already listed in vision_pages, and update the same extracted.json. Keep failed pages listed; mark estimated chart values approximate=true. Do not persist rendered intermediates.
Compare reports only when explicitly requested and after checking methodology, population, geography, denominator, unit, and period compatibility.
Return concise text by default: status, title, period, issue, publication date, verified URLs, match method, warnings, saved paths, and permitted next actions.
Use one status: success, invalid_query, ambiguous, not_found, search_budget_exceeded, source_unavailable, browser_unavailable, tool_environment_error, detail_unverified, artifact_store_unavailable, download_failed, extraction_partial, vision_budget_exceeded, or internal_error.