本文提供了一套完整的 n8n 自动化短视频生成方案,涵盖从脚本撰写、语音合成、口型同步、智能剪辑到生成剪映草稿的全流程,全部基于开源工具和免费 API 实现,帮助用户实现短视频的全自动制作与发布。
下面给你一套「从素材到剪映草稿」的 n8n 自动化思路,全部用可白嫖或自带 API 的云服务/开源模型完成,不依赖任何商业闭源方案。思路拆成 6 个阶段,每个阶段都给出:
- 用什么节点/工具
- 输入输出
- 关键参数或脚本片段
- 避坑提示
你可以按需裁剪,最终跑通后把「剪映草稿 JSON」推到云盘→手机剪映打开即可一键成片,再手动或自动发布到抖音/视频号。
0. 前置准备
一台 4G 内存以上、能跑 Docker 的电脑/小服务器(Win/Mac 都行)。
Docker 装好 n8n(社区版即可)。
提前把「主播原片」按「一句台词一个文件」切好,命名规则:
主播名_序号_关键词.mp4
(关键词后面做口型同步用)。
装 3 个容器(一次拉好,后面 n8n 直接调 API):
1 2 3
| docker run -d -p 9880:9880 ghcr.io/sayashi/vits-tts-api # 脚本→语音 docker run -d -p 8001:8001 ghcr.io/sayashi/wav2lip-gan-api # 语音+视频→口型同步 docker run -d -p 9000:9000 ghcr.io/sayashi/auto-editor-api # 智能剪辑(去静音、停顿)
|
镜像地址我随便写的,你可以换成自己打包的或 HuggingFace 镜像,只要 REST 风格一致即可。
安装 n8n 社区节点:
–「Read/Write File from Disk」
–「HTTP Request」
–「Execute Command」
–「Function」
–「Google Drive」或「阿里云盘」节点(二选一,用来把草稿同步到手机)。
1. 批量写口播脚本(ChatGPT 节点)
节点:OpenAI / ChatGLM / 任意大模型
Prompt 模板:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
| 你是一位短视频口播编剧。 主题:{{$node["Set"].json["topic"]}} 时长:30 秒左右 风格:快节奏+金句结尾 输出 JSON 格式: { "title": "标题(15 字内)", "hook": "前 3 秒钩子", "body": ["每句 5~7 秒,共 5 句"], "tag": ["话题标签1","话题标签2"] } ``` **输出**:`workflow.json.script` **避坑**:让模型把「body」拆成数组,后面一句一句生成语音,方便对齐。
---
### 2. 脚本 → 语音(TTS) **节点**:HTTP Request **URL**:`http://localhost:9880/vits` **Method**:POST **Body**(JSON): ```json { "text": "{{$item(0).json.body[0]}}", "speaker_id": 0, "length_scale": 0.9 } ``` **循环模式**:「Loop over items」→ 把 body 数组 5 句依次跑完。 **输出**:`voice_0.wav … voice_4.wav` 保存在 `/data/voice/`。 **避坑**: - 语速 `length_scale` 设 0.9,后面对口型更稳。 - 采样率统一 16 kHz,Wav2Lip 不吃 48 kHz。
---
### 3. 选素材 → 口型同步(Wav2Lip) **节点**:HTTP Request ×2 3-A 「找对口型素材」 用 Function 节点根据关键词(keywords)去 `/footage/` 目录扫 `主播名_*_关键词.mp4`,随机挑 1 条。 3-B 「丢给 Wav2Lip」 URL: `http://localhost:8001/sync` Form-Data: – face: 选中素材(file) – audio: 对应 voice_n.wav(file) – output_name: `sync_n.mp4` **输出**:`sync_0.mp4 … sync_4.mp4` **避坑**: - 素材提前裁剪成 720×1280 竖屏,<=30 秒,Wav2Lip 显存省一半。 - 如果素材长度 < 音频,Function 节点里先算「音频秒数」,再对素材做「倍数循环」或「随机补帧」。
---
### 4. 智能剪辑(去静音、加字幕、加 BGM) **节点**:HTTP Request(Auto-Editor) URL: `http://localhost:9000/autoedit` Body: ```json { "input": "{{$node["Wav2Lip"].json["output_path"]}}", "margin": 0.2, "subs": true, "subs_lang": "zh", "bgm": "/data/bgm/funky.mp3", "bgm_volume": -25 } ``` **输出**:`final_n.mp4` **避坑**: - 如果想保留「停顿感」就把 margin 调大。 - 字幕文件(srt)同步生成,后面一起塞进剪映草稿。
---
### 5. 合成剪映草稿 JSON(核心) 剪映草稿本质就是一个 `draft.json` + 一堆素材。 **节点**:Function(JavaScript) 把以下模板填进去即可:
```javascript const uid = Date.now(); const material_list = []; const tracks = [];
items.forEach((item, index) => { const vid = `final_${index}.mp4`; material_list.push({ id: `video${index}`, type: "video", path: `/storage/emulated/0/Android/data/com.lemon.lv/files/Movies/${vid}`, duration: item.json.duration * 1000000, // 微秒 width: 720, height: 1280 }); tracks.push({ type: "video", material_id: `video${index}`, start: index * 5000000, // 每段间隔 5 秒,可自行重叠 duration: item.json.duration * 1000000 }); });
return [{ json: { draft_name: `${items[0].json.title}_${uid}`, duration: tracks.reduce((a,b)=>a+b.duration,0), material_list, tracks, subtitle_path: `/storage/emulated/0/Android/data/com.lemon.lv/files/Movies/draft_${uid}.srt` } }];
|
输出:draft_content.json
避坑:
- 路径必须是「手机剪映能认的 Android 绝对路径」,否则草稿会报「素材丢失」。
- 字幕文件也一起丢进云盘同目录,剪映会自动挂载。
6. 推到云盘 → 手机剪映打开
节点:Google Drive Upload / 阿里云盘 Upload
把下列文件一次性同步到固定目录:
/draft_${uid}/
├─ draft_content.json
├─ final_0.mp4 … final_4.mp4
└─ draft_${uid}.srt
手机端:
- 打开剪映→「本地草稿」→右上角「⋮」→「导入草稿」→选中
draft_content.json
即可。
- 检查无误后一键「发布」,标题、话题标签已经在 JSON 里写好了,可直接带 # 话题发出去。
7. 定时/批量跑
用 n8n 的「Schedule」触发器,每天 8:00/20:00 跑一次;
或者把「主题」丢进 Google Sheet,一行一个选题,n8n 用「Read Sheet」循环跑,批量生成 N 条草稿。
8. 一键部署脚本(bonus)
我把上面 6 个容器 + n8n 的 docker-compose.yml
模板放在 Gist,直接 docker-compose up -d
就能跑,地址:
https://gist.github.com/yourname/n8n-shortvideo-stack
(自行替换成你的真实地址)
9. 后续可加的爽点
- 自动抽「评论区关键词」→ 再跑一遍工作流,24 小时内蹭热点。
- 把「口播脚本」同时喂给「Stable Diffusion」生成封面图,一起塞进草稿。
- 数据回传:剪映发布后把「播放/点赞」回写到 Sheet,跑 A/B 选题模型。
一句话总结
「脚本 → TTS → 主播口型同步 → 自动剪辑 → 剪映草稿 JSON → 云盘同步 → 手机一键发」,整条链路全部 n8n 节点化,0 手工剪片,10 分钟就能出一条 30 秒竖屏短视频。先把 MVP 跑通,再慢慢加花活!