CNInfo Reports
/install cninfo-report-downloader
CNInfo Report Downloader(巨潮资讯报告下载)
批量下载A股上市公司年报/半年报 PDF(数据源:巨潮资讯 cninfo.com.cn)。
When to activate
- User wants to download A-share annual or semiannual reports
- User mentions 巨潮、cninfo、年报下载、半年报、annual report
- User needs to batch-fetch report PDFs from a stock-code list
Prerequisites
pip install -r requirements.txt
Workflow
- Confirm that a stock CSV exists and that its first column contains stock codes (6-digit A-share codes).
- If unsure, run
--dry-runfirst to preview matches without downloading. - Run the command from the skill directory. The script tracks progress in SQLite and can resume after interruption.
- Check
runtime/manifest_\x3Cyear>.csvandruntime/logs/cninfo_\x3Cyear>.logafter the run. - Consult references/filter_rules.md only when adjusting title matching, naming, or reset behavior.
Commands
Normal download (default year 2025):
python scripts/run_cninfo_reports.py --stock-csv \x3Cpath-to-csv>
Dry-run (preview only, no download):
python scripts/run_cninfo_reports.py --stock-csv \x3Cpath-to-csv> --dry-run
Specify year:
python scripts/run_cninfo_reports.py --stock-csv \x3Cpath-to-csv> --year 2024
Force redownload (ignore cache):
python scripts/run_cninfo_reports.py --stock-csv \x3Cpath-to-csv> --force-redownload
Full CLI options:
| Argument | Default | Description |
|---|---|---|
--year |
2025 | Target report year |
--stock-csv |
上市公司基础信息.csv |
CSV with stock codes in column 1 |
--output-dir |
downloads/\x3Cyear> |
PDF output directory |
--runtime-dir |
runtime |
State, manifest, logs directory |
--page-size |
20 | Search results per page |
--sleep-seconds |
1.2 | Min delay between requests |
--timeout-seconds |
30 | HTTP timeout |
--max-retries |
5 | HTTP retry attempts |
--dry-run |
false | Preview matches without downloading |
--force-redownload |
false | Re-download even if file exists |
Features
- Smart title filtering — regex-based matching for formal annual/semiannual reports; auto-rejects summaries, English variants, ESG reports, notices, etc.
- Breakpoint resume — SQLite state tracks search progress and download status per announcement; resumes after interruption.
- Manifest output —
runtime/manifest_\x3Cyear>.csvwith full metadata for every eligible report. - Idempotent naming —
{code}_{year}_{kind}.pdffor primary files, extra variants get_{announcement_id}suffix.
Architecture
scripts/
run_cninfo_reports.py # Entry point
cninfo_annual_reports/
cli.py # Argument parsing & logging
config.py # AppConfig dataclass
service.py # Core orchestration logic
repository.py # SQLite state management
http_client.py # CNInfo API & file download
models.py # Data models
filters.py # Title evaluation & regex
references/
filter_rules.md # Detailed filter/reset docs
agents/
openai.yaml # Codex integration config
Reset
To restart from scratch, delete state files:
rm runtime/state.db runtime/state.db-wal runtime/state.db-shm
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install cninfo-report-downloader - After installation, invoke the skill by name or use
/cninfo-report-downloader - Provide required inputs per the skill's parameter spec and get structured output
What is CNInfo Reports?
Batch-download formal A-share annual and semiannual report PDFs from CNInfo (巨潮资讯) using a stock-code CSV. Supports dry-run preview, resume on failure, force... It is an AI Agent Skill for Claude Code / OpenClaw, with 184 downloads so far.
How do I install CNInfo Reports?
Run "/install cninfo-report-downloader" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is CNInfo Reports free?
Yes, CNInfo Reports is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does CNInfo Reports support?
CNInfo Reports is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created CNInfo Reports?
It is built and maintained by gclyde768-arch (@gclyde768-arch); the current version is v1.0.1.