从”手工搓”第一部 AI 短剧到”日更”稳定输出,中间往往隔着一条鸿沟:工具链分散、参数不可复用、每一集都在重新摸索。本篇系统讲解如何把 ComfyUI、MiniMax H3、LTX 2.3 三大工具整合成可复用的自动化流水线,让单集生产效率从 4 小时压缩到 30 分钟以内,并支撑稳定日更。
一、引言:为什么需要自动化流水线
刚入行的创作者常遇到三个痛点:
- 参数不稳定:昨天调好的 ComfyUI 工作流,今天换个角色就得重新调 ControlNet 权重。
- 工具链断裂:ComfyUI 出图、MiniMax H3 分镜、LTX 2.3 生成视频、剪映剪辑,每一步都要人工搬运。
- 无法日更:单集 3-4 小时,一天最多做 1 集,遇到热点窗口就赶不上。
自动化流水线的目标不是替代创意,而是把重复劳动压缩到最低,让你把精力留给剧本、表演、节奏这些真正决定质量的部分。

二、核心概念:AI 短剧自动化的三层架构
一条成熟的日更流水线通常分为三层:
| 层次 | 职责 | 典型工具 |
|---|---|---|
| 内容生成层 | 剧本、分镜、画面、配音 | GPT/Claude 剧本模型、MiniMax H3、ComfyUI、LTX 2.3 |
| 后期处理层 | 剪辑、字幕、BGM、封面 | FFmpeg、剪映 API、Whisper、ElevenLabs |
| 分发运营层 | 多平台发布、数据回收、A/B | 抖音开放平台、快手开放平台、视频号 API |
其中,内容生成层是自动化 ROI 最高的部分,因为它是每集都在重复、且最容易标准化的环节。
2.1 什么是”可复用的工作流”
ComfyUI 的 JSON 工作流、MiniMax H3 的项目模板、LTX 2.3 的提示词预设,本质上都是结构化配置。只要把它们抽离为独立文件,通过参数化输入(角色 ID、剧集编号、分镜脚本),就能实现”换一个 JSON,跑出一整集”。
2.2 数据驱动 vs. 硬编码
错误的做法是把角色名、提示词、镜头时长写死在脚本里。正确的做法是用一份剧集清单 JSON 驱动全流程:
{
"series": "都市逆袭2026",
"episode": 12,
"duration_sec": 60,
"character": {
"id": "xiaoyan_v3",
"lora_path": "/models/loras/xiaoyan_v3.safetensors",
"voice_ref": "/assets/voices/xiaoyan.wav"
},
"scenes": [
{"shot": 1, "desc": "女主深夜办公室加班,眼神疲惫", "duration": 8, "cam": "slow_zoom_in"},
{"shot": 2, "desc": "电话响起,上司通知明天升职", "duration": 12, "cam": "static"},
{"shot": 3, "desc": "女主嘴角上扬,望向窗外夜色", "duration": 10, "cam": "pan_right"}
]
}
三、实战步骤:搭建一条完整的日更流水线
步骤 1:统一剧本产出格式
用大模型批量生成剧本时,务必约定 JSON Schema,让下游工具能直接解析。以下是一段用于校验剧本格式的 Python 脚本:
import json, sys
from pathlib import Path
SCHEMA = {
"series": str,
"episode": int,
"duration_sec": int,
"character": dict,
"scenes": list,
}
def validate(path):
data = json.loads(Path(path).read_text(encoding="utf-8"))
for k, v in SCHEMA.items():
assert k in data, f"缺少字段: {k}"
assert isinstance(data[k], v), f"字段 {k} 类型错误"
for s in data["scenes"]:
assert all(k in s for k in ("shot", "desc", "duration", "cam"))
print("剧本校验通过:", data["series"], "EP", data["episode"])
if __name__ == "__main__":
validate(sys.argv[1])
只要剧本符合这个格式,后续所有工具都可以无脑接入,不必为每集写专属适配代码。
步骤 2:ComfyUI 工作流参数化
ComfyUI 的 API 模式允许通过 JSON 传入参数,替代手动拖拽节点。以下是一个调用示例:
# 通过 API 提交 ComfyUI 工作流
curl -X POST http://127.0.0.1:8188/prompt
-H "Content-Type: application/json"
-d @/data/ep12/comfy_workflow.json
-o /data/ep12/comfy_response.json
# 轮询任务状态
TASK_ID=$(jq -r '.prompt_id' /data/ep12/comfy_response.json)
until curl -s http://127.0.0.1:8188/history/$TASK_ID | jq -e '.status.status_str == "success"' >/dev/null; do
sleep 2
done
echo "ComfyUI 完成,图片位于 output/images/"
关键是把 comfy_workflow.json 中的角色 LoRA 路径、提示词、种子做成模板变量,脚本在运行时替换。
步骤 3:MiniMax H3 分镜批量生成
MiniMax H3 的核心价值是剧本直接驱动分镜。批量生成时,建议用一个 Shell 循环串联 API:
#!/usr/bin/env bash
set -euo pipefail
EPISODES="10 11 12 13 14 15"
for EP in $EPISODES; do
SCRIPT="/data/scripts/ep${EP}.json"
echo "[EP${EP}] 提交 MiniMax H3 分镜任务..."
curl -s -X POST https://api.minimaxi.com/h3/projects
-H "Authorization: Bearer ${MINIMAX_KEY}"
-H "Content-Type: application/json"
-d "$(jq '. | {script: ., style: "cinematic_realism"}' "$SCRIPT")"
> "/data/h3/ep${EP}_submit.json"
TASK_ID=$(jq -r '.task_id' "/data/h3/ep${EP}_submit.json")
echo "[EP${EP}] task_id=${TASK_ID},等待渲染..."
sleep 60
done
echo "全部 EP 已提交,稍后轮询状态"
步骤 4:LTX 2.3 图生视频批量渲染
ComfyUI 或 MiniMax 输出的分镜图,直接喂给 LTX 2.3 图生视频,可以保持角色和场景一致。使用配置驱动的多镜头渲染:
# ltx_batch.yaml
model: ltx-2.3-large
base_seed: 20260916
batch:
- scene: 1
image: /data/ep12/frames/shot01.png
duration_sec: 8
motion: slow_zoom_in
guidance_scale: 5.5
- scene: 2
image: /data/ep12/frames/shot02.png
duration_sec: 12
motion: static
guidance_scale: 4.8
- scene: 3
image: /data/ep12/frames/shot03.png
duration_sec: 10
motion: pan_right
guidance_scale: 5.2
output_dir: /data/ep12/clips
# 提交批量任务
ltx-cli --config ltx_batch.yaml --concurrency 3
--concurrency 3 让多镜头并行渲染,4090 上大约 15 分钟能出 3 段 10 秒片段。
步骤 5:后期自动化——FFmpeg 一站式合成
生成好的片段、配音、BGM、字幕合并成成片,用一段 FFmpeg 脚本搞定:
#!/usr/bin/env bash
# stitch_ep.sh - 合成 EP12 成片
set -euo pipefail
EP=12
IN_DIR="/data/ep${EP}"
OUT="/data/final/ep${EP}.mp4"
# 拼接所有镜头 + 配音 + 字幕
ffmpeg -y
-f concat -safe 0 -i "${IN_DIR}/clips_list.txt"
-i "${IN_DIR}/voice/final_voice.mp3"
-i "${IN_DIR}/bgm/office_night.mp3"
-i "${IN_DIR}/subs.zh.srt"
-filter_complex "[0:v]scale=1080:1920,setsar=1[vid];
[1:a]volume=1.0[voice];
[2:a]volume=0.15[bgm];
[voice][bgm]amix=inputs=2[aout]"
-map "[vid]" -map "[aout]"
-c:v libx264 -preset medium -crf 20
-c:a aac -b:a 128k
-vf "subtitles=${IN_DIR}/subs.zh.srt"
"${OUT}"
echo "成片输出: ${OUT}"
步骤 6:一键流水线脚本
把以上步骤封装成 daily_pipeline.sh:
#!/usr/bin/env bash
# daily_pipeline.sh - AI 短剧日更流水线
set -euo pipefail
EP=${1:?用法: daily_pipeline.sh <episode_number>}
echo "==> [1/5] 生成剧本 (EP${EP})"
python scripts/gen_script.py --ep ${EP} --out /data/scripts/ep${EP}.json
python scripts/validate.py /data/scripts/ep${EP}.json
echo "==> [2/5] MiniMax H3 分镜"
bash scripts/h3_submit.sh ${EP}
bash scripts/h3_wait.sh ${EP}
echo "==> [3/5] ComfyUI 出图"
python scripts/comfy_batch.py --ep ${EP}
echo "==> [4/5] LTX 2.3 图生视频"
ltx-cli --config /data/ep${EP}/ltx_batch.yaml --concurrency 3
echo "==> [5/5] FFmpeg 合成"
bash scripts/stitch_ep.sh ${EP}
echo "✅ EP${EP} 已完成,成片位于 /data/final/ep${EP}.mp4"
四、常见问题
Q1:日更时如何保证角色一致性不崩?
核心答案是固定角色 LoRA + 参考图 + ControlNet 三件套。日更流水线里这三者必须固化到工作流模板,绝不能每集重训 LoRA。如果角色需要升级,走”新角色版本”分支,而不是就地修改。
Q2:MiniMax H3 和 ComfyUI 二选一还是都要?
推荐分工使用:MiniMax H3 负责分镜和长视频节奏(剧本到镜头),ComfyUI 负责画面质量微调(LoRA 精细控制、特定画风)。两者不冲突,串联使用反而互相补足。
Q3:LTX 2.3 图生视频的镜头衔接跳变怎么办?
关键在首尾帧衔接。可以在 FFmpeg 阶段加入 0.3-0.5 秒的交叉溶解过渡:
ffmpeg -i shot01.mp4 -i shot02.mp4
-filter_complex "[0:v][1:v]xfade=transition=fade:duration=0.4:offset=7.6[out]"
-map "[out]" -c:v libx264 -crf 20 out.mp4
Q4:并发渲染 GPU 爆内存怎么办?
--concurrency 参数按显存调整:24G 显存建议 3,48G 建议 6。同时监控 nvidia-smi,出现 OOM 立即降并发。
Q5:自动化之后如何避免”机械感”?
在关键镜头保留人工介入点。建议在流水线中设计 3 个 Review Gate:剧本初稿、分镜首镜、成片配音,人工过这三关,其余环节全部自动化。
五、总结
从单集手工到日更流水线,本质是把创意从执行中剥离:
- 创意留在剧本和关键镜头设计里;
- 重复劳动交给脚本、API、YAML 配置;
- 三层架构(内容生成 / 后期处理 / 分发运营)独立演进;
- Review Gate 保证人工把关关键节点。
跑通这套流水线后,单集生产时长可以从 4 小时降到 30 分钟以内,并且换剧不需要重写脚本——只要替换剧集清单 JSON。这才是 AI 短剧从”手工活”进化到”内容工厂”的分水岭。
下期预告:第 30 天《AI 短剧精通之路——总结、避坑与进阶规划》,全系列收官篇,回顾 30 天学习路径,梳理常见踩坑清单,并给出下一阶段的进阶规划路线。
















暂无评论内容