剧本转换顺场表+设定表(剧本 → 顺场表 + 设定表)
Overview
把一份剧本转化为两份可直接交付制片与出图团队的 xlsx:
顺场表(逐场服装/外观/事件对照)与设定表(角色/道具/场景三维资产整合,提示词内嵌)。
脚手架脚本负责一切可计算的部分(解析、分场、时间线、连续性、建表、公式缓存);
agent 负责一切需要创作判断的部分(场景设计、服装时间线、提示词撰写)。
所有口径规则见 references/rules.md,数据结构见 references/schema.md —— 动手前先读这两个文件。
工作目录约定
在项目工作区建 scripts/ 目录作为流水线工作台,把本技能 scripts/ 下全部 .py 复制进去;
所有中间产物(_script.json → _play.json → _play2.json → _assets.json)与 manual.json、
scene_map.json 均放在该目录;最终 xlsx 输出到 outputs/<剧名>/。
五阶段流水线
Stage 1 · 剧本解析(脚本)
cd scripts && python parse_script.py "剧本.docx" # 支持 .docx/.md/.txt
产出 _script.json(分集元数据 / 动作行 / 台词行 / who)。检查输出:
分集数是否正确、缺「地点」字段的集是否为 0。若剧本无分集标题会按单集处理——先与用户确认集数结构。
Stage 2 · 场景骨架与子场景设计(脚本 + agent 创作)
python split_scenes.py # _script.json → _play.json(一场=一个地点段)
检查:场数、切分方式分布、动作行覆盖 100%。疑难过渡写 manual.json 后重跑。
然后进行场景资产设计(创作):主场景 A/B/C… 编号、每主场景 1–8 个子场景、
每条完整/简化提示词(16:9、高照度,见 rules.md §5)、负向提示词、区分铁律。
完成后写出 scene_map.json(地点字段 → 子场景编号映射 + subname/mainname/ie + 整场闪回人工核定表)。
Stage 3 · 时间线与连续性派生(脚本)
python derive_timeline.py # _play.json + scene_map.json → _play2.json
检查:Day 范围合理、连续性分布合理、未映射地点段=0。
Stage 4 · 资产与制片数据创作(agent,最重的创作阶段)
按 references/schema.md 的结构撰写 _assets.json:
chars(含 costumes 时间线)→ props(形制锚点 + 状态卡,提示词整段展开禁「同上」)→
scenes(Stage 2 成果结构化)→ prod(costumes 场次映射 + cells 逐场服装/外观/事件 + 铁律/待确认)。
角色外观提示词:强制先读 references/TK人物外观设计V4.6.md,其强制规则(前置提示词逐字开头、
全部角色一次出齐、人物空手、多套服装同步设计、同性别同段区分)逐条执行。
角色提示词不进设定表——生成后写入《剧名》角色生图提示词.md 或直接回复输出。
Stage 5 · 建表与自检(脚本)
python build_tables.py --out ../outputs/<剧名>
产出 设定表.xlsx(角色/道具/场景,无隐藏表)与 顺场表.xlsx(7 表)。
交付前先跑连续性自检脚本,再按 references/rules.md §7 三道关卡自检:
python self_check.py # C1 时间线 / C2 跨集昼夜 / C3 连续场换装 / C4 状态延续 / C5 触发词
脚本 ERROR 必须清零(改 _assets.json 或核定后写 manual.json 白名单销账),
WARN 逐条人工确认;再跑完关卡 C 的 7 项交叉自检(重点:整场缺 cell 告警必须清零、
公式未求值必须为 0、两表编号集合一致),全部通过才用 present_files 交付两份 xlsx。
硬约束速记(详见 references/rules.md)
- 一场=一个地点段;非现实层不占场次,括注在分场景列。
- 连续性:闪回 > 换景 > 时间跳跃 > 连续;整场闪回人工核定、宁缺勿滥。
- 角色提示词必须按 TK 规范;剧本已有外貌描述优先采用。
- 道具状态卡正文整段展开形制锚点;统一 1:1 纯白背景单件口径(UI 图层资产例外用深灰/透明)。
- 场景一律高照度,夜景也要亮(三层补光);禁止用照度区分空间。
- 单元格纯文本、禁「同上」;公式只用 SUM/COUNTA/COUNTIF/SUMIF/MAX/MIN/AVERAGE/ROUND;
交付前 evaluate + inject_cache。 - 目标文件被预览锁住时:先产出到带版本后缀的新文件,提示用户关闭旧预览后再合并,绝不阻塞交付。
Resources
scripts/parse_script.py— Stage 1 剧本结构化解析(docx/md/txt → _script.json)scripts/split_scenes.py— Stage 2 分场骨架(地点段口径,支持 manual.json 人工边界)scripts/derive_timeline.py— Stage 3 时间线/连续性/场景归属派生(→ _play2.json)scripts/build_tables.py— Stage 5 数据驱动建表(_play2.json + _assets.json → 两份 xlsx)scripts/self_check.py— Stage 5 交付前连续性自检(时间线/跨集昼夜/换装/状态延续/触发词,ERROR 清零才可交付)scripts/xlsx_cache.py— 公式求值 + 缓存注入共用模块references/schema.md—_assets.json逐字段定义(Stage 4 的撰写契约)references/rules.md— 全部口径规则与交付自检清单references/TK人物外观设计V4.6.md— 角色外观提示词强制规范(Stage 4 角色部分必须遵循)