☰
AI短剧制作全流程:从小说到成片的Toonflow实战指南
2026/10/10 1:14:28 网站建设 项目流程

简介:Toonflow是一款基于AI的一站式短剧/漫剧生成工具,可将小说自动转化为剧本,并结合AI生成的图片与视频完成成片输出,适合内容创作者、独立团队及对AI内容生产工具感兴趣的开发者。该压缩包共190个文件,总计约9.93MB,以TypeScript源文件(ts)为主,覆盖核心生成逻辑;png/jpg图片素材用于界面或示例展示,yml/json配置项便于调整运行参数,md/txt文档辅助理解项目结构,另有Dockerfile、dockerignore、gitignore等部署环境文件,以及html入口与ico图标,整体目录结构清晰,便于按模块检索。目前已有345人学习/下载。对于关注AI短剧自动化流程的读者,可通过ts源码理清从剧本拆解到视觉合成的工程实现,也可利用Dockerfile与yml配置快速搭建运行环境,免除手动安装依赖与参数调优的繁琐。无论想直接生成短剧素材,还是深入研究AI辅助内容生产,这份资源都具备参考价值。

1. 当"一口气读完"变成"一口气放完":Toonflow 把小说变成短剧的完整链路

短剧剧组最贵的从来不是演员,是试错。一部小说改成短剧,老流程要拆书、写剧本、画分镜、找景、拍摄,两三个人没日没夜也得两三周才出第一集样片,拿去投流,题材不对,预算烧了大半。Toonflow 这类 AI 短剧漫剧工具,把这条链路压成"小说进、成片出":先把小说拆成可拍摄的分集剧本,再按剧本生成角色一致的 AI 图片,最后让静态图动起来,配好对白和音效,合成一集能投流的漫剧。它不替代后期导演,而是把"验证剧情能不能火"的成本降一个数量级。适合短剧编剧、漫画博主和 MCN 项目组,前提是接受 AI 画面有自己的脾气。

2. 小说 zip 到分集剧本:Toonflow 的剧本化改写与三个必调参数

2.1 为什么不能把整本小说直接丢给大模型

看到"AI 写剧本",很多人第一反应是写一段提示词,把整本小说塞进对话窗口。这个做法看着省事,实际上翻车率极高。最硬的理由是上下文窗口:一部几十万字的小说,没有哪个对话模型能一次性读完,强行塞进去,它丢掉前面三分之一的剧情线,写到后面人物动机全对不上。其次是表达形式,小说有大量心理描写和环境铺陈,这些不能直接拍摄,剧本要的是场景、动作、对白。把心理描写转成对白,需要对人物语气做二次创作,做不好,整本小说都会变成"人物复读机"。

Toonflow 的处理方式是"先拆再写"。它先按场景切换、视角变化、冲突密度把小说切分成段落,再做三件事:把叙事段落改成场景标题和动作指示,把心理描写改写成带潜台词的对白,把长句拆成适合短视频节奏的短句。这背后是多 AI 协作的思路——文本模型负责理解和改写,规则引擎负责切分和校验,整套流程像一个 AI agent 在替你干编剧助理的活。想自己搭类似流程,核心是把"拆分"和"改写"分成两个独立步骤,中间用结构化的 JSON 接力,后续所有环节都依赖这个中间产物。

很多人还会把"剧本化"误解成"写剧情摘要",这是另一个常见误区。摘要省略了所有可直接拍摄的信息,而 Toonflow 输出的剧本要保留场景地点、人物走位、镜头提示,这是为后面生图准备的语义接口。你检查输出时如果发现只有故事梗概,说明剧本化这一层没跑对,应该回到配置检查,而不是硬着头皮往下走。

2.2 解压与目录结构:先读使用说明,再动配置

从网上下到的 toonflow 是 zip 压缩包,解压之前先看文件名末尾的标识,解压到全英文路径。中文路径在模型加载阶段会引出各种玄学错误,第 5 章我会专门讲。解压后常见的目录结构是这样:

toonflow/ ├── configs/ # 全局配置文件 ├── models/ # 文本与图像模型权重 ├── novels/ # 放小说源文件 ├── output/ # 剧本、分镜、成片输出 ├── scripts/ # 命令行入口与工具脚本 └── README.md # 使用说明

拿到包后别急着跑,先读使用说明,重点看三处:模型权重放哪个目录、配置文件用哪个名字、运行环境要 Python 还是独立可执行文件。很多 zip 包解压后跑不起来,不是软件坏了,是没把模型文件放到指定位置。models 目录如果依赖外部下载,通常会放一个清单文件,逐行对照补缺。

我习惯解压后先跑版本命令验证环境:

# 验证可执行文件与依赖是否就绪 toonflow --version

能正常打印版本号,说明可执行文件、依赖库、模型路径都没问题;如果报错,先看是不是缺运行库,其次检查 Python 版本,最后核对模型目录。这一步成本最低,能拦下一大半后续问题。失败时看到什么信息很关键:报 "module not found" 是依赖缺失,报 "cannot allocate memory" 通常是权重没放对路径,报 "permission denied" 是权限问题,别一股脑重新安装,先看报错再决定动作。

2.3 剧本化的三个必调参数:集数、时长与对白密度

剧本化环节最值得动手的不是提示词,而是配置文件里的三个参数。这是整个流程的地基,改错任何一个,后面生图、生视频都会连锁返工。

# configs/novel_to_script.yaml novel: source: "./novels/青玉案.txt" encoding: "utf-8" script: episodes: 12 # 总集数 episode_minutes: 1.5 # 单集时长(分钟) dialogue_density: high # 对白密度 low/medium/high

第一个参数 novel.source,小说文件路径,注意编码。中文小说很多是 GBK 编码,另存为 UTF-8 再导入,读取阶段能少吃苦头。

第二个参数 script.episodes,决定拆成几集。判断依据是总字数除以单集可容纳信息量:一集 90 秒短剧大约能讲 1500 到 2500 字剧情,一部 3 万字中篇拆 12 到 15 集合适。拆太少,单集密度过高,观众看着累;拆太多,剧情被稀释,每集结尾没有钩子。如果你改大 episodes,后续每天要生成的镜头数量会成倍增加,要给足生成时间预算。

第三个参数 script.episode_minutes,单集目标时长。短剧通常压在 90 秒到 3 分钟。这个参数不只管时长,还决定分镜数量——我按"每 10 秒一个有效镜头"折算,90 秒就是 9 到 10 个镜头,这个数量会一路传导到生图阶段。想控制成本,先把时长压短,而不是降低分辨率。

第四个是 script.dialogue_density,对白密度,取值 low、medium、high。高密度适合恋爱、家庭伦理题材,观众靠台词理解剧情;低密度适合动作、玄幻题材,靠画面和字幕叙事。这个参数直接决定剧本里对白和动作指示的比例,也决定后面要不要走数字人驱动的视频路线。

2.4 跑通剧本生成:一行命令与输出检查

配置改好后,运行剧本化这一阶段:

# 只跑到剧本生成,不继续生图,方便先确认质量 toonflow run --config configs/novel_to_script.yaml --stage script

--stage script 表示只跑到剧本生成,不继续生图。第一次跑建议只到这里,确认剧本质量过关再往下走。命令结束后进 output 目录看结果。

输出通常是按集数拆分的 JSON 或 Markdown,含场景编号、内外景标记、人物列表、动作指示和对白。检查剧本只看四件事:第一,每集结尾有没有留钩子;第二,人物说话的语气有没有区分度;第三,对白里有没有不适合口语的书面词;第四,场景标记是否跟小说时间线一致。这四个问题在文本阶段发现,改起来成本最低,等图生成后再改就是灾难。

提示:小说本身节奏慢,前两集还没有冲突,不要指望 Toonflow 自己把高潮提前。它做切分和改写,不做重新编剧。剧本结构有问题,人工调整比换提示词更有效。

3. 剧本到画面:用 Toonflow 生成角色一致性图片的配置思路

3.1 角色卡:让同一张脸不再漂移

短剧最劝退观众的,是主角每一集换一张脸。Toonflow 解决一致性靠角色卡:每个主要角色一份 JSON 配置,记录参考图、绑定模型和固定提示词,生图时注入到每个分镜的参数里。

{ "_comment": "角色卡配置,reference 为参考图,lora 为角色专属模型", "role": "苏晚", "reference": ["ref/suwan_front.png", "ref/suwan_side.png"], "lora": "models/lora/suwan_v3.safetensors", "prompt_prefix": "1girl, black hair, cold expression, hanfu", "negative_prompt": "blurry, extra fingers, distorted, watermark" }

reference 是角色参考图列表,最好是同一人物正面和侧面各一张,光源均匀、脸部占比大。参考图质量直接决定一致性上限,网上随手找的人物图看不清脸,模型学不到稳定特征。lora 是角色的专属模型文件,如果 Toonflow 支持外挂 LoRA,优先训练一个,训练素材用参考图加十张左右同角色同风格剧照。prompt_prefix 是每张角色图都会加的正面提示词,写服装、发型、表情基调,不写场景。negative_prompt 把容易翻车的手指、模糊、水印写死。

人物越多,角色卡越多,生成耗时成倍涨。两个主角加一个反派差不多是单集漫剧的极限。我给项目建角色卡时严格控制数量:戏份少于三场的配角不建卡,直接用描述性提示词生成,省出来的时间投给主角。

这套逻辑也可以借用到手动流程里。我自己搭 ComfyUI 工作流时模仿了同样的结构,用角色卡拼 prompt,效果稳定。区别在于 Toonflow 会把角色卡自动读进每个分镜,不用手工拖线,批量场景省很多事。角色卡文件一定要纳入版本管理,改了参考图或 lora 版本,整个项目的一致性都会变。

3.2 分镜 prompt 自动生成:一个能抄的小脚本

剧本文件里的场景描述是混合文本,直接拿去生图效果很差。落地做法是写个小脚本,把每个分镜提取成结构化绘图指令。这是我常用的模板:

import json def build_prompt(shot, role_cards, style): role = role_cards.get(shot["character"], {}) prompt = ", ".join(filter(None, [ role.get("prompt_prefix"), # 角色特征 shot.get("location"), # 场景地点 shot.get("action"), # 人物动作 shot.get("emotion"), # 情绪状态 style, # 全局画风 ])) negative = role.get("negative_prompt", "blurry, extra fingers") return {"prompt": prompt, "negative_prompt": negative} shot = { "character": "苏晚", "location": "古宅庭院", "action": "站在石阶上回头", "emotion": "眼神冷漠", } role_cards = json.load(open("role_cards.json", encoding="utf-8")) print(build_prompt(shot, role_cards, "anime style, high detail"))

这个脚本干了一件关键的事:把提示词拆成固定槽位。角色特征从角色卡读,场景、动作、情绪来自剧本,画风是全局常量。好处是后面要换画风,只改 style 一个变量,不用逐条改提示词。跑批时你会发现,提示词结构化后出图稳定性比手写长句高不少,这也是提示词工程里的常识性技巧。

参数说明:shot 是单个分镜字典,字段名需要与 Toonflow 导出的剧本 JSON 对齐,常见坑是字段名叫 emotion 还是 emotion_desc,不一致时返回空字符串,提示词里就少一块信息,图片情绪会偏。所以脚本里最好加一层字段映射,兼容两种命名。role_cards 是角色卡集合;style 是画风常量,比如 anime style 或 ink painting style。脚本输出的值用作建议,和 Toonflow 默认提示词拼接,保留自带的画质修饰词,而不是完全覆盖。

3.3 生图参数:按短剧交付标准取舍

短剧成片是竖屏 9:16,生图分辨率按 1080x1920 出,别按横屏 16:9。这组参数是我验证过的档位:

参数推荐值说明
分辨率1080x1920竖屏短剧标准,缩放后细节不糊
采样步数28~32低于 25 步容易出结构崩坏图
CFG5.5~7过高画面发硬,色彩过饱和
batch size1~2显存不够时只出 1 张
输出格式PNG后续视频生成需要无损底图

采样步数不是越高越好,40 步以上画面细节没有明显提升,耗时涨一半。CFG 是提示词跟随度,短剧画面追求干净,7 以下表现好。中间产物 PNG 别转 JPG,图生视频环节对底图质量敏感,JPG 压缩痕迹会被放大到视频里。

生图失败率一般两到三成,参数调好也一样。不要逐张重试,按分镜编号比对,只重试失败的分镜。同一场景出现过的镜头,底图可以复用,多集之间调用同一张角色立绘,既省时间又保一致性。这也为第 6 章的批量复用埋下伏笔。

4. 静态图到短剧成片:AI 视频生成、配音与 ffmpeg 合成

4.1 图生视频与数字人驱动:对白密度决定路线

剧本变成静态图后,下一个大坑是让画面动起来。Toonflow 给两条路线:图生视频和数字人驱动。图生视频是给一张图加镜头运动,推近、拉远、人物转头,适合动作场面和环境交代。数字人驱动是给定脸图和音频,让口型和表情与对白同步,适合大量对话镜头。

选择依据看对白密度。对白密度 high 的恋爱短剧,八成镜头是人物对话,全走图生视频会非常别扭,对话时嘴不动,观众出戏。密度 low 的玄幻短剧以动作场面为主,全走数字人又显得呆板。我一般混合使用:对白镜头走数字人,动作镜头走图生视频。Toonflow 的编排页通常允许为每个分镜指定路线,保存后生成两组素材,合成阶段拼接。

把整个链路看成一条 AI agent 流水线更清楚:文本模型出剧本,图像模型出底图,视频模型负责运动,各干各的,最后合成。实际跑这种多条生成管线时,要注意它们对显存和时间的占用不是线性的,两个任务同时跑可能互相拖慢,生产环境里我会给不同路线分配不同时段。

要坦然接受:当前视频模型对复杂动作支持有限,人物全身跑动、快速打斗,生成结果经常肢体变形。遇到这种镜头,切成两三个短镜头分别生成,宁可多几个转场,不要一个长镜头崩坏。另外,配音环节不要用平台默认语音,短剧对白情绪要求高,找一个支持情感控制的配音模型,语速参数压到接近日常说话,避免"播音腔"出戏。

4.2 合成参数:分辨率、帧率、码率怎么给

合成阶段是全部环节里最不性感但最不能出错的一步。AI 生成的视频片段时长参差,分辨率和帧率不统一,直接拼接会出现跳帧、黑边、音画不同步。先统一参数:

参数数值原因
分辨率1080x1920平台竖屏标准
帧率30fps动作平滑基础,再高浪费体积
视频码率8~10Mbps画面干净且体积可控
音频码率192kbps AAC对白清晰,兼容性好

参数之间有联动:分辨率升到 4K,码率不跟着升,画面反而模糊;码率升太高,文件体积暴涨,投流平台转码后不一定保留细节。我一般先定分辨率和帧率,再按每条片子估码率,8Mbps 起步,画面有噪点多给到 10。音频按对白量决定,192kbps 是稳定值,低于 160 对白会有齿音感。

4.3 一条 ffmpeg 命令拼出成片

合成时把视频和音频分开处理,最后合成。下面这条命令接近我的日常操作:

# 视频与音频合成,叠加中文字幕,输出 30fps 成片 ffmpeg -i ep01_video.mp4 \ -i ep01_audio.wav \ -vf "subtitles=ep01.srt:fontfile=/usr/share/fonts/SourceHanSansCN.ttf" \ -c:v libx264 -crf 20 -preset medium -r 30 \ -c:a aac -b:a 192k -shortest \ ep01_final.mp4

这条命令做的事:读入视频和音频两个输入,给视频叠加字幕(字体指定为中文字体),用 libx264 编码,CRF 值 20 保证画质,AAC 编码音频,-shortest 让输出在较短的输入流结束时停止。

参数说明:-crf 是画质控制,数值越小质量越高,20 是质量与体积的平衡点,要求更高可调 18;-preset 决定编码速度,medium 是默认档,批量导出换 faster 提速;-r 30 强制输出帧率 30fps;-shortest 关键,视频和音频长度不一致时,防止视频播完音频还在响。字幕字体必须用支持中文的字体文件,ffmpeg 默认字体遇到中文输出方块,这个坑出现的频率比预想高。报错时先看字体路径是否存在,再看 srt 编码是不是 UTF-8,这两项是字幕环节最常见的失败点。

导出一集后先播一遍检查三处:字幕有没有串位、口型与音频对不对得上、首尾有没有黑帧。三处 OK 再进批量导出。

5. Toonflow 翻车排查:5 个高频坑与对应的解决手段

5.1 坑一:解压路径带中文,模型文件加载失败

现象:zip 包解压到"短剧工具"文件夹里,运行时报错 failed to load model weights。

原因:部分模型加载库对非 ASCII 路径支持不好,中文路径拼接模型路径时编码乱掉。这个问题在 Windows 上尤其高频。

解决:把整个 toonflow 目录挪到纯英文路径,比如 D:\toonflow,重新解压模型文件。路径中不要有空格,空格同样触发同类问题。挪完跑一次 toonflow --version 验证。以后每拿到一个 zip 包,第一动作就是在英文路径下解压,省得后面排查。

5.2 坑二:同一角色在不同分镜里长相漂移

现象:第 3 幕出场的主角和第 1 幕判若两人,发型一致但五官对不上。

原因:角色卡 reference 图质量不够,或者 prompt_prefix 里没固定发型、瞳色等稳定特征。另一个常见原因是某个分镜漏配角色卡,生图退化成纯文本提示词。

解决:先查该分镜输出日志里有没有加载角色卡;再查 prompt_prefix 是否覆盖发型、瞳色、服装三个特征。写死这三项,不要靠 1girl 这种泛词。漂移仍严重,收集同一角色 10 张出图,训练专属 LoRA,这是目前最可靠的一致性方案。注意训练素材不要混入其他角色,会串脸。

5.3 坑三:视频生成阶段爆显存

现象:图生视频跑到一半进程崩溃,报 CUDA out of memory。

原因:显存不够。视频模型比图像模型吃显存多一个量级,单张 1080x1920 底图加 2 秒镜头就可能顶到上限。

解决:两条路。一是在视频设置里把生成分辨率降到 720x1280,生成完再在合成阶段放大;二是把镜头拆短,单次生成 2 秒以内,分段生成再拼接。条件允许时把推理线程数设为 1,减少显存占用。这是硬件上限,不是配置错误,换大显存卡才是一劳永逸。

5.4 坑四:对白字幕与音频整体错位

现象:成片里字幕比声音早半秒出现,全程稳定错位。

原因:视频生成时按 30fps 估算时长,但某个片段实际输出 29.97fps,微小偏差在几十秒里被放大成半秒到一秒。另一种情况是 srt 时间戳以剧本预估时长为基础,而配音实际时长不同。

解决:先用 ffprobe 查看成片实际帧率:

ffprobe -v error -select_streams v:0 \ -show_entries stream=avg_frame_rate \ -of default=noprint_wrappers=1:nokey=1 ep01_final.mp4

如果输出显示 30000/1001,说明就是 29.97fps。再用 4.3 节的命令强制 -r 30 统一帧率。字幕文件按实际音频时长做一次归一化。想根治,把字幕生成从剧本阶段挪到配音完成后,按音频波形切时间轴。

5.5 坑五:AI 配音断句错误,语气全偏

现象:台词没写错,但配音断句在奇怪位置,告白被读成审讯。

原因:配音模型按标点和空格断句,剧本化时为了短句节奏,把长句拆太碎,标点位置切断了语义。

解决:配音前跑一条断句修正脚本,把不适合断句的逗号替换成空格或删掉。剧本阶段就要注意对白是否适合口语朗读,书面语和口语断句习惯不同。配音生成后抽听前三条确认语气,再批量跑,别把一百集对白一次性喂进去。

6. 批量短剧生产:Toonflow 的并发、缓存与质量档位怎么调

6.1 并发与重试

批量生产阶段最先改的是并发数。Toonflow 默认并发偏高,八条任务并行,小显存直接爆。单卡 16G 显存,并发 2 比较稳。更稳妥的是串行生成、并行下载素材,把显存留给推理。同时开失败重试,网络波动导致模型下载中断很常见,重试能省掉盯盘时间。我习惯加重试上限并做通知,连续失败三次就发提醒,而不是无限重试。

6.2 复用与档位

第二个值得投入的是缓存复用。同一个场景、同一个角色多集反复出现,底图存档复用。第一次跑全部镜头,把通过的底图按角色和场景归入复用库,后续集数的同场景镜头直接取用,单集成本能降不少。质量档位也要分:第一轮全部走快速档,粗剪验剧情;剧情值得投放后,再对关键镜头用高精度档重出。这个策略把测试集成本砍掉一半。没有哪个 AI 工具能又快又好又便宜,要分批加码。

这条流程上我栽过的最大跟头,是第一次批量导出把所有分镜都按最高质量生成,结果一个反转剧情的分镜构图失败,整个场景要重出,预算白烧。此后我坚持先粗后精,粗剪确认剧情线成立再用高精度重出关键镜头。希望这个习惯对你有用,希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询