# 创作知识拆解框架

## 目的

从一帖创作内容（图文 / 视频）里，拆出 **N 颗**可复用的「创作知识」，每颗**按自己的类型（How / What / Why）成形**，收敛成 `POST /api/v1/knowledge/ingest` 的请求体；前端**一页多颗、按类型渲染**。

> 一句话边界：只收**指导"怎么想 / 怎么判断 / 怎么搭框架"**的知识（创作）；剔除**"怎么执行 / 怎么操作 / 怎么做出来"**的纯工艺（制作）。

---

## 一、单位：颗

- **颗** = 一条独立可交付、能被下游**单独检索复用**的创作知识。
- **一帖 → N 颗**（可混类型），N 颗共享同一个 `source.id`。
- **每颗 → 一个 ingest payload**。

---

## 二、三种知识类型 —— 三条对等 lane（不再有二等公民）

| 类型 | 它是什么 | 成形模板 | dim_attributes |
|---|---|---|---|
| **How** 工序 | 不可跳步地把某输入做成成品 | `目标(purpose)` + 有序 `steps`（每步 目的 / 怎么做 / 产出） | `how工序` |
| **What** 构成 | 界定 / 列举 / 分类 / 判据某创作对象 | `概要`（必填锚点） + `kind`（子集/多维关系/序列）+ `维度拆分规则`（仅子集）+ `body[{item_name, item_desc}]`（**扁平条目**，无小节/形式） | `what构成` |
| **Why** 原理 | 解释某做法 / 判断背后的道理 | `阐述`（必填，**一段**：这条原理是什么 + 为什么成立；**忠实整合**原帖、无小节、不延伸"怎么用"） | `why原理` |

> **What 的 `kind`（部件之间什么关系）**：`子集`=并列可挑的选项（挑一个或多个）；`多维关系`=并列共存的组成部分/维度/层级（含"大套小"的包含层级，彼此无时间先后，不挑）；`序列`=沿作品从头到尾的时间/线性先后（换序读不通）。
> **`维度拆分规则`（仅子集）**：先试**单一轴**（"按【X】分，每项都是 X 的取值"，命名轴非结果、不拼两个）；套不出单一轴就填 **`类型枚举`**。
> **Why 的 `阐述` = 忠实整合**：把原帖几张卡缝成一段连贯的"是什么+为什么"——可串接/调序/删冗余，**不可改实质/补/润色/转祈使**；"怎么用/取舍"是下游应用的事，解构不做。

---

## 三、拆颗顺序 —— how 先抽，what/why 都单列（含组件）

```
这帖有没有"不可跳步的工序(how)"？
├─ 有 → 抽 how 骨架（可能 1-2 个）→ 出 How 颗（工序表）
│        ① how 步骤里嵌的 what/why → 既显示在步骤里，又【各单列成一颗】，
│           标注「<how> 的组件 · 来自第 N 步」。
│           （它是这个 how 的零件，但本身也是一条可复用知识）
│        ② how 没覆盖到的、独立的 what/why → 也单列成颗（orphan 颗）
└─ 没有 → 它本来就是一颗 What(界定/清单) 或 Why(原理)
```

**所以一帖 = N 颗 = `How 颗` + `它的 what/why 组件颗`（挂在该 how 上）+ `orphan what/why 颗`（可混）。**

> 关键修正：how 内部识别出的 what/why **不是只留在步骤里**——它同时**单列成一颗可复用知识**，只是标明它是某个 how 的组件。how 之外的当然也单列。

**铁律**：
- 没工序就**别硬造假 how**（把"7 种叙事结构"硬掰成 how 选型框架就是这个病）。
- 一颗 = 一个完整东西，绝不拆成碎片，也别把半截工序吹成完整方法论。

**how 资格闸（封 how 前两道硬闸，任一不过就不是 how）**：
- **闸① 有序性**：后步必须消费前步 output、换序就崩；若各步并列可换序、互不依赖（信号：相邻 step 的 output 近义/重复）→ 是「并列招式」，改成一颗 **What 方法清单**，别套假顺序。
- **闸② 走到交付物**：最后一步 output = purpose 收尾名词；若步骤只产"原料/草图/分析"没收口 → **半截 how**，要么补收尾步、要么把 purpose 降到与实际 output 对齐。
- **整颗 drop**：纯软件 UI 操作流程（打开 App→点按钮→设参数→导出）、或非内容创作题材（游戏设计/产品/运营/投流）→ 不入库；自检：`业务阶段`（灵感/选题/脚本）一个都贴不上 = 跑偏内容创作的强信号。

---

## 四、什么样的 what/why 值得单列成颗（判据）

对每块（步骤里嵌的、或 how 之外的）what/why 问：

> **脱离这个 how，它还独立成立、能被单独检索复用吗？**
> - **是 → 单列成一颗**（组件颗：cross-ref 到所属 how + 第几步；orphan 颗：独立）。如"叙事弧线的五要素"——是某 how 第二步的产出，但本身是可复用的 what 知识 → 单列，并标"<叙事弧线故事设计框架> 组件 · 来自第 2 步"。
> - **否（只是这一步一次性的指令、没复用价值）→ 只留在步骤里**，不单列。
> - **N 选 1 的并列清单**：清单整体若是可复用知识（如"7 种叙事结构"）→ 单列一颗 What；否则压进 step 菜单。

逐帖判，判据就这一条。

---

## 五、创作 vs 制作边界（剔除）

**收**（创作）：普适的创作路径 / 方法 / 工序、垂类技巧、形式偏好与禁忌——能一步步指导创作、**产出因人而异**。

**剔**（写进 `dropped`，附理由）：
- **制作 = 纯工艺执行**：器材 / 光圈ISO / 打光 / 收音设备 / 剪辑软件操作 / 调色参数 / 导出压制。
- **具体素材 / 案例本身**、**太空泛**（"内容要有吸引力"）。

**关键边界（按"设计决策 vs 工艺执行"判，不看词面）**：景别 / 角度 / 构图 / 字幕 / 配乐 / 结构 = 把创意翻译成镜头语言的**设计决策** → 保留为 step；只有"拿方案去操作设备软件"那层 → 剔。

---

## 六、标签维度 —— 按类型分流（谁有谁没有）

| 维度 | How | What | Why | 落到 ingest | 谁定 |
|---|:--:|:--:|:--:|---|---|
| 知识类型 | ✓ | ✓ | ✓ | `dim_attributes`（how工序/what构成/why原理） | 下游系统 |
| 业务阶段（灵感/选题/脚本，颗级多值） | ✓ | ✓ | ✓ | `custom_ext` | 我们 |
| 创作阶段（定向/构思/结构/成文/打磨，**逐步**） | ✓ | ✗ | ✗ | `custom_ext` | 我们 |
| 动作（开放手法，**逐步**，从内容提炼） | ✓ | ✗ | ✗ | `custom_ext` | 我们 |
| 作用域（实质/形式/感受/作用/意图，**带值·定位**） | ✓ 逐步 | ✓ 颗级 | ✓ 颗级 | `scopes` | 我们（定位树） |
| 创作 / 制作 | 写死 `创作` | 写死 | 写死 | `dim_creations`（恒 `["创作"]`） | 项目共识 |

> `创作阶段 / 动作` 是步骤级，只有 How 有；`作用域 / 业务阶段` 三类都有（What/Why 在颗级给）。

---

## 七、作用域 5 棵树 + 定位

| scope_type | 中文 | 管什么 | 例 |
|---|---|---|---|
| substance | 实质 | 讲什么（题材/对象） | 赛道共识 |
| form | 形式 | **可迁移**的怎么呈现（剥掉题材仍成立；偏结构/手法，表层只在当原则教时标） | 三幕结构 |
| feeling | 感受 | 勾什么情绪 | 羞耻感/冒犯 |
| effect | 作用 | 起什么表达功能（段内干的活） | 撕裂共识 |
| intent | 意图 | 创作者图什么（最终目的） | 引爆传播 |

- **互斥边界**（最易串味）：实质=对象 / 作用=干的功能（"赛道共识"实质，"撕裂共识"作用）；作用=手段 / 意图=最终目的（"制造悬念"作用，"引爆传播"意图）；感受=观众情绪 / 意图=作者目的。
- **带值 + 定位**：每个值用火山 embedding 找分类树最近邻——≥~0.90 复用树原名，否则保留新值（顺手丰富树）。定位是代码（最近邻），模型只负责"起词"。
- 粒度：How 逐步给；What / Why 颗级给。

---

## 八、提取流程 —— 多 prompt（长 + 窄）

| 步 | 干什么 | 谁干 |
|---|---|---|
| **① 读懂** | 图 / 视频 → 文字（忠实，不判断） | 视觉 LLM（基建 extractor） |
| **②a 判颗 + 找 how 骨架** | 几颗、各颗类型；how 抽骨架并识别内部 what/why 组件；orphan what/why；无 how 则纯 what/why（**第三节那道闸**） | 判断 LLM |
| **②b 按类型成形 + 轻标签** | How→目标+步骤(+逐步 创作阶段/动作)；What→概要+kind+维度拆分规则(子集)+body 条目；Why→阐述（一段：是什么+为什么，忠实整合）；颗级业务阶段；组件颗标 cross-ref | 判断 LLM |
| **③ 作用域** | 5 类带值 + 互斥边界 + 定位（How 逐步 / What·Why 颗级） | 判断 LLM + 定位工具(代码) |
| **⑤ 组装 + lint** | 拼 payload（content 按类型不同、scopes 并集），校验 | 纯代码 |

---

## 九、最终格式 = ingest payload（三类字段差异）

| payload 字段 | How | What | Why |
|---|---|---|---|
| `content` | 目标 + 步骤(目的/怎么做/产出) 拍平（字符串） | **结构化对象** `{name, kind, 维度拆分规则, body[]}`（概要移入 custom_ext） | `阐述` 一段（字符串：是什么+为什么，忠实整合） |
| `dim_attributes` | `["how工序"]` | `["what构成"]` | `["why原理"]` |
| `scopes` | 各步作用域并集 | 颗级作用域 | 颗级作用域 |
| `custom_ext` | 业务阶段 + 创作阶段 + 动作 | **业务阶段 + 概要** | **仅业务阶段** |
| `source / title / dim_creations` | 三类一样（`dim_creations` 恒 `["创作"]`；组件颗在 custom_ext 或 content 里标明出自哪个 how 第几步） | | |

---

## 十、前端 —— 一页多颗、按类型渲染

- 选一帖 → 列出**它的全部 N 颗**（可混类型）。
- 每颗按类型渲染：**How → 工序表**；**What → 构成卡**（概要 + kind + 维度拆分规则 + body 条目表：item_name/item_desc）；**Why → 阐述卡**（一段：是什么 + 为什么）。
- **组件颗** cross-ref 到所属 how（标"出自 <how> 第 N 步"，可互相跳转）；**orphan 颗**独立列出。
- 每颗都带：**作用域定位 drawer**（候选 → 最近邻 top-K → 复用/新建）、**提示词溯源**（区块/表头点开产出它的那道工序的提示词）。

---

## 十一、下游怎么消费（背景 · 与打标无关）

入库后由「脚本构建主 Agent 的 Knowledge 取数 subagent」只读检索使用。主 Agent 构建脚本分阶段（起步 → 产生脉络 → 产生元素 → 填入脉络）。

> ⚠️ 下游消费侧的"阶段"是**消费 scope**（这条知识在脚本构建哪个阶段有用），和我们提取时打的**作用域（实质/形式/感受/作用/意图，5 棵树）是两回事**，别混。

*本文件为创作知识拆解 + 入库的设计依据；`创作知识提取-skill/` 是它的可执行化。*
