[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71VACX2P0YFJ39ATXFK31WT":3,"skill-same:01M71VACX2P0YFJ39ATXFK31WT":105},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":26,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":79,"commitSha":80,"skillDirectory":81,"forksCount":82,"repositoryHtmlUrl":83,"repositoryHomepageUrl":84,"ownerHtmlUrl":85,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":86,"install":87,"resources":99},"01M71VACX2P0YFJ39ATXFK31WT","director-consistency",null,"治 AI 视频多镜头「同角色换脸 \u002F 同道具换形 \u002F 同场景换景」三大顽疾的方法论——五维一致性检查、参考图锚定、场内状态表、段间承接。Nomi 拆镜头与跨镜生成时参考：把每个跨镜元素落成画布 anchor 节点（角色\u002F场景\u002F道具\u002F风格），镜头用 anchorIds 引用、系统连参考边，段间用首尾帧承接。","aqm857886159\u002FNomi","aqm857886159","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F77039254?v=4","01M71V6AZN6880Q4X2G1XANS5E","青阳","01M71V6B08RP8GMYG9QBX9QXCH",646,"AGPL-3.0","https:\u002F\u002Fgithub.com\u002Faqm857886159\u002FNomi\u002Fblob\u002Fmain\u002Fskills\u002Fdirector-consistency\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"director consistency","consistency","director","illustration","body","preserve","cover","true","presentation","anchor","image","across","character","contributors","text","生成","png","视频","library","identity","2026-11-10 13:02:02",false,"---\nname: director-consistency\ndescription: 治 AI 视频多镜头「同角色换脸 \u002F 同道具换形 \u002F 同场景换景」三大顽疾的方法论——五维一致性检查、参考图锚定、场内状态表、段间承接。Nomi 拆镜头与跨镜生成时参考：把每个跨镜元素落成画布 anchor 节点（角色\u002F场景\u002F道具\u002F风格），镜头用 anchorIds 引用、系统连参考边，段间用首尾帧承接。\nmetadata:\n  nomi:\n    selectable-in-workbench: true\n    library:\n      kind: skill\n      title:\n        zh-CN: 跨镜一致性\n        en: Shot consistency\n      summary:\n        zh-CN: 治 AI 视频多镜头「同角色换脸 \u002F 同道具换形 \u002F 同场景换景」三大顽疾的方法论——五维一致性检查、参考图锚定、场内状态表、段间承接。Nomi 拆镜头与跨镜生成时参考：把每个跨镜元素落成画布 anchor 节点（角色\u002F场景\u002F道具\u002F风格），镜头用\n          anchorIds 引用、系统连参考边，段间用首尾帧承接。\n        en: Preserve character, prop and location identity across shots.\n      appliesTo:\n      - text\n      group:\n        zh-CN: 导演\n        en: Directing\n      slots: []\n      source:\n        url: https:\u002F\u002Fgithub.com\u002Faqm857886159\u002FNomi\u002Fblob\u002F7a072f12d4e35d1bf341403d942e5c0c702e6c7b\u002Fskills\u002Fdirector-consistency\u002FSKILL.md\n        revision: 7a072f12d4e35d1bf341403d942e5c0c702e6c7b\n        author: Nomi contributors\n        changes: Nomi adds library presentation metadata; the skill body is unchanged.\n        evidence:\n        - https:\u002F\u002Fgithub.com\u002Faqm857886159\u002FNomi\u002Fblob\u002F7a072f12d4e35d1bf341403d942e5c0c702e6c7b\u002Fskills\u002Fdirector-consistency\u002FSKILL.md\n      preview:\n        path: assets\u002Fcover.png\n        type: image\n        provenance: illustration\n    version: 1.0.0\n    tools: []\n    required-providers: []\nlicense: AGPL-3.0-only\n---\n\n# 跨镜一致性方法论 (Consistency Engineering)\n\nAI 视频生成的头号敌人不是「画面不好看」，而是**同一个人看起来不像同一个人**。多镜头、多段的片子若不解决一致性，观众看两三镜就出戏。本文不发明技术，而是把业界已验证的一致性手段整理成拆镜头与生成时的强制动作。\n\n**在 Nomi 里落地的方式**：凡是「跨镜头要保持一致」的东西，都建成画布上的 **anchor 节点**（`kind`：`character` 角色 \u002F `scene` 场景 \u002F `prop` 道具 \u002F `style` 风格）。视觉锚（`carrier: visual`）会先生成一张参考图锁住长相；文本锚（`carrier: text`）把特征词拼进每个引用它的镜头。镜头用 `anchorIds` 引用哪些锚，系统据此给视觉锚**连参考边**、把文本锚描述拼进 prompt。所以下文凡说「@引用某素材」，在 Nomi 里就是**在该镜的 `anchorIds` 里点名那个 anchor**，不是把提示词复制到外部工具。\n\n---\n\n## 一、一致性的五个维度\n\n每个镜头产出前，逐维度自检——哪一维会漂移，就为它建\u002F引用对应的锚：\n\n| 维度 | 盯什么 | 失控表现 | 在 Nomi 的锚定手段 |\n|------|--------|----------|--------------------|\n| **角色** | 脸、身材、发型、肤色、瞳色 | 换脸、身高忽高忽低 | `character` 视觉锚（参考图含面部特写 + 三视图）+ 镜头 `anchorIds` 引用 |\n| **服化** | 服装版型、配色、质地、饰品、武器 | 同场戏换衣、纽扣数变化 | 视觉锚定妆图锁版型 + 文本锚补服装色卡\u002F关键细节词 |\n| **道具** | 关键道具的造型、材质、铭文 | 道具外形每镜不同、设备换型 | `prop` 视觉锚（多角度 + 材质特写 + 比例参照）+ `anchorIds` 引用 |\n| **场景** | 空间布局、光源位置、装饰细节 | 同一房间家具搬家、窗户消失 | `scene` 视觉锚（空场景全景 + 光位）+ 镜头复述主光方向 |\n| **时序** | 同场戏内动作连续性、伤痕、服装残损 | 上一镜干净下一镜染血（或反之） | 场内状态表（见 §三），锚管不了「同一场内的状态推进」 |\n\n前四维靠**锚**（跨镜「这一个特定实例」保持不变），第五维靠**状态表**（同场景内状态只增不倒退）——两套机制互补，别混用。\n\n---\n\n## 二、三级锚定体系\n\n一致性靠三层由强到弱的绑定，越靠上越硬：\n\n### Level 1 · 参考图锚定（源头）\n\n主要角色、关键道具、固定场景都建成**视觉锚**，让系统先生成一张参考图作为「唯一真相」。参考图质量直接决定后面所有镜头的下限，所以定妆\u002F定景描述要中性、干净：\n\n- **角色**：`面部特写 + 全身三视图（正\u002F侧\u002F背） + 干净背景`，全身中性站姿、不带剧情动作、光影不过强。\n- **道具**：`多角度（至少 3 个视角） + 材质特写 + 比例参照`（放一只手或常见物体作尺度）。\n- **场景**：`空场景全景 + 关键光位`，不带人物、不带剧情。\n\n> **一元素一锚，不要合成**：人物、场景、道具各自独立建锚、各自独立参考图，**绝不把人物和场景塞进同一张参考图**——合成会同时拉低场景和人物的 identity 精度。这正是 Nomi「每个跨镜元素一个 anchor 节点」的设计初衷：系统会把多张参考图分别喂给生成，不需要、也不要你手动拼成一张。\n\n### Level 2 · anchor 引用（镜头层）\n\n镜头**只引用锚，不在 prompt 里重描锚的静态外貌**。外貌交给参考图\u002F文本锚，镜头 prompt 只写这一镜独有的运镜与动作：\n\n- 良例：`anchorIds: [角色A, 指挥舱]`；prompt =「角色A背部直挺，右手食指缓慢从面板抬起后放下」。\n- 劣例：不引用锚，prompt 里从头描述「一个穿制服的男人在飞船舱桥中……」→ 每镜重描 = 每镜重掷骰子 = 必漂移。\n\n**硬规则**：出现在某镜里的每个角色 \u002F 所在场景 \u002F 用到的道具 \u002F 整片风格，都要列进这一镜的 `anchorIds`；只出现一次的一次性元素（群演、路过的物件）**不建锚**，直接写进那一镜 prompt。\n\n### Level 3 · 段间承接（handoff）\n\n段与段之间（一场戏拆成多个连续镜头，或一整段接下一段）的视觉连续性，靠**首尾帧承接**：上一镜的尾帧状态（角色位置\u002F朝向\u002F姿态\u002F环境\u002F光位）明确传给下一镜的起点。Nomi 里对应「用上一镜产物做下一镜的首帧（`first_frame`）」或在下一镜 prompt 里显式承接尾帧状态。承接分三级：\n\n| 级别 | 何时用 | 怎么接 |\n|------|--------|--------|\n| **L1 强锚定**（同场景跨镜） | 尾帧和下一镜起点必须严格一致 | 下一镜用上一镜尾帧做首帧，或 prompt 明确承接「角色位置\u002F朝向\u002F姿态\u002F环境」 |\n| **L2 软锚定**（换场景但情绪连续） | 位置不必对齐，但色调\u002F光位\u002F角色朝向要匹配 | 下一镜 prompt 保持「同色调 + 同主光方向 + 朝向匹配」 |\n| **L3 硬切**（叙事跳转\u002F时间跳跃\u002F蒙太奇） | 视觉不需连续 | 下一镜独立起帧，连续性交后期剪辑 |\n\n判断口诀：**同一场戏内的相邻镜头默认 L1**（拆条只为绕过单条时长上限，画面本应无缝）；**换地点但情绪不断用 L2**；**闪回\u002F跳时间\u002F蒙太奇用 L3**。\n\n---\n\n## 三、场内状态表 (State Table)\n\n同一场戏内的连续性问题（染血、服装残损、伤痕、手持道具的有无）靠**状态表**管理——它管的是「同一场景里随剧情推进的状态变化」，是锚管不到的那一维。编写多镜头场戏前，先列一张表把每镜的关键状态钉死：\n\n```\n## 指挥舱对峙 · 状态表\n| 镜号 | 角色A 状态          | 角色B 状态        | 关键道具     |\n|------|--------------------|------------------|-------------|\n| 镜12 | 制服整洁            | 站立，面无表情    | 控制台完好   |\n| 镜13 | 制服整洁            | 身体微倾，瞳孔收缩| 控制台完好   |\n| 镜14 | 右颊划伤            | 后退一步          | 控制台裂纹   |\n| 镜15 | 右颊划伤 + 衣领扯开 | 倒地              | 控制台裂纹   |\n```\n\n**硬规则（状态只进不退）**：一旦某镜出现血 \u002F 伤 \u002F 衣破 \u002F 湿身，**后续所有同场镜头的 prompt 必须继承该状态**，直到场景结束或剧本明确有清洗\u002F换装动作。倒回「干净」= 穿帮。\n\n---\n\n## 四、段与段的承接检查\n\n一段接下一段（尤其角色\u002F道具\u002F场景跨段复用）时，过一遍承接：\n\n1. **末状态对齐**：下一段首镜的角色状态（伤痕\u002F服装\u002F情绪残留）要接上一段末镜的状态，除非剧情明确跳了时间。\n2. **道具延续**：跨段出现的同一道具（飞船、关键物件）**复用同一个 anchor**，不要为它重新建锚、重新生成参考图。\n3. **场景复用**：跨段复用的场景**沿用原来那个 `scene` 锚**，不重新生成参考图——重生成 = 家具搬家。\n4. **重大外观变化才拆锚**：只有「少年↔成年 \u002F 伤前↔伤后 \u002F 彻底换装」这种**认不出是同一个**的变化，才把同一角色拆成两个锚并在 `description` 写清差异；普通情绪\u002F小动作变化不拆锚。\n\n---\n\n## 五、常见一致性陷阱与规避\n\n这些是 AI 生成的系统性弱点，属**硬约束**——重掷骰子基本无用，必须靠「换画面结构」绕过，别指望多抽几次能好：\n\n| 陷阱 | 典型表现 | 规避 |\n|------|---------|------|\n| **群演脸** | 同一群演相邻镜头脸变了 | 群演\u002F一次性配角不建锚，用去个性化描述（戴头盔\u002F背影\u002F远景），避免特写 |\n| **手部** | AI 普遍画不好手，多指\u002F缺指 | 握物\u002F操作镜头避免手部特写；非给不可时用参考图明确指法 |\n| **文字\u002F铭文** | 招牌字、飞船编号、徽章文字反复变且乱码 | prompt **不写要渲染的文字**；用图形符号代替字母，片名\u002F字幕一律后期叠 |\n| **比例漂移** | 同一物体（飞船\u002F建筑）尺寸在不同镜头不一致 | 与参照物同框（人、标准箱体），禁止纯空镜比例；关键道具用比例参照建锚 |\n| **光位变异** | 同场戏光源方向乱跳 | 场景锚参考图标注光位，**每一镜 prompt 复述主光方向** |\n| **口型对白** | 正脸对白口型对不上 | 侧脸 \u002F 画外音 \u002F 不露正脸，配音交后期 |\n\n---\n\n## 六、拆镜头 \u002F 审镜头时的一致性核对清单\n\n拆完镜头、或复核一份分镜方案时，逐条打勾：\n\n- [ ] 出现在某镜里的角色 \u002F 场景 \u002F 道具 \u002F 全片风格，是否都进了这一镜的 `anchorIds`？（漏引用 = 漏锚 = 会漂）\n- [ ] 镜头 prompt 里有没有**重复描述锚的静态外貌**？（应交参考图\u002F文本锚，prompt 只写运镜+动作）\n- [ ] 同一个人是否只建了**一个**角色锚？（别名\u002F职称\u002F「他」都归并成一个，别一人两锚）\n- [ ] 同场戏内的状态（伤\u002F血\u002F衣破\u002F湿身）是否与状态表一致、只进不退？\n- [ ] 相邻\u002F跨段镜头的承接级别（L1\u002FL2\u002FL3）是否想清楚，L1 是否用尾帧做了首帧或 prompt 承接？\n- [ ] 有没有踩 §五 的硬约束（手部\u002F文字\u002F比例\u002F光位\u002F口型），并已用画面结构规避？\n\n任一未满足就回去改——一致性是拆镜头阶段一次性想清楚的事，等生成出来才发现漂移，返工成本高得多。\n","# 跨镜一致性方法论 (Consistency Engineering)\n\nAI 视频生成的头号敌人不是「画面不好看」，而是**同一个人看起来不像同一个人**。多镜头、多段的片子若不解决一致性，观众看两三镜就出戏。本文不发明技术，而是把业界已验证的一致性手段整理成拆镜头与生成时的强制动作。\n\n**在 Nomi 里落地的方式**：凡是「跨镜头要保持一致」的东西，都建成画布上的 **anchor 节点**（`kind`：`character` 角色 \u002F `scene` 场景 \u002F `prop` 道具 \u002F `style` 风格）。视觉锚（`carrier: visual`）会先生成一张参考图锁住长相；文本锚（`carrier: text`）把特征词拼进每个引用它的镜头。镜头用 `anchorIds` 引用哪些锚，系统据此给视觉锚**连参考边**、把文本锚描述拼进 prompt。所以下文凡说「@引用某素材」，在 Nomi 里就是**在该镜的 `anchorIds` 里点名那个 anchor**，不是把提示词复制到外部工具。\n\n---\n\n## 一、一致性的五个维度\n\n每个镜头产出前，逐维度自检——哪一维会漂移，就为它建\u002F引用对应的锚：\n\n| 维度 | 盯什么 | 失控表现 | 在 Nomi 的锚定手段 |\n|------|--------|----------|--------------------|\n| **角色** | 脸、身材、发型、肤色、瞳色 | 换脸、身高忽高忽低 | `character` 视觉锚（参考图含面部特写 + 三视图）+ 镜头 `anchorIds` 引用 |\n| **服化** | 服装版型、配色、质地、饰品、武器 | 同场戏换衣、纽扣数变化 | 视觉锚定妆图锁版型 + 文本锚补服装色卡\u002F关键细节词 |\n| **道具** | 关键道具的造型、材质、铭文 | 道具外形每镜不同、设备换型 | `prop` 视觉锚（多角度 + 材质特写 + 比例参照）+ `anchorIds` 引用 |\n| **场景** | 空间布局、光源位置、装饰细节 | 同一房间家具搬家、窗户消失 | `scene` 视觉锚（空场景全景 + 光位）+ 镜头复述主光方向 |\n| **时序** | 同场戏内动作连续性、伤痕、服装残损 | 上一镜干净下一镜染血（或反之） | 场内状态表（见 §三），锚管不了「同一场内的状态推进」 |\n\n前四维靠**锚**（跨镜「这一个特定实例」保持不变），第五维靠**状态表**（同场景内状态只增不倒退）——两套机制互补，别混用。\n\n---\n\n## 二、三级锚定体系\n\n一致性靠三层由强到弱的绑定，越靠上越硬：\n\n### Level 1 · 参考图锚定（源头）\n\n主要角色、关键道具、固定场景都建成**视觉锚**，让系统先生成一张参考图作为「唯一真相」。参考图质量直接决定后面所有镜头的下限，所以定妆\u002F定景描述要中性、干净：\n\n- **角色**：`面部特写 + 全身三视图（正\u002F侧\u002F背） + 干净背景`，全身中性站姿、不带剧情动作、光影不过强。\n- **道具**：`多角度（至少 3 个视角） + 材质特写 + 比例参照`（放一只手或常见物体作尺度）。\n- **场景**：`空场景全景 + 关键光位`，不带人物、不带剧情。\n\n> **一元素一锚，不要合成**：人物、场景、道具各自独立建锚、各自独立参考图，**绝不把人物和场景塞进同一张参考图**——合成会同时拉低场景和人物的 identity 精度。这正是 Nomi「每个跨镜元素一个 anchor 节点」的设计初衷：系统会把多张参考图分别喂给生成，不需要、也不要你手动拼成一张。\n\n### Level 2 · anchor 引用（镜头层）\n\n镜头**只引用锚，不在 prompt 里重描锚的静态外貌**。外貌交给参考图\u002F文本锚，镜头 prompt 只写这一镜独有的运镜与动作：\n\n- 良例：`anchorIds: [角色A, 指挥舱]`；prompt =「角色A背部直挺，右手食指缓慢从面板抬起后放下」。\n- 劣例：不引用锚，prompt 里从头描述「一个穿制服的男人在飞船舱桥中……」→ 每镜重描 = 每镜重掷骰子 = 必漂移。\n\n**硬规则**：出现在某镜里的每个角色 \u002F 所在场景 \u002F 用到的道具 \u002F 整片风格，都要列进这一镜的 `anchorIds`；只出现一次的一次性元素（群演、路过的物件）**不建锚**，直接写进那一镜 prompt。\n\n### Level 3 · 段间承接（handoff）\n\n段与段之间（一场戏拆成多个连续镜头，或一整段接下一段）的视觉连续性，靠**首尾帧承接**：上一镜的尾帧状态（角色位置\u002F朝向\u002F姿态\u002F环境\u002F光位）明确传给下一镜的起点。Nomi 里对应「用上一镜产物做下一镜的首帧（`first_frame`）」或在下一镜 prompt 里显式承接尾帧状态。承接分三级：\n\n| 级别 | 何时用 | 怎么接 |\n|------|--------|--------|\n| **L1 强锚定**（同场景跨镜） | 尾帧和下一镜起点必须严格一致 | 下一镜用上一镜尾帧做首帧，或 prompt 明确承接「角色位置\u002F朝向\u002F姿态\u002F环境」 |\n| **L2 软锚定**（换场景但情绪连续） | 位置不必对齐，但色调\u002F光位\u002F角色朝向要匹配 | 下一镜 prompt 保持「同色调 + 同主光方向 + 朝向匹配」 |\n| **L3 硬切**（叙事跳转\u002F时间跳跃\u002F蒙太奇） | 视觉不需连续 | 下一镜独立起帧，连续性交后期剪辑 |\n\n判断口诀：**同一场戏内的相邻镜头默认 L1**（拆条只为绕过单条时长上限，画面本应无缝）；**换地点但情绪不断用 L2**；**闪回\u002F跳时间\u002F蒙太奇用 L3**。\n\n---\n\n## 三、场内状态表 (State Table)\n\n同一场戏内的连续性问题（染血、服装残损、伤痕、手持道具的有无）靠**状态表**管理——它管的是「同一场景里随剧情推进的状态变化」，是锚管不到的那一维。编写多镜头场戏前，先列一张表把每镜的关键状态钉死：\n\n```\n## 指挥舱对峙 · 状态表\n| 镜号 | 角色A 状态          | 角色B 状态        | 关键道具     |\n|------|--------------------|------------------|-------------|\n| 镜12 | 制服整洁            | 站立，面无表情    | 控制台完好   |\n| 镜13 | 制服整洁            | 身体微倾，瞳孔收缩| 控制台完好   |\n| 镜14 | 右颊划伤            | 后退一步          | 控制台裂纹   |\n| 镜15 | 右颊划伤 + 衣领扯开 | 倒地              | 控制台裂纹   |\n```\n\n**硬规则（状态只进不退）**：一旦某镜出现血 \u002F 伤 \u002F 衣破 \u002F 湿身，**后续所有同场镜头的 prompt 必须继承该状态**，直到场景结束或剧本明确有清洗\u002F换装动作。倒回「干净」= 穿帮。\n\n---\n\n## 四、段与段的承接检查\n\n一段接下一段（尤其角色\u002F道具\u002F场景跨段复用）时，过一遍承接：\n\n1. **末状态对齐**：下一段首镜的角色状态（伤痕\u002F服装\u002F情绪残留）要接上一段末镜的状态，除非剧情明确跳了时间。\n2. **道具延续**：跨段出现的同一道具（飞船、关键物件）**复用同一个 anchor**，不要为它重新建锚、重新生成参考图。\n3. **场景复用**：跨段复用的场景**沿用原来那个 `scene` 锚**，不重新生成参考图——重生成 = 家具搬家。\n4. **重大外观变化才拆锚**：只有「少年↔成年 \u002F 伤前↔伤后 \u002F 彻底换装」这种**认不出是同一个**的变化，才把同一角色拆成两个锚并在 `description` 写清差异；普通情绪\u002F小动作变化不拆锚。\n\n---\n\n## 五、常见一致性陷阱与规避\n\n这些是 AI 生成的系统性弱点，属**硬约束**——重掷骰子基本无用，必须靠「换画面结构」绕过，别指望多抽几次能好：\n\n| 陷阱 | 典型表现 | 规避 |\n|------|---------|------|\n| **群演脸** | 同一群演相邻镜头脸变了 | 群演\u002F一次性配角不建锚，用去个性化描述（戴头盔\u002F背影\u002F远景），避免特写 |\n| **手部** | AI 普遍画不好手，多指\u002F缺指 | 握物\u002F操作镜头避免手部特写；非给不可时用参考图明确指法 |\n| **文字\u002F铭文** | 招牌字、飞船编号、徽章文字反复变且乱码 | prompt **不写要渲染的文字**；用图形符号代替字母，片名\u002F字幕一律后期叠 |\n| **比例漂移** | 同一物体（飞船\u002F建筑）尺寸在不同镜头不一致 | 与参照物同框（人、标准箱体），禁止纯空镜比例；关键道具用比例参照建锚 |\n| **光位变异** | 同场戏光源方向乱跳 | 场景锚参考图标注光位，**每一镜 prompt 复述主光方向** |\n| **口型对白** | 正脸对白口型对不上 | 侧脸 \u002F 画外音 \u002F 不露正脸，配音交后期 |\n\n---\n\n## 六、拆镜头 \u002F 审镜头时的一致性核对清单\n\n拆完镜头、或复核一份分镜方案时，逐条打勾：\n\n- [ ] 出现在某镜里的角色 \u002F 场景 \u002F 道具 \u002F 全片风格，是否都进了这一镜的 `anchorIds`？（漏引用 = 漏锚 = 会漂）\n- [ ] 镜头 prompt 里有没有**重复描述锚的静态外貌**？（应交参考图\u002F文本锚，prompt 只写运镜+动作）\n- [ ] 同一个人是否只建了**一个**角色锚？（别名\u002F职称\u002F「他」都归并成一个，别一人两锚）\n- [ ] 同场戏内的状态（伤\u002F血\u002F衣破\u002F湿身）是否与状态表一致、只进不退？\n- [ ] 相邻\u002F跨段镜头的承接级别（L1\u002FL2\u002FL3）是否想清楚，L1 是否用尾帧做了首帧或 prompt 承接？\n- [ ] 有没有踩 §五 的硬约束（手部\u002F文字\u002F比例\u002F光位\u002F口型），并已用画面结构规避？\n\n任一未满足就回去改——一致性是拆镜头阶段一次性想清楚的事，等生成出来才发现漂移，返工成本高得多。\n",{"name":5,"license":52,"metadata":53,"description":7},"AGPL-3.0-only",{"nomi":54},{"tools":55,"library":56,"version":76,"required-providers":77,"selectable-in-workbench":78},[],{"kind":57,"group":58,"slots":61,"title":62,"source":65,"preview":71,"summary":73,"appliesTo":75},"skill",{"en":59,"zh-CN":60},"Directing","导演",[],{"en":63,"zh-CN":64},"Shot consistency","跨镜一致性",{"url":66,"author":67,"changes":68,"evidence":69,"revision":70},"https:\u002F\u002Fgithub.com\u002Faqm857886159\u002FNomi\u002Fblob\u002F7a072f12d4e35d1bf341403d942e5c0c702e6c7b\u002Fskills\u002Fdirector-consistency\u002FSKILL.md","Nomi contributors","Nomi adds library presentation metadata; the skill body is unchanged.",[66],"7a072f12d4e35d1bf341403d942e5c0c702e6c7b",{"path":72,"type":37,"provenance":30},"assets\u002Fcover.png",{"en":74,"zh-CN":7},"Preserve character, prop and location identity across shots.",[41],"1.0.0",[],true,"main","7ca679e15e9bb1bd4cb789c43d2d2e0beba92f76","skills\u002Fdirector-consistency",143,"https:\u002F\u002Fgithub.com\u002Faqm857886159\u002FNomi","https:\u002F\u002Fnomiaqm.com","https:\u002F\u002Fgithub.com\u002Faqm857886159","2026-11-14 04:35:51",{"source":8,"skillName":5,"commands":88,"prompt":98,"zipAvailable":78},[89,92,95],{"tool":90,"command":91},"npx","npx skills add aqm857886159\u002FNomi --skill director-consistency",{"tool":93,"command":94},"bunx","bunx skills add aqm857886159\u002FNomi --skill director-consistency",{"tool":96,"command":97},"pnpm","pnpm dlx skills add aqm857886159\u002FNomi --skill director-consistency","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Faqm857886159\u002FNomi\u002Fblob\u002Fmain\u002Fskills\u002Fdirector-consistency\u002FSKILL.md",[100],{"path":72,"resourceType":101,"resourceTypeDesc":102,"sizeBytes":103,"sourceHtmlUrl":104},"ASSET","资产文件",1278966,"https:\u002F\u002Fgithub.com\u002Faqm857886159\u002FNomi\u002Fblob\u002Fmain\u002Fskills\u002Fdirector-consistency\u002Fassets\u002Fcover.png",[106,129,142,153,164,174],{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":110,"licenseFileUrl":111,"sourceHtmlUrl":112,"categories":113,"keywords":115,"publishedAt":47},"01M71VD47ACM64K4Y24RVQV9QC","effect-camera-13","用具体的机位与运动描述控制镜头节奏。 用户要求焦点转换时使用。","MIT","https:\u002F\u002Fgithub.com\u002Faqm857886159\u002FNomi\u002Fblob\u002Fmain\u002Fskills\u002Feffect-camera-13\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Faqm857886159\u002FNomi\u002Fblob\u002Fmain\u002Fskills\u002Feffect-camera-13\u002FSKILL.md",[114],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[116,117,118,119,120,121,122,123,124,37,125,41,126,127,33,45,128,43,30,34],"effect","effect camera 13","camera","Video","Composition","chinese","move","labels","false","review","focus","reveal","add",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":110,"licenseFileUrl":133,"sourceHtmlUrl":134,"categories":135,"keywords":137,"publishedAt":47},"01M71VD0KJRAPYGNYNYK4WPSB9","effect-camera-12","用具体的机位与运动描述控制镜头节奏。 用户要求快动作降格时使用。","https:\u002F\u002Fgithub.com\u002Faqm857886159\u002FNomi\u002Fblob\u002Fmain\u002Fskills\u002Feffect-camera-12\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Faqm857886159\u002FNomi\u002Fblob\u002Fmain\u002Fskills\u002Feffect-camera-12\u002FSKILL.md",[136],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[116,138,118,119,120,121,122,139,123,124,37,125,33,45,128,43,30,34,140,141],"effect camera 12","time","task","github",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":110,"licenseFileUrl":146,"sourceHtmlUrl":147,"categories":148,"keywords":150,"publishedAt":47},"01M71VCX6WAKTNSAAZ3BBYSQ1Q","effect-camera-11","用具体的机位与运动描述控制镜头节奏。 用户要求慢动作升格时使用。","https:\u002F\u002Fgithub.com\u002Faqm857886159\u002FNomi\u002Fblob\u002Fmain\u002Fskills\u002Feffect-camera-11\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Faqm857886159\u002FNomi\u002Fblob\u002Fmain\u002Fskills\u002Feffect-camera-11\u002FSKILL.md",[149],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[116,151,118,119,120,121,122,123,152,124,37,125,41,33,45,128,43,30,34,140],"effect camera 11","impact",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":110,"licenseFileUrl":157,"sourceHtmlUrl":158,"categories":159,"keywords":161,"publishedAt":47},"01M71VCSATCP6GXGJK6WAKN6GS","effect-camera-10","用具体的机位与运动描述控制镜头节奏。 用户要求手持跟拍时使用。","https:\u002F\u002Fgithub.com\u002Faqm857886159\u002FNomi\u002Fblob\u002Fmain\u002Fskills\u002Feffect-camera-10\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Faqm857886159\u002FNomi\u002Fblob\u002Fmain\u002Fskills\u002Feffect-camera-10\u002FSKILL.md",[160],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[116,162,118,119,120,121,122,123,124,37,125,33,45,128,43,30,34,140,141,163],"effect camera 10","blob",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":110,"licenseFileUrl":168,"sourceHtmlUrl":169,"categories":170,"keywords":172,"publishedAt":47},"01M71VCNC1B3QWNWNKTEXT1WSX","effect-camera-09","用具体的机位与运动描述控制镜头节奏。 用户要求逆光剪影时使用。","https:\u002F\u002Fgithub.com\u002Faqm857886159\u002FNomi\u002Fblob\u002Fmain\u002Fskills\u002Feffect-camera-09\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Faqm857886159\u002FNomi\u002Fblob\u002Fmain\u002Fskills\u002Feffect-camera-09\u002FSKILL.md",[171],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[116,173,118,119,120,121,122,123,124,37,125,33,45,128,43,30,34,140,141,163],"effect camera 09",{"skillNo":175,"name":176,"nameZh":6,"description":177,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":110,"licenseFileUrl":178,"sourceHtmlUrl":179,"categories":180,"keywords":182,"publishedAt":47},"01M71VCJ22T8994KQ3BSBG5V2B","effect-camera-08","用具体的机位与运动描述控制镜头节奏。 用户要求移轴虚化时使用。","https:\u002F\u002Fgithub.com\u002Faqm857886159\u002FNomi\u002Fblob\u002Fmain\u002Fskills\u002Feffect-camera-08\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Faqm857886159\u002FNomi\u002Fblob\u002Fmain\u002Fskills\u002Feffect-camera-08\u002FSKILL.md",[181],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[116,183,118,119,120,121,122,123,124,37,125,184,33,45,128,43,30,34,140,141],"effect camera 08","tilt"]