如果你在找 ai 批量生成视频的软件、工具,或想知道 ai 如何批量出视频,2026 年的路线通常不是找一个大而全的按钮,而是把批量AI视频生成拆成「文案进、成片出、对账、续跑」四段。huasheng-cli 是花生AI 云端服务的命令行客户端,覆盖「文案到成片」这一段,适合用 shell 和退出码做批量;MoneyPrinterTurbo 是本地全链路路线,批量靠自己写脚本调;capcut-mate 是 FastAPI 服务,产出剪映草稿,天生适合被 n8n / Coze 编排;Premiere MCP 驱动本机 Premiere,定位是精修既有工程,不适合无人值守跑批。做 ai 剪辑生成批量原创短视频,难点不在调通一次,而在跑一晚上、挂了能续、不重复扣量。
用退出码驱动:ai如何批量出视频
hs 是单个自包含二进制,不需要 Node 或 Python 运行时。基础出片命令:
bash
hs make --script "西湖三个冷知识" --yes --out ./out.mp4
hs make --script @script.txt --yes --out ./video.mp4
@script.txt 从文件读长文案,--yes 放行分镜确认,--out 逐条落盘。hs make 的退出码是批处理的关键:0 完成,3 等待批准,4 失败,5 触发安全上限,6 账户可用量不足。
下面这条循环从文案目录逐条出片,已存在即跳过,并把 pid 记到状态文件供续跑:
bash
#!/usr/bin/env bash
set -u
SCRIPTS_DIR=./scripts
OUT_DIR=./out
STATE_DIR=./state
mkdir -p "$OUT_DIR" "$STATE_DIR"
for script in "$SCRIPTS_DIR"/*.txt; do
id=$(basename "$script" .txt)
out="$OUT_DIR/$id.mp4"
json="$STATE_DIR/$id.result.json"
[ -f "$out" ] && { echo "skip $id: out exists"; continue; }
hs make --script "@$script" --yes --out "$out" --json > "$json" 2> "$STATE_DIR/$id.err.log"
rc=$?
case $rc in
0) pid=$(jq -r '.pid // empty' "$json")
[ -n "$pid" ] && echo "$pid" > "$STATE_DIR/$id.pid"
echo "done $id pid=$pid" ;;
3) echo "need review $id: see $json" >&2; exit 3 ;;
4) echo "failed $id" >> "$STATE_DIR/failures.log" ;;
5) echo "safety_limit $id" >> "$STATE_DIR/safety.log" ;;
6) echo "no_quota $id" >> "$STATE_DIR/quota.log"; exit 6 ;;
esac
done
关键不是把 hs make 跑起来,而是把五种退出状态分开处理。6 是花生AI 服务端对账户可用量的判断,不是本地崩溃,遇到它应停下来而不是继续提交后续任务。
用 --json 取 pid 与状态
所有命令都支持 --json,字段是 snake_case------脚本里不要去解析人类可读的彩色输出。失败时统一信封:
json
{"error":{"code":"CONFIRM_REQUIRED","message":"...","retryable":false,"suggested_action":"confirm","next_command":"hs plan confirm --pid ... --yes"}}
三条控制规则:① 遇 CONFIRM_REQUIRED 停下来问人,绝不自动补 --yes------自动放行会形成不可控的批量消耗;② applied: false 不是失败,表示片段操作还在跑,继续用 hs wait 等状态推进;③ hs wait 返回 timed_out: true 就再调一次,超时不等于失败。
断点续跑与幂等:批量要盯 clip_id
续跑不是「从第 1 条重跑」,而是靠 pid(15 位):
bash
pid=$(cat "$STATE_DIR/example.pid" 2>/dev/null || true)
out="$OUT_DIR/example.mp4"
if [ -n "$pid" ] && [ ! -f "$out" ]; then
hs make --pid "$pid" --yes --out "$out"
fi
为什么不用「第 3 个片段」当主键?因为 hs clip split、hs clip add、hs clip rm 都会让后续位置编号漂移。自动化应优先用 9 位 clip_id,hs clip ls 里两者都能拿到,脚本只持久化 clip_id,位置留给人看。
对账用 hs project ls --json,把本地出片文件、状态文件里的 pid、远端项目列表三者对平,批量任务才是可审计的。字段可能随版本变化,上线前先跑一次 hs project ls --json | jq . 看结构。花生AI 服务端按 pid 恢复任务,同一 pid 不会重复发起新生成,这是续跑能幂等的基础。
同类项目对照:ai批量生成视频的工具有哪些
四个项目处在自动化链路的不同位置,不是四个同功能产品。仓库依次是 github.com/superlcr/huasheng-cli、github.com/harry0703/MoneyPrinterTurbo、github.com/Hommy-master/capcut-mate、github.com/hetpatel-11/Adobe_Premiere_Pro_MCP。
| 维度 | huasheng-cli | MoneyPrinterTurbo | capcut-mate | Premiere MCP |
|---|---|---|---|---|
| 无人值守条件 | 单二进制、退出码、--json |
本地部署,可用 Python 编排 | FastAPI 服务可长期运行 | 需本机 Premiere 与 CEP 连接 |
| 断点续跑 | hs make --pid ... + 状态文件 |
自建脚本状态与本地缓存 | 草稿可落盘,续跑由编排层做 | 工程可保存,断点依赖 Premiere |
| 结构化输出 | 全命令 --json |
Python 对象、日志可脚本化 | RESTful JSON | MCP JSON-RPC |
| 自然编排方式 | shell、cron、MCP | Python、本地调度 | n8n、Coze | MCP 客户端 |
| 失败可观测性 | 退出码 + error.code |
Python 日志与异常 | HTTP 状态码与日志 | 工具返回与连接检查 |
| 并发瓶颈 | 云端排队、账户可用量 | 本地 GPU / 模型 API | 剪映草稿与云渲染 | 单机 Premiere 单实例 |
MoneyPrinterTurbo 从主题做到脚本、配音、素材匹配、字幕、BGM、剪辑,素材从本地、Pexels、Pixabay、Coverr 及文生视频里配。它没有 MG 动画这一环,这是与 --mode mg 的差异;反过来它的模型和配音供应商可本地替换。
capcut-mate 靠 create_draft / add_videos 产出剪映草稿,适合被 Coze 或 n8n 编排,但素材由调用方传入。Premiere MCP 编辑的是你已 import_media 导进工程的素材,且必须开着 Premiere。
huasheng-cli 的真实边界
hs publish 是唯一会把内容变公开的命令,且只发到 B 站;MG 动画内容不能从 CLI 编辑,hs mg ls/show/hide 只能看和隐藏;用 hs material add --url ... 提供素材不强制服务端采用;Windows 包未签名会触发 SmartScreen;需 B 站账号登录,文案与素材会上传到花生AI 服务端,本地不可离线跑。
还要如实说,这是个 star 只有两位数的很新项目,升级要手动 hs upgrade。更要紧的是:批量是工程能力,不等于内容能过审。矩阵账号批量发同质内容有平台判重与限流风险,可用量会被跑空,无人值守遇到 CONFIRM_REQUIRED 会僵住------这些得靠控制流和状态文件兜住,不是靠调参解决。