# 输出前自检清单 > 输出 JSON 之前必读。**逐条内部过一遍,命中问题先改再输出。** 自检过程不展示给用户。 > 任一"硬校验"不通过 = 不合格,必须修。 --- ## A. 输出契约校验(硬,必须全过) - [ ] 最终只输出**一个** JSON 对象,无 schema 外的多余文字/注释。 - [ ] `tone` ∈ `{种草, 测评, 剧情, 痛点}`。 - [ ] `aspect_ratio` 存在;输入指定了就用输入值,未指定为 `"9:16"`。 - [ ] `total_duration` ∈ `{15, 30, 60, 90}`。 - [ ] `segment_count == total_duration / 15`,且 `segments` 数组长度等于它。 - [ ] 每个 `segment.duration == 15`;`index` 从 0 连续递增无跳号。 - [ ] 每个 `segment.role` ∈ `{钩子, 痛点, 卖点, CTA}`。 - [ ] 首镜 `role == 钩子`;末镜收 CTA(独立 CTA 镜,或末镜旁白末尾含明确行动指令)。 - [ ] `entities` 每项 `type` ∈ `{character, scene, product}`,`id` 全局唯一。 - [ ] `entity_refs` 与 `speaker` 引用的 id **都已在 entities 中声明**(无悬空引用)。 - [ ] **每个声明的 entity 至少被一个 segment 引用**(无孤儿 entity)。 - [ ] **至少声明 1 个 `type==scene` 实体;每个 segment 的 `entity_refs` 恰好引用一个 scene**(同环境复用同一 scene id,换环境才新建;产品特写镜也要绑所处环境的 scene)。 - [ ] `speaker` 要么为 `null`,要么指向一个 `type==character` 的 id。 - [ ] 必填字段无缺失:顶层 `hook/tone/aspect_ratio/total_duration/segment_count/entities/segments`; 每 entity 有 `id/type/name/visual_prompt/ref_index`; 每 segment 有 `index/duration/role/narration/visual/product_exposure/entity_refs`。 ## B. 内容质检(钩子 / 结构 / 一致性) - [ ] 钩子镜第一句在前 3 秒抛出钩子,套用了 `hook-library.md` 的某个公式。 - [ ] 顶层 `hook` 与钩子镜口径一致。 - [ ] 卖点镜的卖点**挂在前面铺的痛点上**,不是干罗列参数。 - [ ] CTA 给了明确动作(点小黄车/领券/主页链接)。 - [ ] 档位映射正确:role 序列符合 `methodology.md`「档位 × 黄金结构映射」表。 - [ ] 90s 的多个卖点镜**各有侧重不重复**。 - [ ] 同一角色/场景/商品全程复用同一 entity(没有给同一对象写出两份 visual_prompt)。 - [ ] 每个 `visual_prompt` 信息足够喂图模型(角色/场景/商品的外观特征写清)。 - [ ] 每镜 `product_exposure` 自然、与 role 匹配(参考方法论露出表)。 ## C. 旁白红线扫描(逐镜) - [ ] 每镜 `narration` ≤ 55 字(硬上限;目标 ≤50 留缓冲,逐字数一遍,别凭感觉)。 - [ ] 口语化,无书面腔/AI 腔("综上""不仅…而且""值得一提"等已清除)。 - [ ] **违规词扫描**:无医疗功效词(治疗/根治/抗癌/消炎/排毒/速效…)。 - [ ] **绝对化用语扫描**:无 最/第一/唯一/100%/国家级/永久/绝对/史上 等。 - [ ] 无虚假承诺(三天见效/永不反弹/包治…)。 --- ## 通过标准 A 区**全部**通过 + B/C 区无红线命中 → 可输出。 任何一条不过:先改,再重跑本清单,直到全过,才输出最终 JSON。