360 Secure SkillHub
360 安全技能中心

CNInfo Reports

该Skill通过股票代码CSV批量检索并下载巨潮资讯上的A股年报/半年报PDF,支持dry-run预览、断点续传、强制重下、年份/超时/休眠等配置,输出PDF、清单CSV、日志和SQLite状态,并按规则过滤摘要、ESG等非目标公告。

gclyde768-arch
gclyde768-arch
热度 48.48
最近更新 2026-05-11 17:36:45
分类:自动化依赖:代码执行 / 读写文件 / 第三方 API应用场景:财务 / 自动化脚本 / 工作流 / 数据处理 ...

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add cninfo-report-downloader
Metadata
name
cninfo-report-downloader
description
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-redownload, and configurable year/filter/timeout. Use when the user needs to fetch, re-fetch, or inspect CNInfo report PDFs for A-share listed companies.

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

  1. Confirm that a stock CSV exists and that its first column contains stock codes (6-digit A-share codes).
  2. If unsure, run --dry-run first to preview matches without downloading.
  3. Run the command from the skill directory. The script tracks progress in SQLite and can resume after interruption.
  4. Check runtime/manifest_<year>.csv and runtime/logs/cninfo_<year>.log after the run.
  5. 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 <path-to-csv>

Dry-run (preview only, no download):

python scripts/run_cninfo_reports.py --stock-csv <path-to-csv> --dry-run

Specify year:

python scripts/run_cninfo_reports.py --stock-csv <path-to-csv> --year 2024

Force redownload (ignore cache):

python scripts/run_cninfo_reports.py --stock-csv <path-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/<year> 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_<year>.csv with full metadata for every eligible report.
  • Idempotent naming — {code}_{year}_{kind}.pdf for 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