本文回答:短剧剧本格式怎么转成 AI 视频生成任务——场头、【人物】行、动作行、对白分别映射到哪个字段,转换后一场戏的任务 JSON 示例,同一份 JSON 怎么按 2.0、2.5 两版提示词规范分别渲染,以及转换时哪些内容要改写、哪些要退回作者。
短剧剧本格式转成 AI 视频生成任务,按行类型逐项映射:场头的集场号变成任务编号,日/夜、内/外、地点进场景字段,并对应一张场景参考图;【人物】行变成角色列表,按首次出场顺序给参考图编号;动作行拆成阶段,每阶段一个看得见的变化加结束状态;对白拆成说话人和台词,同时标出谁在听。画幅、时长交给接口参数,不写进提示词。这一步可以手工做,也可以借助对话大模型、画布工作流,或交给 AI 视频产线自动解析。
短剧剧本格式是按场写戏的书写约定:每场以场头开头,下面是【人物】行、以 △ 开头的动作行和「人物:台词」形式的对白,每类行的写法全剧固定。
短剧剧本格式里,哪几类行能被程序认出来?
识别规则(本文约定):场头以「集号-场号」开头,后接日/夜、内/外、地点;【人物】行以【人物】开头、顿号分隔;动作行以 △ 开头;对白是冒号前为人物表里的名字或别名;都不匹配的(闪回标记、旁白段)标出来人工处理。下面这场戏(虚构示例)贯穿全文,第 3 条动作行是故意留的问题:
5-3 夜 外 医院停车场
【人物】沈念、顾川、保安
△ 沈念站在一辆黑色轿车的驾驶座车门旁,手里攥着车钥匙。
△ 顾川从住院楼门口走来,停在车头前。
顾川:钥匙给我,这车你不能开走。
△ 小念心里一慌,想起父亲进手术室前说的话。
△ 沈念把车钥匙握进掌心,背靠车门。
沈念:车是我爸的,人还在楼上躺着。
△ 顾川伸出的手收了回去。
剧本转任务这一步,几种做法各自喂什么、拿回什么?
| 做法 | 要喂进去什么 | 哪几步自己做 | 拿回来的是 |
|---|---|---|---|
| 手工转换 | 剧本、人物表、地点表 | 识别、映射、写提示词、整理参考图 | 每场一份提示词和参考图清单 |
| 对话大模型辅助 | 分场贴入的剧本,加任务 JSON 结构当输出格式 | 核对别名归并、编号顺序,按模型版本改提示词 | 任务 JSON 草稿 |
| 画布 / 节点工作流 | 剧本或镜头脚本,加自己搭的节点 | 搭流程、定每个节点的输入 | 取决于搭出来的流程 |
| AI 视频产线 | 剧本或一句话创意,加设定图 | 审提示词、挑能用的版本 | 每场带参考图的任务和成片 |
| 实拍 / 外包 | 剧本和预算 | 沟通、验收 | 成片 |
映射这一步也可以交给产线自动做,比如猫斯卡(AI 视频生产系统)把剧本场次解析成「内 / 外 | 地点 | 日夜」,每场按「场景图 → 本场道具图 → 人物定妆图」的固定顺序挂参考图,称呼不一致的角色可以手动绑定到同一张定妆图;它解决的是字段解析和挂图顺序,没有成片自动打分,拍出来能不能用,质量终审仍在创作者手里。
场头、【人物】行、动作行、对白各映射到哪个字段?
字段名是本文自拟的交接格式,ratio、duration 沿用火山方舟《创建视频生成任务》的参数名:
| 剧本里的内容 | 任务字段 | 转换规则 | 依据 |
|---|---|---|---|
| 集号-场号 | task_id | 拼成 E05-S03 | 本文约定 |
| 日/夜、内/外 | scene | 原样搬;缺项不猜,退回补 | 本文约定 |
| 地点 | scene.location + 场景图 | 一个地点名一张场景图,注明「不采用图中人物」 | sd25-pe 带参考素材模板 |
| 【人物】行 | cast + 人物图 | 按首次出场顺序编号,图片编号与提示词同步 | Seedance 2.5 提示词指南 |
| 称呼、别名 | cast[].aliases | 归到同一个 id,提示词里只用一个名字 | Seedance 2.0 提示词指南 |
| 动作行 | phases[].action、end_state | 一个阶段一个主要变化,写清结束状态 | sd25-pe |
| 对白 | phases[].dialogue | 说话人取冒号前的名字,台词原样 | 本文约定 |
| 没说话的人 | phases[].listeners | 写明闭口聆听 | sd25-pe |
| 画幅 / 整场长度 | params | 由接口设置,不写进提示词 | sd25-pe;《创建视频生成任务》 |
依据原话:Seedance 2.5 提示词指南对角色错位给的办法是「按人物首次出场顺序上传参考素材,并同步调整提示词中的图片、音频编号」;Seedance 2.0 提示词指南要求「每次提到主体时,都应使用同一标签」。duration 取值,《创建视频生成任务》写的是 Seedance 2.5 为 [4, 30] 或 -1(智能选择),Seedance 2.0 系列为 [4, 15] 或 -1。
竖屏短剧剧本格式转换后,一场戏的任务 JSON 长什么样?
{
"task_id": "E05-S03",
"scene": {
"location": "医院停车场", "time_of_day": "夜", "interior": false},
"references": [
{
"slot": "图片1", "type": "scene", "rule": "不采用图中人物"},
{
"slot": "图片2", "type": "prop", "name": "黑色轿车"},
{
"slot": "图片3", "type": "character", "cast_id": "C01", "use": "五官、发型和服装"},
{
"slot": "图片4", "type": "character", "cast_id": "C02", "use": "五官、发型和服装"}
],
"cast": [
{
"id": "C01", "label": "沈念", "aliases": ["小念"], "ref": "图片3"},
{
"id": "C02", "label": "顾川", "aliases": [], "ref": "图片4"},
{
"id": "X01", "label": "保安", "ref": null, "note": "仅文字"}
],
"phases": [
{
"n": 1, "action": "沈念站在驾驶座车门旁,攥着车钥匙", "end_state": "沈念站在车门旁"},
{
"n": 2, "action": "顾川从住院楼门口走来,停在车头前",
"dialogue": {
"speaker": "C02", "line": "钥匙给我,这车你不能开走。"},
"listeners": ["C01", "X01"], "end_state": "顾川站在车头前"},
{
"n": 3, "action": "沈念把车钥匙握进掌心,背靠车门",
"dialogue": {
"speaker": "C01", "line": "车是我爸的,人还在楼上躺着。"},
"listeners": ["C02", "X01"], "end_state": "沈念背靠车门"},
{
"n": 4, "action": "顾川伸出的手收了回去", "end_state": "顾川的手垂在身侧"}
],
"params": {
"ratio": "9:16", "duration": -1},
"review_flags": [
{
"line": 6, "type": "心理描写", "action": "退回作者改成行为"}
]
}
要看的三处:「小念」在 aliases 里归到 C01;保安是群演、没有设定图,ref 留空、标「仅文字」,不占图片编号;第 6 行心理描写不由程序擅自改写,进 review_flags 退回作者;duration 填 -1 即交给模型智能选择。
任务 JSON 怎么渲染成提示词?2.0 和 2.5 分开写
JSON 是剧本和提示词之间的中间件,不是直接发给模型的。Seedance 2.0 提示词指南写明「请勿直接将完整剧本作为提示词使用,文案内容过度冗余易造成模型理解混乱」,所以每场单独渲染。两版规范不同,分开渲染:
| 渲染项 | 按 sd2-pe(2.0) | 按 sd25-pe(2.5) |
|---|---|---|
| phases 组织 | 顺序使用镜头1 / 镜头2 / 镜头3,禁止写绝对秒数 | 长视频优先用「阶段」,阶段写法不带数字 |
| 台词 | 台词符号 {},音效 <> | 「说话人 + {台词}」 |
| 人物绑定 | 「将 @图片N 中的[2-3 个稳定静态特征] 定义为 <主体N>」 | 「<人物A>对应@图片1,只采用五官、发型和服装。」 |
| 约束 | 最终输出必须带画质包、稳定包、水印 / Logo 兜底;非文字生成任务必挂字幕兜底;多人场景必挂双胞胎兜底 | 不得自动添加用户未要求的画质包、稳定包、水印、Logo、字幕、分身等约束 |
按 sd25-pe 的带参考素材模板(【生成目标】【参考素材职责】【事件脚本】【保持一致】),示例那场大致渲染成下面这样,这是本文照规范拟的,不是规范原文:
【生成目标】夜晚医院停车场,沈念与顾川在一辆黑色轿车旁对峙,岗亭里坐着一名保安。
【参考素材职责】@图片1为场景,不采用图中人物。@图片2为黑色轿车。<沈念>对应@图片3,只采用五官、发型和服装。<顾川>对应@图片4,只采用五官、发型和服装。
【事件脚本】
阶段一:沈念站在驾驶座车门旁,手里攥着车钥匙。
阶段二:顾川从住院楼门口走来,停在车头前。顾川{钥匙给我,这车你不能开走。}沈念和保安自然闭口聆听。
阶段三:沈念把车钥匙握进掌心,背靠车门。沈念{车是我爸的,人还在楼上躺着。}顾川和保安自然闭口聆听。
阶段四:顾川伸出的手收了回去。
【保持一致】沈念、顾川的五官、发型和服装与参考图一致。
【参考素材职责】这段对应 Seedance 2.5 提示词指南的要求:按上传顺序编号、每个素材做文本绑定,不建议只在图片里呈现映射信息。
ai短剧剧本模板转换时,哪些内容要改写、哪些要退回?
转换程序只搬字段,不替作者写戏:
| 遇到的内容 | 转换时怎么处理 | 依据 |
|---|---|---|
| 场头缺日/夜、内/外或地点 | 停在这一场,退回补齐 | 本文约定 |
| 动作行写心理活动 | 进 review_flags,退回改成行为 | 红果「短剧编剧第一课」吴文尧:少写「心理」,多写「行为」 |
| 一次生成要参考的人物多 | 2.0 超过 4 人分组生成图片再生视频;2.5 主体图 1-8 个效果较好 | Seedance 2.0 / 2.5 提示词指南 |
| 一场里动作变化很多 | 拆成两个任务 | Seedance 2.5 提示词指南:内容过多会导致过度剪切或剧情遗漏 |
| 动作行里写了秒数 | 2.0:删掉,按镜头顺序写;2.5:作者明确要按秒控制的渲染成连续整数时间段,否则删掉 | sd2-pe 禁止写绝对秒数;sd25-pe 用户已提供数字时间段或明确要求按时间段控制时,才用连续整数时间段 |
「超过 4 人」「1-8 个」管的是一次生成里的参考人物或主体图数量,不是一集能有几个角色。
常见问题
老剧本没有【人物】行,还能转吗?
能,先补再转。实操上从对白和动作行里收集出场人物,按首次出现顺序写成【人物】行,再归并别名。没有设定图的群演照样列进去,标「仅文字」,不占图片编号。
同一场要分别用 2.0 和 2.5 生成,JSON 要写两份吗?
不用,JSON 一份、渲染两次,按上面那张表各走各的写法;duration 各按两版的取值范围填。