| name | chain-data |
| description | 产业链研究第 2 段 · 数据采集。把 idea.md 的 11 词过滤表,变成上中下游 + 三层价值量数据。激活时机:chain-idea 输出 idea.md 后,或在用户要求"补产业链数据"时。 |
📋 SKILL 契约(6 字段 · agent 调用入口)
完整的 数据段 段契约。Claude/Codex 调用本段时,只需读这一节。
🎯 触发条件
- 用户说"补数据" / "找来源" / "验证数据"
- 前序段:chain-idea 已产生
01_idea.md
📥 输入文件
- 必填:
examples/<case>/01_idea.md(口径拆分结果)
- 可选:idea.md 中标注的"关键数据点"
📤 输出文件
02_data.md(数据状态表)
data/raw/*.csv(原始抓取)
data/status.json(每个数据点的状态)
🔑 必填字段
- 每个数据点:
{来源, 抓取时间, 单位, 口径, 可信度}
- 11 词清单:上中下游各端覆盖
- 三类状态:🟢 高 / 🟡 中 / 🔴 低
✅ 验收清单
⚠️ 失败处理
- 关键数据点 24h 抓不到 → 降级到 7d 移动平均
- 抓取脚本异常 → 记录到
data/audit.log,不中断流程
- 数据源下线 → 在 status.json 标 🔴 死链
chain-data · 数据采集段
灵感:大刘《齐码.SKILL》vibe-interaction 段
产物:data.md(数据卡) + data/ 目录(原始数据)
输入:idea.md
输出:可被 chain-breakdown 直接消费的 data.md
🎯 这个 skill 干什么
把 idea.md 里的"模糊研究边界",用真实数据填实。
数据不齐,后续 chain-breakdown 就拆不准;数据多了但没结构,就是数据库,不是研究。
🧠 核心方法论:上中下游 × 三层价值量
每个产业链都被切成两套网格:
网格 1:上中下游(空间切分)
上游(原材料/设备)
↓ 价值流
中游(加工/制造)
↓ 价值流
下游(应用/客户)
网格 2:三层价值量(纵深切分)
| 层级 | 问题 | 答案类型 |
|---|
| 成本层 | 这个环节的 BOM 是啥? 哪些成本在降? | 数字(单价/占比/趋势) |
| 利润层 | 利润主要从哪里挤出来? 谁在溢价? | 数字 + 谁做大了 |
| 瓶颈层 | 卡在哪? 谁掌握定价权? | 名字 + 卡点 |
两套网格的交点 = 矩阵 = 每个 (上游/中游/下游) × (成本/利润/瓶颈) 都至少 1 条事实。
📐 11 词 · 在数据采集的体现
| 词 | 数据采集要求 |
|---|
| navigate | 下游主战场的需求结构(占比/增速) |
| modal | 最大风险点的具体卡点 |
| confirm | 增量来源的确认/可能/未知 |
| drawer | 隐藏可变成本(运输/损耗/电费) |
| popover | 差异化卖点的具体数据 |
| bottomsheet | 底部反转信号的数据 |
| toast | 短期跟踪事件的具体日期/公告 |
| inline-expand | 价值量分布的具体百分比 |
| inline-edit | 成本结构变化的具体速率 |
| newtab | 跨行业新需求的具体场景 |
| download | 主要数据下载源(URL + 抓取时间) |
每个词,至少 1 条数据,标注来源。
🛠 工作流(可执行版)
输入: idea.md(已通过 chain-idea)
↓
[Step 1: 上中下游实体清单]
- 上游: 列 5-10 家关键供应商
- 中游: 列 5-10 家核心制造商
- 下游: 列 5-10 家主要客户
↓
[Step 2: 三层价值量填表]
对每家公司,至少填:
- 主营收入占比、毛利率
- 关键原料/设备的 BOM
- 上下游议价能力(强者/被压)
↓
[Step 3: 11 词数据补全]
对照 idea.md 的 11 词过滤表,每个词至少 1 条事实
↓
[Step 4: 数据可追溯化]
每个数字都加来源标注: [年报-2024] / [招股书-p123] / [协会数据-2025Q1]
↓
[Step 5: 输出 data.md + data/ 目录]
data.md 是索引,data/ 装原始文件
📄 data.md 输出模板
# [项目名] · 数据卡
> 数据截止:YYYY-MM-DD | 来源:招股书/年报/行业协会/调研
> 上游:chain-idea § 11 词过滤 → navigate
## 1. 上中下游实体清单(材料/设备/技术工艺三端拆解)
### 1.1 上游 · 材料端
[萤石 / HF / PVDF 原料 / 电子级化学品等 — 大宗 / 专用 / 高纯 / 卡脖子]
| 公司 | 主营 | 类型(大宗/专用/高纯/卡脖子) | 数据点 | 来源 | 数据状态 |
|---|---|---|---|---|---|
| | | | | | 已核验/估算/待查证 |
### 1.2 上游 · 设备端
[精馏塔 / 反应釜 / 提纯设备 / 检测仪器等 — 普通 / 关键 / 扩产瓶颈]
| 公司 | 主营 | 类型(普通/关键/扩产瓶颈) | 数据点 | 来源 | 数据状态 |
|---|---|---|---|---|---|
| | | | | | |
### 1.3 上游 · 技术工艺端
[核心配方 / 催化剂 / 工艺路线 / 良率控制 — 可复制 / 核心 know-how]
| 技术/工艺 | 提供方 | 类型(可复制/核心 know-how) | 良率/认证 | 来源 | 数据状态 |
|---|---|---|---|---|---|
| | | | | | |
### 1.4 中游(加工/制造)
| 公司 | 主营 | 在产业链位置 | 数据点 | 来源 | 数据状态 |
|---|---|---|---|---|---|
| | | | | | |
### 1.5 下游(应用/客户)
| 公司 | 主营 | 在产业链位置 | 数据点 | 来源 | 数据状态 |
|---|---|---|---|---|---|
| | | | | | |
> **三端强制拆解(借鉴 gushifenxi):**
> 上游不能只看材料,必须同时检查设备、耗材、核心零部件、关键工艺和良率瓶颈。
## 2. 三层价值量(纵深)
### 2.1 成本层 · BOM
[具体环节的成本结构,以表格形式呈现]
### 2.2 利润层 · 利润分布
[每段价值的毛利,谁溢价]
### 2.3 瓶颈层 · 卡脖子环节
[谁是定价权持有者]
### 2.4 三端价值量定位(借鉴 gushifenxi)
| 端口 | 成本价值量 | 利润价值量 | 瓶颈价值量 | 关键判断 |
|---|---|---|---|---|
| 材料端 | | | | 普通原料/关键材料/卡脖子 |
| 设备端 | | | | 普通设备/关键设备/扩产瓶颈 |
| 技术工艺端 | | | | 可复制/核心 know-how |
> **关键提醒(借鉴 gushifenxi):**
> 不能把"成本占比高"等同于"价值量高"。
> 铜箔产业里,铜是成本大头但偏大宗属性;
> 表面处理设备/添加剂/工艺/良率才是利润价值量和瓶颈价值量的来源。
## 3. 11 词数据补全
| 词 | 数据 | 来源 | 时点 |
|---|---|---|---|
| navigate | | | |
| modal | | | |
| confirm | | | |
| drawer | | | |
| popover | | | |
| bottomsheet | | | |
| toast | | | |
| inline-expand | | | |
| inline-edit | | | |
| newtab | | | |
| download | | | |
## 4. 不可得数据(明示)
[哪些数据本应采集但未获取 — 必须明示,不能蒙混]
## 5. data/ 目录
- 原始文件路径列表
📁 data/ 目录约定
data/
├── raw/ # 原始 PDF/Excel/HTML,原样存放
├── clean/ # 清洗过的 csv/xlsx
└── README.md # 每个文件的"何时用、怎么用、来源"
🚦 何时启用
- chain-idea 完成 idea.md 后,自动进入
- chain-breakdown 上游缺失 data.md
- 用户明确要求"补某环节的数据"
⚠️ 红线
- ❌ 不准"估计"代替"数据" — 估计需明示
[估算/基于XXX]
- ❌ 不准上中下游少于 5 家 — 不够看的
- ❌ 不准"不可得数据"留空 — 留空就是隐藏问题
- ❌ 不准来源不标年份 — 2020 年的数据当 2024 用 = 误导
🔗 与上下游的契约
- 上游(chain-idea):idea.md 的 11 词过滤表 → 数据采集必须全部覆盖
- 下游(chain-breakdown):data.md 的"瓶颈层" → 是 chain-breakdown 拆分的输入
- 下游(chain-verify):data.md 的"不可得数据" → 写入核销清单,持续追
🧰 推荐工具
import akshare as ak
import tushare as ts
df = ak.stock_zyjs_ths(stock="600519")
df = ak.stock_financial_abstract_ths(stock="600519")