# 创作知识提取 SKILL · 总览

> 这道 skill 做一件事：**读一篇创作帖/视频，把背后能指导创作的"框架"提出来，组装成 `POST /api/v1/knowledge/ingest` 的请求体（payload.json）**。
>
> 本文是总览。具体操作和字段规则在 [extraction/](extraction/) 的各阶段文件里，按阶段读。
>
> **流程拆成「长+窄」的多步**（每步只干一件窄活、写到位）：
> ① 读懂(视觉，基建 extractor) → ② 拆框架+轻标签 → ③ 作用域(重，单独一刀) → ⑤ 组装+lint(纯代码)。

---

**本目录是一个自包含 skill**：跑提取需要的所有说明都在这里。外部的帖子原文和你的产物（`outputs/<帖>/`）不算 skill 的一部分。设计依据是仓库根的《创作知识拆解框架.md》（本 skill 是它的可执行化）。

## 输入 / 输出

**输入**：一篇创作帖/视频教程（小红书 / 抖音 …，正文 + 图 / 视频）。取数与多模态读取用仓库基建（`creation_knowledge.integrations.crawler` / `extractor` / `video_extract`）。

**输出**：`outputs/<帖>/payload.json` —— 一个或多个 ingest payload（**一颗知识 = 一个 payload**，一帖通常 1-2 颗，共享 `source.id`）。中间滚动产物是 `framework.json`。

## 只收创作、不收制作

只收**指导"怎么想 / 怎么判断 / 怎么搭框架"**的知识（创作）；剔除**"怎么执行 / 怎么操作 / 怎么做出来"**的纯工艺（制作：器材/打光/剪辑软件/调色/导出）。边界按"设计决策 vs 工艺执行"判，不看词面（景别/构图/字幕=设计决策，保留）。

## 概念速览

- **颗是单位，一帖 = N 颗**（可混 how/what/why），共 `knowledges[]`，每颗 → 一个 ingest payload。
- **三类对等 lane**：How（目标+不可跳步 steps）、What（概要+kind+维度拆分规则+body 构成）、Why（`阐述`：一段忠实整合的"是什么+为什么"，不延伸"怎么用"）。**先判类型闸，再按类型成形**——别默认 how、别硬造假 how。
- **what/why 既可独立成颗，也可作 how 的「组件颗」**：how 步骤里嵌的 what/why（如某步产出"叙事弧线五要素"）既显示在步骤里，又**单列成一颗**（role=组件，parent 指回那个 how 的第 N 步）；how 没覆盖的独立 what/why 也单列（role=主）。判据：脱离 how 还能独立检索复用吗？
- **5 个标注维度**：知识类型(how/what/why)、业务阶段(灵感/选题/脚本,颗级)、创作阶段(定向/构思/结构/成文/打磨,**仅how逐步**)、动作(开放·**仅how逐步**)、作用域(5 棵树带值·**定位**·how逐步/what·why颗级)。
- **作用域定位**：值要对到 5 棵分类树的真实节点——对得上复用原名、对不上才新建。用 `tools/scope-link.py`（火山 embedding 最近邻，基建已落地）。

## 目录里有什么

### 操作流程（extraction/ —— 按步读）

| 步 | 文件 | 内容 | 谁干 |
|---|---|---|---|
| ① 读懂 | （基建 extractor，不在本目录） | 图/视频 → 文字 | 视觉 LLM |
| ② 拆框架+轻标签 | [extraction/phase1-frame.md](extraction/phase1-frame.md) | 判几颗+筛创作/制作+目的/怎么做/产出 + 知识类型/业务阶段/创作阶段/动作 | 判断 LLM |
| ③ 作用域 | [extraction/phase2-scope.md](extraction/phase2-scope.md) | per-step 5 类带值（互斥边界+反例+定位），**重** | 判断 LLM + 定位工具 |
| ⑤ 组装 | [extraction/phase3-assemble.md](extraction/phase3-assemble.md) | 拼 payload + lint，**纯代码** | 代码 |

### 契约 / 词表 / 样例 / 工具

| 路径 | 内容 |
|---|---|
| [ingest-payload-how](format/ingest-payload-how.schema.json) · [-what](format/ingest-payload-what.schema.json) · [-why](format/ingest-payload-why.schema.json) `.schema.json` | 三类各一份字段 schema（最终裁判）；What 的 content 为结构化对象 |
| [taxonomy/知识类型.json](taxonomy/知识类型.json) · [业务阶段.json](taxonomy/业务阶段.json) · [创作阶段.json](taxonomy/创作阶段.json) | 受控词表（每条带分类说明+边界） |
| [taxonomy/作用域.md](taxonomy/作用域.md) | 5 棵树**不放静态词表**——实时定位 DB（说明在这） |
| [examples/金标样例.md](examples/金标样例.md) | 创作帖 → 完整 payload 的 few-shot（How / What / Why 各一） |
| [tools/tools.md](tools/tools.md) | scope-link / lint-payload / ingest-post 接口手册 |

## 操作流程

整个流程围绕**一个滚动文件 `framework.json`**：② 搭骨架+轻标签，③ 就地补作用域，⑤ 组装成 `payload.json`。

```
① 读懂(视觉)          图/视频 → 文字
② 拆框架+轻标签       判几颗→剔制作→目的/怎么做/产出 + 知识类型/业务阶段/创作阶段/动作   → framework.json（作用域留空）
③ 作用域(重)          per-step 5 类带值 + 互斥边界 + 定位（复用原名/新建）              → framework.json（就地补作用域）
⑤ 组装(代码)          拼 content+维度，scopes=各步并集 → lint                          → payload.json
```

## 上下文纪律（重要，照做省预算）

- **本文读一遍，别回头重读**；需要某阶段细节直接读对应阶段文件。
- **读过的文件别重复 Read**——内容已在记忆里。只想确认某概念用 Grep，只想看目录用 Glob。
- 进了第二/三阶段**别重读**第一阶段文件。
- 中断后接着做：用户**可能改过**的产物（framework.json / payload.json）要重读；skill 本身没变，不重读。

## 卡住了怎么办

某阶段过关条件过不去 → **别硬闯下一阶段**，回当前阶段修。修两次还过不去 → 在该颗挂 `"inferred": true, "inferred_reason": "反复过不去，需人工看"`，再往下走。
