원클릭으로
lumina-flow-shot-split
flow.story_to_video.shot_split 的补充提示词;用于把已确认分镜文本忠实结构化为连续 shot list,并做必要的镜头边界、容量和连续性整理
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
flow.story_to_video.shot_split 的补充提示词;用于把已确认分镜文本忠实结构化为连续 shot list,并做必要的镜头边界、容量和连续性整理
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
project.bind_style 的补充提示词;用于把用户提供的文字或图文风格沉淀成项目级风格约束
task.character_extract.image_prompt 的补充提示词;用于把单个人物资产整理成可执行图片任务
asset.character_from_image 的补充提示词;用于把上传人物图绑定成稳定人物资产
asset.prop_from_image 的补充提示词;用于把上传道具图绑定成稳定道具资产
asset.scene_from_image 的补充提示词;用于把上传场景图绑定成稳定场景资产
consult.general 的补充提示词;用于通用咨询、需求澄清和下一步建议
| name | lumina-flow-shot-split |
| description | flow.story_to_video.shot_split 的补充提示词;用于把已确认分镜文本忠实结构化为连续 shot list,并做必要的镜头边界、容量和连续性整理 |
这是 story_to_video 的结构化编译阶段,不是导演创作阶段。
上游 consult.screenplay 负责故事结构、人物动机、情节铺垫、信息差和台词;consult.storyboard 负责导演级分镜、镜头语言、剪辑、声音和节奏。当前阶段只把用户已经确认的分镜文本整理成后续流程可消费的连续 shot list。
consult.storyboard 确认一份分镜文本,需要进入 story_to_video。### 镜头 NN:标题(约 X 秒))、对话块(### 对话块 NN:标题(约 X 秒))、镜头块内的 [00:00-00:05] 时间戳硬剪辑、顶部 ## 角色锚点 + ## 连续性账本 + ## 视觉参考池 三段跨镜手册、字段化栏目(叙事目标 / 场景/氛围 / 画面叙事 / 动作与调度 / 景别/角度/运镜 / 视线与空间 / 台词/lip-sync / 声音三子层 / 因果/物理 / 参考池引用 / 衔接 / 负向约束 / 剪辑承接 等)。这是主路径。
这是兼容路径,不是推荐路径。
上游 consult.storyboard 在分镜文本顶部会先放两段「跨镜手册」,只写一次,不在每个镜头块里重复。shot_split 必须先读这两段,否则角色一致性和跨镜上下文会丢:
## 角色锚点格式形如:
小美:粉色泡泡袖针织衫 / 黑色短裙 / 黑色短直发齐下颌 / 右眉骨小痣 / 银色细项链
姜夜:黑色保安制服 / 短寸 / 左耳骨钉 / 右手腕黑色细绳手链
消费规则:
角色名 和 视觉锚点字符串,存到该 shot 人物引用对象的 anchor_descriptor 字段。## 连续性账本格式形如:
时间线:当晚 22:00 → 22:15(连续 15 分钟,无跨日)
天气基线:小雨 → 中雨,风向南偏东
活跃道具:门禁卡(姜夜口袋), 监控屏(墙面右上)
光线基线:保安室冷白荧光 4000K + 玻璃外门头灯红 3200K(频闪 1.5Hz)
情绪轨迹:小美 试探→警觉→恐惧;姜夜 慵懒→压制→冷漠
道具状态机:门禁卡 完整(shot1) → 被姜夜手指摩挲(shot4) → 拍在桌面(shot7) → 滑落地面(shot12)
光线连续矩阵:shot1-6 4000K 冷白 + 红 3200K 频闪;shot7 加 monitor 6500K 蓝;shot8-12 红频闪频率 1.5Hz→3Hz
声音桥接计划:shot3→4 J-cut 门禁咔哒提前 0.4s;shot7→8 L-cut 监控蜂鸣延伸 1.2s;shot11→12 sound_bridge 雨声渐强
消费规则:
continuity_ledger(不是单 shot 字段),供下游做跨镜核对。道具状态机 / 光线连续矩阵 / 声音桥接计划 三段是新增字段;分别存到 continuity_ledger.prop_state_machine / continuity_ledger.lighting_matrix / continuity_ledger.sound_bridge_plan,每段保留原文。consult.storyboard 显式改剧情时账本才会变。## 视觉参考池(新增 manifest 段,必须解析)格式形如:
图像槽 (≤9):
@char_main_xiaomei 小美三视图
@char_main_jiangye 姜夜三视图
@scene_baoanshi 保安室主图
@lighting_baoanshi 命名光场参考
@prop_keycard 门禁卡特写
视频槽 (≤3):
@motion_pushin 标准 push-in 节奏 2s
音频槽 (≤3):
@ambient_rain_indoor 室内雨声 5s loop
@bgm_tension 压力 BGM 8s
消费规则:
@slot_name 行,提取 slot(含 @ 前缀)、type(image / video / audio,按所在子段)、description,存到全局元数据 reference_pack[]。image ≤ 9 / video ≤ 3 / audio ≤ 3;超出 flag「视觉参考池超 Seedance Universal Reference 上限」。5s loop / 8s);超出 flag。slot 命名:@<purpose>_<name>,purpose 必须是 char_main / char_outfit / char_face / scene / lighting / prop / style_palette / motion / transition / ambient / bgm / voice 之一;非枚举值 flag「参考池槽位 purpose 非标准」但仍存入。@slot 必须能在全局 reference_pack[] 里找到;找不到 flag「shot N 引用未声明的参考池槽位 @xxx」。consult.storyboard 顶部补 ## 视觉参考池」。consult.storyboard 顶部的 ## 角色锚点 是多行格式(每行一个角色,字段用 / 分隔);姊妹 skill consult.storyboard-script-to-shot-prompts 用的是单行 角色锚点:A=...;B=... 格式。本 skill 只处理多行格式。
如果输入顶部命中单行 角色锚点:A=...;B=... 或单行 参考池:@xxx=...;@xxx=... 格式,立即提示「输入是紧凑格式 manifest,应使用姊妹 skill lumina-flow-shot-split-scene-as-shot 处理」并停止结构化,不要硬解析。
上游 consult.storyboard 把镜头块包在 视频段 标题行下面 —— 1 视频段 = 1 次 Seedance 调用,
内部多个镜头通过 [00:00-00:05] 时间戳组合成一次连续生成。视频段是镜头 (shot) 和全片之间的
聚合层,shot_split 必须解析并把这个分组结构落到全局元数据。
## 视频段 1/8: 小美夜访小区门口|总时长约 14.5s|结尾承接: 姜夜坐在值班桌后,嘴角上扬,右手停在门禁按钮旁
### 镜头 01: ...
### 镜头 02: ...
...
## 视频段 2/8: ...
字段说明(来自上游 §视频段聚合规则):
视频段 X/N:X 是当前编号,N 是全片视频段总数总时长约 X.Xs:该段所有镜头时长之和(默认 12-15s,或用户显式指定值)结尾承接:最后一帧的人物位置/视线/手部姿态/声音残响等每个视频段解析为全局元数据 video_segments[] 一项:
{
"video_segments": [
{
"segment_index": 1,
"segment_total": 8,
"anchor": "小美夜访小区门口",
"declared_duration": 14.5,
"actual_duration": 14.5,
"ending_handoff": "姜夜坐在值班桌后,嘴角上扬,右手停在门禁按钮旁",
"shot_ids": ["shot01", "shot02", "shot03", "shot04", "shot05", "shot06", "shot07"]
}
]
}
每个 shot 顶层加 video_segment_id 字段,指向所属视频段编号(1 / 2 / ...),方便下游 router
按段批生成 Seedance 调用。
actual_duration 应在 12-15s 之间;偏离时 flag
「视频段 X 时长 Y.Ys 偏离默认 12-15s,确认是否用户显式指定了其他时长」,仍按原文落输出,不擅自合并/拆分。actual_duration > 15s 时 flag「视频段 X 时长 Y.Ys 超过
Seedance 一次生成硬上限 15s,必须回 consult.storyboard 拆段」,不擅自截断。视频段 1/8 但实际只有 7 段时 flag。declared_duration vs actual_duration:声明时长与镜头之和不一致时 flag,以 actual 为准。ending_handoff 必填(除全片最后一段):缺失时 flag「视频段 X 缺结尾承接,下游
image_to_video_first_frame 无法拿到首帧上下文」。如果上游分镜没有视频段标题行(旧版本输出 / 用户手写未按新规范),按以下兜底:
## 视频段 X/N: 标题行包裹镜头块」## 角色锚点 + ## 连续性账本 + ## 视觉参考池),按上面的消费规则建立全局上下文。如果顶部出现的是单行紧凑格式 manifest,提示用户切姊妹 skill。## 视频段 X/N: ...|总时长约 X.Xs|结尾承接: ...),按 §视频段聚合消费规则建立 video_segments[] 全局元数据,并把每个镜头归到其所属 video_segment_id。如果输入缺视频段标题,按 §视频段缺失时(兼容旧分镜)兜底 + flag。characterRef,锚点字符串进 anchor_descriptor,参考池槽位进 reference_refs[],三者并存。seedance_call_mode 顶层字段从该 shot 的衔接块 Seedance 输入模式 字段读出;缺失时默认 text_to_video 并 flag「shot N 缺 Seedance 输入模式声明,回退默认 text_to_video,跨镜一致性可能下降」。上游 consult.storyboard 在写对白和需要一次成片的多镜段时,会用两种新结构。shot_split 必须识别并按规则展开:
### 对话块 NN:标题(约 X 秒)(声明式正反打)对话块代表一段让 Seedance 2.0 自动正反打覆盖的对白段,内部典型有:双方与轴线 / 关系站位 / 覆盖期望 / 情绪轨迹 / 台词序列 / 反应锚点 / 负向约束。
双方与轴线 / 关系站位 / 情绪轨迹 / 负向约束 复制到每个 sub-shot 的对应字段;不要让这些信息只挂在第一个 sub-shot 上。dialogue_block_origin: 对话块NN 标记,下游 presenter 可以选择”合并回一次 Seedance 多镜调用 + [00:00-00:04] 时间戳”或”拆 N 次单镜调用”,但 shot_split 自己不做这个决定。A 在画面左、B 在画面右 这类轴线声明必须落到每个 sub-shot 的视线/空间字段,不能让模型在中间镜头悄悄越轴。[00:00-00:05] 时间戳硬剪辑当 ### 镜头 NN 的”动作与调度”字段里出现一组 [00:00-00:05] 时间戳块(Seedance 一次成片多镜的语法)时:
duration = 该时间戳块的差值,描述 = 该时间戳块的原文。multi_shot_origin: 镜头NN 标记,作用同对话块标记。叙事目标 / 场景/氛围 / 暗线/铺垫 / 视线与空间 / 负向约束 / 因果/物理 复制到每个 sub-shot;台词、SFX、反应锚点按时间戳归属到具体 sub-shot。先推近再环绕 这种描述应在质量说明里 flag「sub-shot 单镜两个主运镜,建议回分镜咨询拆开」,但仍按原文落到结构化输出。如果用户用的是 ### 镜头 NN(不是对话块),且没有 [00:00-00:05] 时间戳,就按现行守恒模式逐镜转 shot,不要再拆。手控正反打和声明式对话块在同一份分镜里可以混用,shot_split 按每个块的实际语法分别处理。
上游 consult.storyboard 在每个镜头里写了"衔接"块,这是 10+ shot 长叙事跨镜不漂的最高杠杆字段。shot_split 必须解析并原样落到结构化输出。
衔接:
出帧状态:(上一镜末帧人物位置/视线/手部姿态/动作完成度/声音残响)
入帧状态:(本镜首帧上述要素)
衔接类型:match_on_action / eyeline_match / sound_bridge / j_cut / l_cut / graphic_match / concept_cut / hard_cut
重复 token:@char_main_xxx + @scene_xxx + ...(共享角色/空间/声音 token,至少 1 个)
Seedance 输入模式:text_to_video / image_to_video_first_frame / first_last_frame / ref_pack / nine_panel_grid_i2v / video_extend
首帧参考:@last_frame_of_shotNN / @char_main_xxx / @grid_main / ...(非 text_to_video 模式必填)
每个 shot 的 handoff 字段:
{
"handoff": {
"previous_shot_outframe": "shot07 末帧——小美推门走进保安室,身体前倾...",
"current_shot_inframe": "门把仍被小美左手握住,门已开 80°...",
"transition_type": "match_on_action",
"repeated_tokens": ["@char_main_xiaomei", "@char_main_jiangye", "@scene_baoanshi", "@ambient_rain_indoor"],
"seedance_input_mode": "image_to_video_first_frame",
"first_frame_ref": "@last_frame_of_shot07"
}
}
每个 shot 顶层加 seedance_call_mode 字段(从 handoff.seedance_input_mode 提升上来,方便下游 router 直接读):
{
"seedance_call_mode": "image_to_video_first_frame"
}
transition_type=hard_cut, seedance_input_mode=text_to_video),不擅自补写 5W 内容。transition_type 必须是 8 个枚举值之一:hard_cut / match_on_action / eyeline_match / sound_bridge / j_cut / l_cut / graphic_match / concept_cut;非枚举值 flag「衔接类型 X 非标准」并回退到 hard_cut。seedance_input_mode 必须是 6 个枚举值之一:text_to_video / image_to_video_first_frame / first_last_frame / ref_pack / nine_panel_grid_i2v / video_extend;非枚举值 flag 并回退 text_to_video。seedance_input_mode != text_to_video 时 first_frame_ref 必填;缺失 flag「shot N 模式 X 缺首帧参考槽位 ID」。repeated_tokens 至少含 1 个 token(跨场景硬切允许丢空间但角色 token 必留)。空数组 flag「shot N 与 shot N-1 共享 0 token,可能跳剧」。transition_type=concept_cut 全片计数:超过 2 处 flag「全片 concept_cut N 处,叙事可能散架」。first_frame_ref 引用的槽位 必须能在全局 reference_pack[] 或 @last_frame_of_shotNN(指向已存在的 shot 编号)里解析;解析不到 flag「shot N 首帧参考 X 解析失败」。下游 presenter 按 seedance_call_mode 选择 API 调用形式:
| 模式 | API 调用 | 必需输入 | 用途 |
|---|---|---|---|
text_to_video | T2V | prompt only | 第 1 镜 / 风格化空镜 / 接受较弱一致性 |
image_to_video_first_frame | I2V (first frame) | 1 张图 + prompt | 同场景同主体 + match_on_action(首帧用上一镜末帧) |
first_last_frame | I2V (first + last frame) | 2 张图 + prompt | 明确 A→B 状态过渡(化身 / reveal / 出态→入态过渡) |
ref_pack | T2V/I2V + reference pack | prompt + 1-9 image + 1-3 video + 1-3 audio | 多角色 / 多场景 / 跨场景默认 hard cut;身份锚靠 @char_main_* turnaround sheet |
nine_panel_grid_i2v | I2V (grid as input) | 1 张 9 宫格 storyboard 图 + motion prompt | 段内分镜压缩:把 9 个紧凑节拍压成 1 段 15s 连续电影镜头(替代 6-8 次小调用)。不是跨段身份锚 |
video_extend | Video extend | 上一段 video + prompt | 同剧情同场景延长 >15s(模型分析整段轨迹,比 first_last_frame 更稳) |
关键区分:
nine_panel_grid_i2v 的 first_frame_ref 应该是 @grid_<段名> 这类段级 grid 槽位,不是 @char_main_* turnaround sheet。前者是单段分镜压缩,后者是跨段身份锚。image_to_video_first_frame 与 video_extend 在同场景续接时优先后者(轨迹分析更全面);只有"明确 keyframe → keyframe"过渡才用 first_last_frame。shot_split 不替下游做这个调用,只把 seedance_call_mode 和 handoff 透传。
<起点锚点> → <X+/X-/Y+/Y-/Z+/Z-> → <终点锚点> 时,原样存到 shot 的 motion_vector 字段(string,不要改成自由描述)。这个矢量给下游 HDVP 锁深度墙用,丢了高风险位移的方向就没了。lighting_geometry 字段(string)。改写或删掉会让下游灯光锁不住。上游 consult.storyboard 用以下格式写对白:
角色(情绪/语气)”短台词”
引号可以是 ”...” / 「...」 / 『...』,等价处理。解析规则:
角色名 → dialogue.speakerRef情绪/语气 → dialogue.tone(新字段,原样保留,下游 Seedance 用作 lip-sync 增强信号)dialogue.text,保留引号原样(Seedance 把引号识别为 lip-sync 触发器,去掉就没 lip-sync 了)dialogue.kind 默认 dialogue;遇到 VO / 旁白 / 内心 OS / 画外、画外音 / OS 等关键词才切到 voiceover / inner_monologue / offscreen,且这些非 dialogue 类型引号可省。voiceover、offscreen、inner_monologue 都混成普通对白;如果原文写”心里想””内心 OS””画外传来””旁白说”,必须保留这种声源差异。speakerRef 只在能稳定对应人物时填写;旁白没有明确人物声源时可以留空或使用叙述者语义,不要伪造成某个角色开口。source 与改写约束source 反映来源:原文逐字保留用 verbatim,为可说话容量轻微改写用 adapted,为连接镜头新增的短句用 new_bridge。adapted 改写,只能 verbatim 或 new_bridge,且 new_bridge 必须满足 lip-sync 三件套(引号 + 情绪前缀 + ≤12 个汉字 / 8 个英文单词)。需要改写时改成在质量说明里 flag「台词 X 容量超载,建议回分镜咨询缩短」,而不是默改。source=new_bridge 的输出必须在质量说明里强制 flag「shot N 新增桥句台词「...」(new_bridge),未经用户确认;如需保留请在 consult.storyboard 显式确认」。new_bridge 是低频路径,不能默挂;上游 consult.storyboard 已经写过的台词永远走 verbatim。voiceover / inner_monologue / offscreen 类型可以 adapted,但不能吞掉核心修辞。上游 consult.storyboard 写声音时分三个子层:
声音:
SFX:(动作触发音、物件相关音、时间戳锚点)
环境声:(场景持续 ambient)
沉默/余韵:(沉默段长度与位置)
shot_split 必须把这三个子层分别映射到结构化字段:
SFX: → audio.sfx[](数组,可挂时间戳锚点)环境声: → audio.ambient(字符串,描述场景持续音)沉默/余韵: → audio.silence[](数组,每项含位置 + 时长)禁止把三个子层合并成单字段,下游 Seedance 原生音频路径要按通道分别消费。如果原文只笼统写了”声音”没分子层,按内容判断归类,而不是塞进单字段。
## 角色锚点 manifest 与项目资产并存:项目里有该角色稳定资产时,资产名进 characterRef,锚点字符串进 anchor_descriptor,两者一起带给下游;项目里没有时,用 anchor_descriptor 作为临时占位进入 characterRef,让下游 Seedance 仍能拿到一致性 token,同时在质量说明里 flag「人物 X 缺项目资产,使用临时锚点占位」。上游 consult.storyboard 写到镜头里的 负向约束 / 因果/物理 / 情绪强度 / 暗线/铺垫 这几个字段,旧 shot_split 没有对应处理。新规则:
| 来源字段 | 落到结构化输出的字段 | 必须性 |
|---|---|---|
负向约束 | negative_constraints(string 数组,按 / 或逗号拆条,全角 | 与半角 | 都识别) | 必须保留,下游 Seedance prompt 会拼到 negative slot |
因果/物理 | meta.causal_physics(string,原样) | 高物理交互镜头必须保留,下游 Seedance 用作 WHY 信号 |
情绪强度 | meta.emotion_intensity(string,原样) | 保留即可,无下游强消费 |
暗线/铺垫 | meta.subtext(string,原样) | 保留即可,给后续修订阶段参考 |
视线与空间 里的 SDV 矢量 | motion_vector(string,原样) | 高风险位移场必须保留 |
场景/氛围 里的明暗交界线 + 冷暖色温分布 | lighting_geometry(string,原样) | 命名光场必须保留 |
参考池引用 | reference_refs[](数组,每项 {slot, type, purpose}) | 项目里有稳定资产的角色/场景必须保留,下游 Seedance 路由到 ref 槽 |
衔接 整块 | handoff(object,详见 §跨 shot 衔接字段) | 第二镜起必须保留,缺失 flag 不补 |
衔接 里 Seedance 输入模式 | seedance_call_mode(string,顶层字段,方便下游 router 直接读) | 必须保留 |
禁止改写、合并、压缩这些字段。如果原文这些字段为空,结构化输出对应字段也留空,不要硬编出值。
fast 关键词 flag 作用域(限定)shot_split 检查 fast 关键词时只在以下两个字段范围里 flag:
景别/角度/运镜 字段全文动作与调度 字段里描述运镜的部分(相机 fast push-in、fast tracking shot 等)不在以下范围 flag(这些是合法的剧情/生理描述,不影响 Seedance 运镜):
他比上次跑得更快、心跳加快)"快进来" 这种 lip-sync 台词)fast-flowing water 描述水流物理属性)flag 时给具体出现位置,不要全文级 flag。
shot_split 不改写原分镜句序,但要在质量说明里 flag 触发 Seedance 2.0 "人物闪现 / 拍间融合" 高发反模式的写法。检查 画面叙事 / 动作与调度 字段的首句:
shot_split 不擅自改写这些字段,按原文落到 description;只在质量说明里 flag,让用户决定回 consult.storyboard 修。
画面叙事 / 动作与调度 / 景别/角度/运镜 字段里出现 85mm / f/1.4 / 35mm 焦段 / shallow DOF / focal plane / 浅景深 / 焦距 / 光圈 / 景深 等技术 jargon 时 flag「shot N 出现焦距 jargon,Seedance 不响应甚至 degrade,建议改 广角空间感 / 自然视角 / 人像压缩感 / 微距质感 + 画面占比」。原文落到 description 不改写。
adapted;source=new_bridge 已强 flag。角色锚点 的所有角色都被某个 shot 引用过;连续性账本 已存到 continuity_ledger 全局元数据(含 prop_state_machine / lighting_matrix / sound_bridge_plan 三新字段),且没有 shot 与账本冲突;视觉参考池 已存到 reference_pack[] 全局元数据,槽位上限 9 image / 3 video / 3 audio 已校验。## 视频段 X/N: ... 标题行已解析到 video_segments[];每个 shot 顶层带 video_segment_id;每段 actual_duration ∈ [12, 15](默认)或用户显式指定值;任何段 > 15s 已 flag;段编号连续递增、与 N 一致;非全片最后一段都有 ending_handoff。缺视频段聚合时已按兜底 flag 并保留单镜级 handoff 不擅自补段。角色锚点:A=...;B=... / 参考池:@xxx=...),已提示切姊妹 skill 而不是硬解析。dialogue_block_origin / multi_shot_origin 标记;时间戳总长 ≤ 15s。handoff 块;transition_type / seedance_input_mode 都是合法枚举值;repeated_tokens 至少 1 个;非 text_to_video 模式的 first_frame_ref 已填且能解析;concept_cut 全片 ≤ 2 处;seedance_call_mode 顶层字段已从 handoff 提升。negative_constraints / motion_vector / lighting_geometry / meta.causal_physics / meta.emotion_intensity / meta.subtext / reference_refs[] / handoff / seedance_call_mode 全部按原文落到结构化输出,没改写、没合并、没压缩。fast flag 作用域已限定在 景别/角度/运镜 字段和 动作与调度 字段的运镜描述部分;剧情/生理/台词里的 fast 用法没有误 flag。audio.sfx[] / audio.ambient / audio.silence[],没合并成单字段。## 视频段 X/N: 标题行),按 §视频段缺失时(兼容旧分镜)兜底:flag「输入缺视频段聚合,跨段一致性回退到单镜级 handoff」+ 不擅自分组 + 建议「回 consult.storyboard 顶部按 §视频段聚合规则补 ## 视频段 X/N: 标题包裹镜头块」。视频段时长偏离默认 12-15s 且用户没显式指定其他时长时 flag 但仍按原文落输出,不擅自合并/拆分。角色锚点:A=...;B=... 或单行 参考池:@xxx=...;@xxx=... 紧凑格式 manifest 时,立即停止结构化,提示「输入是紧凑格式 manifest,应使用姊妹 skill lumina-flow-shot-split-scene-as-shot 处理」。hard_cut + text_to_video)落结构化输出 + 在质量说明里 flag,让用户回 consult.storyboard 决定。@char_main_* + @scene_* 两个最低槽位时,按 Tier 1 现行守恒模式继续,flag「10+ shot 长叙事缺 Tier 3 参考池基线,跨镜一致性预期低于 60%,强烈建议回 consult.storyboard 补 9-panel grid 计划与参考池槽位」。