Popiai-skill仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

5.9 KiB

分镜规划

目标

根据脚本为每个场景规划分镜,引用已生成的人设图、背景图和关键物件图作为视频生成的参考素材,不再单独生成分镜图。

重点

  • 分镜不再独立生成图片,而是为每幕映射已有的参考图(角色 selected.jpg、背景 selected.jpg、物件 selected.jpg
  • 每幕需要编写视频生成提示词,描述画面动态和镜头运动
  • 分镜文档是视频生成阶段的直接输入

流程

1. 解析脚本与关联素材

读取 script.md 提取每幕信息(场景名称、时间码、场景描述、歌词、视觉风格、关键物件)。 结合 story_concept.md 中的核心人物描述和各幕场景描述,为每幕标注:

  • 出场角色:场景中出现的角色名 → 对应 characters/{character_name}/selected.jpg
  • 场景背景:该幕的场景环境 → 对应 backgrounds/{bg_name}/selected.jpg
  • 关键物件:该幕出现的关键物件 → 对应 props/{item_name}/selected.jpg

判断规则:

  • 场景描述中明确提及角色名或角色特征 → 标注该角色
  • 场景描述为纯空镜/风景/物件特写 → 出场角色标注为 (无)
  • 不确定时倾向于标注角色(宁多勿漏,用户可在预览时修正)

2. 生成分镜文档

将每幕信息写入 storyboard.md,为每幕生成:

  • 出场角色:该幕出现的角色目录名(即 characters/ 下的子目录名,不是 design.md 中的 H1 显示名)
  • 场景背景:该幕对应的背景目录名(即 backgrounds/ 下的子目录名)
  • 关键物件:该幕出现的关键物件目录名(即 props/ 下的子目录名)
  • 场景描述:中文画面描述(从 script.md 同步)
  • 视频提示词:英文 prompt,描述画面动态、镜头运动、角色动作,引用参考图(如 image 1 as background, image 2 as character
  • 参考图列表:背景 selected.jpg + 角色 selected.jpg(如有)+ 物件 selected.jpg(如有)

3. 生成分镜图

为每幕生成分镜合成图,让用户在视频生成前预览实际画面构图。

生成方式:使用 all_in_one_batch_image_generation(model_name: all_in_one_pro)或 nano_banana_batch_image_generation_v2(model_name: nano_banana_2)批量生成,每幕 1 张。

参考图传入:通过 image_paths 传入背景 selected.jpg + 角色 selected.jpg(如有)+ 关键物件 selected.jpg(如有),并在提示词中用 image 1 as background, image 2 as character 等引用。

提示词:基于分镜文档的 视频提示词: 字段,但去除镜头运动描述(pan、dolly、tracking 等),仅保留画面构图、角色动作、光线氛围和风格描述。这是静态画面提示词,不同于视频提示词。

宽高比:统一 16:9

存储:保存到 storyboard/ 目录,命名 scene_01.jpgscene_02.jpg 等(序号与幕序一致)。

写入分镜文档:在 storyboard.md 每幕末尾追加 候选图:选定图: 字段,记录生成的候选图路径。首次生成后默认选定第一张。

4. 用户审阅

调用 MCP 工具 preview_and_collect_feedback 启动预览:

  • script: .opencode/skills/mv-creator/scripts/render_preview.py
  • args: [".mv/{song_name}/{theme}", "--type", "storyboard", "--lang", "{lang}"]
  • feedback_path: .mv/{song_name}/{theme}/feedback.md

预览页面按时间线展示各幕分镜卡片,显示每幕的参考图缩略图和视频提示词。 工具返回反馈内容后:

  • LGTM → 进入视频生成阶段
  • 其他 → 按建议修改分镜映射或视频提示词,更新 storyboard.md,重新校验和预览

输出格式

严格按用户语言选择对应的 example 和字段名(参见 SKILL.md「输出控制」和「Markdown 字段名中英对照表」):

  • 中文用户:参考 references/storyboard-example.md
  • 非中文用户:参考 references/storyboard-example-en.md

关键要点:

  • 二级标题 ## 用于每幕场景标题,与 script.md 的幕名保持一致
  • 时间码行格式:* M:SS - M:SS (Xs),与 script.md 一致
  • 歌词引用以 > 开头(从 script.md 同步)
  • 每幕必须包含以下字段(中文/English):
    • 出场角色/Characters — 角色名(逗号分隔),无角色写 (无)/(None)
    • 场景背景/Scene Background — 对应的背景名
    • 关键物件/Key Props — 物件名(逗号分隔),无物件可省略
    • 场景描述/Scene Description — 画面描述(用户语言),缩进 2 空格
    • 视频提示词/Video Prompt — 英文 prompt,描述动态和镜头,引用参考图编号,缩进 2 空格
    • 参考图/Reference — 列表形式,每行注明用途,路径相对 theme 目录
    • 候选图/Candidates — 列表形式,每行记录候选图文件名和简要说明
    • 选定图/Selected — 用户选定的最终分镜图文件名
  • 场景之间用 --- 分隔

格式校验

storyboard.md 写入后,必须运行校验脚本:

python3 .opencode/skills/mv-creator/scripts/validate_storyboard.py .mv/{song_name}/{theme}/storyboard.md

校验规则:场景标题格式、时间码格式、必填字段完整性、出场角色目录及 selected.jpg 存在性、场景背景目录及 selected.jpg 存在性、关键物件目录及 selected.jpg 存在性、与 script.md 交叉校验(幕数和时间码一致)。

  • 通过 → 启动预览供用户审阅
  • 未通过 → 由 LLM 根据校验错误信息自动修正,修复后重新校验

文件存储

./.mv/{song_name}/{theme}/storyboard.md                    # 分镜规划文档
./.mv/{song_name}/{theme}/storyboard/                      # 分镜图目录
    ├── scene_01.jpg                                        # 各幕分镜图
    ├── scene_02.jpg
    └── ...