Files
video-create/.claude/skills/capcut/references/assembly-guide.md
sion123 0dc17a8b9d feat(capcut): 移除云渲染和账号配置文档并调整字幕字体大小
- 删除 assembly-guide.md 中云渲染和账号配置的冗余文档
- 将 account.json 模板中的默认字体大小从 36 调整为 12
2026-04-30 01:08:47 +08:00

232 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.jssync-to-jianying.js无需 Python/uv
```
所有路径和 API 地址统一从 `skills/config.json` 读取。
---
## CLI 接口(快速开始)
```bash
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` | 否 | 输出目录 |
---
## 完整流程
```dot
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
```bash
# 准备输入 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 格式24kHzURL 有效期 24 小时。
**作为模块调用**
```js
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 上传:
```bash
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。脚本自动降级
1. 先尝试全量提交
2. 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 秒)