ワンクリックで
report-cli
研报查询下载工具。当用户需要查询、下载、分析行业研报、个股研报、策略报告、宏观研究、券商晨报时使用此 skill。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
研报查询下载工具。当用户需要查询、下载、分析行业研报、个股研报、策略报告、宏观研究、券商晨报时使用此 skill。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| name | report-cli |
| description | 研报查询下载工具。当用户需要查询、下载、分析行业研报、个股研报、策略报告、宏观研究、券商晨报时使用此 skill。 |
| author | manymore13 |
| license | MIT |
| repository | https://github.com/manymore13/report-cli |
以下说法会触发此 skill:
行业研报:
个股研报:
策略 / 宏观 / 晨报:
下载:
全部操作通过 HTTP 完成,无需安装任何 CLI。
| 操作 | 方式 |
|---|---|
| 行业 / 策略 / 宏观 / 晨报查询 | WebFetch → GET 请求 API(返回 JSON) |
| 个股研报查询 | bash curl → POST 请求 API(WebFetch 不支持 POST) |
| 看摘要 / 页数 | WebFetch → 详情页(提取正文) |
| 下载 PDF | WebFetch 拿 PDF 链接 → curl 下载 |
beginTime = 固定 2025-01-01(覆盖足够长的时间范围)endTime = 系统当前日期(从系统上下文获取,动态计算),格式 YYYY-MM-DDhttps://reportapi.eastmoney.com/report/list?pageSize=20&pageNo=1&beginTime=2025-01-01&endTime={今天}&qType=1&industryCode=1046&industry=*&rating=*
| 参数 | 说明 | 示例 |
|---|---|---|
pageSize | 每页条数,默认 20 | 20 |
pageNo | 页码,从 1 开始 | 1 |
beginTime | 开始日期,固定 2025-01-01 | 2025-01-01 |
endTime | 结束日期,系统当前日期 | 动态计算 |
qType | 固定 1 | 1 |
industryCode | 行业代码 | 1046 |
industry=*和rating=*为可选参数。若返回结果为空,尝试去掉这两个参数重试。
WebFetch 不支持 POST 请求,个股研报查询必须用 bash curl。
curl -s -X POST https://reportapi.eastmoney.com/report/list2 \
-H "Content-Type: application/json" \
-d '{"pageSize":20,"pageNo":1,"beginTime":"2025-01-01","endTime":"{今天}","code":"600519"}'
| body 字段 | 说明 | 示例 |
|---|---|---|
code | 6 位股票代码 | 600519 |
pageSize | 每页条数,默认 20 | 20 |
pageNo | 页码,从 1 开始 | 1 |
股票代码格式:
沪市 6 开头(600519 贵州茅台),深市主板 0 开头(000858 五粮液),创业板 3 开头(300750 宁德时代)。输入时传 6 位纯数字,不加交易所前缀。
若用户输入的是股票名称而非代码(如"帮我查茅台"),Claude 应凭常识转换为代码;不确定时向用户确认。
https://reportapi.eastmoney.com/report/jg?pageSize=20&pageNo=1&beginTime=2025-01-01&endTime={今天}&qType={qType}
| 类型 | qType |
|---|---|
| 策略报告 | 2 |
| 宏观研究 | 3 |
| 券商晨报 | 4 |
| 字段 | 含义 | 接口 |
|---|---|---|
data | 研报数组 | 全部 |
hits | 总条数 | 全部 |
TotalPage | 分页总页数 | 全部 |
title | 标题 | 全部 |
orgSName | 券商简称 | 全部 |
publishDate | 发布日期 | 全部 |
emRatingName | 评级 | 全部 |
encodeUrl | 详情页标识(重要) | 全部 |
infoCode | 研报编码 | list / list2 |
attachPages | 研报页数 | list / list2 |
attachSize | 文件大小(KB) | list / list2 |
stockName | 股票名称 | list2 |
industryName | 行业名称 | list |
emRatingName | 含义 |
|---|---|
| 买入 | 强烈看好 |
| 增持 | 看好 |
| 中性 | 观望 |
| 减持 | 看空 |
| 卖出 | 强烈看空 |
| 不评级 | 仅供参考,无评级 |
API 返回的 attachPages 字段即研报页数。
attachPages 直接在 JSON 里,直接筛选attachPages,需访问详情页后根据正文长度判断默认跳过 ≤ 2 页的研报(通常无实质内容)。用户可指定阈值,如"只看 10 页以上的"。
attachPages为null或缺失时,视为未知页数。默认暂不跳过,标记为"页数未知"供用户自行判断。
用 API 返回的 encodeUrl 字段,拼到对应 URL 模板:
| 研报类型 | 详情页 URL |
|---|---|
| 行业 | https://data.eastmoney.com/report/zw_industry.jshtml?encodeUrl={encodeUrl} |
| 个股 | https://data.eastmoney.com/report/zw_stock.jshtml?encodeUrl={encodeUrl} |
| 策略 / 宏观 / 晨报 | https://data.eastmoney.com/report/zw_macresearch.jshtml?encodeUrl={encodeUrl} |
若详情页返回 404,对
encodeUrl值做 URL 百分号编码后再拼接。不同工具对应:JSencodeURIComponent()、Pythonurllib.parse.quote()、bash 可调python3 -c "import urllib.parse; print(urllib.parse.quote('VALUE'))"。
用 WebFetch 访问详情页后:
| 目标 | 提取方式 | 用途 |
|---|---|---|
| 正文摘要 | 提取 <p> 标签文本内容,取前 800 字 | 判断内容质量、呈现核心观点 |
| PDF 下载链接 | 优先用 a.pdf-link 的 href | 下载完整 PDF |
| PDF 链接(备用) | 正则 https://pdf\.dfcfw\.com/pdf/[^\s"'<>]+\.pdf | 当 CSS 选择器在 WebFetch 中失效时使用 |
| 标题 | h1 或页面 title | 确认页面正确 |
| 页数(策略 / 宏观 / 晨报) | 正文字数 < 500 → 推断 1-2 页 | 补 API 无 attachPages 的缺口 |
拿 PDF 链接:从详情页提取。URL 格式:
https://pdf.dfcfw.com/pdf/H3_AP202505251678987843_1.pdf?1748207582000.pdf
下载到本地(跨平台 curl):
curl -L -o "研报标题.pdf" \
-A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" \
"https://pdf.dfcfw.com/pdf/H3_XXX.pdf"
-L: 跟随重定向-o: 指定保存路径-A: 设置 User-Agent 绕过反爬校验文件:确保下载的是真 PDF 而非拦截页面。
head -c 4 "研报标题.pdf" # 应输出: %PDF
文件命名:用研报标题做文件名,去除 \/:*?"<>| 等非法字符,最长 100 字符。
1. 行业/策略/宏观/晨报 → WebFetch 调 GET API;个股 → bash curl POST API
2. 拿 JSON,过滤 attachPages > 2(或用户指定阈值)
3. 列出:序号 + 标题 + 券商 + 日期 + 页数 + 评级
4. 评级含义参考评级对照表,向用户解释
5. 问用户想看哪篇的摘要
1. 用 encodeUrl 拼详情页 URL
2. WebFetch 访问,提取正文前 800 字
3. 总结核心观点呈现给用户
4. 问是否需要下载完整 PDF
1. 从详情页提取 PDF 链接(优先 CSS 选择器,备用正则匹配)
2. curl -L -o 下载到用户指定目录
3. 校验文件是否为真 PDF
1. WebFetch /jg API → JSON
2. 取前 5 条的 encodeUrl(避免请求过多),逐篇 WebFetch 详情页
3. 按正文长度过滤(< 500 字 → 1-2 页,跳过)
4. 输出摘要 → 按需下载
| 代码 | 行业 | 代码 | 行业 |
|---|---|---|---|
| 422 | 物流 | 1033 | 电池 |
| 428 | 电力 | 1036 | 半导体 |
| 448 | 通信设备 | 1037 | 消费电子 |
| 451 | 房地产开发 | 1038 | 光学光电子 |
| 457 | 电网设备 | 1040 | 中药Ⅱ |
| 459 | 元件 | 1042 | 医药商业 |
| 465 | 化学制药 | 1044 | 生物制品 |
| 473 | 证券Ⅱ | 1045 | 房地产服务 |
| 474 | 保险Ⅱ | 1046 | 游戏Ⅱ |
| 475 | 银行Ⅱ | 1225 | 服装家纺 |
| 481 | 汽车零部件 | 1231 | 航空装备Ⅱ |
| 482 | 一般零售 | 1232 | 航天装备Ⅱ |
| 538 | 化学制品 | 1238 | IT服务Ⅱ |
| 545 | 通用设备 | 1239 | 白色家电 |
| 727 | 医疗服务 | 1241 | 黑色家电 |
| 736 | 通信服务 | 1250 | 煤炭开采 |
| 737 | 软件开发 | 1252 | 化妆品 |
| 738 | 多元金融 | 1253 | 医疗美容 |
| 910 | 专用设备 | 1257 | 农业综合Ⅱ |
| 1031 | 光伏设备 | 1258 | 饲料 |
| 1032 | 风电设备 | 1259 | 养殖业 |
| 1263 | 摩托车及其他 | 1277 | 白酒Ⅱ |
| 1267 | 造纸 | 1280 | 食品加工 |
| 1271 | 酒店餐饮 | 1281 | 休闲食品 |
| 1282 | 饮料乳品 | 1287 | 工业金属 |