三种方案对比
| 方案 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| AutoHotkey 模拟 UI | 几十个工程、保留特效 | 最稳、兼容所有剪映功能 | 慢、易被 UI 改版搞炸 |
| 修改 draft_content.json | 矩阵号、批量换素材/文案 | 工业化效率高 | 剪映 6+ 有加密问题 |
| FFmpeg / MoviePy | 图片转视频、批量混剪 | 服务器可跑、不依赖剪映 | 无法保留剪映特效 |
方案一:AutoHotkey(最稳)
适合”几十个工程挨个导出”的场景,不需要了解剪映内部格式:
Loop, Files, D:\jianying_projects\*.draft
{
Run, "C:\Program Files\JianyingPro\JianyingPro.exe" "%A_LoopFileFullPath%"
Sleep, 10000
; 点击导出按钮(坐标需根据实际分辨率调整)
Click, 1800, 1000
Sleep, 3000
; 点击确认导出
Click, 1700, 950
; 等待渲染完成
Sleep, 60000
WinClose, 剪映专业版
}
坐标需要根据自己的屏幕分辨率和剪映版本调整。可以用 AHK 内置的 MouseGetPos 命令在悬停时获取当前坐标。
方案二:修改 draft_content.json(矩阵号核心)
剪映草稿本质是 JSON,位于草稿目录下的 draft_content.json。批量替换流程:
模板工程
↓
Python 复制草稿目录
↓
修改 draft_content.json(替换素材路径/字幕文本)
↓
生成 N 个草稿
↓
AutoHotkey 自动打开逐个导出
Python 批量复制并替换字幕示例:
import shutil
import json
import re
from pathlib import Path
template = Path("D:/drafts/template")
output_base = Path("D:/drafts/output")
texts = ["第一集内容", "第二集内容", "第三集内容"]
for i, text in enumerate(texts):
dst = output_base / f"episode_{i+1}"
shutil.copytree(template, dst)
draft_file = dst / "draft_content.json"
data = json.loads(draft_file.read_text(encoding="utf-8"))
# 替换字幕文本(具体字段名以实际工程为准)
content_str = json.dumps(data, ensure_ascii=False)
content_str = re.sub(r'"占位文本"', f'"{text}"', content_str)
draft_file.write_text(content_str, encoding="utf-8")
注意:剪映 6+ 加密问题
从剪映专业版 6.x 开始,draft_content.json 部分字段开始加密,很多老方案失效。目前社区常见的做法:
- 锁定在剪映 5.9 不升级
- 使用开源项目如 pyJianYingDraft 或 capcut-cli
方案三:FFmpeg(不经过剪映)
如果只是图片转视频、批量加字幕、批量合并,完全不需要剪映:
# 图片+音频合成视频
ffmpeg -loop 1 -i cover.jpg -i bgm.mp3 \
-shortest \
-vf "scale=1920:1080" \
output.mp4
# 批量处理(bash)
for img in *.jpg; do
ffmpeg -loop 1 -i "$img" -i bgm.mp3 -shortest -vf "scale=1920:1080" "${img%.jpg}.mp4"
done
FFmpeg 的缺点是没有剪映的智能字幕、卡点、AI 特效,对”剪映味”的视频替代不了。
实际推荐路线(混合方案)
Python 改草稿 JSON(批量换内容)
+
剪映负责特效渲染
+
AutoHotkey 自动导出
剪映最有价值的是特效引擎和 AI 功能,时间轴批量生成用代码做,特效用剪映渲染,导出用自动化点击。这是目前短视频矩阵账号的主流技术路线。
