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.
3.7 KiB
3.7 KiB
脚本生成
目标
根据歌词拆解的段落结构,为每个段落生成详细的分幕脚本。
重点
- 脚本的时间段可以对歌词段落进行拆分或合并,不需要与 lyric.md 一一对应
- 各阶段产物相互独立:修改脚本不需要回改歌词,修改分镜不需要回改脚本,以此类推
- 场景拆分后必须重新编号:若某幕时长超过 15s 需要拆分成多幕,拆分后必须将所有场景从第一幕开始重新连续编号(第一幕、第二幕、……第 N 幕),禁止使用
a/b后缀(如"第九幕b")。连续编号确保下游分镜图文件命名(scene_01.jpg、scene_02.jpg...)与数组索引严格一致 - 脚本格式必须严格遵循模板
references/script-example.md(非中文用户参考references/script-example-en.md),否则 HTML 预览解析器无法正确渲染 - 场景描述必须写具体动态:脚本的场景描述是后续视频提示词的核心输入,描述越具体、动态越丰富,生成的视频动作越自然。禁止笼统静态描述(如"旅人站在路边"),必须写清:
- 角色动作:具体的肢体动作和运动轨迹(走、跑、转身、抬手、低头等)
- 表情/情绪:面部表情变化(微笑渐收、皱眉凝视等)
- 物件交互:角色与道具/环境的互动(抚摸琴弦、推开车门、拾起信物等)
- 镜头运动:明确的镜头语言(从脚部缓缓上摇、跟随角色横移、推近面部特写等)
- 环境动态:风吹发丝、水面倒影晃动、光影变化等非静态元素
格式模板
完整格式示例见 references/script-example.md(非中文用户参考 references/script-example-en.md)。关键要点:
- 二级标题
##用于每幕场景标题(如## 第一幕:黎明启程) - 时间码行格式:
* M:SS - M:SS (Xs)- 不加粗、不标注段落类型(Verse/Chorus 等)
- 括号内为时长(秒),必须为 4~15 秒的整数
- 歌词引用以
>开头,纯音乐幕无歌词引用 - 每幕必须包含三个字段:
**场景描述:**、**视觉风格:**、**转场:** - 可选字段
**关键物件:**:列出该幕出现的重要非人物视觉元素,格式为物件名 + 简短外观描述(括号内),多个物件逗号分隔- 示例:
**关键物件:** 旧皮卡(深蓝色、锈迹斑驳、车顶行李架)、吉他(原木色民谣吉他、琴身有贴纸)
- 示例:
- 场景之间用
---分隔
文件存储
./.mv/{song_name}/{theme}/script.md # 脚本文件
格式校验
脚本写入 script.md 后,必须运行校验脚本:
python3 .opencode/skills/mv-creator/scripts/validate_script.py .mv/{song_name}/{theme}/script.md
校验规则:场景标题格式、时间码格式(含时长标签)、时长范围(4~15s 整数)、时间段连续性、必填字段完整性、与 lyric.md 交叉校验。
-
通过 → 调用 MCP 工具
preview_and_collect_feedback启动预览:- script:
.opencode/skills/mv-creator/scripts/render_preview.py - args:
[".mv/{song_name}/{theme}/script.md", "--type", "script", "--lang", "{lang}"] - feedback_path:
.mv/{song_name}/{theme}/feedback.md
预览页面以时间线卡片形式展示各幕,用户可点击场景卡片的
@按钮引用到反馈框中。 工具返回反馈内容后:LGTM→ 进入下一阶段- 其他 → 按建议修改后重新校验和预览
- script:
-
未通过 → 由 LLM 根据校验错误信息自动修正
script.md,修复后重新校验。 若连续 3 次自动修复仍未通过,通过AskUserQuestion询问用户处理方式