Explorar o código

What 结构化改造 + 作用域多值 + 界定→概要

- 拆三类专属 schema(how/why/what),删旧合并版;What 的 content 改结构化对象 {name,kind,维度拆分规则,body[]},概要入 custom_ext
- 作用域提示词改「平铺多值+摊正交」;form 补三模态+实质剥离;作用/意图/感受定义迭代
- kind 三值定义重写:子集(可多挑)/多维关系(多维度并陈刻画)/序列;基于真实数据校准
- 界定→概要 全局重命名(字段名;动词"界定/列举"用法保留)
- decompose/rebuild/lint 同步;前端 WhatCard 读 body+维度拆分规则+概要
- 本地确定性迁移现有数据到新形状(云端 decompose 重跑将覆盖)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
SamLee hai 3 semanas
pai
achega
9043b1dcee

+ 15 - 9
scripts/decompose.py

@@ -234,14 +234,17 @@ def _slim(knowledges: list[dict]) -> list[dict]:
                            "directive": (s.get("directive") or "")[:500], "output": s.get("output")}
                           for s in k.get("steps", [])]
         else:
-            e["内容"] = {x: k.get(x) for x in ("界定", "主体", "主张", "支撑") if k.get(x)}
+            e["内容"] = {x: k.get(x) for x in ("概要", "维度拆分规则", "body", "主张", "支撑") if k.get(x)}
         slim.append(e)
     return slim
 
 
 def scope_candidates(knowledges: list[dict]) -> list:
     user = ("给下面每颗知识标作用域候选(how 逐步:每个 step 一组;what/why 颗级:整颗一组)。\n"
-            "只输出 JSON:{\"scopes\":[{\"knowledge_id\":\"k1\",\"step_id\":\"s1\",\"items\":[{\"scope_type\":\"substance\",\"value\":\"…\"}]},"
+            "每类平铺列出所有相关值(同类可多条、全部对等、不选主次);先脑内摊正交、收敛近义;意图通常 1 个。\n"
+            "只输出 JSON:{\"scopes\":[{\"knowledge_id\":\"k1\",\"step_id\":\"s1\",\"items\":["
+            "{\"scope_type\":\"substance\",\"value\":\"实质值1\"},{\"scope_type\":\"substance\",\"value\":\"实质值2\"},"
+            "{\"scope_type\":\"form\",\"value\":\"形式值1\"},{\"scope_type\":\"intent\",\"value\":\"意图值\"}]},"
             "{\"knowledge_id\":\"k2\",\"step_id\":null,\"items\":[...]}]}\n\n"
             + json.dumps(_slim(knowledges), ensure_ascii=False))
     return chat_json(PHASE2, user, timeout=120).get("scopes") or []
@@ -312,7 +315,8 @@ def apply_scopes(knowledges: list[dict], scopes: list, linker: ScopeLinker) -> N
 
 
 # ---------- ⑤ 组装 ----------
-def build_content(k: dict) -> str:
+def build_content(k: dict):
+    """How/Why → 拍平字符串;What → 结构化实体对象 {name,kind,维度拆分规则,body[]}。"""
     t = k.get("type")
     if t == "how":
         lines = [f"目标:{k.get('purpose','')}"]
@@ -320,16 +324,16 @@ def build_content(k: dict) -> str:
             lines += [f"步骤{i}",
                       f"  输入:{s.get('input','')}", f"  方法:{s.get('directive','')}", f"  产出:{s.get('output','')}"]
         return "\n".join(lines)
-    if t == "what":
-        head = f"界定:{k.get('界定','')}"
-        if k.get("kind"):
-            head += f"(结构:{k['kind']})"
-        return "\n".join([head] + _sections(k.get("主体")))
+    if t == "what":  # 结构化实体(非字符串);概要走 custom_ext,不进 content
+        return {"name": k.get("title") or "", "kind": k.get("kind"),
+                "维度拆分规则": k.get("维度拆分规则") if k.get("kind") == "子集" else None,
+                "body": [{"item_name": it.get("item_name", ""), "item_desc": it.get("item_desc", ""),
+                          "作用域": it.get("作用域") or []} for it in (k.get("body") or [])]}
     return "\n".join([f"主张:{k.get('主张','')}"] + _sections(k.get("支撑")))
 
 
 def _sections(blocks) -> list[str]:
-    """把 what.主体 / why.支撑 的自由小节拼成文本行。"""
+    """把 why.支撑 的自由小节拼成文本行(What 已改结构化 body,不再走这里)。"""
     out = []
     for b in blocks or []:
         head = b.get("小标题") or ""
@@ -362,6 +366,8 @@ def build_payload(post, k: dict, how_titles: dict | None = None) -> dict:
     else:
         add(k.get("作用域", []))
     ext = [{"key": "业务阶段", "type": "str", "value": v} for v in (k.get("业务阶段") or [])]
+    if t == "what" and k.get("概要"):  # What 的概要迁到 custom_ext(不再进 content)
+        ext.append({"key": "概要", "type": "str", "value": k["概要"]})
     if t == "how":
         cs, cseen = [], set()
         for s in k.get("steps", []):

+ 9 - 4
scripts/rebuild_payloads.py

@@ -34,7 +34,8 @@ def _sections(blocks) -> list:
     return out
 
 
-def content(k: dict) -> str:
+def content(k: dict):
+    """How/Why → 拍平字符串;What → 结构化实体对象 {name,kind,维度拆分规则,body[]}。"""
     t = k["type"]
     if t == "how":
         L = [f"目标:{k.get('purpose','')}"]
@@ -42,9 +43,11 @@ def content(k: dict) -> str:
             L += [f"步骤{i}", f"  输入:{s.get('input','')}",
                   f"  方法:{s.get('directive','')}", f"  产出:{s.get('output','')}"]
         return "\n".join(L)
-    if t == "what":
-        head = f"界定:{k.get('界定','')}" + (f"({k['kind']}型)" if k.get("kind") else "")
-        return "\n".join([head] + _sections(k.get("主体")))
+    if t == "what":  # 结构化实体;概要走 custom_ext
+        return {"name": k.get("title") or "", "kind": k.get("kind"),
+                "维度拆分规则": k.get("维度拆分规则") if k.get("kind") == "子集" else None,
+                "body": [{"item_name": it.get("item_name", ""), "item_desc": it.get("item_desc", ""),
+                          "作用域": it.get("作用域") or []} for it in (k.get("body") or [])]}
     return "\n".join([f"主张:{k.get('主张','')}"] + _sections(k.get("支撑")))
 
 
@@ -80,6 +83,8 @@ def main() -> None:
             else:
                 add(k.get("作用域", []))
             ext = [{"key": "业务阶段", "type": "str", "value": v} for v in (k.get("业务阶段") or [])]
+            if t == "what" and k.get("概要"):
+                ext.append({"key": "概要", "type": "str", "value": k["概要"]})
             if t == "how":
                 cs, cseen = [], set()
                 for s in k.get("steps", []):

+ 341 - 382
web/frameworks.json

@@ -514,26 +514,7 @@
       "卡片4",
       "卡片5"
      ],
-     "界定": "通过创作者内心真实感受来判断选题潜力的心理反馈指标。",
      "kind": "子集",
-     "主体": [
-      {
-       "小标题": "信号对比",
-       "形式": "对照",
-       "条目": [
-        {
-         "词": "内心毫无波澜",
-         "说明": "觉得内容逻辑通顺,但没有情感起伏。",
-         "选择线索": "这意味着该选题极大概率为“正确但无感”,爆火潜力低。"
-        },
-        {
-         "词": "羞耻感与冒犯感",
-         "说明": "内心感到不好意思、心虚、怕太直白被说在装、怕被指责贩卖焦虑。",
-         "选择线索": "这意味着触碰了真实但被社交礼仪包裹的内容,具有穿透力,属于爆款预兆。"
-        }
-       ]
-      }
-     ],
      "作用域": [
       {
        "scope_type": "substance",
@@ -655,6 +636,20 @@
         }
        ]
       }
+     ],
+     "概要": "通过创作者内心真实感受来判断选题潜力的心理反馈指标。",
+     "维度拆分规则": null,
+     "body": [
+      {
+       "item_name": "内心毫无波澜",
+       "item_desc": "觉得内容逻辑通顺,但没有情感起伏。(何时选:这意味着该选题极大概率为“正确但无感”,爆火潜力低。)",
+       "作用域": []
+      },
+      {
+       "item_name": "羞耻感与冒犯感",
+       "item_desc": "内心感到不好意思、心虚、怕太直白被说在装、怕被指责贩卖焦虑。(何时选:这意味着触碰了真实但被社交礼仪包裹的内容,具有穿透力,属于爆款预兆。)",
+       "作用域": []
+      }
      ]
     }
    ]
@@ -727,51 +722,7 @@
       "卡片5",
       "卡片6"
      ],
-     "界定": "本文总结了编剧常用的7种叙事结构及其逻辑特点。",
      "kind": "子集",
-     "主体": [
-      {
-       "小标题": "叙事结构详情",
-       "形式": "清单",
-       "条目": [
-        {
-         "词": "三幕式结构",
-         "说明": "最基础的线性逻辑,分为三部分:第一幕(开端)交代背景、人设及核心冲突触发;第二幕(发展)是故事主体,包含冲突升级、阻碍、失败及人物成长;第三幕(高潮与结局)核心问题解决,给出收尾。",
-         "选择线索": "追求节奏张弛有度、起承转合的线性叙事时使用。"
-        },
-        {
-         "词": "英雄之旅结构",
-         "说明": "核心是“平凡人到英雄的蜕变”。情节节点包含:启程(离开舒适区)→ 考验(核心阶段,遇挑战/盟友/反派)→ 归来(获得成长/收获并回归)。",
-         "选择线索": "适合成长、冒险、励志题材。"
-        },
-        {
-         "词": "非线性结构",
-         "说明": "打破时间先后,通过时间拆解、重组(闪回、倒叙、多视角)呈现故事。",
-         "选择线索": "旨在制造悬念、增强张力时使用。"
-        },
-        {
-         "词": "环形结构",
-         "说明": "结尾与开端呼应。分为非循环类(追求宿命感或圆满感)和带循环类(重复经历事件直到达成目标)。",
-         "选择线索": "追求首尾呼应、闭环感、宿命感或需要表现重复循环逻辑时使用。"
-        },
-        {
-         "词": "多线叙事结构",
-         "说明": "多条独立故事线并行推进,并在某节点交汇。",
-         "选择线索": "需要丰富故事维度、提升信息密度时使用。"
-        },
-        {
-         "词": "嵌套式结构",
-         "说明": "又称套层结构,一层故事包裹另一层(戏中戏、梦中梦),内外层互相呼应或推动。",
-         "选择线索": "需要内外层故事互文或多重叙事空间时使用。"
-        },
-        {
-         "词": "反结构",
-         "说明": "又称无结构/碎片化结构。打破传统框架,不追求完整性,没有传统意义上的主角成长或完整结局,靠人物状态和细节打动观众。",
-         "选择线索": "适合文艺片或实验性影片,注重氛围营造和情绪表达时使用。"
-        }
-       ]
-      }
-     ],
      "作用域": [
       {
        "scope_type": "substance",
@@ -917,6 +868,45 @@
         }
        ]
       }
+     ],
+     "概要": "本文总结了编剧常用的7种叙事结构及其逻辑特点。",
+     "维度拆分规则": null,
+     "body": [
+      {
+       "item_name": "三幕式结构",
+       "item_desc": "最基础的线性逻辑,分为三部分:第一幕(开端)交代背景、人设及核心冲突触发;第二幕(发展)是故事主体,包含冲突升级、阻碍、失败及人物成长;第三幕(高潮与结局)核心问题解决,给出收尾。(何时选:追求节奏张弛有度、起承转合的线性叙事时使用。)",
+       "作用域": []
+      },
+      {
+       "item_name": "英雄之旅结构",
+       "item_desc": "核心是“平凡人到英雄的蜕变”。情节节点包含:启程(离开舒适区)→ 考验(核心阶段,遇挑战/盟友/反派)→ 归来(获得成长/收获并回归)。(何时选:适合成长、冒险、励志题材。)",
+       "作用域": []
+      },
+      {
+       "item_name": "非线性结构",
+       "item_desc": "打破时间先后,通过时间拆解、重组(闪回、倒叙、多视角)呈现故事。(何时选:旨在制造悬念、增强张力时使用。)",
+       "作用域": []
+      },
+      {
+       "item_name": "环形结构",
+       "item_desc": "结尾与开端呼应。分为非循环类(追求宿命感或圆满感)和带循环类(重复经历事件直到达成目标)。(何时选:追求首尾呼应、闭环感、宿命感或需要表现重复循环逻辑时使用。)",
+       "作用域": []
+      },
+      {
+       "item_name": "多线叙事结构",
+       "item_desc": "多条独立故事线并行推进,并在某节点交汇。(何时选:需要丰富故事维度、提升信息密度时使用。)",
+       "作用域": []
+      },
+      {
+       "item_name": "嵌套式结构",
+       "item_desc": "又称套层结构,一层故事包裹另一层(戏中戏、梦中梦),内外层互相呼应或推动。(何时选:需要内外层故事互文或多重叙事空间时使用。)",
+       "作用域": []
+      },
+      {
+       "item_name": "反结构",
+       "item_desc": "又称无结构/碎片化结构。打破传统框架,不追求完整性,没有传统意义上的主角成长或完整结局,靠人物状态和细节打动观众。(何时选:适合文艺片或实验性影片,注重氛围营造和情绪表达时使用。)",
+       "作用域": []
+      }
      ]
     }
    ]
@@ -1345,32 +1335,7 @@
      "出处": [
       "卡片1"
      ],
-     "界定": "前提是剧本的目标和核心驱动力,通过特定公式决定了人物特征。",
      "kind": "多维关系",
-     "主体": [
-      {
-       "小标题": "前提公式构成",
-       "形式": "构成",
-       "条目": [
-        {
-         "词": "作者立场",
-         "说明": "作者对主题的态度或价值观"
-        },
-        {
-         "词": "人物",
-         "说明": "体现前提特征的承载主体"
-        },
-        {
-         "词": "冲突",
-         "说明": "推动前提发展的矛盾动力"
-        },
-        {
-         "词": "结论",
-         "说明": "故事最终证明的道理或逻辑终点"
-        }
-       ]
-      }
-     ],
      "作用域": [
       {
        "scope_type": "substance",
@@ -1444,6 +1409,30 @@
         }
        ]
       }
+     ],
+     "概要": "前提是剧本的目标和核心驱动力,通过特定公式决定了人物特征。",
+     "维度拆分规则": null,
+     "body": [
+      {
+       "item_name": "作者立场",
+       "item_desc": "作者对主题的态度或价值观",
+       "作用域": []
+      },
+      {
+       "item_name": "人物",
+       "item_desc": "体现前提特征的承载主体",
+       "作用域": []
+      },
+      {
+       "item_name": "冲突",
+       "item_desc": "推动前提发展的矛盾动力",
+       "作用域": []
+      },
+      {
+       "item_name": "结论",
+       "item_desc": "故事最终证明的道理或逻辑终点",
+       "作用域": []
+      }
      ]
     },
     {
@@ -1461,28 +1450,7 @@
      "出处": [
       "卡片2"
      ],
-     "界定": "人物是背景、生理、遗传和教育的合成物,由三个具体维度构成。",
      "kind": "多维关系",
-     "主体": [
-      {
-       "小标题": "人物维度细分",
-       "形式": "清单",
-       "条目": [
-        {
-         "词": "生理维度",
-         "说明": "包括性别、年龄、外表等先天及外在特征"
-        },
-        {
-         "词": "社会维度",
-         "说明": "包括阶层、职业、社教等社会关系背景"
-        },
-        {
-         "词": "心理维度",
-         "说明": "包括道德标准、志向、挫折等内在精神世界"
-        }
-       ]
-      }
-     ],
      "作用域": [
       {
        "scope_type": "substance",
@@ -1556,6 +1524,25 @@
         }
        ]
       }
+     ],
+     "概要": "人物是背景、生理、遗传和教育的合成物,由三个具体维度构成。",
+     "维度拆分规则": null,
+     "body": [
+      {
+       "item_name": "生理维度",
+       "item_desc": "包括性别、年龄、外表等先天及外在特征",
+       "作用域": []
+      },
+      {
+       "item_name": "社会维度",
+       "item_desc": "包括阶层、职业、社教等社会关系背景",
+       "作用域": []
+      },
+      {
+       "item_name": "心理维度",
+       "item_desc": "包括道德标准、志向、挫折等内在精神世界",
+       "作用域": []
+      }
      ]
     },
     {
@@ -1573,36 +1560,7 @@
      "出处": [
       "卡片4"
      ],
-     "界定": "根据人物发展和逻辑连贯性将冲突分为四种形态。",
      "kind": "子集",
-     "主体": [
-      {
-       "小标题": "冲突形态分类",
-       "形式": "分类",
-       "条目": [
-        {
-         "词": "静态冲突",
-         "说明": "人物不发展,无升级冲突的能力",
-         "选择线索": "通常应避免,因其无法推动剧情"
-        },
-        {
-         "词": "跳跃冲突",
-         "说明": "不服从常理,强迫人物做出不符本性的行动",
-         "选择线索": "通常应避免,因其破坏逻辑真实性"
-        },
-        {
-         "词": "缓慢升级冲突",
-         "说明": "建立在对立统一基础上的自然升级",
-         "选择线索": "剧本创作的首选,最为自然稳健"
-        },
-        {
-         "词": "预示冲突",
-         "说明": "即张力,是对冲突的允诺",
-         "选择线索": "用于在实际冲突爆发前制造悬念和期待"
-        }
-       ]
-      }
-     ],
      "作用域": [
       {
        "scope_type": "substance",
@@ -1676,6 +1634,30 @@
         }
        ]
       }
+     ],
+     "概要": "根据人物发展和逻辑连贯性将冲突分为四种形态。",
+     "维度拆分规则": null,
+     "body": [
+      {
+       "item_name": "静态冲突",
+       "item_desc": "人物不发展,无升级冲突的能力(何时选:通常应避免,因其无法推动剧情)",
+       "作用域": []
+      },
+      {
+       "item_name": "跳跃冲突",
+       "item_desc": "不服从常理,强迫人物做出不符本性的行动(何时选:通常应避免,因其破坏逻辑真实性)",
+       "作用域": []
+      },
+      {
+       "item_name": "缓慢升级冲突",
+       "item_desc": "建立在对立统一基础上的自然升级(何时选:剧本创作的首选,最为自然稳健)",
+       "作用域": []
+      },
+      {
+       "item_name": "预示冲突",
+       "item_desc": "即张力,是对冲突的允诺(何时选:用于在实际冲突爆发前制造悬念和期待)",
+       "作用域": []
+      }
      ]
     },
     {
@@ -2259,35 +2241,7 @@
       "卡片8",
       "卡片9"
      ],
-     "界定": "构成一个完整故事结构的五个核心动作/部分。",
      "kind": "序列",
-     "主体": [
-      {
-       "小标题": "构成要素",
-       "条目": [
-        {
-         "词": "激励事件",
-         "说明": "打破生活平衡的决定性事件,可能是随机或有因的。它的功能是激发恢复平衡的欲望,开启求索之路,并作为大钩子预示危机。"
-        },
-        {
-         "词": "进展纠葛",
-         "说明": "循序渐进制造出的冲突,涵盖内心、个人、个人与外界多重层面。"
-        },
-        {
-         "词": "危机",
-         "说明": "故事最紧张的点,人物必须在不可调和的两难境地中为欲望做最后努力,揭示深层性格。"
-        },
-        {
-         "词": "高潮",
-         "说明": "价值朝向绝对且不可逆转的剧烈摇摆,满足观众的情感预期。"
-        },
-        {
-         "词": "结局",
-         "说明": "为次情节提供平衡机会,展示高潮影响,形成逻辑闭环并对观众表示尊重。"
-        }
-       ]
-      }
-     ],
      "作用域": [
       {
        "scope_type": "substance",
@@ -2385,6 +2339,35 @@
         }
        ]
       }
+     ],
+     "概要": "构成一个完整故事结构的五个核心动作/部分。",
+     "维度拆分规则": null,
+     "body": [
+      {
+       "item_name": "激励事件",
+       "item_desc": "打破生活平衡的决定性事件,可能是随机或有因的。它的功能是激发恢复平衡的欲望,开启求索之路,并作为大钩子预示危机。",
+       "作用域": []
+      },
+      {
+       "item_name": "进展纠葛",
+       "item_desc": "循序渐进制造出的冲突,涵盖内心、个人、个人与外界多重层面。",
+       "作用域": []
+      },
+      {
+       "item_name": "危机",
+       "item_desc": "故事最紧张的点,人物必须在不可调和的两难境地中为欲望做最后努力,揭示深层性格。",
+       "作用域": []
+      },
+      {
+       "item_name": "高潮",
+       "item_desc": "价值朝向绝对且不可逆转的剧烈摇摆,满足观众的情感预期。",
+       "作用域": []
+      },
+      {
+       "item_name": "结局",
+       "item_desc": "为次情节提供平衡机会,展示高潮影响,形成逻辑闭环并对观众表示尊重。",
+       "作用域": []
+      }
      ]
     },
     {
@@ -2399,31 +2382,7 @@
      "出处": [
       "卡片3"
      ],
-     "界定": "故事结构由小到大的组成关系层级。",
      "kind": "序列",
-     "主体": [
-      {
-       "小标题": "结构层级",
-       "条目": [
-        {
-         "词": "节拍",
-         "说明": "构成场景的最小单位。"
-        },
-        {
-         "词": "场景",
-         "说明": "由节拍构成。"
-        },
-        {
-         "词": "序列",
-         "说明": "由一系列场景构成。"
-        },
-        {
-         "词": "幕",
-         "说明": "由序列构成。三幕故事通常需要四个重大场景。"
-        }
-       ]
-      }
-     ],
      "作用域": [
       {
        "scope_type": "substance",
@@ -2473,6 +2432,30 @@
         }
        ]
       }
+     ],
+     "概要": "故事结构由小到大的组成关系层级。",
+     "维度拆分规则": null,
+     "body": [
+      {
+       "item_name": "节拍",
+       "item_desc": "构成场景的最小单位。",
+       "作用域": []
+      },
+      {
+       "item_name": "场景",
+       "item_desc": "由节拍构成。",
+       "作用域": []
+      },
+      {
+       "item_name": "序列",
+       "item_desc": "由一系列场景构成。",
+       "作用域": []
+      },
+      {
+       "item_name": "幕",
+       "item_desc": "由序列构成。三幕故事通常需要四个重大场景。",
+       "作用域": []
+      }
      ]
     },
     {
@@ -2489,31 +2472,7 @@
       "卡片5",
       "卡片6"
      ],
-     "界定": "构建一个有效场景所需的关键设计元素。",
      "kind": "多维关系",
-     "主体": [
-      {
-       "小标题": "要素说明",
-       "条目": [
-        {
-         "词": "转折点",
-         "说明": "通过惊奇感增强好奇心,带给观众新的见识和情节走向。"
-        },
-        {
-         "词": "伏笔与分晓",
-         "说明": "知识的渐次铺陈与适时传达。"
-        },
-        {
-         "词": "情感转变",
-         "说明": "以快感与痛感为核心,创造正面与负面的动态交替。"
-        },
-        {
-         "词": "两难选择",
-         "说明": "人物面临不可调和的两善取其一,或两恶取其轻。"
-        }
-       ]
-      }
-     ],
      "作用域": [
       {
        "scope_type": "substance",
@@ -2611,6 +2570,30 @@
         }
        ]
       }
+     ],
+     "概要": "构建一个有效场景所需的关键设计元素。",
+     "维度拆分规则": null,
+     "body": [
+      {
+       "item_name": "转折点",
+       "item_desc": "通过惊奇感增强好奇心,带给观众新的见识和情节走向。",
+       "作用域": []
+      },
+      {
+       "item_name": "伏笔与分晓",
+       "item_desc": "知识的渐次铺陈与适时传达。",
+       "作用域": []
+      },
+      {
+       "item_name": "情感转变",
+       "item_desc": "以快感与痛感为核心,创造正面与负面的动态交替。",
+       "作用域": []
+      },
+      {
+       "item_name": "两难选择",
+       "item_desc": "人物面临不可调和的两善取其一,或两恶取其轻。",
+       "作用域": []
+      }
      ]
     },
     {
@@ -3212,27 +3195,7 @@
      "出处": [
       "图3"
      ],
-     "界定": "指短视频脚本在结构层面上必须具备的三个关键组成部分。",
      "kind": "序列",
-     "主体": [
-      {
-       "小标题": "结构组成",
-       "条目": [
-        {
-         "词": "开头/引子",
-         "说明": "黄金3秒。利用视觉冲击、意想不到的镜头或噱头点名主题/提出疑问,达到吸引好奇的目的。"
-        },
-        {
-         "词": "中间/内容主题",
-         "说明": "进行论述或讲述故事。要求有起伏的故事线,把握节奏,提出方法或握出观点。"
-        },
-        {
-         "词": "结尾/总结",
-         "说明": "产生印象点与情感共鸣。总结内容、抛出后续问题、引出下期或给出行动指令。"
-        }
-       ]
-      }
-     ],
      "作用域": [
       {
        "scope_type": "form",
@@ -3330,6 +3293,25 @@
         }
        ]
       }
+     ],
+     "概要": "指短视频脚本在结构层面上必须具备的三个关键组成部分。",
+     "维度拆分规则": null,
+     "body": [
+      {
+       "item_name": "开头/引子",
+       "item_desc": "黄金3秒。利用视觉冲击、意想不到的镜头或噱头点名主题/提出疑问,达到吸引好奇的目的。",
+       "作用域": []
+      },
+      {
+       "item_name": "中间/内容主题",
+       "item_desc": "进行论述或讲述故事。要求有起伏的故事线,把握节奏,提出方法或握出观点。",
+       "作用域": []
+      },
+      {
+       "item_name": "结尾/总结",
+       "item_desc": "产生印象点与情感共鸣。总结内容、抛出后续问题、引出下期或给出行动指令。",
+       "作用域": []
+      }
      ]
     },
     {
@@ -3345,30 +3327,7 @@
      "出处": [
       "图3"
      ],
-     "界定": "针对Vlog题材提供的三套预设脚本逻辑结构。",
      "kind": "子集",
-     "主体": [
-      {
-       "小标题": "公式分类",
-       "条目": [
-        {
-         "词": "引起共鸣法",
-         "说明": "人物+状态+情感。",
-         "选择线索": "侧重于建立观众与创作者之间的情感连接时使用"
-        },
-        {
-         "词": "引发好奇法",
-         "说明": "时间/观点+悬念。",
-         "选择线索": "侧重于通过悬疑感提升视频完播率时使用"
-        },
-        {
-         "词": "引发互动法",
-         "说明": "主题+情景+问句。",
-         "选择线索": "侧重于引导评论区讨论或增加账号互动时使用"
-        }
-       ]
-      }
-     ],
      "作用域": [
       {
        "scope_type": "substance",
@@ -3466,6 +3425,25 @@
         }
        ]
       }
+     ],
+     "概要": "针对Vlog题材提供的三套预设脚本逻辑结构。",
+     "维度拆分规则": null,
+     "body": [
+      {
+       "item_name": "引起共鸣法",
+       "item_desc": "人物+状态+情感。(何时选:侧重于建立观众与创作者之间的情感连接时使用)",
+       "作用域": []
+      },
+      {
+       "item_name": "引发好奇法",
+       "item_desc": "时间/观点+悬念。(何时选:侧重于通过悬疑感提升视频完播率时使用)",
+       "作用域": []
+      },
+      {
+       "item_name": "引发互动法",
+       "item_desc": "主题+情景+问句。(何时选:侧重于引导评论区讨论或增加账号互动时使用)",
+       "作用域": []
+      }
      ]
     },
     {
@@ -3483,40 +3461,7 @@
      "出处": [
       "图4"
      ],
-     "界定": "在脚本细化阶段通过改变画面元素排列来传达不同意图的方法。",
      "kind": "子集",
-     "主体": [
-      {
-       "小标题": "构图类型",
-       "条目": [
-        {
-         "词": "水平线构图",
-         "说明": "水平线横贯画面。",
-         "选择线索": "需要表现稳定感、平静感时选择"
-        },
-        {
-         "词": "对角线构图",
-         "说明": "主体沿对角线分布。",
-         "选择线索": "需要增强画面动感、引导视线延伸时选择"
-        },
-        {
-         "词": "中心构图",
-         "说明": "主体居于画面中心。",
-         "选择线索": "需要绝对突出主体、减少干扰时选择"
-        },
-        {
-         "词": "框式构图",
-         "说明": "利用前景形成窗户或门洞般的边框。",
-         "选择线索": "需要营造窥视感、神秘感或增强画面层次时选择"
-        },
-        {
-         "词": "九宫格/三分法构图",
-         "说明": "将画面按九宫格划分或三等分。",
-         "选择线索": "需要画面排列醒目且简化内容、使画面和谐舒适时选择"
-        }
-       ]
-      }
-     ],
      "作用域": [
       {
        "scope_type": "substance",
@@ -3614,6 +3559,35 @@
         }
        ]
       }
+     ],
+     "概要": "在脚本细化阶段通过改变画面元素排列来传达不同意图的方法。",
+     "维度拆分规则": null,
+     "body": [
+      {
+       "item_name": "水平线构图",
+       "item_desc": "水平线横贯画面。(何时选:需要表现稳定感、平静感时选择)",
+       "作用域": []
+      },
+      {
+       "item_name": "对角线构图",
+       "item_desc": "主体沿对角线分布。(何时选:需要增强画面动感、引导视线延伸时选择)",
+       "作用域": []
+      },
+      {
+       "item_name": "中心构图",
+       "item_desc": "主体居于画面中心。(何时选:需要绝对突出主体、减少干扰时选择)",
+       "作用域": []
+      },
+      {
+       "item_name": "框式构图",
+       "item_desc": "利用前景形成窗户或门洞般的边框。(何时选:需要营造窥视感、神秘感或增强画面层次时选择)",
+       "作用域": []
+      },
+      {
+       "item_name": "九宫格/三分法构图",
+       "item_desc": "将画面按九宫格划分或三等分。(何时选:需要画面排列醒目且简化内容、使画面和谐舒适时选择)",
+       "作用域": []
+      }
      ]
     }
    ]
@@ -3663,31 +3637,7 @@
      "出处": [
       "卡片1"
      ],
-     "界定": "指通过特定结构组合时间、结果、痛点等元素,快速生成具有吸引力的标题模版。",
      "kind": "子集",
-     "主体": [
-      {
-       "小标题": "标题公式清单",
-       "形式": "清单",
-       "条目": [
-        {
-         "词": "时间 + 结果 + 经验",
-         "说明": "用量化的成果来勾住用户引起好奇。例:『半年时间涨粉11w,全靠这个万能公式』",
-         "选择线索": "适用于展示过往成就、成功案例或有具体量化结果的复盘类内容。"
-        },
-        {
-         "词": "痛点 + 解决方法 + 保证",
-         "说明": "精准戳中用户当下的难题并给出确定性的承诺。例:『小红书不涨粉,3大技巧照做就对了』",
-         "选择线索": "适用于解决具体困难、提供教程或避坑指南等强功能性内容。"
-        },
-        {
-         "词": "方法 + 保证",
-         "说明": "强调方法简单易操作,降低用户的心理门槛。例:『傻瓜式化妆手法,有手就行』",
-         "选择线索": "适用于难度较大但已被简化的技巧,或强调人人皆可上手的垂类教程。"
-        }
-       ]
-      }
-     ],
      "作用域": [
       {
        "scope_type": "substance",
@@ -3785,6 +3735,25 @@
         }
        ]
       }
+     ],
+     "概要": "指通过特定结构组合时间、结果、痛点等元素,快速生成具有吸引力的标题模版。",
+     "维度拆分规则": null,
+     "body": [
+      {
+       "item_name": "时间 + 结果 + 经验",
+       "item_desc": "用量化的成果来勾住用户引起好奇。例:『半年时间涨粉11w,全靠这个万能公式』(何时选:适用于展示过往成就、成功案例或有具体量化结果的复盘类内容。)",
+       "作用域": []
+      },
+      {
+       "item_name": "痛点 + 解决方法 + 保证",
+       "item_desc": "精准戳中用户当下的难题并给出确定性的承诺。例:『小红书不涨粉,3大技巧照做就对了』(何时选:适用于解决具体困难、提供教程或避坑指南等强功能性内容。)",
+       "作用域": []
+      },
+      {
+       "item_name": "方法 + 保证",
+       "item_desc": "强调方法简单易操作,降低用户的心理门槛。例:『傻瓜式化妆手法,有手就行』(何时选:适用于难度较大但已被简化的技巧,或强调人人皆可上手的垂类教程。)",
+       "作用域": []
+      }
      ]
     },
     {
@@ -3800,61 +3769,7 @@
       "卡片2",
       "卡片3"
      ],
-     "界定": "通过改变表达语气和信息组织方式,增强标题吸引力的具体手法。",
      "kind": "子集",
-     "主体": [
-      {
-       "小标题": "常见标题技巧明细",
-       "形式": "清单",
-       "条目": [
-        {
-         "词": "提问式",
-         "说明": "直击痛点,用用户最关心的困惑开篇,引导对号入座。",
-         "选择线索": "用户存在明显痛点且渴望寻找答案时使用。"
-        },
-        {
-         "词": "设问式",
-         "说明": "先抛出问题再给出预告方案,勾起好奇并预示价值。",
-         "选择线索": "想在标题中完整体现“问题-方案”结构,预告高价值干货时使用。"
-        },
-        {
-         "词": "数字式",
-         "说明": "用具体数字增强客观性和干货感,降低用户阅读决策成本。",
-         "选择线索": "内容包含多项要点或具体量化成果时首选。"
-        },
-        {
-         "词": "利益式",
-         "说明": "直接表明用户能够获得的具体好处或价值。",
-         "选择线索": "内容能提供显著、具体的价值回报时使用。"
-        },
-        {
-         "词": "悬念式",
-         "说明": "刻意隐藏关键信息,只说一半内容,激发点击欲望。",
-         "选择线索": "内容有明显转折或出人意料的结论时使用。"
-        },
-        {
-         "词": "对比式",
-         "说明": "利用差异感、反差和矛盾制造视觉或心理上的冲突感。",
-         "选择线索": "内容包含前后变化、新手VS老手或不同方案优劣对比时使用。"
-        },
-        {
-         "词": "劝诫式",
-         "说明": "利用用户的“避坑”心理和“损失厌恶”本能抓住注意力。",
-         "选择线索": "提醒用户避免常见错误、揭露真相或提供警示时使用。"
-        },
-        {
-         "词": "共情式",
-         "说明": "替用户发声,说出其想说而未说的话,引发情绪上的认同。",
-         "选择线索": "内容侧重于观点输出、情感共鸣或职场/生活态度时使用。"
-        },
-        {
-         "词": "热点式",
-         "说明": "绑定节日、热门事件或潮流趋势进行借势营销。",
-         "选择线索": "内容能与当前社交媒体热门话题、节点挂钩时使用。"
-        }
-       ]
-      }
-     ],
      "作用域": [
       {
        "scope_type": "substance",
@@ -4000,6 +3915,55 @@
         }
        ]
       }
+     ],
+     "概要": "通过改变表达语气和信息组织方式,增强标题吸引力的具体手法。",
+     "维度拆分规则": null,
+     "body": [
+      {
+       "item_name": "提问式",
+       "item_desc": "直击痛点,用用户最关心的困惑开篇,引导对号入座。(何时选:用户存在明显痛点且渴望寻找答案时使用。)",
+       "作用域": []
+      },
+      {
+       "item_name": "设问式",
+       "item_desc": "先抛出问题再给出预告方案,勾起好奇并预示价值。(何时选:想在标题中完整体现“问题-方案”结构,预告高价值干货时使用。)",
+       "作用域": []
+      },
+      {
+       "item_name": "数字式",
+       "item_desc": "用具体数字增强客观性和干货感,降低用户阅读决策成本。(何时选:内容包含多项要点或具体量化成果时首选。)",
+       "作用域": []
+      },
+      {
+       "item_name": "利益式",
+       "item_desc": "直接表明用户能够获得的具体好处或价值。(何时选:内容能提供显著、具体的价值回报时使用。)",
+       "作用域": []
+      },
+      {
+       "item_name": "悬念式",
+       "item_desc": "刻意隐藏关键信息,只说一半内容,激发点击欲望。(何时选:内容有明显转折或出人意料的结论时使用。)",
+       "作用域": []
+      },
+      {
+       "item_name": "对比式",
+       "item_desc": "利用差异感、反差和矛盾制造视觉或心理上的冲突感。(何时选:内容包含前后变化、新手VS老手或不同方案优劣对比时使用。)",
+       "作用域": []
+      },
+      {
+       "item_name": "劝诫式",
+       "item_desc": "利用用户的“避坑”心理和“损失厌恶”本能抓住注意力。(何时选:提醒用户避免常见错误、揭露真相或提供警示时使用。)",
+       "作用域": []
+      },
+      {
+       "item_name": "共情式",
+       "item_desc": "替用户发声,说出其想说而未说的话,引发情绪上的认同。(何时选:内容侧重于观点输出、情感共鸣或职场/生活态度时使用。)",
+       "作用域": []
+      },
+      {
+       "item_name": "热点式",
+       "item_desc": "绑定节日、热门事件或潮流趋势进行借势营销。(何时选:内容能与当前社交媒体热门话题、节点挂钩时使用。)",
+       "作用域": []
+      }
      ]
     }
    ]
@@ -4037,21 +4001,7 @@
      "出处": [
       "卡片1"
      ],
-     "界定": "指通过CGI(电脑成像)技术在现实场景中植入超现实装置的视觉创意手法。",
      "kind": "子集",
-     "主体": [
-      {
-       "小标题": "FOOH核心表现形式",
-       "形式": "定义",
-       "条目": [
-        {
-         "词": "CGI/FOOH",
-         "说明": "Fake Out of Home广告,利用超现实装置(如扶梯上的巨大玉米)与现实环境结合。",
-         "选择线索": "适用于需要极强视觉冲击力来快速捕捉用户注意力的短视频营销场景。"
-        }
-       ]
-      }
-     ],
      "作用域": [
       {
        "scope_type": "substance",
@@ -4149,6 +4099,15 @@
         }
        ]
       }
+     ],
+     "概要": "指通过CGI(电脑成像)技术在现实场景中植入超现实装置的视觉创意手法。",
+     "维度拆分规则": null,
+     "body": [
+      {
+       "item_name": "CGI/FOOH",
+       "item_desc": "Fake Out of Home广告,利用超现实装置(如扶梯上的巨大玉米)与现实环境结合。(何时选:适用于需要极强视觉冲击力来快速捕捉用户注意力的短视频营销场景。)",
+       "作用域": []
+      }
      ]
     },
     {

+ 10 - 2
web/index.html

@@ -95,6 +95,7 @@
   .cue b{color:#9a3412}
   .kindb{font-size:10.5px;font-weight:700;padding:1px 8px;border-radius:9px;margin-right:8px;vertical-align:middle}
   .kind-子集{background:#dbeafe;color:#1e40af}.kind-多维关系{background:#dcfce7;color:#166534}.kind-序列{background:#fef3c7;color:#92400e}
+  .dimrule{font-size:10.5px;padding:1px 8px;border-radius:9px;background:#ecfccb;color:#3f6212;margin-right:8px;vertical-align:middle}
   .ksec-f.key{background:#fde68a;color:#92400e;font-weight:700}
   .glossbtn{background:#ede9fe!important;color:#6d28d9!important;border-color:#ddd6fe!important}
   .from{font-size:11px;color:#9ca3af}
@@ -326,9 +327,16 @@ function KSection({b}){
   </div>;
 }
 function WhatCard({k,onScope,onGloss}){
+  const summary=k.概要||k.界定;   // 概要为新字段名,界定为旧数据兜底
   return <div>
-    {k.界定&&<div className="def">{k.kind&&<span className={"kindb kind-"+k.kind}>{k.kind}</span>}界定:{k.界定}</div>}
-    {(k.主体||[]).map((b,i)=><KSection key={i} b={b}/>)}
+    {summary&&<div className="def">
+      {k.kind&&<span className={"kindb kind-"+k.kind}>{k.kind}</span>}
+      {k.维度拆分规则&&<span className="dimrule" title="维度拆分规则(仅子集)">按「{k.维度拆分规则}」拆</span>}
+      概要:{summary}</div>}
+    {k.body
+      ? <table className="elem"><tbody>{k.body.map((it,i)=><tr key={i}>
+          <td className="el">{it.item_name}</td><td>{it.item_desc}</td></tr>)}</tbody></table>
+      : (k.主体||[]).map((b,i)=><KSection key={i} b={b}/>) /* 旧形状兜底 */}
     <KScopes list={k.作用域} onScope={onScope}/>
   </div>;
 }

+ 476 - 37
web/payloads.json

@@ -4,7 +4,7 @@
       "id": "xhs_699308fa0000000016009697",
       "source_type": "post",
       "title": "真正能爆的选题,往往是你写完后感觉羞耻的",
-      "author": "方圆的增长飞轮",
+      "author": "",
       "source_metadata": {
         "platform": "xiaohongshu",
         "url": "https://www.xiaohongshu.com/explore/699308fa0000000016009697"
@@ -84,7 +84,7 @@
       "id": "xhs_699308fa0000000016009697",
       "source_type": "post",
       "title": "真正能爆的选题,往往是你写完后感觉羞耻的",
-      "author": "方圆的增长飞轮",
+      "author": "",
       "source_metadata": {
         "platform": "xiaohongshu",
         "url": "https://www.xiaohongshu.com/explore/699308fa0000000016009697"
@@ -133,14 +133,30 @@
       "id": "xhs_699308fa0000000016009697",
       "source_type": "post",
       "title": "真正能爆的选题,往往是你写完后感觉羞耻的",
-      "author": "方圆的增长飞轮",
+      "author": "",
       "source_metadata": {
         "platform": "xiaohongshu",
         "url": "https://www.xiaohongshu.com/explore/699308fa0000000016009697"
       }
     },
     "title": "高潜选题的心理信号特征",
-    "content": "界定:通过创作者内心真实感受来判断选题潜力的心理反馈指标。(结构:子集)\n【信号对比】(对照)\n  - 内心毫无波澜:觉得内容逻辑通顺,但没有情感起伏。(选用:这意味着该选题极大概率为“正确但无感”,爆火潜力低。)\n  - 羞耻感与冒犯感:内心感到不好意思、心虚、怕太直白被说在装、怕被指责贩卖焦虑。(选用:这意味着触碰了真实但被社交礼仪包裹的内容,具有穿透力,属于爆款预兆。)",
+    "content": {
+      "name": "高潜选题的心理信号特征",
+      "kind": "子集",
+      "维度拆分规则": null,
+      "body": [
+        {
+          "item_name": "内心毫无波澜",
+          "item_desc": "觉得内容逻辑通顺,但没有情感起伏。(何时选:这意味着该选题极大概率为“正确但无感”,爆火潜力低。)",
+          "作用域": []
+        },
+        {
+          "item_name": "羞耻感与冒犯感",
+          "item_desc": "内心感到不好意思、心虚、怕太直白被说在装、怕被指责贩卖焦虑。(何时选:这意味着触碰了真实但被社交礼仪包裹的内容,具有穿透力,属于爆款预兆。)",
+          "作用域": []
+        }
+      ]
+    },
     "dim_creations": [
       "创作"
     ],
@@ -175,6 +191,11 @@
         "type": "str",
         "value": "选题"
       },
+      {
+        "key": "概要",
+        "type": "str",
+        "value": "通过创作者内心真实感受来判断选题潜力的心理反馈指标。"
+      },
       {
         "key": "出自",
         "type": "str",
@@ -187,14 +208,55 @@
       "id": "xhs_698481e1000000000a02a7c1",
       "source_type": "post",
       "title": "7种编剧常用的叙事结构,写剧不用愁!",
-      "author": "Irvin是个编剧(接稿版)",
+      "author": "",
       "source_metadata": {
         "platform": "xiaohongshu",
         "url": "https://www.xiaohongshu.com/explore/698481e1000000000a02a7c1"
       }
     },
     "title": "7种常用叙事结构解析清单",
-    "content": "界定:本文总结了编剧常用的7种叙事结构及其逻辑特点。(结构:子集)\n【叙事结构详情】(清单)\n  - 三幕式结构:最基础的线性逻辑,分为三部分:第一幕(开端)交代背景、人设及核心冲突触发;第二幕(发展)是故事主体,包含冲突升级、阻碍、失败及人物成长;第三幕(高潮与结局)核心问题解决,给出收尾。(选用:追求节奏张弛有度、起承转合的线性叙事时使用。)\n  - 英雄之旅结构:核心是“平凡人到英雄的蜕变”。情节节点包含:启程(离开舒适区)→ 考验(核心阶段,遇挑战/盟友/反派)→ 归来(获得成长/收获并回归)。(选用:适合成长、冒险、励志题材。)\n  - 非线性结构:打破时间先后,通过时间拆解、重组(闪回、倒叙、多视角)呈现故事。(选用:旨在制造悬念、增强张力时使用。)\n  - 环形结构:结尾与开端呼应。分为非循环类(追求宿命感或圆满感)和带循环类(重复经历事件直到达成目标)。(选用:追求首尾呼应、闭环感、宿命感或需要表现重复循环逻辑时使用。)\n  - 多线叙事结构:多条独立故事线并行推进,并在某节点交汇。(选用:需要丰富故事维度、提升信息密度时使用。)\n  - 嵌套式结构:又称套层结构,一层故事包裹另一层(戏中戏、梦中梦),内外层互相呼应或推动。(选用:需要内外层故事互文或多重叙事空间时使用。)\n  - 反结构:又称无结构/碎片化结构。打破传统框架,不追求完整性,没有传统意义上的主角成长或完整结局,靠人物状态和细节打动观众。(选用:适合文艺片或实验性影片,注重氛围营造和情绪表达时使用。)",
+    "content": {
+      "name": "7种常用叙事结构解析清单",
+      "kind": "子集",
+      "维度拆分规则": null,
+      "body": [
+        {
+          "item_name": "三幕式结构",
+          "item_desc": "最基础的线性逻辑,分为三部分:第一幕(开端)交代背景、人设及核心冲突触发;第二幕(发展)是故事主体,包含冲突升级、阻碍、失败及人物成长;第三幕(高潮与结局)核心问题解决,给出收尾。(何时选:追求节奏张弛有度、起承转合的线性叙事时使用。)",
+          "作用域": []
+        },
+        {
+          "item_name": "英雄之旅结构",
+          "item_desc": "核心是“平凡人到英雄的蜕变”。情节节点包含:启程(离开舒适区)→ 考验(核心阶段,遇挑战/盟友/反派)→ 归来(获得成长/收获并回归)。(何时选:适合成长、冒险、励志题材。)",
+          "作用域": []
+        },
+        {
+          "item_name": "非线性结构",
+          "item_desc": "打破时间先后,通过时间拆解、重组(闪回、倒叙、多视角)呈现故事。(何时选:旨在制造悬念、增强张力时使用。)",
+          "作用域": []
+        },
+        {
+          "item_name": "环形结构",
+          "item_desc": "结尾与开端呼应。分为非循环类(追求宿命感或圆满感)和带循环类(重复经历事件直到达成目标)。(何时选:追求首尾呼应、闭环感、宿命感或需要表现重复循环逻辑时使用。)",
+          "作用域": []
+        },
+        {
+          "item_name": "多线叙事结构",
+          "item_desc": "多条独立故事线并行推进,并在某节点交汇。(何时选:需要丰富故事维度、提升信息密度时使用。)",
+          "作用域": []
+        },
+        {
+          "item_name": "嵌套式结构",
+          "item_desc": "又称套层结构,一层故事包裹另一层(戏中戏、梦中梦),内外层互相呼应或推动。(何时选:需要内外层故事互文或多重叙事空间时使用。)",
+          "作用域": []
+        },
+        {
+          "item_name": "反结构",
+          "item_desc": "又称无结构/碎片化结构。打破传统框架,不追求完整性,没有传统意义上的主角成长或完整结局,靠人物状态和细节打动观众。(何时选:适合文艺片或实验性影片,注重氛围营造和情绪表达时使用。)",
+          "作用域": []
+        }
+      ]
+    },
     "dim_creations": [
       "创作"
     ],
@@ -232,6 +294,11 @@
         "key": "业务阶段",
         "type": "str",
         "value": "脚本"
+      },
+      {
+        "key": "概要",
+        "type": "str",
+        "value": "本文总结了编剧常用的7种叙事结构及其逻辑特点。"
       }
     ]
   },
@@ -240,7 +307,7 @@
       "id": "xhs_67e2e39b0000000003028ff0",
       "source_type": "post",
       "title": "剧本创作:理解前提、人物、冲突",
-      "author": "拾意",
+      "author": "",
       "source_metadata": {
         "platform": "xiaohongshu",
         "url": "https://www.xiaohongshu.com/explore/67e2e39b0000000003028ff0"
@@ -352,14 +419,40 @@
       "id": "xhs_67e2e39b0000000003028ff0",
       "source_type": "post",
       "title": "剧本创作:理解前提、人物、冲突",
-      "author": "拾意",
+      "author": "",
       "source_metadata": {
         "platform": "xiaohongshu",
         "url": "https://www.xiaohongshu.com/explore/67e2e39b0000000003028ff0"
       }
     },
     "title": "剧本前提的四维构成",
-    "content": "界定:前提是剧本的目标和核心驱动力,通过特定公式决定了人物特征。(结构:多维关系)\n【前提公式构成】(构成)\n  - 作者立场:作者对主题的态度或价值观\n  - 人物:体现前提特征的承载主体\n  - 冲突:推动前提发展的矛盾动力\n  - 结论:故事最终证明的道理或逻辑终点",
+    "content": {
+      "name": "剧本前提的四维构成",
+      "kind": "多维关系",
+      "维度拆分规则": null,
+      "body": [
+        {
+          "item_name": "作者立场",
+          "item_desc": "作者对主题的态度或价值观",
+          "作用域": []
+        },
+        {
+          "item_name": "人物",
+          "item_desc": "体现前提特征的承载主体",
+          "作用域": []
+        },
+        {
+          "item_name": "冲突",
+          "item_desc": "推动前提发展的矛盾动力",
+          "作用域": []
+        },
+        {
+          "item_name": "结论",
+          "item_desc": "故事最终证明的道理或逻辑终点",
+          "作用域": []
+        }
+      ]
+    },
     "dim_creations": [
       "创作"
     ],
@@ -386,6 +479,11 @@
         "type": "str",
         "value": "脚本"
       },
+      {
+        "key": "概要",
+        "type": "str",
+        "value": "前提是剧本的目标和核心驱动力,通过特定公式决定了人物特征。"
+      },
       {
         "key": "出自",
         "type": "str",
@@ -398,14 +496,35 @@
       "id": "xhs_67e2e39b0000000003028ff0",
       "source_type": "post",
       "title": "剧本创作:理解前提、人物、冲突",
-      "author": "拾意",
+      "author": "",
       "source_metadata": {
         "platform": "xiaohongshu",
         "url": "https://www.xiaohongshu.com/explore/67e2e39b0000000003028ff0"
       }
     },
     "title": "人物设定的三维度模型",
-    "content": "界定:人物是背景、生理、遗传和教育的合成物,由三个具体维度构成。(结构:多维关系)\n【人物维度细分】(清单)\n  - 生理维度:包括性别、年龄、外表等先天及外在特征\n  - 社会维度:包括阶层、职业、社教等社会关系背景\n  - 心理维度:包括道德标准、志向、挫折等内在精神世界",
+    "content": {
+      "name": "人物设定的三维度模型",
+      "kind": "多维关系",
+      "维度拆分规则": null,
+      "body": [
+        {
+          "item_name": "生理维度",
+          "item_desc": "包括性别、年龄、外表等先天及外在特征",
+          "作用域": []
+        },
+        {
+          "item_name": "社会维度",
+          "item_desc": "包括阶层、职业、社教等社会关系背景",
+          "作用域": []
+        },
+        {
+          "item_name": "心理维度",
+          "item_desc": "包括道德标准、志向、挫折等内在精神世界",
+          "作用域": []
+        }
+      ]
+    },
     "dim_creations": [
       "创作"
     ],
@@ -432,6 +551,11 @@
         "type": "str",
         "value": "脚本"
       },
+      {
+        "key": "概要",
+        "type": "str",
+        "value": "人物是背景、生理、遗传和教育的合成物,由三个具体维度构成。"
+      },
       {
         "key": "出自",
         "type": "str",
@@ -444,14 +568,40 @@
       "id": "xhs_67e2e39b0000000003028ff0",
       "source_type": "post",
       "title": "剧本创作:理解前提、人物、冲突",
-      "author": "拾意",
+      "author": "",
       "source_metadata": {
         "platform": "xiaohongshu",
         "url": "https://www.xiaohongshu.com/explore/67e2e39b0000000003028ff0"
       }
     },
     "title": "剧本冲突的四种类型",
-    "content": "界定:根据人物发展和逻辑连贯性将冲突分为四种形态。(结构:子集)\n【冲突形态分类】(分类)\n  - 静态冲突:人物不发展,无升级冲突的能力(选用:通常应避免,因其无法推动剧情)\n  - 跳跃冲突:不服从常理,强迫人物做出不符本性的行动(选用:通常应避免,因其破坏逻辑真实性)\n  - 缓慢升级冲突:建立在对立统一基础上的自然升级(选用:剧本创作的首选,最为自然稳健)\n  - 预示冲突:即张力,是对冲突的允诺(选用:用于在实际冲突爆发前制造悬念和期待)",
+    "content": {
+      "name": "剧本冲突的四种类型",
+      "kind": "子集",
+      "维度拆分规则": null,
+      "body": [
+        {
+          "item_name": "静态冲突",
+          "item_desc": "人物不发展,无升级冲突的能力(何时选:通常应避免,因其无法推动剧情)",
+          "作用域": []
+        },
+        {
+          "item_name": "跳跃冲突",
+          "item_desc": "不服从常理,强迫人物做出不符本性的行动(何时选:通常应避免,因其破坏逻辑真实性)",
+          "作用域": []
+        },
+        {
+          "item_name": "缓慢升级冲突",
+          "item_desc": "建立在对立统一基础上的自然升级(何时选:剧本创作的首选,最为自然稳健)",
+          "作用域": []
+        },
+        {
+          "item_name": "预示冲突",
+          "item_desc": "即张力,是对冲突的允诺(何时选:用于在实际冲突爆发前制造悬念和期待)",
+          "作用域": []
+        }
+      ]
+    },
     "dim_creations": [
       "创作"
     ],
@@ -478,6 +628,11 @@
         "type": "str",
         "value": "脚本"
       },
+      {
+        "key": "概要",
+        "type": "str",
+        "value": "根据人物发展和逻辑连贯性将冲突分为四种形态。"
+      },
       {
         "key": "出自",
         "type": "str",
@@ -490,7 +645,7 @@
       "id": "xhs_67e2e39b0000000003028ff0",
       "source_type": "post",
       "title": "剧本创作:理解前提、人物、冲突",
-      "author": "拾意",
+      "author": "",
       "source_metadata": {
         "platform": "xiaohongshu",
         "url": "https://www.xiaohongshu.com/explore/67e2e39b0000000003028ff0"
@@ -536,7 +691,7 @@
       "id": "xhs_680659e8000000001a007a11",
       "source_type": "post",
       "title": "故事设计原理拆解学习",
-      "author": "拾意",
+      "author": "",
       "source_metadata": {
         "platform": "xiaohongshu",
         "url": "https://www.xiaohongshu.com/explore/680659e8000000001a007a11"
@@ -642,14 +797,45 @@
       "id": "xhs_680659e8000000001a007a11",
       "source_type": "post",
       "title": "故事设计原理拆解学习",
-      "author": "拾意",
+      "author": "",
       "source_metadata": {
         "platform": "xiaohongshu",
         "url": "https://www.xiaohongshu.com/explore/680659e8000000001a007a11"
       }
     },
     "title": "故事设计的五部分构成",
-    "content": "界定:构成一个完整故事结构的五个核心动作/部分。(结构:序列)\n【构成要素】\n  - 激励事件:打破生活平衡的决定性事件,可能是随机或有因的。它的功能是激发恢复平衡的欲望,开启求索之路,并作为大钩子预示危机。\n  - 进展纠葛:循序渐进制造出的冲突,涵盖内心、个人、个人与外界多重层面。\n  - 危机:故事最紧张的点,人物必须在不可调和的两难境地中为欲望做最后努力,揭示深层性格。\n  - 高潮:价值朝向绝对且不可逆转的剧烈摇摆,满足观众的情感预期。\n  - 结局:为次情节提供平衡机会,展示高潮影响,形成逻辑闭环并对观众表示尊重。",
+    "content": {
+      "name": "故事设计的五部分构成",
+      "kind": "序列",
+      "维度拆分规则": null,
+      "body": [
+        {
+          "item_name": "激励事件",
+          "item_desc": "打破生活平衡的决定性事件,可能是随机或有因的。它的功能是激发恢复平衡的欲望,开启求索之路,并作为大钩子预示危机。",
+          "作用域": []
+        },
+        {
+          "item_name": "进展纠葛",
+          "item_desc": "循序渐进制造出的冲突,涵盖内心、个人、个人与外界多重层面。",
+          "作用域": []
+        },
+        {
+          "item_name": "危机",
+          "item_desc": "故事最紧张的点,人物必须在不可调和的两难境地中为欲望做最后努力,揭示深层性格。",
+          "作用域": []
+        },
+        {
+          "item_name": "高潮",
+          "item_desc": "价值朝向绝对且不可逆转的剧烈摇摆,满足观众的情感预期。",
+          "作用域": []
+        },
+        {
+          "item_name": "结局",
+          "item_desc": "为次情节提供平衡机会,展示高潮影响,形成逻辑闭环并对观众表示尊重。",
+          "作用域": []
+        }
+      ]
+    },
     "dim_creations": [
       "创作"
     ],
@@ -679,6 +865,11 @@
         "key": "业务阶段",
         "type": "str",
         "value": "脚本"
+      },
+      {
+        "key": "概要",
+        "type": "str",
+        "value": "构成一个完整故事结构的五个核心动作/部分。"
       }
     ]
   },
@@ -687,14 +878,40 @@
       "id": "xhs_680659e8000000001a007a11",
       "source_type": "post",
       "title": "故事设计原理拆解学习",
-      "author": "拾意",
+      "author": "",
       "source_metadata": {
         "platform": "xiaohongshu",
         "url": "https://www.xiaohongshu.com/explore/680659e8000000001a007a11"
       }
     },
     "title": "故事宏观结构层级",
-    "content": "界定:故事结构由小到大的组成关系层级。(结构:序列)\n【结构层级】\n  - 节拍:构成场景的最小单位。\n  - 场景:由节拍构成。\n  - 序列:由一系列场景构成。\n  - 幕:由序列构成。三幕故事通常需要四个重大场景。",
+    "content": {
+      "name": "故事宏观结构层级",
+      "kind": "序列",
+      "维度拆分规则": null,
+      "body": [
+        {
+          "item_name": "节拍",
+          "item_desc": "构成场景的最小单位。",
+          "作用域": []
+        },
+        {
+          "item_name": "场景",
+          "item_desc": "由节拍构成。",
+          "作用域": []
+        },
+        {
+          "item_name": "序列",
+          "item_desc": "由一系列场景构成。",
+          "作用域": []
+        },
+        {
+          "item_name": "幕",
+          "item_desc": "由序列构成。三幕故事通常需要四个重大场景。",
+          "作用域": []
+        }
+      ]
+    },
     "dim_creations": [
       "创作"
     ],
@@ -716,6 +933,11 @@
         "key": "业务阶段",
         "type": "str",
         "value": "脚本"
+      },
+      {
+        "key": "概要",
+        "type": "str",
+        "value": "故事结构由小到大的组成关系层级。"
       }
     ]
   },
@@ -724,14 +946,40 @@
       "id": "xhs_680659e8000000001a007a11",
       "source_type": "post",
       "title": "故事设计原理拆解学习",
-      "author": "拾意",
+      "author": "",
       "source_metadata": {
         "platform": "xiaohongshu",
         "url": "https://www.xiaohongshu.com/explore/680659e8000000001a007a11"
       }
     },
     "title": "场景设计四要素",
-    "content": "界定:构建一个有效场景所需的关键设计元素。(结构:多维关系)\n【要素说明】\n  - 转折点:通过惊奇感增强好奇心,带给观众新的见识和情节走向。\n  - 伏笔与分晓:知识的渐次铺陈与适时传达。\n  - 情感转变:以快感与痛感为核心,创造正面与负面的动态交替。\n  - 两难选择:人物面临不可调和的两善取其一,或两恶取其轻。",
+    "content": {
+      "name": "场景设计四要素",
+      "kind": "多维关系",
+      "维度拆分规则": null,
+      "body": [
+        {
+          "item_name": "转折点",
+          "item_desc": "通过惊奇感增强好奇心,带给观众新的见识和情节走向。",
+          "作用域": []
+        },
+        {
+          "item_name": "伏笔与分晓",
+          "item_desc": "知识的渐次铺陈与适时传达。",
+          "作用域": []
+        },
+        {
+          "item_name": "情感转变",
+          "item_desc": "以快感与痛感为核心,创造正面与负面的动态交替。",
+          "作用域": []
+        },
+        {
+          "item_name": "两难选择",
+          "item_desc": "人物面临不可调和的两善取其一,或两恶取其轻。",
+          "作用域": []
+        }
+      ]
+    },
     "dim_creations": [
       "创作"
     ],
@@ -761,6 +1009,11 @@
         "key": "业务阶段",
         "type": "str",
         "value": "脚本"
+      },
+      {
+        "key": "概要",
+        "type": "str",
+        "value": "构建一个有效场景所需的关键设计元素。"
       }
     ]
   },
@@ -769,7 +1022,7 @@
       "id": "xhs_680659e8000000001a007a11",
       "source_type": "post",
       "title": "故事设计原理拆解学习",
-      "author": "拾意",
+      "author": "",
       "source_metadata": {
         "platform": "xiaohongshu",
         "url": "https://www.xiaohongshu.com/explore/680659e8000000001a007a11"
@@ -818,7 +1071,7 @@
       "id": "xhs_680659e8000000001a007a11",
       "source_type": "post",
       "title": "故事设计原理拆解学习",
-      "author": "拾意",
+      "author": "",
       "source_metadata": {
         "platform": "xiaohongshu",
         "url": "https://www.xiaohongshu.com/explore/680659e8000000001a007a11"
@@ -863,7 +1116,7 @@
       "id": "xhs_67e4bdf50000000006028a59",
       "source_type": "post",
       "title": "只要学会这几样,写短视频脚本真的不难❗️",
-      "author": "海狸教自媒体运营",
+      "author": "",
       "source_metadata": {
         "platform": "xiaohongshu",
         "url": "https://www.xiaohongshu.com/explore/67e4bdf50000000006028a59"
@@ -958,14 +1211,35 @@
       "id": "xhs_67e4bdf50000000006028a59",
       "source_type": "post",
       "title": "只要学会这几样,写短视频脚本真的不难❗️",
-      "author": "海狸教自媒体运营",
+      "author": "",
       "source_metadata": {
         "platform": "xiaohongshu",
         "url": "https://www.xiaohongshu.com/explore/67e4bdf50000000006028a59"
       }
     },
     "title": "脚本黄金结构三要素",
-    "content": "界定:指短视频脚本在结构层面上必须具备的三个关键组成部分。(结构:序列)\n【结构组成】\n  - 开头/引子:黄金3秒。利用视觉冲击、意想不到的镜头或噱头点名主题/提出疑问,达到吸引好奇的目的。\n  - 中间/内容主题:进行论述或讲述故事。要求有起伏的故事线,把握节奏,提出方法或握出观点。\n  - 结尾/总结:产生印象点与情感共鸣。总结内容、抛出后续问题、引出下期或给出行动指令。",
+    "content": {
+      "name": "脚本黄金结构三要素",
+      "kind": "序列",
+      "维度拆分规则": null,
+      "body": [
+        {
+          "item_name": "开头/引子",
+          "item_desc": "黄金3秒。利用视觉冲击、意想不到的镜头或噱头点名主题/提出疑问,达到吸引好奇的目的。",
+          "作用域": []
+        },
+        {
+          "item_name": "中间/内容主题",
+          "item_desc": "进行论述或讲述故事。要求有起伏的故事线,把握节奏,提出方法或握出观点。",
+          "作用域": []
+        },
+        {
+          "item_name": "结尾/总结",
+          "item_desc": "产生印象点与情感共鸣。总结内容、抛出后续问题、引出下期或给出行动指令。",
+          "作用域": []
+        }
+      ]
+    },
     "dim_creations": [
       "创作"
     ],
@@ -996,6 +1270,11 @@
         "type": "str",
         "value": "脚本"
       },
+      {
+        "key": "概要",
+        "type": "str",
+        "value": "指短视频脚本在结构层面上必须具备的三个关键组成部分。"
+      },
       {
         "key": "出自",
         "type": "str",
@@ -1008,14 +1287,35 @@
       "id": "xhs_67e4bdf50000000006028a59",
       "source_type": "post",
       "title": "只要学会这几样,写短视频脚本真的不难❗️",
-      "author": "海狸教自媒体运营",
+      "author": "",
       "source_metadata": {
         "platform": "xiaohongshu",
         "url": "https://www.xiaohongshu.com/explore/67e4bdf50000000006028a59"
       }
     },
     "title": "Vlog脚本公式清单",
-    "content": "界定:针对Vlog题材提供的三套预设脚本逻辑结构。(结构:子集)\n【公式分类】\n  - 引起共鸣法:人物+状态+情感。(选用:侧重于建立观众与创作者之间的情感连接时使用)\n  - 引发好奇法:时间/观点+悬念。(选用:侧重于通过悬疑感提升视频完播率时使用)\n  - 引发互动法:主题+情景+问句。(选用:侧重于引导评论区讨论或增加账号互动时使用)",
+    "content": {
+      "name": "Vlog脚本公式清单",
+      "kind": "子集",
+      "维度拆分规则": null,
+      "body": [
+        {
+          "item_name": "引起共鸣法",
+          "item_desc": "人物+状态+情感。(何时选:侧重于建立观众与创作者之间的情感连接时使用)",
+          "作用域": []
+        },
+        {
+          "item_name": "引发好奇法",
+          "item_desc": "时间/观点+悬念。(何时选:侧重于通过悬疑感提升视频完播率时使用)",
+          "作用域": []
+        },
+        {
+          "item_name": "引发互动法",
+          "item_desc": "主题+情景+问句。(何时选:侧重于引导评论区讨论或增加账号互动时使用)",
+          "作用域": []
+        }
+      ]
+    },
     "dim_creations": [
       "创作"
     ],
@@ -1050,6 +1350,11 @@
         "key": "业务阶段",
         "type": "str",
         "value": "脚本"
+      },
+      {
+        "key": "概要",
+        "type": "str",
+        "value": "针对Vlog题材提供的三套预设脚本逻辑结构。"
       }
     ]
   },
@@ -1058,14 +1363,45 @@
       "id": "xhs_67e4bdf50000000006028a59",
       "source_type": "post",
       "title": "只要学会这几样,写短视频脚本真的不难❗️",
-      "author": "海狸教自媒体运营",
+      "author": "",
       "source_metadata": {
         "platform": "xiaohongshu",
         "url": "https://www.xiaohongshu.com/explore/67e4bdf50000000006028a59"
       }
     },
     "title": "短视频常用构图技巧",
-    "content": "界定:在脚本细化阶段通过改变画面元素排列来传达不同意图的方法。(结构:子集)\n【构图类型】\n  - 水平线构图:水平线横贯画面。(选用:需要表现稳定感、平静感时选择)\n  - 对角线构图:主体沿对角线分布。(选用:需要增强画面动感、引导视线延伸时选择)\n  - 中心构图:主体居于画面中心。(选用:需要绝对突出主体、减少干扰时选择)\n  - 框式构图:利用前景形成窗户或门洞般的边框。(选用:需要营造窥视感、神秘感或增强画面层次时选择)\n  - 九宫格/三分法构图:将画面按九宫格划分或三等分。(选用:需要画面排列醒目且简化内容、使画面和谐舒适时选择)",
+    "content": {
+      "name": "短视频常用构图技巧",
+      "kind": "子集",
+      "维度拆分规则": null,
+      "body": [
+        {
+          "item_name": "水平线构图",
+          "item_desc": "水平线横贯画面。(何时选:需要表现稳定感、平静感时选择)",
+          "作用域": []
+        },
+        {
+          "item_name": "对角线构图",
+          "item_desc": "主体沿对角线分布。(何时选:需要增强画面动感、引导视线延伸时选择)",
+          "作用域": []
+        },
+        {
+          "item_name": "中心构图",
+          "item_desc": "主体居于画面中心。(何时选:需要绝对突出主体、减少干扰时选择)",
+          "作用域": []
+        },
+        {
+          "item_name": "框式构图",
+          "item_desc": "利用前景形成窗户或门洞般的边框。(何时选:需要营造窥视感、神秘感或增强画面层次时选择)",
+          "作用域": []
+        },
+        {
+          "item_name": "九宫格/三分法构图",
+          "item_desc": "将画面按九宫格划分或三等分。(何时选:需要画面排列醒目且简化内容、使画面和谐舒适时选择)",
+          "作用域": []
+        }
+      ]
+    },
     "dim_creations": [
       "创作"
     ],
@@ -1096,6 +1432,11 @@
         "type": "str",
         "value": "脚本"
       },
+      {
+        "key": "概要",
+        "type": "str",
+        "value": "在脚本细化阶段通过改变画面元素排列来传达不同意图的方法。"
+      },
       {
         "key": "出自",
         "type": "str",
@@ -1108,14 +1449,35 @@
       "id": "xhs_6901e15a0000000003019fa3",
       "source_type": "post",
       "title": "爆款标题公式直接抄❗️笔记想不火都难",
-      "author": "海狸教自媒体运营",
+      "author": "",
       "source_metadata": {
         "platform": "xiaohongshu",
         "url": "https://www.xiaohongshu.com/explore/6901e15a0000000003019fa3"
       }
     },
     "title": "小红书爆款标题3大万能公式",
-    "content": "界定:指通过特定结构组合时间、结果、痛点等元素,快速生成具有吸引力的标题模版。(结构:子集)\n【标题公式清单】(清单)\n  - 时间 + 结果 + 经验:用量化的成果来勾住用户引起好奇。例:『半年时间涨粉11w,全靠这个万能公式』(选用:适用于展示过往成就、成功案例或有具体量化结果的复盘类内容。)\n  - 痛点 + 解决方法 + 保证:精准戳中用户当下的难题并给出确定性的承诺。例:『小红书不涨粉,3大技巧照做就对了』(选用:适用于解决具体困难、提供教程或避坑指南等强功能性内容。)\n  - 方法 + 保证:强调方法简单易操作,降低用户的心理门槛。例:『傻瓜式化妆手法,有手就行』(选用:适用于难度较大但已被简化的技巧,或强调人人皆可上手的垂类教程。)",
+    "content": {
+      "name": "小红书爆款标题3大万能公式",
+      "kind": "子集",
+      "维度拆分规则": null,
+      "body": [
+        {
+          "item_name": "时间 + 结果 + 经验",
+          "item_desc": "用量化的成果来勾住用户引起好奇。例:『半年时间涨粉11w,全靠这个万能公式』(何时选:适用于展示过往成就、成功案例或有具体量化结果的复盘类内容。)",
+          "作用域": []
+        },
+        {
+          "item_name": "痛点 + 解决方法 + 保证",
+          "item_desc": "精准戳中用户当下的难题并给出确定性的承诺。例:『小红书不涨粉,3大技巧照做就对了』(何时选:适用于解决具体困难、提供教程或避坑指南等强功能性内容。)",
+          "作用域": []
+        },
+        {
+          "item_name": "方法 + 保证",
+          "item_desc": "强调方法简单易操作,降低用户的心理门槛。例:『傻瓜式化妆手法,有手就行』(何时选:适用于难度较大但已被简化的技巧,或强调人人皆可上手的垂类教程。)",
+          "作用域": []
+        }
+      ]
+    },
     "dim_creations": [
       "创作"
     ],
@@ -1145,6 +1507,11 @@
         "key": "业务阶段",
         "type": "str",
         "value": "脚本"
+      },
+      {
+        "key": "概要",
+        "type": "str",
+        "value": "指通过特定结构组合时间、结果、痛点等元素,快速生成具有吸引力的标题模版。"
       }
     ]
   },
@@ -1153,14 +1520,65 @@
       "id": "xhs_6901e15a0000000003019fa3",
       "source_type": "post",
       "title": "爆款标题公式直接抄❗️笔记想不火都难",
-      "author": "海狸教自媒体运营",
+      "author": "",
       "source_metadata": {
         "platform": "xiaohongshu",
         "url": "https://www.xiaohongshu.com/explore/6901e15a0000000003019fa3"
       }
     },
     "title": "小红书标题创作9大技巧",
-    "content": "界定:通过改变表达语气和信息组织方式,增强标题吸引力的具体手法。(结构:子集)\n【常见标题技巧明细】(清单)\n  - 提问式:直击痛点,用用户最关心的困惑开篇,引导对号入座。(选用:用户存在明显痛点且渴望寻找答案时使用。)\n  - 设问式:先抛出问题再给出预告方案,勾起好奇并预示价值。(选用:想在标题中完整体现“问题-方案”结构,预告高价值干货时使用。)\n  - 数字式:用具体数字增强客观性和干货感,降低用户阅读决策成本。(选用:内容包含多项要点或具体量化成果时首选。)\n  - 利益式:直接表明用户能够获得的具体好处或价值。(选用:内容能提供显著、具体的价值回报时使用。)\n  - 悬念式:刻意隐藏关键信息,只说一半内容,激发点击欲望。(选用:内容有明显转折或出人意料的结论时使用。)\n  - 对比式:利用差异感、反差和矛盾制造视觉或心理上的冲突感。(选用:内容包含前后变化、新手VS老手或不同方案优劣对比时使用。)\n  - 劝诫式:利用用户的“避坑”心理和“损失厌恶”本能抓住注意力。(选用:提醒用户避免常见错误、揭露真相或提供警示时使用。)\n  - 共情式:替用户发声,说出其想说而未说的话,引发情绪上的认同。(选用:内容侧重于观点输出、情感共鸣或职场/生活态度时使用。)\n  - 热点式:绑定节日、热门事件或潮流趋势进行借势营销。(选用:内容能与当前社交媒体热门话题、节点挂钩时使用。)",
+    "content": {
+      "name": "小红书标题创作9大技巧",
+      "kind": "子集",
+      "维度拆分规则": null,
+      "body": [
+        {
+          "item_name": "提问式",
+          "item_desc": "直击痛点,用用户最关心的困惑开篇,引导对号入座。(何时选:用户存在明显痛点且渴望寻找答案时使用。)",
+          "作用域": []
+        },
+        {
+          "item_name": "设问式",
+          "item_desc": "先抛出问题再给出预告方案,勾起好奇并预示价值。(何时选:想在标题中完整体现“问题-方案”结构,预告高价值干货时使用。)",
+          "作用域": []
+        },
+        {
+          "item_name": "数字式",
+          "item_desc": "用具体数字增强客观性和干货感,降低用户阅读决策成本。(何时选:内容包含多项要点或具体量化成果时首选。)",
+          "作用域": []
+        },
+        {
+          "item_name": "利益式",
+          "item_desc": "直接表明用户能够获得的具体好处或价值。(何时选:内容能提供显著、具体的价值回报时使用。)",
+          "作用域": []
+        },
+        {
+          "item_name": "悬念式",
+          "item_desc": "刻意隐藏关键信息,只说一半内容,激发点击欲望。(何时选:内容有明显转折或出人意料的结论时使用。)",
+          "作用域": []
+        },
+        {
+          "item_name": "对比式",
+          "item_desc": "利用差异感、反差和矛盾制造视觉或心理上的冲突感。(何时选:内容包含前后变化、新手VS老手或不同方案优劣对比时使用。)",
+          "作用域": []
+        },
+        {
+          "item_name": "劝诫式",
+          "item_desc": "利用用户的“避坑”心理和“损失厌恶”本能抓住注意力。(何时选:提醒用户避免常见错误、揭露真相或提供警示时使用。)",
+          "作用域": []
+        },
+        {
+          "item_name": "共情式",
+          "item_desc": "替用户发声,说出其想说而未说的话,引发情绪上的认同。(何时选:内容侧重于观点输出、情感共鸣或职场/生活态度时使用。)",
+          "作用域": []
+        },
+        {
+          "item_name": "热点式",
+          "item_desc": "绑定节日、热门事件或潮流趋势进行借势营销。(何时选:内容能与当前社交媒体热门话题、节点挂钩时使用。)",
+          "作用域": []
+        }
+      ]
+    },
     "dim_creations": [
       "创作"
     ],
@@ -1198,6 +1616,11 @@
         "key": "业务阶段",
         "type": "str",
         "value": "脚本"
+      },
+      {
+        "key": "概要",
+        "type": "str",
+        "value": "通过改变表达语气和信息组织方式,增强标题吸引力的具体手法。"
       }
     ]
   },
@@ -1206,14 +1629,25 @@
       "id": "xhs_69ff58670000000023016fa2",
       "source_type": "post",
       "title": "海外营销灵感|五月爆款Reels创意合集",
-      "author": "NotJustAgency",
+      "author": "",
       "source_metadata": {
         "platform": "xiaohongshu",
         "url": "https://www.xiaohongshu.com/explore/69ff58670000000023016fa2"
       }
     },
     "title": "超现实装置(FOOH)创意视觉形式",
-    "content": "界定:指通过CGI(电脑成像)技术在现实场景中植入超现实装置的视觉创意手法。(结构:子集)\n【FOOH核心表现形式】(定义)\n  - CGI/FOOH:Fake Out of Home广告,利用超现实装置(如扶梯上的巨大玉米)与现实环境结合。(选用:适用于需要极强视觉冲击力来快速捕捉用户注意力的短视频营销场景。)",
+    "content": {
+      "name": "超现实装置(FOOH)创意视觉形式",
+      "kind": "子集",
+      "维度拆分规则": null,
+      "body": [
+        {
+          "item_name": "CGI/FOOH",
+          "item_desc": "Fake Out of Home广告,利用超现实装置(如扶梯上的巨大玉米)与现实环境结合。(何时选:适用于需要极强视觉冲击力来快速捕捉用户注意力的短视频营销场景。)",
+          "作用域": []
+        }
+      ]
+    },
     "dim_creations": [
       "创作"
     ],
@@ -1243,6 +1677,11 @@
         "key": "业务阶段",
         "type": "str",
         "value": "灵感"
+      },
+      {
+        "key": "概要",
+        "type": "str",
+        "value": "指通过CGI(电脑成像)技术在现实场景中植入超现实装置的视觉创意手法。"
       }
     ]
   },
@@ -1251,7 +1690,7 @@
       "id": "xhs_69ff58670000000023016fa2",
       "source_type": "post",
       "title": "海外营销灵感|五月爆款Reels创意合集",
-      "author": "NotJustAgency",
+      "author": "",
       "source_metadata": {
         "platform": "xiaohongshu",
         "url": "https://www.xiaohongshu.com/explore/69ff58670000000023016fa2"

+ 5 - 5
创作知识拆解框架.md

@@ -21,7 +21,7 @@
 | 类型 | 它是什么 | 成形模板 | dim_attributes |
 |---|---|---|---|
 | **How** 工序 | 不可跳步地把某输入做成成品 | `目标(purpose)` + 有序 `steps`(每步 目的 / 怎么做 / 产出) | `how工序` |
-| **What** 构成 | 界定 / 列举 / 分类 / 判据某创作对象 | `界定`(必填锚点) + `主体[{小标题, 形式?, 内容?, 条目?}]`(**自由小节**,无步骤) | `what构成` |
+| **What** 构成 | 界定 / 列举 / 分类 / 判据某创作对象 | `概要`(必填锚点) + `kind`(子集/多维关系/序列)+ `维度拆分规则`(仅子集)+ `body[{item_name, item_desc}]`(**扁平条目**,无小节/形式) | `what构成` |
 | **Why** 原理 | 解释某做法 / 判断背后的道理 | `主张`(必填锚点) + `支撑[{小标题, 形式?, 内容?, 条目?}]`(**自由小节**,无步骤) | `why原理` |
 
 ---
@@ -115,7 +115,7 @@
 |---|---|---|
 | **① 读懂** | 图 / 视频 → 文字(忠实,不判断) | 视觉 LLM(基建 extractor) |
 | **②a 判颗 + 找 how 骨架** | 几颗、各颗类型;how 抽骨架并识别内部 what/why 组件;orphan what/why;无 how 则纯 what/why(**第三节那道闸**) | 判断 LLM |
-| **②b 按类型成形 + 轻标签** | How→目标+步骤(+逐步 创作阶段/动作);What→界定+主体小节;Why→主张+支撑小节(小节形态自由,0..N);颗级业务阶段;组件颗标 cross-ref | 判断 LLM |
+| **②b 按类型成形 + 轻标签** | How→目标+步骤(+逐步 创作阶段/动作);What→概要+kind+维度拆分规则(子集)+body 条目;Why→主张+支撑小节(小节形态自由,0..N);颗级业务阶段;组件颗标 cross-ref | 判断 LLM |
 | **③ 作用域** | 5 类带值 + 互斥边界 + 定位(How 逐步 / What·Why 颗级) | 判断 LLM + 定位工具(代码) |
 | **⑤ 组装 + lint** | 拼 payload(content 按类型不同、scopes 并集),校验 | 纯代码 |
 
@@ -125,10 +125,10 @@
 
 | payload 字段 | How | What | Why |
 |---|---|---|---|
-| `content` | 目标 + 步骤(目的/怎么做/产出) 拍平 | 界定 + 主体各小节 | 主张 + 支撑各小节 |
+| `content` | 目标 + 步骤(目的/怎么做/产出) 拍平(字符串) | **结构化对象** `{name, kind, 维度拆分规则, body[]}`(概要移入 custom_ext) | 主张 + 支撑各小节(字符串) |
 | `dim_attributes` | `["how工序"]` | `["what构成"]` | `["why原理"]` |
 | `scopes` | 各步作用域并集 | 颗级作用域 | 颗级作用域 |
-| `custom_ext` | 业务阶段 + 创作阶段 + 动作 | **业务阶段** | **仅业务阶段** |
+| `custom_ext` | 业务阶段 + 创作阶段 + 动作 | **业务阶段 + 概要** | **仅业务阶段** |
 | `source / title / dim_creations` | 三类一样(`dim_creations` 恒 `["创作"]`;组件颗在 custom_ext 或 content 里标明出自哪个 how 第几步) | | |
 
 ---
@@ -136,7 +136,7 @@
 ## 十、前端 —— 一页多颗、按类型渲染
 
 - 选一帖 → 列出**它的全部 N 颗**(可混类型)。
-- 每颗按类型渲染:**How → 工序表**;**What → 构成卡**(界定 + 自由小节,每节 小标题 + 形式标 + 内容/条目);**Why → 论点卡**(主张 + 自由小节)。
+- 每颗按类型渲染:**How → 工序表**;**What → 构成卡**(概要 + kind + 维度拆分规则 + body 条目表:item_name/item_desc);**Why → 论点卡**(主张 + 自由小节)。
 - **组件颗** cross-ref 到所属 how(标"出自 <how> 第 N 步",可互相跳转);**orphan 颗**独立列出。
 - 每颗都带:**作用域定位 drawer**(候选 → 最近邻 top-K → 复用/新建)、**提示词溯源**(区块/表头点开产出它的那道工序的提示词)。
 

+ 2 - 2
创作知识提取-skill/README.md

@@ -24,7 +24,7 @@
 ## 概念速览
 
 - **颗是单位,一帖 = N 颗**(可混 how/what/why),共 `knowledges[]`,每颗 → 一个 ingest payload。
-- **三类对等 lane**:How(目标+不可跳步 steps)、What(界定+构成)、Why(主张+依据+影响)。**先判类型闸,再按类型成形**——别默认 how、别硬造假 how。
+- **三类对等 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 最近邻,基建已落地)。
@@ -44,7 +44,7 @@
 
 | 路径 | 内容 |
 |---|---|
-| [format/ingest-payload.schema.json](format/ingest-payload.schema.json) | 给机器看的字段清单(最终裁判) |
+| [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 各一) |

+ 12 - 2
创作知识提取-skill/examples/金标样例.md

@@ -86,12 +86,22 @@
 {
   "source": { "id": "xhs_xxx", "source_type": "post", "title": "脚本就这三样" },
   "title": "短视频脚本三要素",
-  "content": "界定:一份短视频脚本的内容骨架由三类要素构成。\n【三类要素】(清单)\n  - 人物:谁出镜、出镜形象\n  - 场景:室内 / 室外\n  - 事件:整条脚本的故事内容",
+  "content": {
+    "name": "短视频脚本三要素",
+    "kind": "多维关系",
+    "维度拆分规则": null,
+    "body": [
+      { "item_name": "人物", "item_desc": "谁出镜、出镜形象", "作用域": [] },
+      { "item_name": "场景", "item_desc": "室内 / 室外", "作用域": [] },
+      { "item_name": "事件", "item_desc": "整条脚本的故事内容", "作用域": [] }
+    ]
+  },
   "dim_creations": ["创作"],
   "dim_attributes": ["what构成"],
   "scopes": [ { "scope_type": "substance", "value": "脚本要素" },
               { "scope_type": "form", "value": "分镜骨架" } ],
-  "custom_ext": [ { "key": "业务阶段", "type": "str", "value": "脚本" } ]
+  "custom_ext": [ { "key": "业务阶段", "type": "str", "value": "脚本" },
+                  { "key": "概要", "type": "str", "value": "一份短视频脚本的内容骨架由三类要素构成。" } ]
 }
 ```
 

+ 24 - 23
创作知识提取-skill/extraction/phase1-frame.md

@@ -60,7 +60,7 @@
 
 > **核心原则:每类知识都要落在它的「决策落点」上**——这是这条知识对下游 AI 的真正价值。
 > - **How**(影响脉络/结构)→ 落点 = **输入→方法→产出 的链**(每步吃什么、吐什么)。
-> - **What**(影响元素选择)→ 落点 = **可选元素 + 选择线索**(子集型每个选项"何时/为何选它")。
+> - **What**(影响元素选择)→ 落点 = **可选元素 + 选用判断**(子集型把每个选项"何时/为何选它"并入其 item_desc)。
 > - **Why**(影响取舍判断)→ 落点 = **对创作的取舍**(所以该多写/砍/侧重什么)。
 > 描述部分尽管自由,但**决策落点必须落到**——只描述不落点 = 半成品知识。
 
@@ -76,22 +76,23 @@
 > **每颗都带 `出处`(溯源用)**:How 颗的 `出处` 在每个 step 上(这步来自哪些卡);What/Why 颗在颗级给 `出处`(这颗来自哪些卡,如 ["图3","卡片2"])。出处填卡片号(图N=第N张图,卡片N=视频第N段),让前端能点回原图/原视频段。
 
 ### What(是什么)— role 主 或 组件
-`界定`(**唯一必填**,一句话这是什么,做锚点)+ `kind`(**必填**:`子集` / `多维关系` / `序列`)+ `主体`:**0..N 个自由小节**,每节 `{小标题, 形式?, 内容?, 条目?}`。无 steps。+ 颗级 `出处`。
-
-**先判这颗 What 是哪种(决定要不要选择线索):**
-按"部件怎么关联"分三种(两步判:①部件**挑其一/列清单**?→ `子集`;②否则**组合成一个整体**——有前后顺序?有→`序列`,无→`多维关系`):
-- **`子集`型**(**并列·挑着用**):「X 有 A/B/C 几种/几个」,**互不隶属、没有合成整体**,归其一或按需挑(如 7种叙事结构、冲突四类型、构图六法、标题九技巧)。落点 = **元素选择**——**每个条目必带 `选择线索`:何时/为何选它**(没有选择线索,AI 只能背不能选 = 这颗废了一半)。
-- **`多维关系`型**(**都要·无序**):「X = A+B+C,拼齐才完整、无先后」,要素是组合的不是挑的(如 人物三维度=生理+社会+心理、前提=立场+人物+冲突+结论、脚本六要素)。落点 = 完备性,**条目不需要选择线索**。
-- **`序列`型**(**都要·有序**):「X 由 A→B→C 按位置/时间排成,拼齐且有前后」(如 故事五部分、黄金三段式)。⚠️ 只是**位置顺序**,后段**不消费**前段产出——若后段吃前段产出、换序就崩,那是 **how 工序**不是 what。落点 = 完备性+顺序,**条目按序排列、不需要选择线索**。
-
-每节:
-- `形式`(可选·开放提示):清单 / 分类 / 判据 / 对照 / 定义…(从内容判,没把握就省)。
-- `内容`(散文)与 `条目` **二选一或并存**。**子集型**的 `条目` 是 `[{词, 说明, 选择线索}]`;**多维关系/序列型**的 `条目` 是 `[{词, 说明}]`。
-- ⚠️ **保留原文、不转译不脑补(What 的命根)**:`界定 / 说明 / 构成`**尽量照搬原帖原话**——能引原文就引,少改写、少换词;**原帖给了几句就留几句,别压成一句**(这是知识本体,删了就废)。**严禁补原帖没有的内容**:原帖写"生理(性别、年龄、外表)"就只写这些,不许擅自加"遗传";原帖只给公式"作者立场+人物+冲突+结论"就照写,不许替作者给每个词编定义。**宁可保留原帖的口语/不完美措辞,也不要 AI 润色后的"漂亮转译"。**
-- 若某项有**子结构**(如"三幕式"含一幕/二幕/三幕),把**每个子点的原文描述都带进 `说明`**(可分行)。例:三幕式说明应含"一幕交代背景人设、二幕是主体冲突升级、三幕高潮爆发并解决",而不是只写"分一二三幕"。
-- **别套模板**:节数/形态由本帖内容决定。
+`概要`(**唯一必填**,一句话这是什么,做锚点)+ `kind`(**必填**:`子集` / `多维关系` / `序列`)+ `维度拆分规则`(**仅子集填**:这组选项是按什么维度划分出来的,如「冲突形态」「叙事结构类型」;多维关系/序列填 null)+ `body`:**1..N 个扁平条目**,每条 `{item_name, item_desc, 作用域:[]}`(无小节、无形式标)。无 steps。+ 颗级 `出处`。
+
+**先判这颗 What 是哪种(决定 item_desc 要不要带"何时选"):**
+按"部件之间什么关系"分三种(两步判:①部件是**可挑着用的选项/清单(挑一个或多个都行)**?→ `子集`;②否则**多个维度/要素并陈、不是挑出来的**——有前后顺序?有→`序列`,无→`多维关系`):
+- **`子集`型**(**并列·挑着用·可多挑**):「X 有 A/B/C 几种/几个」,**各自独立、不合成一个整体**,按需**挑一个或多个**(如 7种叙事结构、冲突四类型、构图六法、标题九技巧)。落点 = **元素选择**——**每条 `item_desc` 必须把原帖给的「何时/为何选它」一并写进去**(没有"何时选",AI 只能背不能选 = 这颗废了一半)。并给 `维度拆分规则`。
+- **`多维关系`型**(**多个不同维度/侧面**):一个对象可从**几个不同性质的维度/侧面**去刻画,**每个维度各自展开它那一面**——维度A 看一面、维度B 看另一面(如 人物可从生理/社会/心理等维度刻画;前提含立场/人物/冲突/结论等侧面)。⚠️**维度由本帖内容决定、不是固定清单**;**也不要求"凑齐所有维度"——原帖给几面写几面**("都要/拼齐"是个别案例的性质,不是本类的定义)。与子集的区别:**子集是同一维度上的同类选项、从中挑**(7种叙事结构都是"一种结构");**多维关系是几个不同维度各看一面、不是挑**。**每条 body 条目 = 一个维度**:item_name=维度名,item_desc=该维度展开的内容(子值并入 item_desc,不另起一层)。落点 = 各维度及其内容。
+- **`序列`型**(**都要·有序**):「X 由 A→B→C 按位置/时间排成,拼齐且有前后」(如 故事五部分、黄金三段式)。⚠️ 只是**位置顺序**,后段**不消费**前段产出——若后段吃前段产出、换序就崩,那是 **how 工序**不是 what。落点 = 完备性+顺序,**body 按序排列**,`item_desc` 只写"是什么"。
+
+每条 body 条目 `{item_name, item_desc, 作用域:[]}`:
+- `item_name`:要点名(如 静态冲突 / 激励事件)。
+- `item_desc`:忠实保留原帖对该点的描述,几句留几句。**子集型**还要把原帖给的「何时/为何选它」并入这段(严格抽取——原帖没说就只写是什么,别编)。
+- `作用域`:**一律留空 `[]`**(item 级作用域当前不用,③ 只填颗级)。
+- ⚠️ **保留原文、不转译不脑补(What 的命根)**:`概要 / item_desc`**尽量照搬原帖原话**——能引原文就引,少改写、少换词;**原帖给了几句就留几句,别压成一句**(这是知识本体,删了就废)。**严禁补原帖没有的内容**:原帖写"生理(性别、年龄、外表)"就只写这些,不许擅自加"遗传";原帖只给公式"作者立场+人物+冲突+结论"就照写,不许替作者给每个词编定义。**宁可保留原帖的口语/不完美措辞,也不要 AI 润色后的"漂亮转译"。**
+- 若某点有**子结构**(如"三幕式"含一幕/二幕/三幕),把**每个子点的原文描述都带进 `item_desc`**(可分行)。例:三幕式 item_desc 应含"一幕交代背景人设、二幕是主体冲突升级、三幕高潮爆发并解决",而不是只写"分一二三幕"。
+- **别套模板**:条目数由本帖内容决定。
 > 组件 what:对应某 how 的某一步(那步的产出物),但本身是独立一颗、可单独复用。不对应任何步 → 就是单独的一条(role=主)。
-> ⚠️ 选择线索必须**从原帖抽**,原帖只列了选项没说何时用 → `选择线索` 留空(别编),但仍要标 `kind:子集`。
+> ⚠️ 子集型即使原帖只列了选项没说何时用 → `item_desc` 只写是什么(别编"何时选"),但仍要标 `kind:子集` 并给 `维度拆分规则`。
 
 ### Why(为什么)— role 主 或 组件
 `主张`(**唯一必填**,核心观点/原理,做锚点)+ `支撑`:**1..N 个自由小节**,每节 `{小标题, 形式?, 内容?, 条目?}`。无 steps。+ 颗级 `出处`。
@@ -162,11 +163,11 @@
       "id": "k2", "type": "what", "role": "组件", "parent": {"how_id":"k1","step":2},
       "title": "<某 how 步骤产出的、可独立复用的清单/构成名>", "业务阶段": ["<…>"],
       "出处": ["<这颗来自哪些卡片,如 图3 / 卡片2>"],
-      "界定": "<一句话这是什么(必填)>", "kind": "<子集 / 多维关系 / 序列(必填)>",
-      "主体": [
-        {"小标题":"<这节讲什么>","形式":"<清单/分类/判据/对照/定义,可省>",
-         "条目":[{"词":"<要点名>","说明":"<忠实保留原帖描述,几句留几句;有子结构就把各子点描述都带上>","选择线索":"<子集型必填:何时/为何选它;多维关系/序列型省略>"}]},
-        {"小标题":"<另一节,可省>","形式":"对照","内容":"<散文式说明,没有结构化条目时用>"}
+      "概要": "<一句话这是什么(必填)>", "kind": "<子集 / 多维关系 / 序列(必填)>",
+      "维度拆分规则": "<仅子集填:这组选项按什么维度划分,如 冲突形态;多维关系/序列填 null>",
+      "body": [
+        {"item_name":"<要点名>","item_desc":"<忠实保留原帖描述,几句留几句;有子结构带各子点描述;子集型把『何时/为何选它』并入>","作用域":[]},
+        {"item_name":"<另一条>","item_desc":"<…>","作用域":[]}
       ],
       "作用域": []
     },
@@ -187,8 +188,8 @@
 ## 过关条件 → 进 ③
 - 颗数合理(how 主颗 + 组件颗 + orphan,可混);每颗有 type/role/parent。
 - **每颗 how 都过了 §A2 两道闸**:步骤真有序(后步吃前步)+ 最后一步 output = purpose 收尾名词。并列招式已改 What;半截工序已补收尾或已降 purpose。
-- **决策落点都落到了**:how 每步有 `input`(首步=工序输入,后步指向前步产出);what `kind` 已填,**子集型每条目带 `选择线索`**(原帖没说才留空);why `支撑` 里**有一节 `形式:取舍`**。
-- how 颗:每步 input/directive/output/出处 + 创作阶段 + 动作;what 颗:界定 + kind + 主体小节;why 颗:主张 + 支撑小节(含取舍)。
+- **决策落点都落到了**:how 每步有 `input`(首步=工序输入,后步指向前步产出);what `kind` 已填、子集型 `维度拆分规则` 已填且每条 `item_desc` 含「何时/为何选」(原帖没说才只写是什么);why `支撑` 里**有一节 `形式:取舍`**。
+- how 颗:每步 input/directive/output/出处 + 创作阶段 + 动作;what 颗:概要 + kind + 维度拆分规则(子集) + body 条目(item_name/item_desc);why 颗:主张 + 支撑小节(含取舍)。
 - 组件颗有 parent cross-ref;**每颗业务阶段非空(≥1,∈灵感/选题/脚本)**;贴不上三值的非内容创作颗已 drop。
 - 纯软件操作流程 / 非内容创作题材已整颗 drop(§D)。
 - 所有颗的 `作用域` 留空(含 how 的每步),③ 来填。

+ 75 - 64
创作知识提取-skill/extraction/phase2-scope.md

@@ -1,6 +1,6 @@
 # ③ 作用域(重)
 
-本步**只干一件事**:给 ②产出的每颗知识标 5 类作用域里相关的几类,每类给一个**具体值**,并把值**定位**到 5 棵分类树。
+本步**只干一件事**:给 ②产出的每颗知识标 5 类作用域里相关的几类,每类**平铺标出所有相关的具体值**,并把每个值**定位**到 5 棵分类树。
 不碰框架结构、不碰其它标签(那些 ② 已做)。
 
 > ⚠️ **本文里出现的所有具体词(食材搭配、制造悬念、治愈感…)都只是「示例」**,用来帮你认清每一类管什么。
@@ -9,30 +9,53 @@
 
 **按类型分粒度**:
 - **How 颗**:**逐步**标——每个 step 一组作用域(写回 `step.作用域`)。
-- **What / Why 颗**:**颗级**标——整颗一组作用域(写回 `knowledge.作用域`);读 What 的 `界定` + `主体`各小节、Why 的 `主张` + `支撑`各小节来判。
+- **What / Why 颗**:**颗级**标——整颗一组作用域(写回 `knowledge.作用域`);读 What 的 `概要` + `body`各条目(item_name/item_desc)、Why 的 `主张` + `支撑`各小节来判。
 
 > 这是全流程最容易"串味"的一刀(5 类边界模糊),所以单独、写厚。判不准就标空 `[]`,不硬塞。
 
----
-
-## 1. 五类列定义(每类配跨题材示例,认清它管什么)
+## 核心原则:平铺多值 + 摊正交(贯穿 5 类)
 
-| scope_type | 中文 | 管什么(一句话) | 跨题材示例(仅示意各类长什么样,**勿照搬**) |
-|---|---|---|---|
-| `substance` | 实质 | **讲什么**——题材 / 对象 / 内容实质 | 食材搭配(做菜)、通勤穿搭(穿搭)、增肌动作(健身)、选题方向(自媒体) |
-| `form` | 形式 | **怎么呈现**——结构 / 体裁 / 表现手法 | 三段式结构、对比清单、分步结构、九宫格排版 |
-| `feeling` | 感受 | **勾什么情绪**——读者/观众的情感反应 | 治愈感、紧张感、信任感、惊喜 |
-| `effect` | 作用 | **对创作起什么用**——这条知识帮创作者达成的创作效果(动名词) | 情节组织、节奏控制、冲突、看点、选题切入、逻辑自洽 |
-| `intent` | 意图 | **创作者要做什么**——动作/目的(**必须动词**)| 科普、教学、分享、引流、种草、呼吁、批判 |
+- 每类不是"给一个值",而是标出这颗在这类里**真正涉及的所有值**,**全部对等、不选主次、不限数量**——一颗真有 3 个实质就标 3 个,只有 1 个就 1 个。
+- 标多值前先脑内把它们**摊成几路不同视角(facet)**:同一视角下的值必须是**同一上位语义类型**(讲人物的归人物、讲题材的归题材);若发现是近义或子面(人物 / 人物性格 / 人物动机)→ **收敛回一个**,别堆。
+- "视角"只是**脑内组织、不输出成字段**;输出仍是多条 `{scope_type, value}`,定位由代码事后做。
+- 意图除外:意图讲终极目的,**自然收敛到很少**(多为 1 个),不强求多值。
 
-> ⚠️ **词性按类区分(关键)**:
-> - **实质 / 形式 / 感受 / 作用 = 名词**。砍掉「前置动作动词」(定位/建立/揭示/制造/寻找/推导…):
->   ❌ 定位认知裂缝 / 揭示人物性格 / 制造悬念 → ✅ 认知裂缝 / 人物刻画 / 悬念
->   ⚠️「作用」是**动名词**:名词+动作语素后缀(氛围营造 / 悬念设置 / 转化引导)是对的、**保留**;只砍前置动作动词。
-> - **意图 = 必须是动词**(创作者"要做什么"),对齐意图树:科普 / 教学 / 分享 / 引流 / 呼吁 / 种草 / 批判。
->   ❌ 别把意图写成名词:流量 / 完播率 / 人设 → ✅ 引流 / 提升完播 / 立人设。
+---
 
-**一步不必 5 类都给**——只给这步真正涉及的。多数步 2-3 类。
+## 1. 五类列定义(认清各管什么;所有示例**勿照搬**)
+
+> **`substance` 实质 —— 这颗讲的实质信息("呈现了什么")**
+> 题材 / 对象 / 实体 / 概念 / 行为 / 关系。
+> - **平铺多值、摊正交**:一颗真覆盖几个实质就标几个,不选主次、不限数量;同一视角下的值同一上位语义类型,近义/子面收敛回一个。
+> - **边界**:≠形式(那是"怎么呈现");≠作用(那是创作效果,如"节奏控制");≠感受。✅「增肌动作」「冲突设置」=实质;❌「步骤分解」是形式。
+> - **格式**:名词短语,砍前置动作动词(定位/揭示/制造… → 认知裂缝/人物刻画/悬念),原子化,专有名可略长。
+
+> **`form` 形式 —— 这颗怎么呈现("怎么呈现",覆盖视觉/文字/音频三模态)**
+> 结构 / 体裁 / 手法 / 技法 / 风格 / 载体。同样**平铺多值、摊正交**。
+> - **三模态别漏**:视觉(构图/排版/字体动效)、文字(修辞/句式/叙事手法)、音频(语气/配乐)——别只盯结构漏了语言层。
+> - **实质剥离(关键)**:形式值必须是**纯呈现特征,剥掉它承载的实质**。自检:"抛开它讲什么,这在结构/视觉/语言上是哪种**呈现类型**?" ❌`剧本三幕结构`("剧本"是实质)→ ✅`三幕结构`;❌`美食九宫格`→ ✅`九宫格排版`。
+> - **边界**:≠实质("呈现了什么");≠作用(创作效果)。✅「对比清单」「三幕结构」=形式;❌「通勤穿搭」是实质。
+> - **格式**:名词/形容词短语(三幕结构、口语化、排比句式、慢节奏),原子化、砍前置动作动词。
+
+> **`feeling` 感受 —— 这颗内容勾起观众的情绪体验("看的人感到什么")**
+> - **平铺多值、摊正交**:一颗能同时勾多种感受(好奇 + 羞耻),都对等标上。
+> - **要具体到"这颗真正勾的那种"**:别用可套万物的宽泛情绪(紧张/震撼/感动),能更准就更准(面对两难抉择那种 →「两难煎熬感」,比「紧迫感」贴)。定位分偏低(<0.75)只说明树里还没有,正常新建。
+> - **边界**:感受=**观众实际感到的**,≠意图(创作者想要的)、≠作用(段内功能)。✅「治愈感」「羞耻感」=感受;❌「促进收藏」是意图。
+> - **格式**:情绪名词/形容词,砍前置动作动词(营造治愈感 → 治愈感)。
+
+> **`effect` 作用 —— 这颗帮创作者在内容里干成的活 / 创作效果(动名词)**
+> - **"手段层"**:段落 / 手法在内容里**起的功能**(创作元动词名词化——展示/强化/铺垫/对比/收束 → 强化、铺垫、对比、悬念设置、节奏控制)。
+> - **平铺多值、摊正交**:一颗常同时起几种作用(制造悬念 + 节奏控制),都对等标。
+> - **边界(最易串)**:作用=**创作效果/段内干的活(手段)**,≠意图(最终目的)、≠实质(讲的对象)、≠形式(结构形态)。✅「冲突」「看点」「节奏控制」=作用;❌「完播」是意图、「三幕结构」是形式。
+> - **格式**:**动名词**——名词+动作语素后缀(营造/设置/引导/控制)保留、是对的;只砍前置裸动词(「制造悬念」→「悬念」或「悬念设置」)。
+
+> **`intent` 意图 —— 创作者做这颗最终图什么(创作目的·必须动词)**
+> - 对齐意图树(仅 46 节点、讲终极目的),**自然收敛到很少**(多为 1 个,偶 2 个);真有多个目的(科普 + 引流)才标多。
+> - **层级对齐(别跳层)**:值贴**这颗本身的层级**——具体工具/手法颗标它自己那层(某叙事工具 →「勾住注意力/驱动情节」),别跳到整条内容的运营终极目标(涨粉/完播/下单),那是更大颗的意图,贴小颗上就串味。
+> - **边界**:意图=**创作者最终目的**,≠作用(手段/段内效果)、≠感受(观众情绪)。✅「科普」「引流」「种草」=意图;❌「制造悬念」是作用。
+> - **格式**:**动词**(科普/教学/引流/呼吁/种草/批判),别写成名词(流量/完播率/人设 → 引流/提升完播/立人设)。
+
+**一颗/一步不必 5 类都给**——只给真正涉及的;判不准的类标空 `[]`。
 
 ---
 
@@ -40,54 +63,40 @@
 
 判每个值前,先过这几条边界,确认它没站错列:
 
-- **实质 ↔ 形式**:实质=讲什么(内容对象);形式=怎么呈现(结构/手法)。
-  - ✅ 「增肌动作」=实质(对象);「步骤分解」=形式(呈现方式)
-  - ❌ 把"步骤分解"塞进实质(它是怎么排,不是讲什么)
-
-- **实质 ↔ 作用**:实质=讲的对象本身;作用=这条知识帮创作者做成的**创作效果**(动名词)。
-  - ✅ 「通勤穿搭」=实质;「节奏控制」=作用
-  - ❌ 把"节奏控制"当实质(它是创作效果不是题材)
-
-- **作用 ↔ 意图**:作用=帮创作者做的**创作动作/效果**(手段层);意图=**最终**想要的结果(目的层)。
-  - ✅ 「看点」=作用(创作效果);「完播」=意图(最终想要的结果)
-  - ❌ 把"完播"当作用(它是最终图什么,不是创作效果)
-
-- **感受 ↔ 意图**:感受=**观众**的情绪体验;意图=**创作者**的目的。
-  - ✅ 「治愈感」=感受(观众的感觉);「收藏」=意图(作者想要的)
-  - ❌ 把"治愈感"当意图(那是观众感受,不是作者目的)
-
-- **形式 ↔ 作用**:形式=呈现的**结构形态**;作用=帮创作者达成的**创作效果**。
-  - ✅ 「对比清单」=形式;「节奏控制」=作用
-
-- **层级对齐(意图别跳层)**:值要贴合**这颗本身的层级**。一个**具体工具/手法颗**的 `intent`,标它自己那层的创作意图(如某叙事工具→「勾住注意力/驱动情节」);**别跳到整条内容的运营终极目标**(涨粉/完播/下单)——那是更上游、更大颗的意图,贴到小工具颗上就串味了。
-- **自洽(值别和这颗自相矛盾)**:值不能跟这颗的实质打架。一颗讲「打破/反某结构」的知识,`substance` 不能标那个"被打破的结构"本身(如"反结构"的实质不是"结构框架");先想清这颗到底在讲什么,再起词。
+- **实质 ↔ 形式**:实质=讲什么(内容对象);形式=怎么呈现(结构/手法)。✅「增肌动作」=实质;「步骤分解」=形式。
+- **实质 ↔ 作用**:实质=讲的对象本身;作用=帮创作者做成的**创作效果**(动名词)。✅「通勤穿搭」=实质;「节奏控制」=作用。
+- **作用 ↔ 意图**:作用=创作动作/效果(**手段层**);意图=**最终**想要的结果(目的层)。✅「看点」=作用;「完播」=意图。
+- **感受 ↔ 意图**:感受=**观众**的情绪体验;意图=**创作者**的目的。✅「治愈感」=感受;「促进收藏」=意图。
+- **形式 ↔ 作用**:形式=呈现的**结构形态**;作用=帮创作者达成的**创作效果**。✅「对比清单」=形式;「节奏控制」=作用。
+- **层级对齐(意图别跳层)** / **自洽(值别和这颗自相矛盾)**:一颗讲「打破/反某结构」的知识,`substance` 不能标那个"被打破的结构"本身;先想清这颗到底在讲什么,再起词。
 
 ---
 
-## 3. 值的格式约束(原子化)
+## 3. 值的格式与多值约束
 
-1. **实质/形式/感受/作用 用名词/名词短语**,对齐分类树粒度:多为 2-4 字、上限约 6 字(软约束,专有名可略长;别为凑字数砍语义,也别写成长句否则定位不上)。砍前置动作动词,但「作用」动名词后缀(营造/引导/设置)保留。**意图除外——意图用动词**(科普/引流/呼吁),通常 2-4 字
-2. **原子**:不许用"和/与/、/,"拼接多义。复合就拆成多个值(同一类可多值)
-3. **不跨类重复**:一个值只进它该进的那一列;别在实质和作用都塞同一个词
-4. **去重**:同一步同一类不重复同义值
-5. 用**本帖语境里的具体词**,不要泛词("内容"、"主题"、"信息"这种放之四海皆准的不要),更不要照搬本文示例里的词
-6. **感受要具体到"这颗真正勾的那种感受"**:别用可套万物的宽泛情绪词("紧张/紧迫/震撼"这类)——能更准就更准(如观众面对两难抉择那种 → "两难煎熬感",比"紧迫感"贴)。定位分偏低(<0.75)只说明树里还没有,正常新建即可,但前提是这个词本身已经够具体
+1. **词性按类**:实质/形式/感受 = 名词/形容词短语;**作用 = 动名词**(营造/设置/引导后缀保留,只砍前置裸动词);**意图 = 动词**。多为 2-4 字、上限约 6 字(专有名可略长,别写成长句否则定位不上)。
+2. **原子**:不许用"和/与/、/,"拼接多义。复合 → 拆成多个值。
+3. **平铺多值、摊正交**(见核心原则):同一类的多个值必须是不同视角、同一视角内同一上位语义类型;近义/子面收敛回一个。
+4. **不跨类重复**:一个值只进它该进的那列。
+5. **去重**:同一组同一类不重复同义值。
+6. 用**本帖语境里的具体词**,不要泛词("内容/主题/信息"),更不要照搬本文示例词。
 
 ---
 
 ## 4. 判别顺序(每个候选值按序过一遍)
 
-1. **范畴检查**:它到底是"讲什么/怎么呈现/勾情绪/起功能/图什么"哪一类?(对照 §1+§2,站错列就移列或剔除)
-2. **原子检查**:是不是复合?是则拆。是不是整句?是则精简成短词。
-3. **泛词检查**:是不是放之四海皆准的框架词、或本文示例里的词?是则剔或换成本帖具体词。
-4. 通过 → 进定位(§5)。
+1. **范畴检查**:它是"讲什么/怎么呈现/勾情绪/起功能/图什么"哪一类?(对照 §1+§2,站错列就移列或剔除)
+2. **原子检查**:复合?→ 拆。整句?→ 精简成短词。
+3. **正交检查**:同一类已有的值里,它是不是某个值的近义/子面?是 → 收敛,别堆。
+4. **泛词检查**:放之四海皆准的框架词、或本文示例词?→ 剔或换成本帖具体词。
+5. 通过 → 进定位(§5)。
 
 ---
 
 ## 5. 执行三阶段
 
-### 阶段一 · 提候选值
-逐步读这颗(how 读 `input/directive/output`;what/why 读其 界定+主体 / 主张+支撑 各小节)的真实内容,按 §1-§4 标相关的几类,每类一个**从本帖抽的**候选具体值
+### 阶段一 · 提候选值(平铺多值)
+逐组读这颗(how 读 `input/directive/output`;what 读 概要+body各条目;why 读 主张+支撑各小节)的真实内容,按 §1-§4 标相关的几类,**每类把这颗真正涉及的值全部平铺列出**(先脑内摊正交、收敛近义),意图通常 1 个
 
 ### 阶段二 · 定位对齐(调工具)
 对每个候选值跑:
@@ -99,11 +108,11 @@ python 创作知识提取-skill/tools/scope-link.py "<候选值>" --type <substa
 - **0.75–0.90**:看 top-K 有没有**真同义**的——有就复用其 name,没有就用自己的候选值(新值)。
 - **< 0.75**:保留候选值为**新值**,记 `link: "新建"`、`score`(顺手丰富树)。
 
-> 定位是代码(火山 embedding 最近邻),你只负责"起词"和"看分判定复用/新建"。
+> 定位是代码(火山 embedding 最近邻),你只负责"起词"和"看分判定复用/新建";**树上没有不是问题,新建即可**
 
 ### 阶段三 · 验证(自检)
-- 每个值都过了 §2 边界、§3 原子、§4 泛词?**有没有不小心照搬本文示例里的词?**
-- 同一没有跨类重复值?
+- 每个值都过了 §2 边界、§3 原子+正交、§4 泛词?**有没有照搬本文示例词?**
+- 同一类的多个值是不是真不同视角(没堆近义)?同一组没有跨类重复值?
 - 判不准 / 模糊两可的类 → 标空 `[]`,别猜。
 
 ---
@@ -112,16 +121,18 @@ python 创作知识提取-skill/tools/scope-link.py "<候选值>" --type <substa
 
 ```json
 "作用域": [
-  {"scope_type":"substance","value":"<本帖讲的对象,例:食材搭配>","link":"新建","score":0.61},
-  {"scope_type":"form","value":"<本帖怎么呈现,例:步骤分解>","link":"复用","score":0.93},
-  {"scope_type":"intent","value":"<作者图什么,例:促进收藏>","link":"新建","score":0.55}
+  {"scope_type":"substance","value":"<实质值1>","link":"复用","score":0.93},
+  {"scope_type":"substance","value":"<实质值2,另一视角>","link":"新建","score":0.61},
+  {"scope_type":"form","value":"<形式值1>","link":"复用","score":0.91},
+  {"scope_type":"form","value":"<形式值2,另一模态>","link":"新建","score":0.58},
+  {"scope_type":"effect","value":"<作用值>","link":"新建","score":0.66},
+  {"scope_type":"intent","value":"<意图值,通常1个>","link":"新建","score":0.55}
 ]
 ```
-- `value`:定位后的最终值(复用=树原名,新建=候选词)。**示例里的"食材搭配"等只是示意,必须替换成本帖真实值。**
-- `link`:`复用` / `新建`(前端 drawer 用)。
-- `score`:top-1 余弦分(留痕)。
+- **同一类可出现多条**(平铺多值);`value`=定位后最终值(复用=树原名,新建=候选词)。
+- `link`:`复用` / `新建`(前端 drawer 用)。`score`:top-1 余弦分(留痕)。
 
 ## 过关条件 → 进 ⑤组装
-- 每颗/每步 `作用域` 已填(相关类带值、无关类不出现/标空)。
+- 每颗/每步 `作用域` 已填(相关类带值、无关类不出现/标空);**该多值的类已平铺、未硬压成单值**
 - 每个值都定位过、有 link+score。
-- 边界没串味、值原子、无泛词、**没照搬示例词**。
+- 边界没串味、值原子、同类多值无近义堆叠、无泛词、**没照搬示例词**。

+ 5 - 5
创作知识提取-skill/extraction/phase3-assemble.md

@@ -10,15 +10,15 @@
 | `title` | 该颗 `title` | | |
 | `dim_creations` | `["创作"]` 写死 | | |
 | `dim_attributes` | `["how工序"]` | `["what构成"]` | `["why原理"]` |
-| `content` | 目标+步骤(目的/怎么做/产出)拍平 | 界定+主体各小节 | 主张+支撑各小节 |
+| `content` | 目标+步骤(目的/怎么做/产出)拍平(str) | **结构化对象** `{name,kind,维度拆分规则,body[]}`(概要入 custom_ext) | 主张+支撑各小节(str) |
 | `scopes` | **各步 `作用域` value 去重并集** | **颗级 `作用域`** value | 颗级 value |
-| `custom_ext` | 业务阶段 + 创作阶段(各步去重) + 动作(各步) | **业务阶段** | **仅业务阶段** |
+| `custom_ext` | 业务阶段 + 创作阶段(各步去重) + 动作(各步) | **业务阶段 + 概要** | **仅业务阶段** |
 
 ### content 拼法
 - **How**:`目标:<purpose>\n步骤1(目的:<intent>)\n  指引:<directive>\n  产出:<output>\n步骤2…`
-- **What**:`界定:<界定>` + 每个 `主体` 小节 → `【<小标题>】(<形式>)` 后跟 `内容` 散文行 和/或 `条目` 的 `- <词>:<说明>`
-- **Why**:`主张:<主张>` + 每个 `支撑` 小节 → 同上(`【<小标题>】(<形式>)` + 内容/条目
-- 小节数 0..N,有就拼、没有不拼;`形式` 没有则省括号。
+- **What**:`content` 是**对象**(非字符串):`{"name":<title>, "kind":<子集/多维关系/序列>, "维度拆分规则":<仅子集,否则 null>, "body":[{"item_name","item_desc","作用域":[]}]}`;`概要` 不进 content,作为 `custom_ext` 一条(key=概要)
+- **Why**:`主张:<主张>` + 每个 `支撑` 小节 → `【<小标题>】(<形式>)` + 内容/条目。
+- Why 的小节数 1..N,有就拼;`形式` 没有则省括号。(What 已无小节/形式。)
 
 ### 组件颗的溯源
 若 `role=="组件"`(parent 非空),在 `custom_ext` 加一条标明出处:

+ 8 - 15
创作知识提取-skill/format/ingest-payload.schema.json → 创作知识提取-skill/format/ingest-payload-how.schema.json

@@ -1,8 +1,8 @@
 {
   "$schema": "http://json-schema.org/draft-07/schema#",
-  "$id": "ingest-payload.schema.json",
-  "title": "创作知识 Ingest Payload",
-  "$comment": "POST /api/v1/knowledge/ingest 的请求体。一颗知识 = 一个 payload;一帖通常 1-2 颗,共享 source.id。How=完整工序版,What/Why=简化版(content 不同、dim_attributes 不同、custom_ext 无创作阶段/动作)。Phase3 组装后用 lint-payload.py 校验。",
+  "$id": "ingest-payload-how.schema.json",
+  "title": "创作知识 Ingest Payload · How(工序)",
+  "$comment": "How 颗 = 不可跳步的有序工序。content 为拍平字符串:目标(=purpose) + 步骤N(输入/方法/产出)。一颗知识 = 一个 payload;同帖多颗共享 source.id。",
   "type": "object",
   "required": ["source", "title", "content", "dim_creations", "dim_attributes", "scopes"],
   "additionalProperties": false,
@@ -31,7 +31,7 @@
     "content": {
       "type": "string",
       "minLength": 1,
-      "$comment": "How:目标(=purpose) + 步骤N(目的/指引/产出) 拍平全文。What:界定+构成。Why:主张+依据+对创作的影响。"
+      "$comment": "拍平字符串:目标(=purpose) + 步骤N(输入/方法/产出)"
     },
     "dim_creations": {
       "type": "array",
@@ -42,11 +42,7 @@
     },
     "dim_attributes": {
       "type": "array",
-      "items": {
-        "type": "string",
-        "pattern": "^(how|what|why)",
-        "$comment": "how工序 / what构成(或 what清单/what界定) / why原理(或 why标准/why心法)"
-      },
+      "items": { "const": "how工序" },
       "minItems": 1,
       "maxItems": 1
     },
@@ -57,15 +53,12 @@
         "required": ["scope_type", "value"],
         "additionalProperties": false,
         "properties": {
-          "scope_type": {
-            "type": "string",
-            "enum": ["substance", "form", "feeling", "effect", "intent"]
-          },
+          "scope_type": { "type": "string", "enum": ["substance", "form", "feeling", "effect", "intent"] },
           "value": { "type": "string", "minLength": 1, "$comment": "带值;定位到 5 棵树现有节点,对得上复用原名" }
         }
       },
       "minItems": 1,
-      "$comment": "整颗 = 各步 scope 值去重并集"
+      "$comment": "各步 scope 值去重并集;同类可多条(平铺多值)"
     },
     "custom_ext": {
       "type": "array",
@@ -79,7 +72,7 @@
           "value": { "type": "string", "minLength": 1 }
         }
       },
-      "$comment": "业务阶段(灵感/选题/脚本) + 创作阶段(定向/构思/结构/成文/打磨,仅How) + 动作(开放,从内容提炼,仅How);多值各一条"
+      "$comment": "业务阶段(灵感/选题/脚本) + 创作阶段(定向/构思/结构/成文/打磨,逐步去重) + 动作(开放,逐步);多值各一条"
     }
   }
 }

+ 114 - 0
创作知识提取-skill/format/ingest-payload-what.schema.json

@@ -0,0 +1,114 @@
+{
+  "$schema": "http://json-schema.org/draft-07/schema#",
+  "$id": "ingest-payload-what.schema.json",
+  "title": "创作知识 Ingest Payload · What(构成)",
+  "$comment": "What 颗 = 界定/列举/分类某创作对象。content 为【结构化实体】对象(name + kind + 维度拆分规则 + body[]),不是字符串。概要放进 custom_ext。一颗知识 = 一个 payload;同帖多颗共享 source.id。",
+  "type": "object",
+  "required": ["source", "title", "content", "dim_creations", "dim_attributes", "scopes"],
+  "additionalProperties": false,
+  "properties": {
+    "source": {
+      "type": "object",
+      "required": ["id", "source_type", "title"],
+      "additionalProperties": true,
+      "properties": {
+        "id": { "type": "string", "$comment": "xhs_<content_id> / dy_<id> 等;同帖多颗共享" },
+        "source_type": { "type": "string", "$comment": "通常 post" },
+        "title": { "type": "string", "$comment": "原帖标题" },
+        "author": { "type": "string" },
+        "source_metadata": {
+          "type": "object",
+          "additionalProperties": true,
+          "properties": {
+            "platform": { "type": "string" },
+            "url": { "type": "string" },
+            "date": { "type": "string" }
+          }
+        }
+      }
+    },
+    "title": { "type": "string", "minLength": 1, "$comment": "知识名,如 剧本冲突的四种类型" },
+    "content": {
+      "type": "object",
+      "$comment": "结构化实体(对应前端「知识实体 JSON」)",
+      "required": ["name", "kind", "body"],
+      "additionalProperties": false,
+      "properties": {
+        "name": { "type": "string", "minLength": 1, "$comment": "知识名/框架名,通常同 title" },
+        "kind": { "type": "string", "enum": ["子集", "多维关系", "序列"] },
+        "维度拆分规则": {
+          "type": ["string", "null"],
+          "$comment": "仅 kind=子集 时填:此子集沿哪个维度切分(如 冲突形态);序列/多维关系留空或 null"
+        },
+        "body": {
+          "type": "array",
+          "minItems": 1,
+          "$comment": "扁平条目列表(替代旧的「主体」自由小节)",
+          "items": {
+            "type": "object",
+            "required": ["item_name", "item_desc", "作用域"],
+            "additionalProperties": false,
+            "properties": {
+              "item_name": { "type": "string", "minLength": 1 },
+              "item_desc": { "type": "string" },
+              "作用域": {
+                "type": "array",
+                "$comment": "item 级作用域,当前留空占位 [],仅用颗级 scopes(后续再启用)",
+                "items": {
+                  "type": "object",
+                  "required": ["scope_type", "value"],
+                  "additionalProperties": false,
+                  "properties": {
+                    "scope_type": { "type": "string", "enum": ["substance", "form", "feeling", "effect", "intent"] },
+                    "value": { "type": "string", "minLength": 1 }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "dim_creations": {
+      "type": "array",
+      "items": { "const": "创作" },
+      "minItems": 1,
+      "maxItems": 1,
+      "$comment": "恒 [\"创作\"],写死"
+    },
+    "dim_attributes": {
+      "type": "array",
+      "items": { "const": "what构成" },
+      "minItems": 1,
+      "maxItems": 1
+    },
+    "scopes": {
+      "type": "array",
+      "items": {
+        "type": "object",
+        "required": ["scope_type", "value"],
+        "additionalProperties": false,
+        "properties": {
+          "scope_type": { "type": "string", "enum": ["substance", "form", "feeling", "effect", "intent"] },
+          "value": { "type": "string", "minLength": 1, "$comment": "带值;定位到 5 棵树现有节点,对得上复用原名" }
+        }
+      },
+      "minItems": 1,
+      "$comment": "颗级 scope;同类可多条(平铺多值)"
+    },
+    "custom_ext": {
+      "type": "array",
+      "items": {
+        "type": "object",
+        "required": ["key", "type", "value"],
+        "additionalProperties": false,
+        "properties": {
+          "key": { "type": "string", "enum": ["业务阶段", "概要", "出自"] },
+          "type": { "const": "str" },
+          "value": { "type": "string", "minLength": 1 }
+        }
+      },
+      "$comment": "业务阶段(灵感/选题/脚本) + 概要(一句话锚点,从旧字段迁来);组件颗加「出自」。What 无创作阶段/动作"
+    }
+  }
+}

+ 78 - 0
创作知识提取-skill/format/ingest-payload-why.schema.json

@@ -0,0 +1,78 @@
+{
+  "$schema": "http://json-schema.org/draft-07/schema#",
+  "$id": "ingest-payload-why.schema.json",
+  "title": "创作知识 Ingest Payload · Why(原理)",
+  "$comment": "Why 颗 = 解释某做法/判断背后的道理。content 为拍平字符串:主张 + 各支撑小节(含必填的「取舍」节)。一颗知识 = 一个 payload;同帖多颗共享 source.id。",
+  "type": "object",
+  "required": ["source", "title", "content", "dim_creations", "dim_attributes", "scopes"],
+  "additionalProperties": false,
+  "properties": {
+    "source": {
+      "type": "object",
+      "required": ["id", "source_type", "title"],
+      "additionalProperties": true,
+      "properties": {
+        "id": { "type": "string", "$comment": "xhs_<content_id> / dy_<id> 等;同帖多颗共享" },
+        "source_type": { "type": "string", "$comment": "通常 post" },
+        "title": { "type": "string", "$comment": "原帖标题" },
+        "author": { "type": "string" },
+        "source_metadata": {
+          "type": "object",
+          "additionalProperties": true,
+          "properties": {
+            "platform": { "type": "string" },
+            "url": { "type": "string" },
+            "date": { "type": "string" }
+          }
+        }
+      }
+    },
+    "title": { "type": "string", "minLength": 1, "$comment": "原理名,如 爆款选题的情绪触发原理" },
+    "content": {
+      "type": "string",
+      "minLength": 1,
+      "$comment": "拍平字符串:主张 + 各支撑小节(机制/依据/取舍…,取舍必有)"
+    },
+    "dim_creations": {
+      "type": "array",
+      "items": { "const": "创作" },
+      "minItems": 1,
+      "maxItems": 1,
+      "$comment": "恒 [\"创作\"],写死"
+    },
+    "dim_attributes": {
+      "type": "array",
+      "items": { "const": "why原理" },
+      "minItems": 1,
+      "maxItems": 1
+    },
+    "scopes": {
+      "type": "array",
+      "items": {
+        "type": "object",
+        "required": ["scope_type", "value"],
+        "additionalProperties": false,
+        "properties": {
+          "scope_type": { "type": "string", "enum": ["substance", "form", "feeling", "effect", "intent"] },
+          "value": { "type": "string", "minLength": 1, "$comment": "带值;定位到 5 棵树现有节点,对得上复用原名" }
+        }
+      },
+      "minItems": 1,
+      "$comment": "颗级 scope;同类可多条(平铺多值)"
+    },
+    "custom_ext": {
+      "type": "array",
+      "items": {
+        "type": "object",
+        "required": ["key", "type", "value"],
+        "additionalProperties": false,
+        "properties": {
+          "key": { "type": "string", "enum": ["业务阶段", "出自"] },
+          "type": { "const": "str" },
+          "value": { "type": "string", "minLength": 1 }
+        }
+      },
+      "$comment": "业务阶段(灵感/选题/脚本);组件颗加「出自」=出自哪个 how 第几步。Why 无创作阶段/动作"
+    }
+  }
+}

+ 1 - 1
创作知识提取-skill/taxonomy/知识类型.json

@@ -15,7 +15,7 @@
     {
       "分类名称": "what",
       "dim_attributes值": "what构成",
-      "payload形态": "简化(界定 + 构成,无 steps)",
+      "payload形态": "结构化(content 为对象:name + kind + 维度拆分规则(子集) + body[item_name/item_desc];概要入 custom_ext;无 steps)",
       "分类说明": "这颗知识是『是什么 / 由什么构成』——对某创作对象的界定、要素清单、模板、风格示例,但不讲怎么一步步做。典型:脚本三要素、爆款标题的构成要素、某风格的特征清单。判别口诀:读完主要收获是『了解这东西是什么、由哪几块组成』,是界定性/列举性的。注意:what 始终是独立一颗——定死两态:要么单独的一条(role=主),要么对应某 how 的某一步而成组件颗(role=组件,parent={how_id,step})。二者皆可,不存在『并进 step、不单独成颗』;与 why 完全对称。",
       "分类性质": "构成"
     },

+ 21 - 2
创作知识提取-skill/tools/lint-payload.py

@@ -12,7 +12,8 @@ import sys
 from pathlib import Path
 
 SCOPE_TYPES = {"substance", "form", "feeling", "effect", "intent"}
-EXT_KEYS = {"业务阶段", "创作阶段", "动作", "出自"}
+EXT_KEYS = {"业务阶段", "创作阶段", "动作", "出自", "概要"}
+KINDS = {"子集", "多维关系", "序列"}
 业务阶段 = {"灵感", "选题", "脚本"}
 创作阶段 = {"定向", "构思", "结构", "成文", "打磨"}
 
@@ -76,12 +77,30 @@ def lint_one(p: dict, idx: int) -> tuple[list[str], list[str]]:
         if "动作" not in keys_present:
             warn.append(f"{tag} how 颗通常带『动作』(从内容提炼),custom_ext 里没有")
         c = p.get("content", "")
-        if "步骤" not in c and "目标" not in c:
+        if not isinstance(c, str) or ("步骤" not in c and "目标" not in c):
             warn.append(f"{tag} how 的 content 建议含『目标…』+『步骤N…』结构")
     elif kind in ("what", "why"):
         bad = keys_present & {"创作阶段", "动作"}
         if bad:
             err.append(f"{tag} {kind} 简化版不应有 {bad}(只保留业务阶段)")
+        if kind == "what":  # What 的 content 是结构化实体对象
+            c = p.get("content")
+            if not isinstance(c, dict):
+                err.append(f"{tag} what 的 content 须为结构化对象 {{name,kind,body}},实为 {type(c).__name__}")
+            else:
+                if not c.get("name"):
+                    err.append(f"{tag} what.content 缺 name")
+                if c.get("kind") not in KINDS:
+                    err.append(f"{tag} what.content.kind 非法:{c.get('kind')}(应 ∈ {sorted(KINDS)})")
+                if not c.get("body"):
+                    err.append(f"{tag} what.content.body 为空")
+                for j, it in enumerate(c.get("body") or [], 1):
+                    if not it.get("item_name"):
+                        err.append(f"{tag} body[{j}] 缺 item_name")
+                if c.get("kind") == "子集" and not c.get("维度拆分规则"):
+                    warn.append(f"{tag} 子集型建议填 维度拆分规则")
+            if "概要" not in keys_present:
+                warn.append(f"{tag} what 颗建议 custom_ext 带『概要』")
     if ext and "业务阶段" not in keys_present:
         warn.append(f"{tag} custom_ext 建议至少有一个『业务阶段』")