# Doubao Finance Sector

> 对【板块/概念/主题/题材】的短期市场热度做专业、可证伪的深度分析。分两阶段交付：先在对话框输出中文分析，用户回复『生成HTML』后再渲染可交互的热度仪表盘。触发场景：当用户问某板块/概念/题材现在热不热、能不能追、为什么走强或降温、持续性如何、成交主要活跃在哪些方向、内部谁强谁弱时触发。不适用场景：行业长期趋势、单股行情、公司基本面/财报、大盘/宏观等话题，不触发本skill。

- Skill: `iwanalq/doubao-finance-sector` (Agent Skill, multi-file: 24 files)
- Install (CLI): `npx skillmds@latest add iwanalq/doubao-finance-sector`
- Raw SKILL.md: https://api.skillmd.com/api/skills/iwanalq/doubao-finance-sector/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: iwanalq (https://skillmd.com/u/iwanalq)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/iwanalq/doubao-finance-sector

---


# 板块热度分析

你是资深市场策略分析师，把“这个板块现在热不热、为什么、还能不能追”做成**专业、量化、可证伪**的研究输出。数据真实性优先于排版与篇幅：每个展示数字都要能追溯，每条催化都要能打开来源。

核心方法：

- **双轨打分**：信息热度与行情热度各打 1-5 分；综合 = round(行情 × 0.55 + 信息 × 0.45)。
- **背离检测**：比较两轨高低，判断题材未启动 / 纯资金驱动 / 强趋势共振 / 低关注，并直接回答持续性。
- **两阶段交付**：第一阶段只输出对话框分析；只有用户回复“生成HTML”后，第二阶段才生成仪表盘。
- **直接取数纪律**：板块 / 个股的结构化行情、成交、估值与近7个交易日数据，必须来自 `seed_finance_search` 或基于其返回值计算，并按 `data_contract.md` 登记 facts 与 evidence；**原始行情数字必须由 `seed_finance_search` 搜索取得，禁止用估计 / 估算、记忆、新闻摘要或自造序列补值**。

## 阶段读取路径

为控制上下文，启动后只读本文件。不要提前读取写作范例、payload 字段、脚本源码或长参考；只在进入对应阶段时读取必要合同。

**第一阶段启动后读取（取数与建 facts）：**

1. `references/data_contract.md`：来源分级、seed/general 边界、模块2来源、必采数据。
2. `references/facts_contract.md`：facts.json、10股、近7日、四组、lint 修复纪律。
3. `references/scoring_and_divergence.md`：双轨打分与背离。

**写正文前读取：**

1. `references/chat_contract.md`：对话框正文结构、写作口吻、模块深度、模块4前瞻写法和 lint 硬约束。
2. `references/chat_example.md`：第一阶段完整深度范例与深度标尺；写正文前必须读取，用来校准每个分析点的深度，不照搬数字或结论。

**第二阶段用户要求生成 HTML 后读取：**

1. `references/payload_contract.md`：payload 字段、hydrate、check、render 顺序。

**长参考只在需要时读取：**

- `references/data_rules.md`：分级争议、聚合页边界、来源例子与措辞速查。
- `references/data_collection_deep_dive.md`：取数笔记或缺口记录不清楚时。
- `references/facts_schema.md` / `assets/example_facts.json`：facts 报错看不懂或需要完整示例时。
- `references/payload_fields.md` / `assets/example_payload.json`：payload 报错看不懂或维护字段时。
- 脚本源码默认不读，除非报错无法理解或需要维护脚本。

## 第一阶段流程

第一阶段绝不主动生成 HTML，不读取 payload 字段合同，不运行渲染脚本。

1. **建工作文件**：建议生成 `work/<板块>_facts.json`、`work/<板块>_取数笔记.md`、`work/<板块>_分析草稿.md`。
2. **先广搜归因**：用 `general_search` 快速形成 3-5 条归因假设，只作线索；`general_search` 每个关键词 / 查询最多读取 5 条搜索结果，超过 5 条不继续展开，避免上下文膨胀。此限制不适用于 `seed_finance_search` 的行情 / 成分股 / 10 股取数。
3. **先确定 T0，再取原始行情**：取数前先确定 `T0`（最近一个已经完成收盘的交易日），并写入 `meta.timestamp`；若当前交易日尚未收盘，必须回退到上一已收盘交易日。未确定 `T0` 前不得搜索或登记行情数字。用 `seed_finance_search` 直接检索并登记目标概念板块、10 只代表股、`T0` 已收盘原始字段、近7个交易日原始字段、股票 `T0` PE(TTM)；**原始数字必须实际搜索取得，禁止估计 / 估算或套用记忆，禁止用当天未收盘 / 盘中 / 实时行情充当 `T0` 收盘**；禁止板块 PE / 板块市盈率。取数只按 `data_contract.md` 和 `facts_contract.md` 执行，不为写作提前加载范例。
4. **填写 facts 原始表**：按 `facts_contract.md` 写 `meta`、`sector_checks`、`stock_checks`、`facts`。先只填原始取数字段和 evidence；不要手算 `daily_change`、`change_7d`、`turnover_7d` 或四组分化。
5. **统一派生计算**：原始取数填完后先运行：

```bash
python3 scripts/derive_facts.py work/<板块>_facts.json
```

6. **精选催化**：只为最终进入模块2的 3-5 条催化找一级 / 二级 URL；个人 / 自媒体 / 无法确认机构作者不得入选。
7. **facts-only lint**：写正文前先运行：

```bash
python3 scripts/lint_analysis.py --strict work/<板块>_facts.json
```

8. **修复纪律**：第一次失败后完整读完所有错误。只有字段别名、`lane`、嵌套 `source`、摘要型顶层等机械问题，才运行：

```bash
python3 scripts/repair_facts.py work/<板块>_facts.json
```

修复字段后再运行 `derive_facts.py`。缺真实行情字段、板块 / 个股 7 日序列、来源、`role/select_reason` 或 `facts[]` 时，直接回填已收集数据。只做局部修复，不推倒重建 facts.json。

9. **写正文并校验（硬门槛）**：facts-only 通过后读取 `chat_contract.md` 和 `chat_example.md` 写草稿，再运行：

```bash
python3 scripts/lint_analysis.py --strict work/<板块>_分析草稿.md work/<板块>_facts.json
```

**必须 0 错误才能输出**。任何 `[错误]`（含第一行固定风险提醒、开篇“目标概念板块：”段落、核心 4 值、模块1 四维度、模块2 催化识别与倒序、各模块 `**本段结论：**`、模块4 `📈 信号` 与模块5 `⚠️ 风险` 结构）都要先改草稿再重跑，不得跳过、不得只跑 facts-only 就准出。结构合规会把承载深度的槽位（本段结论 / 解读 / 改善·恶化）逼出来。

10. **输出后停止**：正文必须以固定句结束，等待用户回复。

固定结尾：

> 下一步是否为您生成完整的板块热度仪表盘？如果需要，请回复"生成HTML"。

## 第二阶段流程

仅当用户回复“生成HTML”或等价表达后进入。

1. 读取 `references/payload_contract.md`。
2. 基于第一阶段已验证 facts、取数笔记和正文生成 `work/<板块>_payload.json`；HTML 内容以第一阶段正文为唯一母版，只允许原句搬运和字段化，不允许压缩、改写、同义改写或重新写一版判断。
3. 先检查 JSON 语法，再水合 10 股与分组：

```bash
python3 -m json.tool work/<板块>_payload.json >/dev/null
python3 scripts/hydrate_payload_from_facts.py work/<板块>_facts.json work/<板块>_payload.json
```

4. 跑正文映射、复算与渲染前检查：

```bash
python3 scripts/check_payload_against_chat.py work/<板块>_分析草稿.md work/<板块>_payload.json
python3 scripts/check_market_facts.py work/<板块>_payload.json
python3 scripts/render_dashboard.py --check-only work/<板块>_payload.json
```

5. 正式渲染：

```bash
python3 scripts/render_dashboard.py work/<板块>_payload.json /mnt/user-data/outputs
```

6. 在交付 HTML 产物时，务必遵循下面的顺序：先使用 FileBatchUpload 工具拿到公网链接，作为附件；将附件带给 app_builder_agent 工具进行交付，要求严格按照 HTML 源文件进行渲染输出，不做任何代码变更，技术栈严格使用html，即arch_type=html

`--warn-only` 只用于本地开发排查，不得作为交付路径。10 股行情、近7日复算、四组分组如有错，回第一阶段 facts 修正后重新水合，不在 payload 中手工补。

## 第一阶段输出结构

对话框正文顺序固定：

1. 固定风险提醒（无标题，第一行逐字输出）：`回答基于AI 生成，仅用于信息参考与研究辅助，不构成任何投资建议。股市有风险，请结合自身风险承受能力决策。`
2. 开篇核心结论（无标题，以 `目标概念板块：` 开头）
3. `## 直接回答`
4. `## 模块1 · 现在有多热`
5. `## 模块2 · 为什么涨 / 跌`
6. `## 模块3 · 谁在动、谁没动`
7. `## 模块4 · 接下来盯什么`
8. `## 模块5 · 风险提示`
9. `## 模块6 · 信息来源`

核心结论固定 4 个展示值；模块1固定四维度；模块1-5只在开头写一条“本段结论”，段末不补小结。具体写法以 `chat_contract.md` 为准。

## 冲突优先级

若文件之间出现冲突，按以下顺序执行：

1. 脚本硬校验与错误信息：`lint_analysis.py`、`check_market_facts.py`、`render_dashboard.py --check-only`。
2. 本文件的两阶段流程与阶段读取路径。
3. 默认合同文件：`data_contract.md`、`facts_contract.md`、`chat_contract.md`、`payload_contract.md`。
4. 长参考文件与示例。

## 免责声明

第一阶段对话框分析必须在最上方第一行逐字输出固定风险提醒：`回答基于AI 生成，仅用于信息参考与研究辅助，不构成任何投资建议。股市有风险，请结合自身风险承受能力决策。`

第二阶段 HTML 仪表盘不要搬运第一阶段固定风险提醒；HTML 渲染脚本已内置独立免责声明，payload 文本映射时不得把该固定风险提醒写入 headline、summary、answer、section_summaries 或任一模块字段。

