with one click
report-cli
研报查询下载工具。当用户需要查询、下载、分析行业研报、个股研报、策略报告、宏观研究、券商晨报时使用此 skill。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
研报查询下载工具。当用户需要查询、下载、分析行业研报、个股研报、策略报告、宏观研究、券商晨报时使用此 skill。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
| 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 | 工业金属 |
Based on SOC occupation classification