最近入局AI漫剧的人越来越多,但很多人的第一反应是:找个画图工具生成角色,配上音、剪一剪,就是一集。实际跑完一遍才会发现,画面能生成,但人物会“漂移”——上一镜还是这张脸,下一镜就换了一个人;配音有了,但口型和画面完全对不上;分镜有了,但每个镜头的画风散得像十个导演各拍了一段。
这篇文章不讲空泛的工具推荐,而是把AI漫剧从剧本、分镜、角色设定、画面生成、配音到剪辑合成的完整流程拆开,重点讲透“保持人物一致性”这个最容易卡住新手的环节。同时会给出三份可以直接复制的脚本:分镜表生成脚本、FFmpeg批量合成脚本、人物一致性粗检测脚本。读完你至少能跑通一集3分钟竖屏漫剧的最小流程。
先说一句贯穿全文的判断:AI漫剧不是“画图”,而是“内容流水线”。工具迭代到2026年,画面生成的门槛已经很低,但能不能稳定量产,取决于你有没有把角色、分镜、配音、剪辑沉淀成一套可复用的模板。谁先完成这个沉淀,谁才能真正吃到这波内容红利。
1. AI漫剧是什么:从“画图”到“内容流水线”
AI漫剧,就是用AI生成画面、AI配音、AI辅助剪辑制作出来的连续剧集。它不需要真人演员,不需要摄影棚,角色是生成出来的,场景是生成出来的,运镜也能由AI视频模型模拟。相比传统真人短剧,它的成本结构发生了根本变化:真人短剧的大头在演员、场地、设备、群演和拍摄周期,而AI漫剧的大头在提示词工程、素材校验和后期合成。这意味着单人或者两三个人的小团队,理论上可以拥有稳定出片的能力。
但为什么很多人做了几集就做不下去?因为AI漫剧表面上是“出图问题”,本质上是“工业生产流程问题”。如果一集的剧本、分镜、画面、配音、剪辑全在不同的软件里手工搬运,那效率一定低到没法持续更新。短剧和漫剧平台的内容消耗速度是日更甚至多更,更新越慢,流量权重越差。所以凡是能做起来的AI漫剧账号,背后一定有一条固定流程,不是靠灵感支撑。
这篇文章更适合这几类人:想零基础入门AI漫剧的创作者;已经在做图文自媒体、想转向短内容视频的人;有剧本或网文经验、想低成本影视化的人;以及接单做定制漫剧的小团队。如果你完全不想控制质量,只想批量搬运或用未授权素材做低质内容,那本文帮不了你,而且这类做法在任何平台都有很大风险。
核心结论先说:AI漫剧能不能做起来,关键不在某一款工具有多强,而在于你能否把剧本到成片的整条链路变成一条“流水线”。这也就是为什么我会把一半篇幅放在流程和工程化上,另一半才放在具体操作上。
2. 完整制作流水线:剧本、分镜、配音、剪辑七道工序
AI漫剧的标准制作链路可以拆成七道工序:
| 工序 | 核心内容 | 常见工具 | 质量关键点 |
|---|---|---|---|
| 1. 剧本 | 分集大纲、人物小传、台词 | ChatGPT、Claude、DeepSeek等大模型 | 节奏快,每集结尾有钩子 |
| 2. 分镜 | 把剧本拆成镜头:镜号、景别、画面描述、台词 | 手工表格或大模型辅助生成 | 描述可执行、镜头连贯 |
| 3. 角色设定 | 建角色资产卡:外貌、服装、参考图 | 图像生成工具 + 参考图管理 | 外貌特征唯一化 |
| 4. 画面生成 | 按分镜逐镜生成静帧或短视频片段 | Midjourney、Stable Diffusion、即梦、可灵等 | 画风统一、角色一致 |
| 5. 配音 | 台词转语音,控制语气和节奏 | 剪映TTS、Azure、豆包等 | 同一角色全程同一音色 |
| 6. 剪辑合成 | 片段拼接、字幕、转场、BGM | 剪映、Premiere、FFmpeg | 节奏与画面匹配 |
| 7. 发布运营 | 封面、标题、发布时间、数据复盘 | 各大短剧视频平台 | 符合平台规则 |
这七道工序中最容易被新手忽略的是第二道“分镜”。分镜是连接剧本和画面的枢纽,也是保持人物一致性的控制点。后续的画面生成、配音、剪辑,都要以分镜表为唯一事实来源。如果分镜表很模糊,后面每个环节都会靠“猜”,最后拼出来的东西自然不连贯。
可以这样理解:剧本是“故事意图”,分镜是“生产图纸”,角色资产卡是“演员档案”。没有图纸和演员档案,你只是在用AI抽卡,而不是在制作剧集。
3. 人物一致性:为什么总是越往后越“换脸”
保持人物一致性,指的是同一个角色在一集内、乃至整部剧的几十集中,脸型、发型、服装、气质都保持稳定。观众可以接受画风有差异,但无法接受上一集还是男主A,下一集就变成了完全陌生的脸。
3.1 不一致的根源:每次生成都是一次重新采样
图像生成模型每次生成画面时,都是独立采样。即使你把同一句提示词原封不动地再输入一次,得到的脸也可能不一样,因为模型在高维空间中的采样带有随机性,同一段文本对应的并不是唯一一张图。所以,用“同一句prompt就能锁定角色”是新手最常见的误区。真正锁定角色,需要在提示词、参考图、模型参数三个层面同时发力。
3.2 三层保底方案
我是建议用“三层保底”来理解人物一致性,从轻到重分别是:
第一层:Prompt模板层。把角色的外貌、服装、标志性元素写进一张“角色卡”,每次生成画面时直接引用,而不是每次临时组织语言。这一层成本最低,能保证角色描述不漂移,但对模型来说,光靠文字约束仍然不够强。
第二层:参考图层。使用支持参考图输入的模型或插件,把角色基准图带着走。Stable Diffusion生态中的IP-Adapter、InstantID等方案就是干这件事的,Midjourney等在线工具也普遍支持垫图或角色参考功能,具体入口以官方最新说明为准。这一层是绝大多数AI漫剧项目的起步配置。
第三层:模型微调层。为角色训练一个微型LoRA,用几十张该角色的图训练一个小模型,之后生成时带上这个LoRA,脸就能稳定很多。这一层成本最高,适合长篇连载,因为角色要出镜几百次,手工控制已经不够稳定。
三个方案可以组合使用,我建议的路线是“Prompt模板 + 参考图”起步,跑通后再考虑训练LoRA。不要一上来就训练LoRA,因为需要准备素材、调试参数,而且不一定比参考图方案更快见效。
| 方案 | 成本 | 稳定性 | 适用场景 |
|---|---|---|---|
| Prompt模板 | 低 | 弱 | 快速试镜、单集小制作 |
| 参考图/垫图 | 中 | 中 | 绝大多数AI漫剧场景 |
| 角色LoRA | 高 | 强 | 长剧集、多集连载 |
4. 环境准备与工具选型
在开始实操之前,先把环境准备清楚。AI漫剧涉及的环节比较多,环境混乱会导致后面每一道工序都出问题。
4.1 硬件与系统要求
- 显卡:如果使用本地Stable Diffusion跑图,NVIDIA显卡会比较顺,显存建议8GB起步。如果全部使用在线工具,显卡要求可以忽略。
- 内存与硬盘:建议16GB内存起步。AI漫剧会产生大量图片、音频和视频片段,一个项目动辄占用几十GB空间,预留足够硬盘。
- 操作系统:Windows、macOS、Linux都可以。FFmpeg和Python脚本都是跨平台的,但FFmpeg在Windows下需要把bin目录加入PATH,或者直接用完整路径调用。
4.2 软件与账号
- Python 3.10或更高版本,用于运行分镜表脚本和一致性检测脚本。
- FFmpeg,用于批量合成视频片段,各平台可以用包管理器安装。
- 图像生成工具:选择一款在线工具或本地Stable Diffusion环境。在线工具胜在部署简单,本地环境胜在可控性强,可以固定模型版本。
- TTS工具:剪映内置TTS、Azure语音、豆包、Fish Audio等,选一款支持多音色和情绪控制的即可。
- 剪辑工具:剪映或Premiere用于最终的精细化处理,FFmpeg用于批量合成。
4.3 建议的目录结构
建议用一个统一目录管理所有AI漫剧项目,可以大幅降低出错概率:
ai-manhua/ ├── scripts/ # 脚本存放目录 ├── data/ │ ├── scripts/ # 剧本、分镜CSV │ ├── characters/ # 角色资产卡和参考图 │ ├── scenes/ # 场景参考图 │ └── output/ │ ├── fragments/ # 镜头片段 │ └── episode_01/ # 成片输出这个目录结构的好处是:分镜CSV、角色参考图、视频片段都按类型归档,脚本处理时只需要按固定路径批量扫描,而不需要到处找文件。
5. 核心流程实操:一集竖屏漫剧的完整跑法
这一节我们直接跑一集3分钟的竖屏AI漫剧最小流程。重点演示五个环节:剧本转分镜、角色卡建立、画面生成、配音命名、FFmpeg合成。
5.1 把剧本转成结构化分镜表
分镜表是整条流水线的“生产图纸”。每一行代表一个镜头,包含镜号、景别、场景、角色、台词、画面描述和预估时长。这个表格一旦生成,画面生成、配音、剪辑全部围绕它执行。
下面是一份可以直接运行的Python脚本,它能把文本格式的分镜草稿转成CSV分镜表。
# scripts/build_shot_list.py import csv import sys SHOT_FIELDS = [ "shot_id", "shot_type", "scene", "characters", "dialogue", "description", "duration", "audio_path", "video_path" ] def parse_shot_lines(text: str): """ 解析分镜草稿文本。 格式:镜号|景别|场景|角色|台词|画面描述|预估时长(秒) 以 # 开头的行会被忽略。 """ rows = [] for line in text.strip().splitlines(): line = line.strip() if not line or line.startswith("#"): continue parts = [p.strip() for p in line.split("|")] if len(parts) < 7: continue rows.append({ "shot_id": parts[0], "shot_type": parts[1], "scene": parts[2], "characters": parts[3], "dialogue": parts[4], "description": parts[5], "duration": parts[6], "audio_path": "", "video_path": "", }) return rows def main(): if len(sys.argv) != 3: print("用法: python build_shot_list.py input.txt output.csv") return with open(sys.argv[1], "r", encoding="utf-8") as f: text = f.read() rows = parse_shot_lines(text) with open(sys.argv[2], "w", newline="", encoding="utf-8-sig") as f: writer = csv.DictWriter(f, fieldnames=SHOT_FIELDS) writer.writeheader() writer.writerows(rows) print(f"已生成 {len(rows)} 个分镜,输出到 {sys.argv[2]}") if __name__ == "__main__": main()对应的分镜草稿输入文件格式如下:
# 第1集《转角遇见你》分镜草稿 # 格式:镜号|景别|场景|角色|台词|画面描述|预估时长(秒) S01E01_001|全景|城市街道|男主|今天必须找到她。|男主站在十字路口,逆光,风吹起衣角|5 S01E01_002|近景|咖啡馆|男主、女主|终于找到你了。|女主回头,目光与男主相遇|4 S01E01_003|特写|咖啡馆|女主|你是林川?|女主惊讶地睁大眼睛|3 S01E01_004|中景|咖啡馆|男主、女主|嗯,我找了你十年。|男主走近桌边坐下|5运行命令:
python scripts/build_shot_list.py input.txt data/scripts/shot_list_ep01.csv生成CSV时使用utf-8-sig编码,是为了让Excel直接打开CSV时不乱码。后续对话音、画面路径,都可以按shot_id字段回填到这张表里,用Excel或写脚本都能维护。
这里真正容易踩坑的地方是:很多人不写分镜表,直接让AI画图,画完再想“这一段配什么词”。结果台词、景别、画面三个维度完全是分散的,后期剪辑时才发现逻辑接不上。分镜表的作用不是增加工作量,而是把所有决策前置,避免返工。
5.2 用角色资产卡锁定人物一致性
角色资产卡是这个角色的“演员档案”。每次生成任何镜头的画面,都从角色卡里读取固定的外貌描述、风格锚点、负面词和参考图路径。这样即使生成工具换了,角色的描述也不会漂移。
下面是一个角色资产卡JSON模板:
{ "character_id": "male_lead_001", "name": "林川", "appearance": "25岁左右,黑色短发,刘海偏右,剑眉,脸型轮廓分明,深灰色大衣,内搭黑色高领衫", "style_keywords": "2D动画,国漫风,干净线条,高对比度光影,电影感构图", "negative_prompt": "写实照片,畸形脸,多余手指,模糊,低质量,水印,文字", "reference_image": "data/characters/male_lead_001/ref.png", "seed_base": 20260201 }使用这套角色卡时,有几个注意点:
appearance字段要写具体特征,避免“帅气”“美丽”这种抽象词。发型、发色、脸型、眉形、服装颜色都要能让人一眼识别。style_keywords是画风锚点,每一镜生成时都必须复制,不要随意增删。reference_image是生成画面时作为参考图的基准图。seed_base是基线随机种子,在同一个镜头下固定种子更容易保持一致性,但不要指望只靠seed解决所有问题。
角色卡不要频繁修改。如果中途换发型、换衣服,之前所有镜头都要重出,成本极高。建议在剧本定稿后先花时间把角色卡打磨好,后面就不要动了。
5.3 画面生成的操作要点
生成画面时,把角色卡字段作为“固定上下文”,把镜头描述作为“动作输入”,组合成提示词模板:
character card: {character_id} appearance: {appearance} action: {description} camera: {shot_type} style: {style_keywords} negative: {negative_prompt}实际操作建议遵循四步:
第一步,先用角色卡生成3到5个版本的基准图,选一张作为ref.png。这张图的质量决定了整部剧的质量,多花一点时间在这里很值得。
第二步,以ref.png为参考图,逐镜生成。不要在同一部剧里来回换工具,不同模型对“国漫风”的理解差异很大,混用会导致画风断裂。
第三步,如果某个镜头不满意,只重新生成这个镜头,不要重新生成整个角色。生成前先检查分镜表里的description,把动作描述写具体,比如“男主从阴影中走出来”而不是“男主出现”。
第四步,生图完成后,文件名按shot_id归档。例如S01E01_001_male_lead_001.png,这样后续脚本才能按分镜ID自动关联音频和视频。
5.4 配音:同一角色全程同一音色
配音环节的要点不在“用哪款TTS”,而在“音色管理”。一个角色如果在第一集是低沉的男声,第二集突然变成活泼的青年音,观众立刻出戏。
实际操作上,建议给每个角色固定一个音色模板,并把配音文件也按shot_id命名,比如S01E01_003.mp3。这样FFmpeg合成时,图片和音频文件的名字一一对应,脚本才能批量处理。TTS工具的选择以你手头可用的为准,重点是用固定的音色和语速参数生成所有台词,不要每集都重新试参数。
如果TTS在某些多音字上读错,最直接的办法是修改配音文案,比如把“重担”改成“重担(chóng dàn)”,或者换成同义表达,尽量不要在剪辑阶段手工修。
5.5 用FFmpeg批量合成并拼接成片
画面和配音都准备好之后,进入合成阶段。最稳妥的方式是先用FFmpeg把“单张图片 + 单条音频”合成一个镜头片段,再把所有镜头片段拼接成一集。
下面的脚本把单张图与单个音频合成一个视频片段:
#!/usr/bin/env bash # scripts/synthesize_fragment.sh # 用法:./synthesize_fragment.sh <图片路径> <音频路径> <输出文件路径> # 环境变量:FPS 默认 25 set -e IMG=$1 AUDIO=$2 OUT=$3 FPS=${FPS:-25} ffmpeg -y -loop 1 -framerate "$FPS" -i "$IMG" -i "$AUDIO" \ -c:v libx264 -tune stillimage -c:a aac -b:a 128k \ -pix_fmt yuv420p -shortest "$OUT"这段命令的关键参数解释如下:
-loop 1 -framerate 25 -i $IMG:循环读取静态图片,帧率设为25。-c:v libx264:视频编码使用H.264,兼容性好。-tune stillimage:针对静态图场景优化压缩参数。-pix_fmt yuv420p:使用标准像素格式,避免部分播放器不兼容。-shortest:当音频结束时,输出文件也结束,保证片段时长不超出配音范围。
生成所有镜头片段后,做拼接。如果所有片段都是用同一个命令生成的,编码参数一致,可以直接用-c copy快速拼接:
cd data/output/fragments ls fragment_*.mp4 | sort > list.txt sed "s/^/file '/; s/$/'/" list.txt > concat_list.txt ffmpeg -f concat -safe 0 -i concat_list.txt -c copy ../episode_01/ep01.mp4如果片段来源不同,比如一部分来自FFmpeg合成,一部分来自AI视频模型直接导出,编码参数不一致会导致拼接失败或黑帧。这时统一重新编码拼接更稳妥:
ffmpeg -f concat -safe 0 -i concat_list.txt \ -c:v libx264 -crf 18 -preset medium -c:a aac \ -pix_fmt yuv420p ../episode_01/ep01.mp4到这里,一集漫剧的粗剪成片就出来了。后续的字幕、转场、BGM,可以放到剪映里精细化处理。
6. 效果验证:一集AI漫剧能不能发布,这样检查
6.1 用SSIM粗检测人物一致性
人物一致性不能单靠感觉判断。这里提供一个简单的图片相似度检测脚本,用结构相似性SSIM做一个粗筛,把明显不一致的镜头挑出来。
# scripts/check_consistency.py import sys import numpy as np from PIL import Image from skimage.metrics import structural_similarity as ssim def load_resized(path, size=(512, 512)): img = Image.open(path).convert("RGB") return np.asarray(img.resize(size, Image.LANCZOS)) def main(): if len(sys.argv) != 3: print("用法: python check_consistency.py ref.png test.png") return a = load_resized(sys.argv[1]) b = load_resized(sys.argv[2]) # 注意:skimage版本较旧时可能需要使用 multichannel=True 参数 score = ssim(a, b, channel_axis=2) print(f"SSIM = {score:.4f}") if score > 0.75: print("提示: 整体相似度较高,可作为参考") elif score > 0.6: print("提示: 有一定差异,建议检查面部区域") else: print("提示: 差异明显,建议重新生成") if __name__ == "__main__": main()运行方式:
python scripts/check_consistency.py data/characters/male_lead_001/ref.png data/output/fragments/S01E01_001_male_lead_001.png必须说明的是,SSIM受构图、光照、镜头角度影响很大,它更适合用来快速筛掉“明显不同”的镜头,而不是作为人物一致性的唯一铁证。真正的严苛验证,还是要把同角色的几个关键镜头放到同一张画布里,放大后逐张观察面部特征。
6.2 发布前六项检查清单
在把成片交给平台之前,按照下面清单检查一遍,可以避免大量返工:
- 同一角色在不同镜头中的脸型、发型、服装是否一致。
- 每一镜的画风是否统一,有没有明显属于“另一个模型”的画面。
- 配音音色和语气在同角色中是否稳定,多音字是否读错。
- 字幕是否有错别字,字幕出现和消失的节奏是否与台词同步。
- BGM和音效是否使用了有授权或可商用的素材。
- 输出是否为9:16竖屏,分辨率、帧率是否统一。
7. 常见问题与排查方法
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 同一角色越往后越“换脸” | 每镜提示词不一致,未使用参考图 | 对比不同镜头的生成参数和提示词 | 建立统一角色卡,固定参考图和Seed |
| 配音与画面节奏对不上 | 台词时长与画面时长不匹配 | 检查音频时长和分镜时长 | 按音频时长重新估算镜头时长,或剪辑重排 |
| 生成画面出现多余手指、肢体结构错乱 | 基础模型对结构学习不足 | 放大局部区域,观察问题范围 | 使用局部重绘修复,或换用手部优化较好的模型 |
| 拼接后转场处卡顿或黑帧 | 片段编码参数不一致 | 对比各片段的分辨率、帧率、像素格式 | 统一参数,拼接时重新编码而不是-c copy |
| 画面风格不统一 | 混用了不同模型或风格词 | 检查生成日志和风格关键词 | 固定模型和风格模板,所有镜头用同一组参数 |
| TTS多音字读错 | 语音合成引擎识别错误 | 定位读错的台词文本 | 修改配音文案或加同音字注释 |
| 上传平台后被判低质或搬运 | 内容重复、原创性不足 | 查看平台审核规则 | 剧本和画面原创,增加片头片尾与字幕包装 |
8. 最佳实践与变现注意点
8.1 六条工程级最佳实践
第一,分镜表是唯一事实来源。画面、配音、剪辑都从分镜表派生,任何修改先改分镜表,再重新生成受影响的部分。
第二,角色资产卡先定稿再开工。不要在生成过程中频繁改发型、服装,角色卡的每一次变更都意味着大量镜头重出。
第三,命名规范大于一切。所有素材文件名统一使用shot_id + 角色ID,脚本批量处理时才能不出错。
第四,保持生成参数可复现。固定模型版本、风格词、Seed基线、参考图路径,并在分镜表里记录,不要今天用A参数、明天用B参数。
第五,让脚本处理重复劳动。TTS转语音、图片转片段、片段拼接、一致性抽检,都应该脚本化,不要在剪辑软件里手工重复几十次。
第六,用Git管理版本。分镜CSV、角色卡JSON、以及所有脚本都是文本文件,放进Git仓库,改坏了可以随时回滚。
8.2 AI漫剧变现与合规提醒
关于AI漫剧变现,我不会承诺任何具体收益。短剧类平台的常见变现方向包括流量分成、广告分成、版权分销、账号矩阵运营等,但具体结算方式和审核规则随平台政策变化很快,必须以各平台官方最新说明为准。
像红果这类以免费短剧为主要形态的平台,核心逻辑不是“你发内容就有钱”,而是“内容能留住用户,平台才愿意给流量”。AI漫剧的优势在于成本低、产能高,但用户只对“好看”的内容买单。批量生成低质内容,不仅不会有收益,还可能被平台限流甚至处罚。
合规方面需要特别注意四点:剧本要原创或获得授权;画面必须原创生成,不要直接使用未经授权的动漫角色形象;BGM和音效要使用有版权或可商用素材;发布前阅读目标平台的AI生成内容规则,许多平台要求标注“AI生成”或对AI内容有专门审核通道。
9. 总结与下一步路线
这篇文章把AI漫剧的制作拆成了七道工序,重点解决了两个问题:一是一整套可落地的制作流程,二是人物一致性的三层保底方案。如果你照着跑完一集,你会发现,真正消耗时间的不是某一款工具,而是流程中的“夹缝”——分镜不标准、素材命名乱、参数反复调整。
下一步的实践路线建议分四步走:
第一步,用你手头现有的工具,按本文流程跑通1集3分钟,目的是建立流水线而不是追求完美。
第二步,复盘每一道工序的耗时,找出瓶颈。比如,出图慢就优化提示词和批量脚本;配音慢就固定音色模板;剪辑慢就把拼接脚本化。
第三步,把成功经验沉淀为模板:分镜模板、角色卡模板、提示词模板、FFmpeg命令模板。
第四步,当项目稳定产出后,再考虑训练角色LoRA、优化画面风格、做多角色管理系统。
如果只让我给一个建议,那就是:别先追求高端模型,先跑出第一集。第一集虽然粗糙,但它会让你看清整条流水线的瓶颈在哪里——这就是AI漫剧零基础入门最实在的一步。