market-debrief-cn

تایید شده

A股收盘后深度日报自动生成工具。自动采集当日行情数据(AkShare)和新闻事件(Tavily), 通过多 Agent 并行分析架构(宏观+情绪 / 板块+资金 / 技术+估值+预判), 生成一份带量化锚点和独立判断的交互式 HTML 日报。 固定 Financial Times 三文鱼粉风格,6个分析模块 + 顶部仪表盘横条。 当用户提到以下内容时触发:「A股日报」「市场复盘」「盘脉日报」「A股复盘」「今日市场分析」 「跑一期日报」「生成日报」「做今天的复盘」,或指定日期如「帮我做2026年3月11日的日报」。

@KeLuoJun
MIT۱۴۰۵/۱/۷
68از ۱۰۰
(0)
۰
۱۴
۱۵

نصب مهارت

مهارت‌ها کدهای شخص ثالث از مخازن عمومی GitHub هستند. SkillHub الگوهای مخرب شناخته‌شده را اسکن می‌کند اما نمی‌تواند امنیت را تضمین کند. قبل از نصب، کد منبع را بررسی کنید.

نصب سراسری (سطح کاربر):

npx skillhub install KeLuoJun/bin-skills/market-debrief-cn

نصب در پروژه فعلی:

npx skillhub install KeLuoJun/bin-skills/market-debrief-cn --project

مسیر پیشنهادی: ~/.claude/skills/market-debrief-cn/

بررسی هوش مصنوعی

کیفیت دستورالعمل78
دقت توضیحات68
کاربردی بودن55
صحت فنی72

Scored 68 — exceptional execution quality with comprehensive multi-phase pipeline. The analysis-framework.md (29KB) alone is deeper than most entire skills. 4 working scripts with error handling. Limited only by extreme niche (Chinese A-share market) and 0 stars.

محتوای SKILL.md

---
name: market-debrief-cn
description: |
  A股收盘后深度日报自动生成工具。自动采集当日行情数据(AkShare)和新闻事件(Tavily),
  通过多 Agent 并行分析架构(宏观+情绪 / 板块+资金 / 技术+估值+预判),
  生成一份带量化锚点和独立判断的交互式 HTML 日报。
  固定 Financial Times 三文鱼粉风格,6个分析模块 + 顶部仪表盘横条。
  当用户提到以下内容时触发:「A股日报」「市场复盘」「盘脉日报」「A股复盘」「今日市场分析」
  「跑一期日报」「生成日报」「做今天的复盘」,或指定日期如「帮我做2026年3月11日的日报」。
---

# A股深度日报生成器

> 核心目标不是「描述今天发生了什么」,而是「理解今天市场在定价什么、定价是否合理、明天可能发生什么」。

## 执行流程

```
Phase 1: 确认日期 → 数据采集(akshare + tavily)
Phase 2: 三个 Subagent 并行分析
Phase 3: 渲染 Agent 整合输出 HTML
```

## 路径约定(强制)

- `SKILL_ROOT`:market-debrief-cn skill 目录(即当前 `SKILL.md` 所在目录)
- `ASSETS_DIR`:`SKILL_ROOT/assets`(所有 JSON 中间产物固定写这里)
- `PROJECT_ROOT`:本次运行 skill 的项目根目录(最终 HTML 固定写这里)

不允许把 HTML 写入 `ASSETS_DIR`,也不允许把 JSON 中间产物写入 `PROJECT_ROOT`。

---

## Phase 1: 数据采集(主协调 Agent)

### Step 1: 确认目标日期

解析用户意图,确认目标交易日期。默认为最近一个已收盘的交易日。

### Step 2: 运行数据采集脚本

```bash
python scripts/fetch_market_data.py --date YYYYMMDD
```

脚本自动拉取 12 类数据(详见 `references/akshare-api.md`):

- 指数日线(6大指数近一年)、指数PE估值、全A PB
- 全市场资金流向(超大/大/中/小单)、行业资金流向
- 涨停池/跌停池/炸板池/强势连板股
- 北向资金、两融余额、国债收益率、龙虎榜机构/个股统计、市场广度摘要(上涨/下跌家数)

脚本**自动写入** `SKILL_ROOT/assets/market_data_YYYY-MM-DD.json`(目录不存在时自动创建)。

⚠️ 东方财富数据源偶尔限流导致个别接口失败(返回空数组)——脚本已内置容错,失败项会在 stderr 显示 `[WARN]`,并记录在输出 JSON 的 `_failed_items` 字段中。若关键数据缺失,可等待 10 秒后重跑。

### Step 3: 搜索新闻事件

使用 Tavily 搜索当日关键事件,自动执行 7 组查询(政策、板块、外盘、宏观、机构观点、北向资金、突发事件)。

**Windows(推荐,跨平台)**:

```bash
python scripts/search_news.py --date YYYY-MM-DD
```

**Linux / macOS**:

```bash
bash scripts/search_news.sh '{"date": "YYYY-MM-DD"}'
```

两个脚本输出格式完全相同,**自动写入** `SKILL_ROOT/assets/news_data_YYYY-MM-DD.json`。其中:

- `results`:去噪+去重+按质量排序后的新闻列表(优先用于分析)
- `query_batches`:各查询原始回包(用于追溯)
- `_failed_queries`:失败查询数量

⚠️ 需要 Tavily API token。优先级:`TAVILY_API_KEY` 环境变量(支持 `tvly-...` 格式)→ `~/.mcp-auth/` JWT 缓存。若两者均不可用,脚本会报错退出——必须先解决认证问题再继续(见 Step 4 双源要求)。

### Step 3.5: 运行量化分析引擎(新增)

在完成行情数据采集后,运行分析脚本对原始数据做预处理,输出结构化量化指标:

```bash
python scripts/analyze_market.py --date YYYYMMDD
```

脚本**自动写入** `SKILL_ROOT/assets/analysis_YYYY-MM-DD.json`,包含:

| 模块        | 预计算内容                                                               |
| ----------- | ------------------------------------------------------------------------ |
| 情绪评分    | 综合分(0-100)、散户/机构拆解分、各分项得分、60日成交额百分位           |
| 技术矩阵    | 6指数 MA5/10/20/60/120/250 值及偏离度、均线排列判断、量比、K线形态识别   |
| 支撑/压力位 | MA位/斐波那契38.2%/50%/61.8%/VWAP30日/整数关口,距当前价%标注            |
| 涨跌拆解    | 隔夜涨幅=开盘/前收-1(反映消息面)、日内涨幅=收盘/开盘-1(反映盘中行为) |
| 行业分析    | 四分类强弱表、成长/价值均涨幅差、资金净流入 TOP3/BOTTOM3 行业            |
| 涨停生态    | 封板率、连板分布、最高连板数+名称、主题集中度、赚钱效应评级              |
| 资金结构    | 超大/大/中/小单净流入(亿元)、机构/散户行为类型判断、资金迁移类型       |
| 估值 & ERP  | 各指数 PE 历史百分位、全A PB、ERP%(含60日均值/标准差/信号)             |
| 北向资金    | 当日净额、20日序列、20日累计、趋势描述                                   |

若脚本运行失败(`numpy`/`pandas` 未安装等),可跳过此步——AI 将从原始 market_data JSON 直接分析,但准确度会有所下降。依赖:`pip install numpy pandas`

### Step 4: 准备数据包

读取 `SKILL_ROOT/assets/market_data_YYYY-MM-DD.json`、`SKILL_ROOT/assets/analysis_YYYY-MM-DD.json` 和 `SKILL_ROOT/assets/news_data_YYYY-MM-DD.json`,构建三个 Subagent 的数据子集。

**⚠️ 双源强制要求**:三个 Subagent 必须同时持有 akshare 行情数据和 tavily 新闻数据。若 `news_data` 文件不存在或为空,必须先执行 Step 3 搜索新闻,**不允许**跳过新闻采集直接进入 Phase 2。两类数据是报告深度的双支柱,缺少任一类都会导致分析仅停留在数字描述层面。

**检查采集状态**:

- 若 `market_data["_failed_items"]` 非空,记录失败项列表(例:`["index pe", "lhb"]`)
- 若 `news_data["_failed_queries"] > 0`,记录失败查询数
- 将以上信息汇总为 `data_warnings` 传递给渲染 Agent,用于最终回复告知用户

---

## Phase 2: 三 Subagent 并行分析

**使用 subagent 并行启动三个分析任务**。每个 subagent 的 prompt 包含:角色定义 + 对应数据子集 + 分析任务清单 + 输出格式。

分析框架详见 → `references/analysis-framework.md`

**所有 Subagent 的核心输出要求**:除了量化数据字段,每个模块必须输出 `analysis_text` 叙述字段(见 analysis-framework.md 各 Subagent JSON schema)。叙述字段必须双源融合——同时引用 akshare 数字和 tavily 新闻事件,推断市场参与者动机,不只描述现象。

**强制要求**:Module 1 和 Module 6 必须额外输出“预期差 / 明日验证点 / 证伪条件”结构。不能只解释今天发生了什么,还必须说明:市场原先在定价什么、今天新增信息改了什么、明天看什么来证明这个判断对或错。

### Subagent A: 宏观事件解读师 × 情绪量化分析师

**模块**: Module 1(宏观定价扫描)+ Module 2(市场情绪温度计)

**提供数据**: tavily 新闻、`analysis.sentiment`(各分项得分、综合分、散户/机构分、60日百分位)、`analysis.northbound`(趋势描述)、`market_data`(涨跌停原始数据、两融)

**核心任务**:

- 从新闻中筛选有效事件,判断定价完成度(已充分/未充分/过度)
- 对最关键的 1-2 个事件补充“预期差框架”:市场原预期、今日新增信息、盘面反应、预期差判断、明日验证点、证伪条件
- 更新宏观三维坐标(经济动能/流动性/风险偏好)
- **直接使用** `analysis.sentiment.composite_score` 作为综合情绪分(无需重算)
- 确认散户/机构分歧类型(使用 `analysis.sentiment.divergence_type`)
- 判断情绪趋势斜率(加速上行/高位走平/拐头下行/筑底反弹)

**输出**: JSON(结构见 analysis-framework.md「Subagent A」节)

### Subagent B: 板块策略师 × 资金流向分析师

**模块**: Module 3(板块结构性分析)+ Module 4(资金路线图)

**提供数据**: `analysis.industry`(四分类表、成长/价值风格、资金流向TOP/BOTTOM3、迁移类型)、`analysis.limit_up_ecology`(封板率、连板分布、主题集中度、赚钱效应)、`analysis.fund_structure`(机构/散户行为类型、超大单趋势)、`market_data.lhb_jgmmtj`、`market_data.lhb_stocks`

**核心任务**:

- **直接使用** `analysis.industry.heatmap` 做行业四分类(无需重算)
- **直接使用** `analysis.industry.style` 输出成长/价值量化对比
- TOP 2 板块深度解剖(驱动力/轮动周期/资金主体/持续性评级)
- **直接使用** `analysis.limit_up_ecology` 涨停板生态指标
- 基于 `analysis.fund_structure.behavior_type` + `market_data.lhb_jgmmtj/lhb_stocks` 解读资金意图

**输出**: JSON(结构见 analysis-framework.md「Subagent B」节)

**输出**: JSON(结构见 analysis-framework.md「Subagent B」节)

### Subagent C: 技术分析师 × 估值研究员 × 情景规划师

**模块**: Module 5(技术形态与估值)+ Module 6(次日预判与历史镜像)

**提供数据**: `analysis.technical`(MA矩阵、均线排列、量比、K线形态、支撑/压力位、日内/隔夜拆解)、`analysis.valuation`(PE百分位、ERP信号)、指数原始日线序列(用于图表渲染)

**核心任务**:

- **直接使用** `analysis.technical[指数].ma_arrangement`、`ma_deviations`、`kline_pattern` 输出技术矩阵
- **直接使用** `analysis.technical[指数].supports/resistances` 列出支撑/压力位(已附计算依据)
- **直接使用** `analysis.valuation.erp.erp_signal` 输出 ERP 信号
- **直接使用** `analysis.valuation.index_pe[指数].pe_zone` 输出估值水位档位
- 基于以上量化锚点,构建三情景概率判断(概率之和=100%,各附可观测触发条件)
- 每个情景必须写明“它在验证哪条市场叙事”,以及“出现什么信号时该情景失效”
- 历史镜像匹配 + 上期预判回顾

**输出**: JSON(结构见 analysis-framework.md「Subagent C」节)

---

## Phase 3: 渲染 Agent 生成 HTML

收集三份 JSON 后,交给渲染 Agent。

### 深度分析指令(最高优先级)

**1. 交叉证伪机制(Cross-Validation)**
禁止简单复读新闻中的利好与利空。必须执行新闻事件与盘面数据的交叉对比:

- 若**新闻大肆渲染某热点**(如“某板块重磅利好”),必须立即去查阅 `market_data.lhb_jgmmtj`(龙虎榜机构买卖)或 `analysis.industry.fund_flow_top3_outflow`:
  - 如果机构/主力在**高位净卖出**(新闻火热但资金撤退),强烈提示**【风险提示:情绪高潮但主力资金背离 / 借利好兑现】**。
  - 如果新闻利好与龙虎榜机构净买入**共振**,判定为**【主线确认】**。

**2. 必须建立因果链条**
禁止仅罗列“指数涨跌”或“新闻标题”。所有结论必须符合 `数据(Data) + 事件(Event) -> 归因(Attribution) -> 验证(Verification)` 的结构。

- ❌ 错误:今日半导体板块上涨,主力流入。
- ✅ 正确:半导体板块上涨3.2%,主力净流入15亿(数据),主要受昨夜英伟达财报超预期驱动(事件),确认了AI硬件端的景气度外溢(归因),需关注明日是否缩量分歧(验证)。

**3. 必须使用量化锚点与速率(Velocity)**

- **情绪与加速度**:必须引用 `composite_score`、`divergence`(散户/机构分歧)以及 `momentum_velocity`(加速度)。
- **量价配合**:必须引用 `analysis.technical` 中的 `volume_price_desc` 判断量价关系(如缩量下跌、放量滞涨等)。
- **资金**:必须引用 `northbound`(北向)与 `sector_fund_flow`(内资)的背离或共振,且留意机构/散户流向。
- **预期管理**:梳理未来3天的宏观数据或财报发布窗口,给出具体落地验证点。

**4. 数据失败处理**
若 `market_data` 中存在 `_failed_items`,必须在报告开头显著位置(引用块)提示:“⚠️ 部分数据源(如龙虎榜)暂时不可用,相关模块分析可能受限”。

HTML 设计规范详见 → `references/html-design-spec.md`

### 渲染要点

1. **冲突检查**:若三份 JSON 数据矛盾,以 Subagent C 数据为准
2. **统一视角**:最终报告不出现 Agent 角色名,以统一研究报告形式呈现
3. **模块标题用结论式句式**(如「资金从消费向科技大迁移,赚钱效应持续修复」)
4. **FT 风格固定**:三文鱼粉底色系(`#FAF7F2`),涨红(`#C0392B`)跌蓝深(`#1A2E3E`),espresso header(`#1C0F08`)
5. **字体**:`"Georgia", "Noto Serif SC", "PingFang SC"` 优先,展现权威感
6. **单文件输出**:不引用本地资源,ECharts 通过 CDN 加载
7. **body 最大宽度 1100px**,水平居中,内边距 48px/40px,辅助文字≥11px
8. **所有数字使用等宽字体**(`SFMono-Regular, Menlo, Consolas`)
9. **卡片圆角 12-16px**,投影 `0 4px 16px rgba(0,0,0,0.08)`
10. **必须渲染叙述区块**:每个模块必须包含来自 `analysis_text` 的 `.insight-block` 深度解读段落,禁止只渲染数字表格/图表而省略文字分析。叙述区块 CSS 组件见 `html-design-spec.md「深度叙述区块」`节。
11. **禁止排版漂移**:顶部仪表盘、图表区、表格区必须使用固定组件容器(`.dashboard-strip`、`.viz-card`、`.table-wrap`、`.chart-frame`),禁止裸露图表直接贴在模块根节点下。
12. **禁止元素重叠**:仪表盘 gauge、K 线图、Sankey、表格必须有明确高度;若数据不足导致图表拥挤,降级为 stat card / badge / 简化表,不允许文字与图表互相覆盖。
13. **响应式强制要求**:桌面端按 2-3 列信息栅格布局;当视口 < 900px 时统一降为单列,顶部指数卡改为 2 列网格,禁止 6 个指数横向挤压在一行。
14. **视觉层次强制要求**:每个模块必须遵循「标题区 → 一句话结论 → 核心图表区 → 深度解读 → 次级表格/清单」的顺序,禁止把图表、长段落、表格随机穿插。
15. **优先美观而非堆砌**:宁可减少一个次级组件,也要保证主图表和关键数字排版整齐、留白充足、模块高度均衡。
16. **图表必须自带解释与交互(深度优化要求)**:所有的单独 `.chart-frame` 顶部必须带有醒目的文字标签(HTML 标题或说明段落),告知用户正在看什么指标(如:`<div class="chart-title">主力30日净流入趋势</div>`);严禁生成没有任何文字说明“裸图表”;对于时序折线/柱状图必须强制开启 `dataZoom` 以供拖拽缩放;必须配置带有单位(% 或 亿元)的 `tooltip { trigger: 'axis' }` 和 `legend`。
17. **必须显式渲染“市场在交易什么”**:在顶部摘要区或 Module 1 中,固定展示 `module1.expectation_gap` 的主叙事摘要。
18. **必须显式渲染“明日验证点”**:在 Module 6 的情景区中展示每个情景的 `validates` 与 `invalidation`,禁止只渲染概率和区间。

### 页面结构

```
[顶部仪表盘横条]  三行布局:品牌行 | 指数行(6个指数)| 概览行(成交/情绪/涨停/北向)
[Module 1] 宏观定价扫描       ← Subagent A
[Module 2] 市场情绪温度计     ← Subagent A
[Module 3] 板块结构性分析     ← Subagent B
[Module 4] 资金路线图         ← Subagent B
[Module 5] 技术形态与估值     ← Subagent C
[Module 6] 次日预判与历史镜像 ← Subagent C
[页脚] 数据来源声明 + 免责声明
```

### 可视化清单(强制要求)

| 模块 | 图表                                               | 引擎                | 尺寸          | 交互               |
| ---- | -------------------------------------------------- | ------------------- | ------------- | ------------------ |
| M1   | 事件定价状态徽章表                                 | CSS badge           | —             | —                  |
| M1   | 外盘市场胶囊行                                     | CSS pill            | —             | —                  |
| M2   | 综合情绪仪表盘(大) + 散户/机构仪表盘(小×2)     | ECharts gauge       | 350px / 220px | tooltip            |
| M2   | 5日情绪折线(含markArea过热区)                    | ECharts line        | 200px mini    | hover              |
| M2   | 分项评分进度条表                                   | CSS                 | —             | —                  |
| M3   | 行业涨跌幅横向条形图(全行业排序)                 | ECharts bar         | tall 460px    | dataZoom+tooltip   |
| M3   | 轮动5阶段进度条(含脉冲动画)                      | CSS                 | —             | —                  |
| M3   | 涨停生态雷达图                                     | ECharts radar       | half 280px    | tooltip            |
| M4   | 资金结构分组柱状图(四类资金)                     | ECharts bar         | full 380px    | tooltip            |
| M4   | 主力资金30日走势折线                               | ECharts line        | mini 200px    | hover              |
| M4   | 资金迁移桑基图                                     | ECharts sankey      | full 380px    | emphasis adjacency |
| M5   | K线图(60日,含MA5/20/60+量能附图,Tab切换三指数) | ECharts candlestick | tall 460px    | dataZoom+tab       |
| M5   | 多指数PE百分位彩色轨道(4条)                      | CSS                 | —             | hover data-pct     |
| M5   | ERP双轴折线(近2年)                               | ECharts line        | full 380px    | tooltip markLine   |
| M6   | 三情景概率分段条                                   | CSS                 | 44px          | —                  |
| M6   | 情景卡片accordion(3张可展开)                     | HTML/CSS/JS         | —             | click toggle       |
| M6   | 观测清单交互表(优先级badge)                      | CSS badge+table     | —             | —                  |

**原则**:每个模块至少含 **2个** 可视化组件(图表或交互组件),禁止出现纯文字罗列的模块。

### 输出文件

将最终 HTML 写入**PROJECT_ROOT(运行 skill 的项目根目录)**:

```
market-debrief-YYYY-MM-DD.html
```

> 数据中间产物继续存放于 `SKILL_ROOT/assets/`,最终成品 HTML 单独放在 `PROJECT_ROOT`,便于直接预览、分享和版本比对:
>
> - `SKILL_ROOT/assets/market_data_YYYY-MM-DD.json` — 原始行情数据
> - `SKILL_ROOT/assets/analysis_YYYY-MM-DD.json` — 量化指标分析结果(新)
> - `SKILL_ROOT/assets/news_data_YYYY-MM-DD.json` — 新闻搜索结果
> - `PROJECT_ROOT/market-debrief-YYYY-MM-DD.html` — 最终日报

**输出动作要求**:渲染完成后,必须显式执行“写入 PROJECT_ROOT HTML 文件”这一步,不允许把最终 HTML 留在 `SKILL_ROOT/assets/`、临时目录或对话内联代码块中。

---

## 内容质量红线

**禁用表达**(出现即重写):

| ❌ 禁止          | ✅ 替代                                  |
| ---------------- | ---------------------------------------- |
| 市场情绪有所回暖 | 情绪综合分从52升至65                     |
| 需关注风险       | 若明日上证跌破4050(MA20),触发悲观情景 |
| 可能震荡上行     | 核心情景(60%):上证4100-4160区间震荡   |
| 技术面显示支撑   | MA60(3980点)构成近期强支撑,距当前3.8% |
| 资金面较为活跃   | 今日成交1.06万亿,为20日均值的1.12倍     |

**每期必含量化锚点**:

1. 情绪综合分(含散户/机构拆解)
2. 资金迁移净额
3. 沪深300 PE 历史百分位
4. 关键支撑/压力位 + 计算依据
5. 三情景概率(和=100%)+ 触发条件
6. 上期预判准确度(若有)

---

## 语言规范

**先说好还是不好,再说为什么。** 每个模块标题和首句即结论。

**保留英文**:PE、PB、ERP、MA、ETF、MLF、EPS、ROE、CPI、PMI

**必须中文**:所有分析结论、图表标题、评价性用语、方向性判断

**禁止出现**:「总而言之」「需要指出的是」「值得注意的是」「总体来看」「综上所述」

---

## 数据失败项告知(必须执行)

生成报告完毕后,在最终回复中**必须以中文明确告知用户**:

1. **若所有数据均采集成功**:说明「本期数据采集完整,所有 12 类行情数据和新闻查询均成功」
2. **若存在失败项**:列出具体失败内容,例如:

   > ⚠️ 本期数据采集部分失败,以下内容未能获取,相关模块分析准确度可能受影响:
   >
   > - **行情数据**:龙虎榜机构统计(lhb_jgmmtj)或龙虎榜个股统计(lhb_stocks)、指数PE(index pe)
   > - **新闻查询**:2/4 个查询无有效返回

**来源**:读取 `SKILL_ROOT/assets/market_data_YYYY-MM-DD.json` 中的 `_failed_items` 字段,以及 `SKILL_ROOT/assets/news_data_YYYY-MM-DD.json` 中的 `_failed_queries` 字段。

---

## 参考文件索引

| 需要什么                            | 去哪找                             |
| ----------------------------------- | ---------------------------------- |
| AkShare 接口参数与字段              | `references/akshare-api.md`        |
| 六模块分析框架 + Subagent JSON 格式 | `references/analysis-framework.md` |
| HTML 设计规范 + 色彩/排版/组件      | `references/html-design-spec.md`   |

## 脚本索引

| 脚本                           | 用途                                              | 依赖             |
| ------------------------------ | ------------------------------------------------- | ---------------- |
| `scripts/fetch_market_data.py` | AkShare 行情原始数据一键采集 → JSON               | akshare, pandas  |
| `scripts/analyze_market.py`    | 量化指标计算引擎:情绪/技术/估值/行业/资金 → JSON | numpy, pandas    |
| `scripts/search_news.py`       | Tavily 新闻搜索 → JSON(Windows / 跨平台推荐)    | requests, Tavily |
| `scripts/search_news.sh`       | Tavily 新闻搜索 → JSON(Linux / macOS)           | jq, curl, Tavily |

依赖安装:`pip install akshare numpy pandas requests`、`jq` + `curl`(Bash,可选)、Tavily API token(可选)