feat(core): 故事板改为「一场=分镜表」+ 确认故事板按钮气泡引导
- ai/services.py: 故事板单帧提示词改为按场拆多分镜、纵向排成竖屏分镜表(不同景别/运镜),并锁人物脸/商品一致性 - pipeline.tsx: 底栏统一「确认故事板」,未生成时点击弹气泡引导先生成(不再假装跳过) - pipeline-page.css: 配套 sb-confirm-pop 气泡样式 - 附测试截图与流程文档/perf 产物 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -804,15 +804,29 @@ def _scene_context(project) -> str:
|
||||
|
||||
|
||||
def build_storyboard_frame_prompt(project, version, segment) -> str:
|
||||
"""单帧故事板提示词:风格锚点 + 本镜画面(回退旁白)+ 版本统一指令。"""
|
||||
"""单场故事板提示词:把这一「场」拆成多个分镜,排成一张竖屏【分镜表】。
|
||||
用户要的结构是「一场 = 一个故事板,内含多个分镜图(不同景别/运镜)」,而非一场一张大图。"""
|
||||
visual = (segment.visual_prompt or segment.narration or "").strip()
|
||||
dur = segment.duration_seconds or 15
|
||||
sub = max(2, min(4, round(dur / 5))) # 按本场时长估分镜数:15s≈3 格
|
||||
lines = [
|
||||
_scene_context(project),
|
||||
f"第 {segment.sort_order + 1} 镜画面:{visual}" if visual else f"第 {segment.sort_order + 1} 镜",
|
||||
f"生成一张竖屏【分镜故事板表】:把第 {segment.sort_order + 1} 场(约 {dur} 秒)拆成 {sub} 个分镜,"
|
||||
f"从上到下纵向排成 {sub} 个等宽分格,格与格之间用细线或留白分隔,每格角落标注分镜序号、景别与时长。",
|
||||
]
|
||||
if visual:
|
||||
lines.append(f"本场画面:{visual}")
|
||||
if segment.narration:
|
||||
lines.append(f"台词/口播:{segment.narration.strip()}")
|
||||
if segment.product_exposure:
|
||||
lines.append(f"商品露出方式:{segment.product_exposure.strip()}")
|
||||
lines.append(
|
||||
"各分镜要体现不同景别与运镜(如 中景固定 → 特写微距 → 全景跟拍),镜头连贯,"
|
||||
"同一人物保持同一张脸、同一商品保持外观与配色一致。"
|
||||
)
|
||||
if version.prompt:
|
||||
lines.append(version.prompt.strip())
|
||||
lines.append("电商竖屏分镜图,构图清晰,可直接指导视频生成")
|
||||
lines.append("真实清新、生活化的电商带货分镜表,竖屏 9:16,排版工整,画面清晰,可直接指导视频生成。")
|
||||
return "\n".join(line for line in lines if line)
|
||||
|
||||
|
||||
@@ -906,7 +920,8 @@ def build_storyboard_frame_prompt_refs(project, version, segment, refs: list[dic
|
||||
)
|
||||
return (
|
||||
f"{base}\n参考图对应:{ref_lines}。"
|
||||
"请严格保持各参考图中角色的同一张脸、同一商品的外观与配色,按本镜画面重新构图合成为一张电商竖屏分镜图。"
|
||||
"请严格保持各参考图中角色的同一张脸、同一商品的外观与配色,按本场各分镜画面重新构图,"
|
||||
"合成为一张包含多个分镜格的竖屏分镜表(每格一个分镜画面)。"
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user