本节摘要:全书最后一步:把"我电脑上能跑的脚本"变成"别人接手也能跑的管线"。本节给出三段演进:个人脚本(能跑就行)到项目模板(复制即可开新片)到团队管线(不看原作者的脸色也能跑),每段的判据与改造点。配置模板化是第一改造点:路径、模型、风格包、门禁阈值收进单一配置文件,密钥永远走环境变量;资产库是第二改造点:字体、音效、音乐、角色卡、参考图统一结构与登记(来源与许可字段承接第 8.2 节),风格包让"换一部片子的画风"变成换一个压缩包;复用与迭代讲变更纪律:改模板先小样验证再全量。最后以一张交付清单收束全书:源件、中间产物、成片变体、三类台账、文档、合规记录六类齐备,配一个存在性检查脚本——清单全绿,这条管线才算真正交付。
第一段,个人脚本期:所有东西揉在一个目录里,路径写死在代码中,跑通就是一切。这个阶段不必羞愧,每个项目都从这里开始,但要留退路——把经验值写成常量放在文件顶部(第 6.3 节的 PAD 与 MIN_SEC 就是这个习惯)。第二段,项目模板期:把上一部片的目录原样复制,改配置开新片。改造点是把"每部片会变的"(一句话设定、角色表、风格包、目标平台)与"基本不变"(技能、检查、队列逻辑)分开,前者进配置,后者进模板。第三段,团队管线期:判据只有一条——接手的人不问原作者也能从零跑通并出片。这一段补齐的是文档、台账与环境说明,也正是本节交付清单的内容。
一切可变项收进一个配置文件,全管线只认它:
# config/project.json —— 项目配置单一来源(结构与取值示意) { "project": "雨夜系列", "paths": {"build": "build", "clips": "build/clips", "audio": "audio", "deliverables": "deliverables"}, "models": {"llm": "以服务商档位为准", "t2v": "以服务商档位为准", "tts": "本地或 API", "asr": "medium"}, "style_pack": "assets/styles/rainy_neon_v3", "audio": {"cps": 4.3, "gap_sec": 0.6, "lufs_target": -14}, "subtitle": {"max_chars": 16, "min_dur": 1.2, "max_dur": 6.0}, "gate": {"duration_s": 60, "resolution": [1080, 1920], "lufs_band": [-16, -13]}, "delivery": {"variants": ["vertical", "horizontal"], "badge_text": "AI 生成内容"} }
两条铁律:其一,密钥永不入配置文件与代码,一律环境变量(第 6.1 节已示范);其二,散落的数值(字幕规则、门禁阈值、音频口径)全部迁入配置——它们在第 6.2、7.2、10.3 节各出现过一次,交付前的最后一次重构就是把它们收拢到这一处。改配置不改代码,是模板能被安全复用的前提。
资产库统一结构,每个子目录自带登记表:
assets/ fonts/ 字体文件(含许可说明,商业授权凭证存 licenses/) sfx/ 音效(登记:来源、许可、可否商用) music/ BGM(登记:来源、许可、署名要求) chars/ 角色卡(登记:版本、三视图清单、定稿日期) ref/ 参考图与空镜(承接第 8.2 节 provenance.json) styles/ 风格包目录
风格包是资产库里的"可插拔画风":一个目录或压缩包,内含风格前缀、负面词、字幕样式模板、色调参数与默认 seed 策略(第 9.2 节的全部资产)。换风格包等于换一部片子的视觉基调——新系列开题时,先做风格包再写剧本,是模板期的正确顺序。资产登记的许可字段直接服务发布合规(第 11.1 节的授权核对),登记缺失视同资产不存在。
模板复用中最危险的动作是"顺手改一下提示词模板"。纪律是小样验证:任何对风格前缀、负面词、生成参数的修改,先在固定的三个测试镜头(特写、中景、全景各一)上出小样,人眼确认无连锁反应(一致性、质感、字幕位),再合入模板并更新版本号。变更记录一行不落:改了什么、为什么、谁批准。这条纪律的成本是十分钟小样,收益是避免一部片二十个镜头集体跑偏的事故——返工与重跑的账,第 10 章已经算得很清楚。
一条管线的交付物分六类,齐备才算交付:
| 类别 | 内容 | 来源章节 |
|---|---|---|
| 源件 | 一句话设定、script.json、shotplan.json、prompts.json | 第 02、06、09 章 |
| 中间产物 | 镜头视频、锚点表、asr_fixed.json、cues.json、manifest | 第 03、06~08 章 |
| 成片变体 | 双比例视频、封面、标题简介与标识文案 | 第 11.1 节 |
| 台账 | 成本流水、废片台账、质量分、产能日志 | 第 09、10 章 |
| 文档 | 运行手册(环境、命令、常见故障)、变更记录 | 本节 |
| 合规记录 | 查证台账、素材授权表、标识方式记录 | 第 08、11 章 |
# delivery_check.py —— 交付清单存在性检查(全书的最后一道验收) import os CHECKLIST = [ "build/script.json", "build/shotplan.json", "build/prompts.json", "build/anchors.json", "build/manifest.json", "build/output.ass", "audio/final_audio.wav", "deliverables/vertical/video.mp4", "deliverables/vertical/labels.txt", "docs/RUNBOOK.md", "docs/CHANGELOG.md", "ledger/cost_events.jsonl", "ledger/reject_log.jsonl", "ledger/quality_log.jsonl", "ledger/compliance.json", ] def main(): missing = [p for p in CHECKLIST if not os.path.exists(p)] for path in CHECKLIST: print(("通过 " if os.path.exists(path) else "缺失 ") + path) if missing: print("缺少: " + "; ".join(missing)) else: print("交付清单齐全") raise SystemExit(1 if missing else 0) if __name__ == "__main__": main()
回望全书:第 01 章立流水线总纲,第 02 章把故事变成结构,第 03 章生成画面,第 05 章把它们排上时间线,第 06、07 章给片子声音与文字,第 08 章让流程自己跑起来,第 09 章从一条走到一批,第 10 章给质量与成本立账,本章把一切打包交出。交付清单全绿的那一刻,你交出去的不只是一部片,而是一座能持续出片的厂。
本书到此收束。附录 A 的术语表、附录 B 的工具速查与附录 C 的练习题,供你回头查检与练手——流水线这门手艺,终究要在自己的项目里长出来。