3D 漫剧半解说短剧(引导式全流程版)

SkillMedia

Organizes stories, scripts, or reference material into a guided 3D comic-style half-narrated short drama, planning narration and dialogue, generating anchored shots, and delivering a dialogue video plus a standalone narration audio track.

Available today. Use it from your connected AI after setup.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Then ask your AI: use the 3D 漫剧半解说短剧(引导式全流程版) skill

What this skill tells your AI

The instructions your AI receives, as published by qxryz/workflowgenerator in skills/library/half-narrated-3d-short-drama/SKILL.md and read by ahel’s review.

当用户想把一句故事、粗略剧本、参考图或已有素材推进成一集可成片的 3D 漫剧半解说短剧 时使用这个 Skill。旁白负责背景、时间跳转、内心想法和不能直说的信息;对白负责冲突、揭示、反转和情绪爆点。

画面风格已锁:3D 渲染 + 漫剧 webtoon 分镜语言。本 Skill 只支持这一种视觉轨道。不是 2D 描边、不是 Pixar/Disney 硬 3D、不是写实 CG、不是真人实拍。

旁白音色 Top-2:从「抖音解说男声」和「抖音解说女生」两个抖音解说风格音色中按 Q2 题材自动推荐一个,整集保持一致。

全流程引导式:每个不可逆的决策点都用 question 选项卡问用户,并给出合理默认值,用户只需确认或挑选,不需要从零写 brief。

默认视频生成:使用 MiniMax-H3;默认按约 10 秒镜头规划,仅在剧情需要快切时使用更短镜头。用户明确选择其他模型时先检查能力,兼容后遵循选择;生成失败先按原因修复并重试一次,仍失败就切换其他兼容模型,不反复死磕同一模型。

资产轻量化:每主要角色 1 张主卡 + 1 张三视图(正/侧/背)(3D 角色要旋转运镜,所以多角度不可省),每主要场景 1 张主卡 + 1 张辅卡(主卡定调,辅卡支撑运镜),至多 1 张道具卡。

用户语言跟随:所有面向用户的说明、question 选项、进度提示、总结和最终回复都要跟随用户当前语言;用户原文保持逐字不改。

三大交付硬关卡(任何一项不通过都不交付):

  1. 剧情不删减 [HARD GATE]:原剧本每个剧情点都要保留,不许压缩/改写以适应时长
  2. 画布门禁 [HARD GATE]:最终规格 + 核心资产 + 视频生成前产物都必须在画布上
  3. 用户语言跟随 (ULF) [HARD GATE]:所有面向用户的输出跟随用户当前语言;用户原文(角色名/场景名/旁白/对白)逐字保留

ULF 完整规范见 references/user-language-rules.md(v2.0.3 新增)——12 个 user-facing 场景 + 5 个不翻译边界 + 8 项 QC 硬关卡。本文件每个 STEP 末尾都会用 [ULF] 标记提醒执行。

不要把它用于真人实拍、纯剪辑、纯 2D 描边,或长篇系列统筹。


STEP 0:交互式起手——选项卡开局

目标:在第一轮里把 5 个"返工成本最高"的决定一次性锁死,让后面的流水线不再反复回头问用户。

⚠️ 必问口播:这一步必须调一次 question(多步版本),5 个问题全部要问,每个都给 ★ 默认值。绝对不能跳过问题 5(旁白音色)——它和视觉风格一样是整集级别的硬锁。

调一次多问题 question(in-app 工具支持一次多步),按顺序问下面 5 个问题。所有问题、选项和说明都要跟随用户当前语言来写。每个问题都给出推荐默认。用户始终可以选 "Other" 或在备注里写自定义方向。

问题 1(必问)— 起始路径

  • 从零开始(推荐):我只有一句故事想法
  • 半成品素材:我有剧本片段、人物小传或参考图
  • 完整素材:我有成型的角色设定、场景图和完整剧本

问题 2(必问)— 题材轨道

Optionlabel适合平台推荐旁白(自动推到 Q5)
★ 1都市悬疑抖音 / 红果抖音解说男声
2古风玄幻红果 / 番茄抖音解说男声(可切女声)
3都市情感抖音 / 红果抖音解说女生
4校园青春抖音抖音解说女生
5逆袭成长抖音 / 红果抖音解说男声
6末世求生红果抖音解说男声
7异世界冒险番茄 / ReelShort抖音解说男声
8自定义——1–2 句话写清—抖音解说男声(默认)

经验法则:男频题材(悬疑/权谋/战斗/惊悚/末世)→ 男声;女频题材(情感/校园/治愈)→ 女声;古风/通用 → 默认男声,用户可切女声。

问题 3(必问)— 格式锁定

  • 画幅:9:16 竖屏(默认,适配抖音/红果/ReelShort)/ 16:9 横屏 / 1:1
  • 时长:30s 钩子版 / 60s 短版 / 90s 标准版(3D 漫剧单镜更长,镜数比 2D 少)/ 3min 完整版
  • 字幕方式:硬烧字幕 / 软字幕 / 不带字幕
  • 发布目标:抖音 / 红果 / ReelShort / YouTube Shorts / TikTok / 其他

问题 4(必问)— 视觉风格确认(不是自由选择——风格已锁)

视觉风格锁死为"3D 渲染 + 漫剧 webtoon 分镜语言",这里只是让用户在同一个 3D 漫剧家族里挑子模式:

  • 国漫 3D 渲染流(默认):3D 角色 + 3D 场景 + 漫剧分镜感 + 干净描边(在 3D 渲出来后再叠一层轻描边)+ 强对比光影。最贴近《灵笼》《眷思量》《伍六七之玄武国篇》这类 3D 国漫短剧。
  • 皮克斯 Disney 流:Q 版比例(头身比偏大)+ 圆润质感 + 大眼 + 偏柔光影 + 漫剧分镜感。
  • 半厚涂 3D 写实流:3D 渲染但带手绘厚涂感(PBR 材质但保留笔触感)+ 中等对比光影 + 偏写实人设 + 漫剧分镜感。

上述三种之外的视觉(纯 2D 赛璐珞、纯 Pixar 卡通无漫剧感、纯写实 CG、纯真人实拍、油画、水墨、纯黑白线稿)请用户换其他 skill。

问题 5(必问,⚠️ 不能跳过)— 旁白音色(Top-2 抖音解说风格)

前两个选项永远是「抖音解说男声」和「抖音解说女生」,★ 默认项按 Q2 题材自动推荐。

#用户看到的标签voice_id风格
★ 1抖音解说男声the locked catalog narrator voice沉稳、清晰、解说感强;最像抖音热门剧情号男旁白
★ 2抖音解说女生the selected catalog narrator voice偏新闻播报的女声,最贴"女解说"——清晰、稳重
3温润男声a selected catalog voice偏温和,克制;适合古风/虐恋
4沉稳高管a selected catalog voice偏成熟、权威;适合权谋/商战/悬疑
5抖音青年解说a selected catalog voice真诚青年,更口语化
6青年大学生a selected catalog voice偏年轻,校园感
7自定义 / 试听留空 / 备注让用户从完整音色表里试听后选

按 Q2 题材自动推荐 ★ 默认:

Q2 题材问题 5 ★ 默认voice_id
都市悬疑抖音解说男声the locked catalog narrator voice
古风玄幻抖音解说男声the locked catalog narrator voice
都市情感抖音解说女生the selected catalog narrator voice
校园青春抖音解说女生the selected catalog narrator voice
逆袭成长抖音解说男声the locked catalog narrator voice
末世求生抖音解说男声the locked catalog narrator voice
异世界冒险抖音解说男声the locked catalog narrator voice
自定义抖音解说男声the locked catalog narrator voice

⚠️ 反模式(gender mismatch):不要给女频/女强主角的剧强行配男声(比如"女频逆袭"+"男声"会很突兀)。STEP 0 Q5 的★ 默认就是为了避免这个错误。完整推荐逻辑见 references/voice-presets.md。

STEP 0 产物

一张固定的 Project Lock Card,包含:

  • user_language [NEW for v2.0.3]:从用户第一条消息检测,锁到 session 结束;驱动所有 ULF 规则
  • output_language [NEW for v2.0.3]:默认 = user_language;如果用户要发到其他语言平台可覆盖
  • start_path
  • track
  • aspect_ratio, duration, subtitle_mode, delivery_target
  • visual_style_lock: 3D-manhua-cel + sub_mode(默认 国漫 3D 渲染流)
  • narrator_voice_id(默认 the locked catalog narrator voice) + narrator_voice_preset_label(用平台本地化名称,如 抖音解说男声)
  • narrator_volume(默认 1.8,范围 1.2-2.0) [NEW for v2.0.1] — 旁白必须比默认 1.0 显著大,否则嘈杂环境听不清,半解说功能废
  • video_generation:平台选择的图生视频能力;默认按约 10 秒镜头规划

v2.2.0:分镜阶段必须先预留旁白和对白时间窗。STEP 5.6 只负责实测并锁定时间表,STEP 6 按时间窗生成视频;旁白单独交付给用户自行剪辑,不自动合成最终视频。

在 Project Lock Card 填好并回给用户前,不要进入 STEP 1。

旁白音色反问规则

如果用户在中途(比如 STEP 3 / STEP 5)问"换个音色"或"试试 X 音色",允许重新走问题 5 的清单,但必须明确:

  • 换音色后整集重生成所有旁白音频(旧的全废)
  • 旁白音色锁从这一刻重新生效,下一集沿用

如果用户从第一集跑到第二集,默认沿用上一集的 voice_id,不再问问题 5。

[ULF] Output this STEP in <user_language>. Reference: references/user-language-rules.md.


STEP 1:分析素材并读懂故事

如果用户是从零开始:用一次 question 问 2–3 个轻量问题,提取故事前提(用"Other"做自由文本兜底,再配几个结构化选项做子风格分流)。如果用户已经给了剧本或参考图,直接进入分析。

分析素材,提取:

  • 故事前提与开场钩子
  • 冲突脊柱与转折点
  • 旁白与对白分工
  • 视觉 DNA:3D 角色比例、材质逻辑(皮肤/布料/金属)、色彩、光照方向、漫剧分镜语言(必须落在 3D 漫剧家族内)
  • 运动逻辑:3D 角色动作的可动性、镜头运镜自由度(轨道/跟拍/推拉)、环境运动
  • 连续性风险:身份漂移、材质漂移、光照漂移、节奏死点或画面过静

旁白/对白分类硬规则 [HARD GATE]

为什么必须有这条护栏:narration-first 的前提是剧情完整且台词归属清晰。原剧本里每句话必须明确归到旁白还是对白,否则 STEP 5.5 剧本对账和 STEP 5.6 narration-first 都无法对齐。

判断一句话是旁白还是对白的硬规则(STEP 1 输出必须按这个分类):

句式特征类别例子
第一人称("我"/"我们")+ 心理活动/内心独白旁白"我心里想:她一定在骗我。"
第一人称 + 时间跳转/背景交代旁白"那一年,我十八岁。"
第三人称叙述/环境描写旁白"三天后,京城下起了大雪。"
带引号 + 明确说话人 + 动作/情绪描写对白他冷笑一声:"你该行礼了。"
同镜多角色对话(不论是否带引号)对白萧珩:"是你?" / 沈清晚点头。
模糊情况(无引号、无说话人)待定标 needs_user_confirm: true,让用户确认

输出格式(STEP 1 末尾产出的 narrative_split.md):

narration_lines:
  - text: "我心里想:她一定在骗我。"
    needs_user_confirm: false
  - text: "三天后,京城下起了大雪。"
    needs_user_confirm: false
dialogue_lines:
  - speaker: "萧珩"
    line: "你该行礼了。"
    tone: "冷淡"
    needs_user_confirm: false
pending:
  - text: "他转身离去。"
    reason: "无引号无说话人,无法判定"

needs_user_confirm: true 的行必须用一次 question 问用户"这句是旁白还是对白?",不能默认。

硬约束(剧情不删减 [HARD GATE]):原剧本里的每一句话都必须归入上面三类之一,不许漏。如果一句话既像旁白又像对白(比如第一人称内心独白 + 嘴在动),按"拆镜或分窗"处理(见 STEP 2 冲突解决),不要在分类阶段就合并。

针对每个主要节拍,写一条简短的内部导演判断:

  • 戏剧功能、转变、视角、权力变化
  • 隐藏目标、阻碍 / 策略
  • 潜台词或矛盾
  • 可见的压抑动作
  • 不可移植细节
  • 拒绝的俗套方案

这些判断只用于内部规划。

STEP 1 末尾:把导演读解压缩成 5 个 bullet + narrative_split.md 给用户看,并 question:"是否进入下一节拍链?(进入 / 调整钩子 / 调整题材 / 旁白对白分类有未决项要解决)"

[ULF] Output this STEP in <user_language>. Reference: references/user-language-rules.md.


STEP 2:搭建故事主线和单集节拍链

从 STEP 0 锁定的轨道出发,把这一集定义成 5 个节拍:

  1. 设定(Setup)
  2. 压力(Pressure)
  3. 应对(Response)
  4. 转折(Turn)
  5. 悬念 / 收束(Cliffhanger or Payoff)

旁白通道的职责:

  • 交代背景、时间跳转、内心想法和角色不能直接说的话
  • 不能替角色对白完成冲突、揭示、反转或情绪爆发
  • 旁白只能支撑故事,不能把戏剧性说平

对白通道的职责:

  • 承担关键对撞、揭示、拒绝、反击和情绪转折
  • 台词要短、利落、口语化
  • 主要角色最好有稳定的说话口癖或固定句式

默认配比:

  • 旁白约 60%,对白约 40%
  • 连续 2 段旁白后必须接动作或对白节拍
  • 旁白和对白若同处一个镜头,必须分到不同时间窗且不重叠
  • 如果同一剧情点既需要旁白又需要对白,优先通过拆镜、延长镜头或前后错位解决,不许硬叠成同一时间段
  • 绝不删减原剧本中的剧情点;只能移动到相邻镜头、拆分到下一镜或保留完整台词
  • 旁白音频按镜头先生成,再单独交付给用户自行剪辑
  • 对白默认来自视频原声

旁白完整性自检(STEP 2 末尾,narration-first 护栏 1/3)[硬关卡]

为什么必须有这条护栏:narration-first 的前提是剧情完整。如果旁白写得稀薄、靠 STEP 5.6"为对齐时长去改写"来补,那 5 节拍链跑完后剧情已经被磨平了。所以旁白完整性必须在 STEP 2 就硬性自检,不留到 STEP 5.6 补救。

5 个完整性自检项(每项必须能 ✅,否则改 STEP 2 而不是留到后面):

  1. ✅ 每段旁白能否独立承载一个剧情支点(背景 / 时间跳转 / 内心想法 / 不可直说)?空话、纯过渡、口水话不能作为一段旁白存在。
  2. ✅ 每节拍是否都有足够的"信息密度"?如果某一节拍只有一句话旁白、剩下的全靠动作/对白承担,节拍要重新分配旁白字数。
  3. ✅ "红线圈内"内容有没有漏?红线圈内 = 不通过画面动作能直接读出的关键信息(角色关系、隐藏动机、时间限制、伏笔)。这些信息必须由旁白或对白承担,不能省略。
  4. ✅ "重复讲述"有没有? 旁白不要把画面已经讲清的事再说一遍。
  5. ✅ 结尾节拍是否真的留了悬念 / 给了收束?

自检不通过的处置:

  • 不通过 → 改 STEP 2(节拍链 / 旁白通道职责 / 配比),不通过 STEP 5 改旁白文本,不通过 STEP 5.6 删旁白字。

STEP 2 末尾:把 5 个节拍用一张紧凑表格 + 旁白完整性自检表给用户看,并 question:"节拍链是否通过?(通过 / 调整某节拍 / 改结尾方向 / 旁白自检不过要重做)"

[ULF] Output this STEP in <user_language>. Reference: references/user-language-rules.md.


STEP 3:写最终视频规格书

规格必须包含(详见 references/final-video-spec.md):

  • 剧名
  • 画幅、单集时长、输出语言
  • visual_style_lock: 3D-manhua-cel + sub_mode(继承自 STEP 0)
  • 主角旁白设定
  • 旁白 / 对白比例
  • 世界观、时代、阵营或冲突系统
  • 字幕方式
  • 发布目标
  • 连续性规则
  • 镜头数量目标
  • 全局约束:不要额外文字覆盖,不要水印,镜头渲染里不要直接内嵌背景音乐
  • 视频能力锁定:使用平台当前可用的图生视频能力;保持已确认画幅与各镜头时长
  • 音频锁定:narrator_voice_id(继承自 STEP 0,默认 the locked catalog narrator voice),全片用一个音色;对白声音映射每个说话角色;除非用户明确批准,旁白和对白不重叠
  • 画布规则 [HARD GATE]:把最终规格和所有核心资产卡默认放到画布上;凡是视频生成前产出的核心资产,也必须先放到画布上,方便用户检查和修改后再继续。
  • 剧情不删减规则 [HARD GATE]:原剧本每个剧情点都要保留,不许压缩/改写以适应时长
  • 3D 漫剧资产计划:每主要角色 = 1 主卡 + 1 三视图(正/侧/背);每主要场景 = 1 主卡 + 1 辅卡

强制:在任何高成本资产生成之前,先用一次 question 让用户确认规格。问题选项:通过 / 调整画幅时长 / 调整题材轨道 / 调整视觉子模式 / 调整旁白音色。

[ULF] Output this STEP in <user_language>. Reference: references/user-language-rules.md.


STEP 4:规划关键资产与视觉状态账本

把资产分成三层:

  1. 核心资产:主角、主要复用场景、第一件关键道具
  2. 条件资产:重要配角、明显影响走位或剧情理解的场景变体与道具
  3. 跳过资产:一次性背景细节、无名路人、没有连续性价值的物件

规划并记录:

  • 主要角色(每个主要角色需要:1 张主卡 + 1 张三视图(正/侧/背))
  • 复用场景(每个主要场景需要:1 张主卡 + 1 张辅卡(远景/近景))
  • 核心道具(至多 1 张道具卡)
  • 音频关键项:旁白音色、对白音色、音效、BGM 情绪
  • 锁定的旁白 voice_id(继承自 STEP 0)——每一个旁白片段都用这个音色
  • 每个说话角色的对白声音映射表

每个镜头都要写视觉状态账本(见 references/visual-state-ledger.md)。

风格护栏提醒:每一条视觉状态描述都必须落在 3D 漫剧家族内。不要出现"纯 2D 描边""纯 Pixar 卡通""纯写实 CG""真人实拍"。

3D 多角度资产约束(核心差异):

  • 每个主要角色必须出三视图(正面 / 侧面 / 背面),用于旋转/轨道运镜
  • 每个主要场景必须出辅卡(主卡定调,辅卡支撑不同运镜视角)

在生成关键设定图之前,用 question 让用户选先出哪几件核心资产。画布门禁 [HARD GATE]:这些资产一旦生成,必须立即放到画布上,供用户检查和修改后再进入后续视频生成。

[ULF] Output this STEP in <user_language>. Reference: references/user-language-rules.md.


STEP 5:编写分镜与提示词包

把分镜写到用户不需要重新解释的程度。每个镜头都应包含(见 references/storyboard-design.md):

  • 镜头标题与节拍角色
  • 预计时长(6-10s,3D 漫剧 H3 10s 模式为主)
  • 场景与角色
  • 走位与空间锚点
  • 带时间窗的旁白(统一格式 [{text, start, end}],end 由 STEP 5.6 填入真实 TTS 时长)
  • 带说话人和语气的对白(统一格式 [{speaker, line, tone, start, end}],end 由 STEP 6/7 填入实测时长)
  • 表演说明
  • 起始状态
  • 动作推进
  • 供下一镜继承的结束状态
  • 发声镜头的音频时间轴:旁白/对白预留时长、起止时间、安全间隔和镜尾余量
  • 3D 漫剧风格块:3D 渲染 / 漫剧分镜 / 多角度锚点 / 材质关键词
  • first_frame source(含 first_frame_angle_match 3D 特有字段)

分镜规则:

  • 每个镜头都必须改变故事状态或镜头语法
  • 相邻镜头不能重复同一动作、同一首帧或同一种镜头逻辑
  • 一个镜头只承担一个主要情绪或信息任务
  • 镜头之间的承接要写清楚
  • 旁白和对白若同处一个镜头,必须在分镜阶段先排好不重叠的时间窗,并留出安全间隔
  • 旁白音频按镜头先生成,然后在装配阶段叠回视频
  • 3D 漫剧运镜(区别于 2D):可以使用轨道跟拍、推拉、平移、旋转;运镜时间长(6-10s),节奏比 2D 更慢

分镜阶段音频空间预留【硬关卡】

设计每个镜头时,必须先给旁白和对白安排位置,再写动作和口型。每个 shot 至少记录 narration_window、dialogue_window、narration_reserve_sec、dialogue_reserve_sec、gap_sec 和 tail_buffer_sec。旁白与对白不能重叠;默认旁白不超过镜头时长的 35%,对白不超过 55%,两段说话之间至少留 0.3 秒,镜尾至少留 0.3 秒。视频提示词必须携带这些时间窗,明确旁白窗口不安排角色说话。小幅实测偏差直接生成并记录,用户可自行剪辑,不因小偏差反复改分镜或重生成。只有窗口重叠、对白缺失或音频不可用时才返工。

旁白字数预估前置(STEP 5 末尾,narration-first 护栏 2/3)[硬关卡]

为什么必须有这条护栏:STEP 5.6 改写旁白会磨掉剧情,所以旁白字数要在 STEP 5 就卡死,不让"超长旁白"流到 STEP 5.6 才发现。

预估公式(按 STEP 0 锁定的 voice_id 和 speed):

预估旁白时长 = 旁白中文字数 × 0.25s + 0.3s 起手缓冲
(基于 male-qn-* / Chinese (Mandarin)_* 系列,speed=1.0 时的平均语速 ≈ 4 字/秒)

分镜阶段旁白字数硬上限(3D 漫剧 H3 10s 模式):

镜头类型最大旁白字数(中文)对应最长时长
普通镜头(6-10s)28 字~7.3s + 0.3s 缓冲 = 7.6s(塞进 8s 镜头)
关键情绪镜(8-10s)32 字~8.3s + 0.3s 缓冲 = 8.6s(塞进 9s 镜头)
大段内心 / 背景(10s)36 字~9.3s + 0.3s 缓冲 = 9.6s(塞进 10s 镜头)

判定规则:

  • 字数 ≤ 上限 ✅ — 旁白文本能塞进镜头,STEP 5.6 大概率会 ✅
  • 字数 > 上限 ⚠️ — STEP 5 阶段就拆:要么拆给下一镜(必须显式标注"接上镜旁白"),要么拆成两段对白/动作承载
  • 字数 > 上限 × 1.3 🔴 — 回 STEP 2 改节拍链:这段旁白承载了太多剧情支点,应该把剧情分到多节拍承载,而不是塞进一个镜头

STEP 5 末尾动作:每个镜头的 narration_text 旁标注 narration_word_count 和 narration_predicted_duration,作为 STEP 5.6 跑前的人类可读检查表。

如果用户只要分镜包,就在这里停下交付。否则把分镜给用户过一遍,question:通过 / 调整某镜 / 调整某段对白 / 调整节奏 / 某镜旁白字数超上限要拆。

[ULF] Output this STEP in <user_language>. Reference: references/user-language-rules.md.


STEP 5.5:剧本对账检查 [强制,硬关卡]

为什么必须有这一步:避免 STEP 5 出分镜时漏了某个剧情点,等到 STEP 8 视频都生完了才发现"这段对白呢?" — 必须前置对账。

在 STEP 5.6 之前必须先过这一关。

Step 5.5.1 — 列出原剧本所有剧情点

从 STEP 1 的 narrative_split.md 提取:

  • original_plot_points[]:所有 narration_lines 的 text + 所有 dialogue_lines 的 line
  • 标号:P001, P002, P003 ...

Step 5.5.2 — 列出分镜覆盖的剧情点

从 STEP 5 产出的 storyboard 提取:

  • covered_plot_points[shot_id] = [P001, P003, ...]
  • 每镜的 narration_lines / dialogue_lines 反向映射到 plot point

Step 5.5.3 — 对账表

输出 script_reconciliation_table:

plot_pointtextcovered_by_shotstatus
P001"我心里想:她一定在骗我。"shot_03✅
P002"他冷笑一声:你该行礼了。"shot_05✅
P003"三天后,京城下起了大雪。"—❌ 未覆盖
P004"我冲出了王府。"shot_08✅
............

status 三种:

  • ✅ covered:某镜的 narration_lines / dialogue_lines 包含这条
  • ❌ missing:分镜里没有
  • ⚠️ partial:被改了字(比如简化、合并)

Step 5.5.4 — 处理 missing / partial

用一次 question 问每条 ❌/⚠️:

Optionlabel何时选
★ 1补一个分镜漏的剧情点必须保留
2合并到相邻分镜内容能融进现有镜
3用户明确删用户自己说这段不要了
4移到下一集这一集讲不下,下一集接

反模式:

  • ❌ 默认 ❌ → ✅(假装对账通过)
  • ❌ 让用户看不到对账表
  • ❌ 漏的剧情点超过 20% 还强行进 STEP 5.6

Step 5.5 产物

  • script_reconciliation_table(对账表)
  • 用户的处理决策(每个 ❌/⚠️ 一条决策)
  • 更新后的 storyboard(如果有补/并/删/移)
  • shot_audio_schedule(v2.0.2 关键产物,每镜的旁白+对白时间窗预排表) — 详见 references/audio-timeline.md

在 script_reconciliation_table 通过、storyboard 更新前,不要进入 STEP 5.6。

[ULF] Output this STEP in <user_language>. Reference: references/user-language-rules.md.


STEP 5.6:校验分镜预留的旁白和对白时间表,再按时间表生成视频**[强制,v2.2.0]**

v2.0.2 改名:narration-first 升级为 schedule-first。STEP 5.6 不光生成旁白音频,也生成对白 TTS 预演(仅用于量时长,不入成片),把旁白+对白的预留时间窗都排好,作为 shot_audio_schedule 锁死。STEP 6 prompt 引用这张表引导 H3 按时间窗生成视频。

v2.2.0:分镜设计先分配音频空间,旁白和对白各有明确时间窗。小幅实测偏差直接接受并记录,用户可在剪辑阶段自行微调,不反复修改镜头。

前提:剧情骨架必须先完整(STEP 5.5 通过)。schedule-first 不是拿来补一段还没讲完的故事,而是把已经完成的单集剧情、节拍链、逐镜台词、剧本对账都锁定后,把音频时间表排出来。

🚨 护栏 3/3(剧情完整优先):所有决策都把"剧情完整"放在"对齐时长"之前。规则:

  • ✅ ✅ 优先:调整镜头时长(不伤剧情)
  • ✅ 次优:在分镜阶段拆给下一镜或延长到允许范围
  • 🟡 小幅时长偏差:直接接受,记录实际时间,交给用户自行剪辑
  • 🔴 只有出现窗口重叠、对白缺失或音频不可用时,才返工对应镜头
  • 🔴 永远不允许:加快语速、强行删字、强行把长文本塞进短镜头

STEP 5 锁定文本后,本节不允许删任何剧情字。 文本修改只能由用户显式批准,只能优化口水话/过渡句。

Step 5.6.1 — 批量 TTS 生成(mixed 模式:旁白实测 + 对白 TTS 预演)[v2.0.5: 单一 mixed 模式]

STEP 5.6 调用 batch speech synthesis 一次生成旁白实测音频与对白时长预演两股流:

    requests=[
        # --- Stream A: 旁白(LOCKED,最终视频用)---
        {
            "text": "<shot 01 旁白文本>",
            "output_file_path": "audio/shot_01_narration.mp3",  # 锁定文件
            "voice_id": "Chinese (Mandarin)_Male_Announcer",  # STEP 0 锁定
            "speed": 1.0,
            "emotion": "neutral",
            "volume": 1.8,  # [v2.0.1] 旁白音量比默认大 80%
        },
        # --- Stream B: 对白 TTS 预演(仅量时长,不入成片)---
        {
            "text": "<shot 01 对白 - 说话人 萧珩>",
            "output_file_path": "audio/_preview/shot_01_dialogue_萧珩_preview.mp3",  # 一次性
            "voice_id": "<萧珩的 voice_id from dialogue_voice_map>",
            "speed": 1.0,
            "emotion": "neutral",
            "volume": 1.0,  # 对白音量参考
        },
        # ...
    ]
)

输出:

  • audio/shot_NN_narration.mp3 × N(旁白,锁定,最终视频用)
  • audio/_preview/shot_NN_dialogue_<说话人>_preview.mp3 × N × 说话人(对白预演,仅量时长,STEP 6.5 后可删)

⚠️ 旁白音频与对白视频是分离交付:不自动合成旁白,不交付带旁白或混合母版。用户可以自行在剪辑软件中调整旁白位置和音量。

Step 5.6.2 — 测量真实时长,锁定 shot_audio_schedule

用 platform media-duration measurement 测所有 mp3 的真实时长,填入 shot_audio_schedule:

shot_iddurationnarration_windowdialogue_windowbuffertotalfits
018.0s[0.0, 3.6]—0.03.6✅
028.0s[0.0, 3.4]—0.03.4✅
037.0s[0.0, 2.8][3.3, 5.1]0.55.6✅
048.0s[0.0, 4.1]—0.04.1✅
059.0s[0.0, 4.0][4.5, 6.4]0.56.9✅

shot_audio_schedule schema(每镜):

shot_audio_schedule:
  shot_duration: 8.0
  narration:
    text: "那一刻,我终于看清了门口的人。"
    word_count: 14
    predicted_duration: 3.8   # 字数 × 0.25 + 0.3 缓冲
    measured_duration: 3.6    # TTS 真实时长
    window: [0.0, 3.6]        # 旁白时间窗(已锁定)
  dialogue:
    - speaker: "萧珩"
      text: "你该行礼了。"
      word_count: 6
      predicted_duration: 1.8
      measured_duration: 1.9   # TTS 预演真实时长
      window: [4.1, 6.0]      # 对白时间窗
  buffer: 0.5
  total_audio_used: 6.5
  fits_in_shot: true           # total + 0.3 尾缓冲 <= shot_duration

Step 5.6.3 — schedule 决策表

条件标记默认处置
所有时长在容差内且 fits_in_shot✅锁定 schedule,进 STEP 6
偏差在 1.5 秒或预留窗口 20% 以内✅直接接受,记录实际时间供用户剪辑
更大但仍可用的偏差⚠️保留镜头并标记偏移,不反复重新生成
窗口重叠、对白缺失或音频不可用🔴只返工对应镜头或分镜
对白 TTS 时长 > shot_duration × 0.6⚠️★ 拉长镜头或拆对白(不允许改对白文本)
fits_in_shot: false🔴仅在分镜阶段延长或拆镜,不能把对白填满后再塞旁白

反模式(写死):

  • ❌ 加快语速塞进原时长——speech 加速失真
  • ❌ 删旁白/对白文本——破坏剧情完整
  • ❌ 强行把 10s+ 内容塞进 8s 镜头——念到一半切掉
  • ❌ 把对白 TTS 预演直接用到最终视频——预演仅量时长,对白用视频原声
  • ❌ STEP 5.6 后丢弃 shot_audio_schedule——STEP 6 prompt 必须用它

Step 5.6 产物

  • audio/shot_NN_narration.mp3 × N(旁白锁定)
  • audio/_preview/shot_NN_dialogue_*_preview.mp3 × N × 说话人(对白预演,STEP 6.5 后可删)
  • shot_audio_schedule(锁定) — STEP 6 prompt 引用,STEP 6.5 漂移基线
  • 更新后的 shot_timing_table

在 shot_audio_schedule 锁定前,不要进入 STEP 6。

[ULF] Output this STEP in <user_language>. Reference: references/user-language-rules.md.


STEP 6:生成锚点资产和镜头片段

视频生成默认使用 MiniMax-H3。所有镜头必须用 image-to-video 模式,opening_frame_image 必传(first_frame 锚点策略),时长 10s 为主,6s 模式仅用于战斗/快切镜。多模态参考(角色主卡/三视图/场景主辅卡/道具卡)全用上。用户明确选择其他模型时先做能力检查;不允许退化到 text-to-video,除非用户显式批准。

MiniMax-H3 图生视频参数(默认):

参数默认值说明
modelMiniMax-H3默认使用;用户明确选择其他模型时先检查能力,兼容后遵循选择
frame_role"first_frame"必传 first_frame,不允许纯 text-to-video
opening_frame_image必传(角色主卡 / 三视图 / 场景主辅卡 / 上一镜 last_frame)多模态参考,根据 first_frame 决策表选
duration10(默认)/ 6(仅战斗/快切)单镜时长硬上限 10s,下限 6s(除非战斗/快切)
resolution1080P默认 1080P
多模态参考角色主卡 + 三视图 + 场景主辅卡全部作为 opening_frame_image 候选

反模式:用 text-to-video 模式生成镜头(不带 first_frame)——3D 漫剧的漂移会失控,绝对不允许。 退路:用户显式批准时,可以用 text-to-video 模式(极少见,比如完全无参考图的特殊场景),但需要 user 显式确认 + 标 ⚠️。

STEP 6 只有两步,其他都是浪费。

Step A — 锚点资产(1 批,1 轮生成)[画布门禁硬关卡]

画布门禁 [HARD GATE]:本批所有产出的资产生成后必须立即放到画布上,供用户检查和修改后再进入 Step B。不允许跳过这一步。

只生视频生成真正需要当 first_frame 锚点的:

  • 角色主卡——每个主要角色 1 张干净的(脸 + 服装 + 标志性随身道具,正面 3/4 视角)
  • 角色三视图——每个主要角色 1 张(正视图 / 侧视图 / 背视图 三联),用于旋转/轨道运镜
  • 场景主卡——每个主要场景 1 张干净的(建筑 + 关键陈设 + 光线/色调,主运镜视角)
  • 场景辅卡——每个主要场景 1 张辅助视角(远景/近景/俯仰),用于支撑同场景不同运镜
  • 道具卡——最多 1 张

3D 漫剧 vs 2D 的核心差异(这部分不能省):

  • 角色三视图是 3D 漫剧的硬约束——2D 可以靠 prompt 文字"想象"角色转身,3D 必须有真实的多角度锚图,否则 H3 旋转运镜必然脸/服装漂移
  • 场景辅卡也是 3D 漫剧的硬约束——2D 一个场景卡可以扛所有运镜(因为描边风格相对宽容),3D 场景有真实空间感,不同运镜视角下的透视、遮挡关系差异大,必须有辅卡支撑
  • 这两份多角度卡只用一次(不需要出"所有角度"),正面 + 侧面 + 背面、主视角 + 辅视角 就够了

嵌入原则:

  • 角色的标志性服装、配饰、随身道具 → 画进角色主卡
  • 场景的标志性家具、装饰、色彩调性 → 画进场景主卡

不要生:

  • ❌ 同一角色多张表情图(用 prompt 关键词控制)
  • ❌ 同一角色多张姿态图(用 prompt 关键词控制)
  • ❌ 同一场景多张光照变体(用 prompt 关键词控制)
  • ❌ 服装变体图(一个角色一集一套衣服)
  • ❌ 背景细节独立图(嵌进场景卡)
  • ❌ 完整 360 度环视角色图(正/侧/背三视图已足够,6+ 角度是浪费)
  • ❌ 多张场景光照变体(主+辅两张够用)

生成前用一次 question:

接下来生「 张角色主卡 + 张角色三视图 + 张场景主卡 + 张场景辅卡 [+ 1 张道具卡(如果需要)]>」,预计消耗较多积分。继续吗? ★ 继续生成 / 先看当前产物 / 暂停调整 / 调整清单

生成后用一次 question:

这一批设定图通过吗?(生成物已放到画布) ★ 通过 / 某张重做 / 整体调线 / 整体调色 / 三视图某角度重做

⚠️ 画布门禁:Step B 镜头生成必须等用户在画布上确认这批资产通过之后才能开始。不允许在用户确认前硬启动 Step B。

Step B.0 — 镜头时长锁定(基于 STEP 5.6 的 shot_audio_schedule)

进入 Step B 之前,先确认每镜的最终时长。 这个时长来自 STEP 5.6 锁定的 shot_audio_schedule(旁白实测 + 对白 TTS 预演 + 用户决策)。

镜头时长表样例:

shot_id镜头最终时长来源first_frame
018.0sshot_audio_schedule(旁白 3.6s + 缓冲 0.3s + 尾 4.1s)character_main_card
029.0sshot_audio_schedule(旁白 3.4s + 尾 5.6s)shot_01_last
0310.0sshot_audio_schedule(旁白 2.8s + 0.5 缓冲 + 对白 1.9s + 尾 4.8s)character_three_view_side
047.0sshot_audio_schedule(旁白 4.1s + 尾 2.9s)shot_03_last
............

镜头时长硬约束(3D 漫剧 vs 2D 的差异):

  • 单镜时长 ≥ 6s(H3 10s 模式为主;6s 是物理下限)
  • 单镜时长 ≤ 10s(再长人脸/材质漂移不可控)
  • 战斗/快切镜可以拉到 4-6s(H3 6s 模式),但单镜不要超过 10s
  • 缓冲(旁白说完到镜头切)≥ 0.2s,≤ 1.5s

如果某镜最终时长 > 10s,必须回 STEP 5.6 拆对白或旁白(不能强行拍 12s 镜头)。

Step B — 镜头片段(1 批或几批,用 first_frame 锚点策略)

所有镜头用 first_frame 锚点策略 一次(或分 2-3 批)生成。

每个镜头都必须用 image-to-video 模式喂真实锚点图给 H3 的 opening_frame_image,禁止纯文字生成。

锚点来源优先级:

  • 角色主卡(正面 3/4 视角)— 角色首次出场 / 重置锚周期 / 镜头无明显旋转
  • 角色三视图(侧面) — 角色做侧面/平行运镜
  • 角色三视图(背面) — 角色背对镜头的镜头
  • 场景主卡 — 场景首次出场 / 角色无显著走位的环境镜
  • 场景辅卡 — 同场景的运镜差异较大的镜
  • 上一镜的 last_frame(clips/shot_NN_last.png) — 同角色/同场景接力

逐镜头的 first_frame 决策表

每个镜头都必须声明它的 first_frame 来源:

shot_rolefirst_frame 用什么frame_role用途
角色首次出场(主角/配角第一镜)该角色的角色主卡(正面 3/4)"first_frame"用最权威的脸起手
角色侧面/平行运镜该角色三视图(侧面)"first_frame"锁住侧脸/侧面姿态
角色背对镜头该角色三视图(背面)"first_frame"锁住背影/背面姿态
同一角色后续镜头(常规)上一镜的 last_frame"first_frame"锁住上一镜的姿态/光线
重置锚(reset anchor)该角色的角色主卡"first_frame"每 4 镜(主角)/ 6 镜(配角)回到主卡重置一次防漂移
场景建立镜场景主卡"first_frame"锁住场景的布局/色调
同场景运镜差异大的镜场景辅卡"first_frame"保持场景在另一视角下的连续
同场景后续镜头同场景上一镜的 last_frame"first_frame"保持场景连续
纯环境/空镜场景主卡 或 场景辅卡 或 上一镜 last_frame"first_frame"锁住场景色温/构图
切到对方(反转镜头)被切到那个角色的主卡"first_frame"切到对方时用对方主卡重置
道具特写道具卡(仅当存在时)"first_frame"锁住道具细节

末帧归档步骤 [强制]

每个镜头生成完之后,从视频里截最后一帧,存成 clips/shot_NN_last.png。这会成为下一个同角色/同场景镜头的 first_frame 来源。

# 批量截末帧
    platform last-frame extraction for each generated shot

重置锚周期(3D 漫剧 vs 2D 的关键差异)

  • 主角:连续出场每 4 镜回到主角主卡重置一次(2D 是 3 镜)
  • 配角:连续出场每 6 镜回到配角主卡重置一次(2D 是 5 镜)
  • 场景:同场景每 5 镜回到场景主卡重置一次(2D 是 4 镜)
  • 如果某镜本身就是"切镜头 / 切场景 / 时间跳转 / 反转",下一镜天然就是重置锚,周期自动重置

为什么 3D 周期更长:3D 渲染的几何一致性比 2D 描边更稳(人脸形状、材质反射、轮廓不会因为锚图稍弱就漂),所以可以撑更多镜再重置,省积分。

STEP 6.5 — 实测对白时长微调 [v2.0.2: 从主修 → 兜底]

v2.0.2 关键变化:因为 STEP 5.6 已经预排 shot_audio_schedule 并把 audio_schedule 嵌进 STEP 6 prompt,H3 命中计划时间窗的概率从 ~20% 升到 ~80%。STEP 6.5 现在是兜底,不是主修。

H3 生成的视频里,对白时长可能跟 STEP 5.6 预排的还有偏差。STEP 6 全部镜头生成完后,必须实测每镜的对白时长(用 VAD 或人耳听一遍标记),跟 shot_audio_schedule.dialogue_window 对比:

  • 偏差 ≤ 1s:✅ 接受,软更新 schedule
  • 偏差 1-2.5s:⚠️ 调整音频时间表或重生成该镜;禁止裁剪镜头画面
  • 偏差 > 2.5s:🔴 回 STEP 5 改分镜(拆对白/拉长镜头/拆镜)

v2.0.1 vs v2.0.2 漂移率对比:

版本漂移概率STEP 6.5 介入率性能
v2.0.1~80% 漂移80% 镜头需要微调大量重做
v2.0.2~20% 漂移20% 镜头需要微调兜底级别

半成品路径的特殊处理

如果用户在 STEP 0 选了"半成品素材"并提供了角色卡/场景卡:

  • 角色主卡 = user_uploaded/<角色名>.png(用户提供的)
  • 角色三视图 = user_uploaded/<角色名>_3view.png(用户提供的;如果没提供,只用主卡,旋转运镜会有漂移)
  • 场景主卡 = user_uploaded/<场景名>.png(用户提供的)
  • 场景辅卡 = user_uploaded/<场景名>_aux.png(用户提供的;如果没提供,主卡扛部分辅卡运镜)
  • 直接当锚点用,整个 Step A 跳过,直接进 Step B
  • 但画布门禁 [HARD GATE] 仍然生效:用户提供的资产也要立即放到画布上

每条图像/视频 prompt 都要带的风格块

国漫 3D 渲染流(默认)——直接贴这一段进 prompt:

3D rendered, Chinese-animation manhua-cel look, clean dark outlines on top of 3D shading, soft PBR materials with non-photoreal finish, dynamic manhua panel composition, dramatic cinematic light, webtoon-friendly vertical framing, no live-action, no Pixar-style CG, no 2D flat illustration, no watermark, no baked-in text

v2.0.2 新增 audio_schedule 块(从 STEP 5.6 锁定的时间表,嵌进 prompt 引导 H3):

audio_schedule:
  shot_duration: 8.0
  narration_window: [0.0, 3.6]      # 这个时间窗里不能有人说话
  dialogue_window: [3.6, 5.5]      # 这个时间窗里 character <X> 应该说话
  buffer_between: 0.5
  total_audio: 5.5
  shot_duration: 8.0
  constraint: "no speech during narration_window; speaker should speak during dialogue_window"

完整 prompt 模板(v2.0.2):

[shot content],

3D rendered, Chinese-animation manhua-cel look, clean dark outlines on top of 3D shading,
soft PBR materials with non-photoreal finish, dynamic manhua panel composition,
dramatic cinematic light, webtoon-friendly vertical framing,
no live-action, no Pixar-style CG, no 2D flat illustration, no watermark, no baked-in text

audio_schedule:
  narration_window: [0.0, 3.6]
  dialogue_window: [3.6, 5.5]
  buffer_between: 0.5
  total_audio: 5.5
  shot_duration: 8.0
  constraint: "no speech during 0-3.6s; character <X> speaks during 3.6-5.5s"

H3 不能 100% 遵守 audio_schedule(它会按自己的理解生成对白),但有 schedule 比没 schedule 的对齐概率高 4 倍(~20% → ~80%)。STEP 6.5 仍然做事后微调兜底,但发生率大幅降低。

Shortened here. Read the whole file on GitHub.

Signals

GitHub stars
26
Last commit
Sep 2026
Advanced
Item type
skill
Key
half-narrated-3d-short-drama
Source
github.com/qxryz/workflowgenerator