耗时 3 个月,我把"小说 → 漫剧视频"的全流程做成了一套 AI 系统:架构、模块与一些踩坑记录
写在前面:这篇是我个人最近做的一套 AI 漫剧自动化生成系统 的开发复盘。
不带任何"卖课/卖软件"目的,纯粹把架构、模块拆分、踩过的坑、AI 路由方案分享出来,
顺便给同样在做 "AIGC 内容生产" 方向的同学一个参考。文末会聊到目前的进度。
---
一、为什么做这件事
最近半年我陆续接触了一批做 短剧、漫剧、AI 解说视频 的创作者朋友,他们普遍面临同一个问题:
- 一部 30 集、每集 1~2 分钟的漫剧,需要 剧本拆分 → 分镜 → 找图(或抠图) → 配音 → AI 生视频 → 剪辑 → 导出
- 工具是分散的:ChatGPT 写剧本、MidJourney / 即梦 / 可灵 生图、Runway / Veo 生视频、剪映剪辑......
- 一集成片实际工作量在 6~10 小时,且素材命名、风格统一、角色一致性全靠人工维护
我自己写过一些自动化脚本来串这个流程,越写越发现:"这就是一个完整的内容生产 SaaS"。
于是干脆从架构层面重做一套 AI 漫剧系统,把上述全流程沉淀成一个可复用的产品。
整个系统目前包含 3 个端:
| 端 | 形态 | 主要使用者 |
|---|---|---|
| H5 / 小程序端 | 移动端创作 + 任务进度查看 | C 端创作者 |
| PC Web 创作平台 | 复杂分镜 / 资产 / 剪辑 | C 端重度用户 |
| PC 管理后台 | 用户、作品、积分、配置、运营 | 平台运营 / 管理员 |
下面按模块详细拆。
二、系统总览(一张图看懂业务流)
┌──────────────┐ ┌────────────┐ ┌──────────────┐ ┌──────────────┐
│ 小说/故事输入 │ → │ 核心剧情提炼 │ → │ 按集生成剧本 │ → │ 分镜结构化拆解 │
└──────────────┘ └────────────┘ └──────────────┘ └──────┬───────┘
│
┌──────────────────────┴──────────────────────┐
▼ ▼
┌────────────────┐ ┌────────────────┐
│ 资产库(角色/ │ ── 引用 / 复用 ──> │ AI 生图 │
│ 场景/道具/文件)│ │ AI 生视频 │
└────────────────┘ └────────┬───────┘
│
┌───────▼────────┐
│ 单集剪辑/导出 │
└────────────────┘
核心思路就两条:
- 结构化优先:从一开始就把 "剧本 / 分镜 / 角色 / 场景 / 道具" 全部建模成数据库实体,避免 AI 内容黑盒化
- 任务化执行:所有 AI 调用(生图、生视频、生剧本)走异步任务中心,预扣积分 + 失败退还,避免长时间阻塞
三、核心模块拆解

3.1 创作向导 / 全局设定
新建漫剧时,用户需要先完成 全局设定------这是后面所有 AI 调用的"上下文锚点":
- 画面比例:16:9(横屏)/ 9:16(竖屏)/ 1:1
- 整体风格 :真人古装 / 真人现代 / 二次元 / 三渲二 / 写实漫画 ...(关联后台
animate_system_style风格库) - 核心剧情提炼:把用户输入的小说/故事,通过 LLM 提炼出主线、人物关系、世界观
- 每集字数 / 集数 :按
每集 N 字自动计算最大可生成集数,单次最高 50 集
js
// 集数计算示意
const WORDS_PER_EPISODE = 800;
const EPISODE_LIMIT = 50;
const maxEpisodes = Math.min(Math.floor(words / WORDS_PER_EPISODE), EPISODE_LIMIT);
3.2 我的剧本 / 集数管理
每一部作品下面挂 集(Episode) ,每一集再拆分为 分镜(Storyboard / Shot):
- 集数视图:进度条 + 已生成 / 未生成 / 失败统计
- 分镜视图:构图说明、角色出场、场景、道具、台词、BGM、镜头时长
分镜是整个系统里 写最多代码 的模块------三栏布局(集数 / 分镜列表 / 详情精准编辑),单条分镜支持:
- 重新生图 / 重新生视频
- 锁定角色(保证多镜头里同一角色形象一致)
- 替换场景 / 道具
- 直接编辑 prompt(高级用户)
- 单镜头导出 / 跳过
3.3 资产库(角色 / 场景 / 道具 / 文件)
资产是漫剧 "一致性" 的命门。系统把资产分四类,统一在 animate_asset 体系下:
| 类型 | 例子 | 关键字段 |
|---|---|---|
| 角色 | 林思 / 陈队长 | 形象图、性别、年龄、性格关键词、固定 prompt |
| 场景 | 雨夜街道 / 古风酒馆 | 场景图、环境关键词、氛围 prompt |
| 道具 | 雨伞 / 玉佩 | 道具图、引用次数 |
| 文件 | 上传的剧本 / 参考图 | OSS 地址、解析状态 |
每个资产都自带 "使用频率" 统计,分镜面板里直接拖入即可关联。
3.4 AI 生图 / 生视频(StartRouter 路由)
这是整个系统最关键的模块,单独抽了一层 AI 路由 ,称为 StartRouter:
[业务请求] ──> StartRouter ──┬──> nano-banana-2-ga(生图,速度快、成本低)
├──> Veo3-Pro(生视频,质量高)
├──> 其他模型(按场景路由)
└──> 失败重试 / 降级 / 退积分
后台 AI 模型配置 页面可以:
- 给不同业务场景(角色头像 / 场景图 / 镜头视频)绑定默认模型
- 设置每个模型的并发上限、超时阈值、失败重试次数
- 查看每个模型的近 7 天 成功率 / 平均耗时 / 单次成本(积分)
这样做的好处:模型迭代不用改业务代码,运营在后台改路由即可。
3.5 任务中心
所有 AI 调用都是异步任务,落库 animate_task:
- 状态:
pending / running / success / failed / refunded - 预扣积分 → 调用 → 成功扣减 / 失败退还
- 用户在前端可以看到所有任务的实时进度(轮询 + WebSocket 双通道)
- 失败任务可一键重试
sql
-- 任务表关键字段(简化)
CREATE TABLE animate_task (
id BIGINT PRIMARY KEY,
user_id BIGINT,
work_id BIGINT,
shot_id BIGINT,
type VARCHAR(32), -- gen_image / gen_video / gen_script
model VARCHAR(64),
status VARCHAR(16),
cost_points INT,
error_msg TEXT,
created_at DATETIME,
finished_at DATETIME
);
3.6 单集导出 / 剪辑
每集所有镜头视频生成完后,进入剪辑导出页:
- 时间线编辑(视频轨 / 配音轨 / 字幕轨 / 音乐轨)
- 可直接调整每个镜头时长
- 一键添加字幕(基于剧本台词)
- 多分辨率导出(720p / 1080p / 竖屏 1080×1920)
- 导出任务同样走任务中心,避免页面挂着等
四、积分体系(不设会员等级,全部用积分计费)
这是我做的一个产品决策:不卖会员,只卖积分包。理由:
- AI 调用本身就是按量计费,会员制的 "无限用" 会被滥用
- 用户行为差异极大(有人一天生成 1 集,有人一天 30 集),会员定价不公平
- 积分包让 "大客户" 和 "轻量用户" 都有合适价位
后台 animate_points_config 维护每个动作的积分消耗:
| 动作 | 模型 | 默认积分 |
|---|---|---|
| 生成单张角色图 | nano-banana-2-ga | 3 |
| 生成单张场景图 | nano-banana-2-ga | 3 |
| 生成单镜头视频 | Veo3-Pro | 15 |
| 生成完整剧本(一集) | GPT 系 | 5 |
| 单集导出渲染 | 内部 | 2 |
animate_recharge 维护订单,对接微信支付 / 支付宝,回调成功后异步打积分。
---
五、后台管理(写得最久的部分)
后台直接决定一个 SaaS 能不能 "长期运营",这部分我写得很重:
- 数据看板:日活 / 任务量 / 收入 / AI 模型成功率 / 积分消耗 TOP 用户
- 用户管理:账号 / 积分 / 作品列表 / 异常封禁
- 作品管理:所有用户作品的分镜 / 资产 / 任务追溯
- 充值订单 / 套餐:可灵活上下架积分包
- 风格库:内置 30+ 风格预设,可继续扩充
- AI 模型配置 + 资产生成默认 prompt
- 支付配置(微信 / 支付宝)/ OSS 配置 / 登录方式
- Banner / 公告 / FAQ / 工单 / 角色权限(RBAC)/ 操作日志
数据库一共 20 多张表,全部 animate_ 前缀,方便和其他业务隔离。
六、技术栈速记
| 层 | 选型 |
|---|---|
| 前端(H5 + PC) | 自研组件 + 原生 + Lucide Icons |
| 后台前端 | 自研管理端组件库 + 表格 / 表单抽象 |
| 服务端 | Java + Spring Boot 3 + MyBatis-Plus |
| 任务调度 | 自研 + Redis 队列 |
| AI 路由 | StartRouter(自研薄层) |
| 存储 | MySQL 8 + 阿里云 OSS |
| 实时通信 | WebSocket(任务进度推送) |
| 部署 | Docker + Nginx + 阿里云 |
七、踩过的几个坑
7.1 角色一致性
最早我直接把"角色描述 + 当前镜头描述"拼成 prompt 丢给生图模型,结果同一个角色每张图都长得不一样。
后来改成 每个角色锁定一张参考图,所有用到该角色的镜头走 "图生图 + 角色 LoRA / Reference",一致性提升 80%。
7.2 视频生成超时
Veo3 这类模型单次调用 2~5 分钟很常见,HTTP 直连容易掉。
所以一开始就把它做成 任务模式 + 回调(或轮询)+ 超时熔断 + 自动重试 3 次,业务层完全异步。
7.3 积分预扣 vs 后扣
最早是 "先调用,成功后扣积分"。结果遇到大量 失败但已经消耗了模型成本 的情况------平台亏。
改成 预扣 + 失败退回:任务一进入 running 就扣,失败后通过事务退回,杜绝 "白嫖型失败"。
7.4 资产命名混乱
让用户随便起名 → 资产库到第 50 个就开始混乱。
解决:首次新建资产时强制走"资产生成向导"(输入名字 + 关键词),生成图同时落库标准化结构。
7.5 后台权限
最早后台只有"超级管理员一种角色",运营、客服、财务都共用一个账号。
重做了 RBAC:管理员账号 → 角色 → 权限点(resource:action),全部走 animate_role / animate_permission,
登录时把权限点编进 JWT,前端按钮级别控制可见性。
八、目前进度
- ✅ H5 / 小程序端创作流:完成
- ✅ PC Web 创作平台:完成(分镜三栏、剪辑时间线已能跑通)
- ✅ PC 后台 26 个核心页面:完成
- ✅ AI 路由(StartRouter)+ 任务中心:完成
- ✅ 积分 + 充值 + 微信 / 支付宝:完成
- 🟡 角色一致性二期(多 LoRA 切换):进行中
- 🟡 多语言(繁中 / 英文):进行中
- ⬜ 公开内测:准备中
如果有同样在做 AIGC 内容生产 / 短剧 / 漫剧方向的朋友,欢迎评论区交流------
特别是关于 角色一致性、视频镜头连贯性、长剧本拆分策略 这几块,我自己也还在打磨。
对架构细节(StartRouter 实现、任务中心调度、分镜数据模型)感兴趣的话,
后面我会再写几篇专题拆得更细,关注一下不迷路。
九、写在最后
做这一套系统下来最大的体感是:AIGC 落地的难点从来不是模型本身,而是"怎么把模型嵌进一条业务流里"。
- 模型每两个月就有新一代,但任务调度、资产管理、积分计费、后台权限这些东西,10 年前是怎么写,今天还是怎么写
- 真正决定产品能不能跑起来的,是"非 AI 那部分"的工程化是否扎实
如果这篇文章里某个模块对你有启发,欢迎留言交流;
有相同方向的开发者 / 创作者朋友也可以评论区扣个 "做漫剧" ,
后续我会按大家最想看的模块(路由层 / 分镜模型 / 后台权限 / 一致性方案)出深度拆解文。
完。感谢看到这里 👋