6.3 KiB
6.3 KiB
CapCut 成片组装
将图片/视频素材通过 CapCut 组装为成品视频。支持配音、字幕、特效、音乐、云渲染。
- 触发词: 图片成片、视频合成、剪映成片、CapCut 渲染
前置条件
1. CapCut Mate API 可达 → curl {config.capcutMateApiBase}/../docs
- 部署在 capcut.muyetools.cn(配置在 skills/config.json)
2. npm 依赖 → cd scripts && npm install
3. TTS 配音 → 阿里云 Qwen-TTS(配置在 config.json 的 ttsApiKey)
4. 同步到本地剪映 → 纯 Node.js(sync-to-jianying.js),无需 Python/uv
所有路径和 API 地址统一从 skills/config.json 读取。
CLI 接口(快速开始)
node scripts/capcut_assemble.js \
--input ./output/batch_xxx \
--manifest ./output/batch_xxx/manifest.json \
--mode images|videos \
--subtitles true \
--bgm <url> \
--effects "录制边框 III,雪花" \
--filter "电影感:50" \
--format 9:16 \
--output ./output/final/
| 参数 | 必填 | 说明 |
|---|---|---|
--input |
是 | 素材目录 |
--manifest |
是 | manifest.json 路径 |
--mode |
是 | images 或 videos |
--subtitles |
否 | 是否添加字幕(默认 true) |
--bgm |
否 | 背景音乐 URL(默认取账号配置) |
--effects |
否 | 特效名称,逗号分隔 |
--filter |
否 | 滤镜名称:强度 |
--format |
否 | 画幅(默认取账号配置) |
--output |
否 | 输出目录 |
完整流程
digraph assembly_flow {
rankdir=LR
node [shape=box, style=filled, fillcolor="#f5f5f5", fontsize=11]
input [label="素材 + manifest.json", shape=folder, fillcolor="#e3f2fd"]
step1 [label="1. TTS 配音(可选)\nnode qwen-tts.js\n→ WAV + 时长"]
step2 [label="2. 上传图片到 OSS\n本地图片 → 公网 URL"]
step3 [label="3. 创建草稿\ncreate_draft → draft_url"]
step4 [label="4. 导入素材+音频+字幕+特效"]
step5 [label="5. 保存草稿\nsave_draft"]
step6 [label="6. 同步本地剪映\n下载→重写→注册→扫描"]
step7 [label="7. 云渲染(可选)\ngen_video → 成片 MP4", fillcolor="#e8f5e9"]
input -> step1 -> step2 -> step3 -> step4 -> step5 -> step6 -> step7
}
详细步骤
1. TTS 配音(可选)
使用阿里云 Qwen-TTS 进行语音合成(Node.js,无需 Python)。
# 准备输入 JSON
echo '{"segments":[{"id":1,"text":"第一段文案"},{"id":2,"text":"第二段文案"}],"voice":"Cherry","output_dir":"./audio"}' > input.json
# 批量生成
node scripts/qwen-tts.js input.json
# → stdout: {"segments":[{"id":1,"text":"...","audio":"./audio/seg_001.wav","duration":3.456}]}
配置在 skills/config.json:
| 字段 | 说明 | 默认值 |
|---|---|---|
ttsApiKey |
阿里云百炼 API Key | (必填) |
ttsModel |
模型名称 | qwen-tts |
ttsVoice |
音色名称 | Cherry |
ttsLanguage |
语言类型 | Chinese |
推荐音色:
| voice 参数 | 音色名 | 风格 | 适用 |
|---|---|---|---|
Cherry |
芊悦 | 阳光积极小姐姐 | 通用、生活 |
Serena |
苏瑶 | 温柔小姐姐 | 情感、故事 |
Ethan |
晨煦 | 阳光温暖男声 | 科技、教程 |
Moon |
月白 | 率性帅气男声 | 潮流、解说 |
Vincent |
田叔 | 沙哑烟嗓男声 | 军事、纪录 |
Kai |
凯 | 温柔磁性男声 | 情感、配音 |
Neil |
阿闻 | 新闻主持人 | 新闻、财经 |
Bellona |
燕铮莺 | 洪亮有力女声 | 热血、武侠 |
所有音色均支持中英文,输出 WAV 格式(24kHz),URL 有效期 24 小时。
作为模块调用:
const { synthesize, synthesizeBatch } = require('./qwen-tts')
// 单段
const { filePath, duration } = await synthesize('你好世界', { voice: 'Cherry' })
// 批量
const results = await synthesizeBatch(
[{ id: 1, text: '文案' }, { id: 2, text: '文案2' }],
{ voice: 'Cherry', outputDir: './audio' }
)
2. 图片上传
CapCut API 需要公网 URL,本地图片通过 OSS 上传:
node scripts/oss-upload.js ./image.png
# → https://i.ibb.co/xxx/image.png
OSS 配置在 skills/config.json 的 ossRegion/ossAccessKeyId/ossAccessKeySecret/ossBucket 中。
capcut_assemble.js 自动处理上传,无需手动调用。
3. 创建草稿
POST /create_draft { width: 1080, height: 1920 }
→ 返回 draft_url(后续所有操作都需要传入)
4. 导入素材
图片模式 (--mode images):
POST /add_images
每张图片 3-5 秒,附带 Ken Burns 动画(缩放 1.0→1.1)
视频模式 (--mode videos):
POST /add_videos
逐个添加视频片段,自动计算时长
5. 添加音频
POST /add_audios
- BGM: 账号默认音乐 或 用户指定 URL
- 配音: Step 1 生成的 TTS 音频
6. 添加字幕
POST /add_captions
- 文案来自 manifest.json
- 关键词高亮(account.json 中 subtitleStyle.highlightColor)
- 字体大小、颜色从账号配置读取
7. 添加特效/滤镜
POST /add_effects ← account.json 中 capcut.effects
POST /add_filters ← account.json 中 capcut.filter
8. 保存 + 同步 + 渲染
保存草稿(服务器端):
POST /save_draft → 保存到 CapCut Mate 服务器
同步到本地剪映(纯 Node.js):
sync-to-jianying.js → 下载素材文件 → 路径重写为本地 → 写入剪映草稿目录 → 注册 root_meta_info.json → 触发目录扫描
无需 Python/uv,capcut_assemble.js 自动调用。
504 超时回退:
add_videos 提交 9+ 视频时可能触发网关 504。脚本自动降级:
- 先尝试全量提交
- 504 时自动分批(每批 3 个),保持绝对时间不变
图片动画预设
| 动画类型 | 说明 | 适用场景 |
|---|---|---|
| Ken Burns (zoom-in) | 从 1.0 缓慢放大到 1.1 | 默认,适合大多数场景 |
| Ken Burns (pan-left) | 画面从右向左平移 | 风景、全景 |
| Ken Burns (pan-right) | 画面从左向右平移 | 风景、全景 |
| 缩放弹出 | 从 0.8 弹到 1.0 | 强调、冲击感 |
质量检查
- 字幕与文案对应正确
- 关键词高亮颜色醒目
- 图片动画流畅(无卡顿)
- BGM 音量与配音平衡
- 转场自然(无黑帧)
- 总时长合理(建议 30-90 秒)