一句话让 AI 自动生成短视频:用 n8n 打造 YouTube 自动发布系统
不再手动上传,只要输入创意,n8n 帮你自动生成和发布视频。
#AI #自动化 #n8n #YouTube #Sora2 #Claude
如果你也曾想过:“能不能用 AI 自动生成视频,然后直接发布到 YouTube?”——这篇文章就是为你写的。
最近,我用 n8n、Claude 和 Sora-2 搭建了一个完整的自动化工作流:从输入一个创意开始(手动),到生成视频、添加标题描述,再自动上传到 YouTube,全程无人值守。
本文会完整讲解整个系统的实现过程、技术细节、常见坑点,以及它的实际应用价值。
一、为什么要做这个自动化?
AI 视频生成越来越普及,但手动发布依然耗时:
每次都要想标题、写描述、加标签。
YouTube 上传页面填写信息多,流程繁琐。
想批量测试不同风格的视频,效率低。
最近Sora-2不是很火嘛,于是我想,如果这些操作能交给自动化工具处理,那就能把精力集中在创意本身。
于是,便有了这个项目:用 n8n 搭建一个自动生成并发布视频的工作流。
目标很明确:
自动生成视频内容(通过 Claude + Sora-2)
自动上传到 YouTube(通过 API)
减少重复操作,实现“输入一句话 ➡️ 自动产出视频 ➡️ 自动发布YouTube”
二、工作流总体设计
整个系统基于 n8n 实现,核心流程如下:
💬 聊天输入界面
↓
🤖 AI生成内容(Claude)
↓
📝 解析AI响应
↓
🎬 生成视频(Sora-2)
↓
⏳ 检查生成状态 ──未完成→ ⏰ 等待重试 ──┐
↓完成 │
📥 下载视频文件 ←───────────────────────┘
↓
📤 上传到YouTube
最终工作流流程图:

实现效果:
输入一句话,例如 “一只金渐层猫咪在追着红色激光点上蹿下跳”。
使用https://api.aicso.top/ 接口平台的Claude模型生成提示词、标题、描述、标签。
使用https://api.aicso.top/ 接口平台的Sora-2模型生成视频。
自动上传到 YouTube,设置标题、文案、区域、标签。
只要输入一句话,就会自动生成视频和发布。
实际耗时:
手动操作:15-30分钟(同使用Sora-2制作视频和下载视频)
自动流程:输入创意后不到 6 分钟(等待视频生成约 2-5 分钟)
单条视频成本:
单条视频成本约 ¥0.0595~0.096 元:
Claude API:¥0.01~0.03
n8n:免费(Github注册满180天用户,ClawCloud每月赠送5美刀,一个月的费用都没有5刀,基本够了)
YouTube API:免费
一条视频的费用约等于无了,可以尽情造。
三、具体搭建步骤
3.1、第一步:准备环境
所需工具和账号:
n8n(推荐 ClawCloud,有公网访问)
Google Cloud 项目(启用 YouTube Data API v3,这里不会细讲创建项目,主要讲权限配置和应用发布)
YouTube 账户(绑定 OAuth2)
⚠️ 注意:YouTube OAuth 认证不支持 localhost。必须部署在有公网域名的服务器上,或者使用ngrok、frp等反向代理,本文主要是讲解在ClawCloud部署的n8n。
推荐部署方式:
ClawCloud 部署的n8n:GitHub 180天及以上的用户每月有5刀的额度,每天0.14刀,一个月0.14*30=4.2够用了。
海外云服务器 npmjs 部署:需绑定域名并配置 SSL。
3.2、第二步:创建工作流
3.2.1、创建新工作流
1、打开 n8n 控制台 → 新建工作流「Create Workflow」:

2、在顶部给工作流命名,例如「YouTube视频自动发布2」,因为我已经存在了,所以加了个2区分:

3.2.2、添加节点1:Chat Trigger(聊天触发器)
1、点击「Add first step…」,在弹出窗口输入选择「On chat message」:

2、启用「Make Chat Publicly Available」,在「Initial Message(s)」输入「请输入要生成的视频主题、内容~」:

3.2.3、添加节点2:AI生成视频信息(HTTP Request)
1、点击 「When chat message received」 节点右侧的「+」,搜索「HTTP Request」并点击,修改名称为「AI生成视频信息」:


2、配置节点:
Method:POST
URL:https://api.aicso.top/v1/chat/completions
Authentication:None(我们手动在 Headers 中配置)
Headers:
点击「Add Header」
Name: Authorization
Value: Bearer 你的API密钥(注意 Bearer 后有空格)
再添加一个(可以不加):Name: Content-Type,Value: application/json

Body:
{
"model": "claude-sonnet-4-5-20250929",
"messages": [
{
"role": "system",
"content": "你是一个专业的视频创作助手。根据用户输入,生成适合YouTube Shorts的视频提示词、标题、描述和话题,输出内容必须是英文,简洁直白。输出格式必须是JSON: {\"prompt\":\"视频提示词\",\"title\":\"标题含#话题\",\"content\":\"内容含#话题\",\"tags\":\"#话题\"}"
},
{
"role": "user",
"content": "{{ $json.chatInput.trim() }}"
}
],
"temperature": 0.7
}
这个提示词只是测试生成的,需要自己优化调整为更好的。

3.2.4、添加节点3:解析AI响应(Code)
1、点击上一个节点右侧的「+」,搜索「Code」,点击「Code」,选择「Code in JavaScript」:


2、设置节点名称为「解析AI响应」:

3、添加下面代码:
// 解析AI返回的JSON
const aiResponse = $input.item.json;
const content = JSON.parse(aiResponse.choices[0].message.content);
return {
json: {
prompt: content.prompt,
title: content.title,
content: content.content ,
tags: content.tags
}
};

3.2.5、添加节点4:生成视频(Sora-2)
1、点击上一个节点右侧的「+」,搜索「http」,选择「HTTP Request」节点,修改节点名称为「生成视频(Sora-2)」:


2、配置节点:
Method:POST
URL:https://api.aicso.top/v1/chat/completions
Authentication:None
Headers:
Name: Authorization,Value: Bearer 你的API密钥
Name: Content-Type,Value: application/json 可不配置

Body(JSON):
{
"model": "sora-2-portrait",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "{{ $json.prompt }}"
}
]
}
]
}
Options → Timeout:600000(10分钟)

3.2.6、添加节点5:检查视频状态(IF)
1、添加节点,点击上一个节点右侧的「+」,搜索「IF」,选择「IF」节点,修改节点名称为「检查视频状态」:


2、配置节点:
Conditions:
Value 1: {{ $json.choices[0].message.content }}
Operation: contains
Value 2: [download video](https://

这个节点会有两个输出:
true:视频生成完成,连接到下一个「HTTP Request」节点下载视频
false:视频未完成,连接到「Wait」节点等待,「Wait」节点又连接到「生成视频(Sora-2)」节点,其实只要「生成视频(Sora-2)」开启了重试就可以不用这个节点了。
3.2.7、添加节点6:Wait(等待节点)
1、添加节点,点击 IF 节点下方的「false」输出端,搜索「Wait」,选择「Wait」节点:


节点使用默认配置即可,然后点击 Wait 节点右侧的「+」,连接到「生成视频(Sora-2)」节点前面形成循环。
3.2.8、添加节点7:下载视频(HTTP Request)
1、添加节点,点击 IF 节点的「true」输出端,搜索「http」,选择「HTTP Request」节点,修改节点名称为「下载视频」:


2、配置节点:
Method:GET
URL:使用表达式提取视频链接
{{ $json.choices[0].message.content.match("(https://.*mp4)")[0] }}
Response Format:File
Put Output in Field:videoData(视频数据存储的属性名)

3.2.9、添加节点8:上传到YouTube
1、添加节点,点击上一个节点右侧的「+」,搜索「YouTube」,点击「YouTube」,选择「Upload a video」节点,修改节点名称为「上传到YouTube」:



2、配置节点:
Credential to connect with:待配置(下一步说明)
Resource:Video
Operation:Upload
Title:{{ $(‘解析AI响应’).item.json.title }}
Category ID:1(Film & Animation)
Description:{{ $(‘解析AI响应’).item.json.content }}
Tags:{{ $(‘解析AI响应’).item.json.tags }}
Region Code:United States of America(the)-US
Input Binary Field:videoData



设置好后我们就开始YouTube凭证配置这个坑点了。
3.3、第三步:配置密钥与凭证
3.3.1、Claude / Sora-2 API



创建好后复制令牌粘贴到对应节点的「Authorization」参数值的「Bearer」后面即可,「Bearer」右边记得要加个空格。
3.3.2、YouTube OAuth2 认证
⚠️ 重要提示:YouTube 凭证配置是整个流程中最容易踩坑的环节,请仔细阅读!
根据 N8N 官方文档,YouTube 节点:
✅ 支持 OAuth2 认证
❌ 不支持 Service Account(服务账号)
1、在 Google Cloud Console「https://console.cloud.google.com/」 创建新项目或选择现有项目:


2、点击「API和服务」,在新页面点击「库」:


3、在「API库」页面输入「YouTube」搜索,找到「YouTube Data API v3」并启用:




4、点击「凭证➡️创建凭证」,选择「OAuth 客户端 ID」:









2、创建「OAUTH客户端」:

需要在「上传到YouTube」节点的「Credential to connect with」处创建凭证,如果有,点击右边的笔图标编辑也可:


复制「OAuth Redirect URL」,返回「创建 OAuth 客户端 ID」,在「已获授权的重定向 URI」输入框输入复制的「OAuth Redirect URL」:


复制自己的客户端 ID和客户端密钥填写到n8n的YouTube凭证输入框:

填好后先不要点击「Sign in with Google」,因为我们还没发布应用。


没发布应用就会出现403 access denied错误,这是一个隐藏的坑点,我在这里琢磨了好几个小时😭。
点击「目标对象」,然后点击页面的发布应用:



返回n8n点击「Sign in with Google」:







因为我解析了域名,所以要修改地址为我解析的域名再访问:

返回YouTube凭证设置:

账号连接成功。
3.4、第四步:测试运行
1、在工作流左下角的Chat窗口输入视频主题,记得要修改「AI生成视频信息」、「生成视频(Sora-2)」两个节点的令牌哦:

执行完成没报错👍。
2、检查 YouTube 频道是否上传成功:

发布的视频播放数有高有低高的有1000+(之前用Sora2生成的视频手动发布的有破2w播放),低的也有0,
四、常见问题与坑点
1、问题:OAuth Redirect URL 不能使用 localhost ⚠️ 高频坑点
现象:点击「Sign in with Google」后授权失败
原因:Google 不允许 localhost 作为 OAuth 回调地址,会出现地址无法访问的情况
解决方案:
方案1:使用公网域名部署 n8n(推荐)
我使用的是 clawcloud 部署 + 域名解析
也可以用其他云服务商的海外服务器部署(阿里云、腾讯云等)
方案2:使用反向代理工具
ngrok、frp等工具将本地 n8n 暴露到公网(临时方案)
2、问题:Google 应用未发布导致授权失败(⚠️ 重要坑点)
现象:授权时提示权限不足或无法访问
原因:应用处于测试状态,未发布
解决:访问 https://console.cloud.google.com/auth/audience?project=你的项目名称 发布应用
如果不发布应用,会导致授权失败或权限不足
3、问题:API 返回 401 错误
检查 API 密钥是否正确
确认格式为 Bearer 密钥(注意空格)
4、问题:YouTube 上传失败
重新授权 YouTube 凭证
确认 Google Cloud 项目已启用 YouTube Data API v3
检查 OAuth 重定向 URI 是否正确
确认使用的是 OAuth2(不是 Service Account服务账号)
5、问题:视频生成超时
增加「生成视频(Sora-2)」节点的 timeout 值
当前设置为 600000ms(10分钟),可根据需要调整,如调整为900秒
增加重试机制
五、项目总结
5.1、值得做这个项目吗?
如果你的目标是 学习技术 ✅ 值得做。
这是一个非常实用的 n8n 自动化入门项目,可以让我们快速理解工作流编排的核心逻辑。
可以学会并掌握 API 集成、AI 内容生成、自动化上传 等实用技能。
同时还能体验 Claude、Sora-2 等AI工具的协作方式,了解完整的 AI 工具链工作原理。
如果你的目标是 通过它赚钱 ❌ 不建议。
AI 生成内容流量不稳定,平台更喜欢原创、有质量的内容。
投入产出比偏低:生成容易,吸引用户难。
原创性有限,大量发布甚至可能被算法判定为“低原创内容”。
AI 生成的视频原创性有限,发多了可能会被平台检测出来。真正能长久运营的账号,仍然离不开内容质量。
所以,把这个项目当成技术实践与效率工具,而不是流量机器。
它能让你少花时间在机械操作上,多花时间在创意上。
5.2、我的真实感受
收获:
✅ 掌握了多项新技术(n8n、API、AI 视频生成)
✅ 明显减少了重复劳动,提高创作效率
✅ 能快速验证不同视频创意和风格
✅ 整个搭建过程挺有意思的
局限:
⚠️ 视频质量与播放表现不稳定,依赖提示词质量
⚠️ 成本虽然不高,但积累起来也不少
⚠️ AI 生成的内容缺乏个性和深度
⚠️ 不适合大规模或商业化内容生产
5.3、给想尝试的朋友的建议
1、把它当作学习项目,不要期望太高的收益
2、先解决部署问题:
新手建议用 n8n Cloud,也可以用ClawCloud部署,避免折腾部署
自托管的话,必须配好公网域名和 SSL
localhost 是无法完成 YouTube OAuth 授权的
3、YouTube 凭证配置要仔细:
这是最容易卡住的地方
一定要发布 Google 应用
OAuth Redirect URL 要填对
4、先小规模测试,生成几个视频看看效果
5、关注学习过程,而不是结果
6、如果想认真做 YouTube,还是要做原创内容
如果你也在探索类似的自动化方案,或者有什么好的想法和建议,欢迎在评论区交流!