🎬 基于AI的YouTube Shorts视频生成器
一个智能的n8n工作流,能够自动从Reddit内容中创建并上传YouTube Shorts视频。它利用人工智能生成吸引人的短视频,结合文本转语音、背景素材和音乐——所有这些功能都通过MCP(模型上下文协议)服务器集成实现自动化。
✨ 特点
- 多源内容 - 从r/Jokes(笑话板块)、r/LifeProTips(生活小贴士板块)和r/Stories(故事板块)创建视频
- AI内容适配 - GPT-4将Reddit帖子转化为适合视频的脚本
- 自动化视频生成 - MCP服务器使用文本转语音(TTS)和背景素材创建视频
- 背景视频选择 - 自动获取相关的Pexels视频
- 音乐选择 - AI选择合适的背景音乐标签
- 文本转语音 - 将脚本转换为自然语音叙述
- 字幕生成 - 视频自动添加字幕
- YouTube 集成 - 直接上传到YouTube并附带元数据
- 状态监控 - 持续轮询视频生成状态,直至就绪
- 批处理 - 同时处理多个帖子
- 本地人工智能支持 - 与Ollama合作,实现经济高效的生成
- 灵活模型 - 支持GPT-4、GPT-4o-mini以及本地模型
🎯 用例
非常适合希望:的内容创作者
- 自动创建YouTube Shorts频道
- 将Reddit内容改编成视频格式
- 大规模创作引人入胜的短视频内容
- 将病毒式传播的Reddit帖子变现
- 节省视频编辑和制作的时间
- 保持一致的上传时间表
🏗️ 建筑学
三个内容管道
管道1:r/Jokes(意为“笑话版块”)
RSS Feed → Map Fields → Aggregate → AI Agent → Wait Loop → Check Status → Download → Upload to YouTube管道2:r/LifeProTips(生活小窍门版块)
RSS Feed → Map Fields → Aggregate → AI Agent → Wait Loop → Check Status → Download → Upload to YouTube管道3:r/Stories(或可译为“故事区/板块”)
RSS Feed → Map Fields → Aggregate → AI Agent → Wait Loop → Check Status → Download → Upload to YouTube定制视频生成
Configure → Get Music Tags → Generate Content → Pick Music → Start Generation → Wait Loop → Check Status → Download → Upload🚀 快速入门
先决条件
- Docker 安装在您的系统上
- n8n 实例(本地或云端)
- Pexels API密钥 - 来这里
- OpenAI API密钥 - 来这里
- YouTube OAuth 凭据;凭证
- Reddit RSS 访问(无需认证)
步骤1:运行MCP服务器
# Run the short-video-maker MCP server
docker run -it --rm \
--name short-video-maker \
-p 3123:3123 \
-e LOG_LEVEL=debug \
-e PEXELS_API_KEY=your_pexels_api_key \
gyoridavid/short-video-maker:latest-tiny
# Server will be available at http://localhost:3123步骤2:导入工作流
# In n8n:
# 1. Go to Workflows → Import from File
# 2. Upload "youtube_shorts_with_mcp_server.json"
# 3. All nodes will be imported步骤3:配置凭据
为以下设置认证:
| 服务 | 类型 | 必需用于 |
|---|---|---|
| OpenAI API | API密钥 | 人工智能内容生成 |
| YouTube OAuth2 | OAuth2 | 视频上传 |
根据全局信息,翻译目标语言为中文,且“API”必须翻译为“API”。原文内容翻译如下:Pexels API | API 密钥 | 背景视频(在 Docker 中)
// In "Configure" node (for custom generation)
SERVER_URL: "http://host.docker.internal:3123"
// In MCP Client nodes
sseEndpoint: "http://host.docker.internal:3123/mcp/sse"步骤4:更新服务器URL 注: host.docker.internal 如果不使用 Docker Desktop,请替换为
localhost与;和;带有- 用于本地设置
用于远程设置的服务器IP
# Add to your n8n environment variables
N8N_DEFAULT_BINARY_DATA_MODE=filesystem
# This prevents 400 errors when uploading to YouTube步骤5:启用n8n二进制数据模式
# 1. Click "Test workflow" button
# 2. Workflow fetches top Reddit posts
# 3. AI generates video scripts
# 4. MCP server creates videos
# 5. Videos are uploaded to YouTube步骤6:测试工作流
📊 工作流程结构
Reddit内容工作流程
每个Reddit来源都遵循这个模式:
- 1\. 获取热门帖子
- 通过RSS获取每周热门帖子
- 无需认证
返回标题和内容
- 2\. 地图字段
- 提取标题和内容
- 移除“提交者”文本
用于AI处理的格式
- 3\. 总计/合计
- 将所有帖子合并到一个数组中
准备进行批处理
- 4\. 生成视频(AI代理)
- 使用GPT-4或GPT-4o-mini
- 通过工具连接到MCP服务器
- 为视频格式调整内容
返回视频ID和标题
- 5\. 等待循环
- 暂停执行(基于webhook)
- 允许视频生成完成
可配置的等待时间
- 6\. 检查状态
- 轮询MCP服务器以获取视频状态
返回当前生成状态
- 7\. 如果已准备好
- 检查状态是否为“就绪”
- True:下载视频
错误:返回到等待状态
- 8\. 下载与上传
- 生成的视频已下载
- 上传带有元数据的视频到YouTube
设置类别和地区
自定义视频生成
- 1\. 配置
- 设置MCP服务器URL
集中化配置
- 2\. 获取音乐标签
- 从服务器获取可用的音乐标签
用于背景音乐的选择
- 3\. 生成内容
- 人工智能生成视频场景
- 每个场景都有文本和搜索词
返回结构化的JSON
- 4\. 选择音乐
- AI选择合适的音乐标签
基于视频内容和可用标签
- 5\. 开始生成
- 向MCP服务器API发送POST请求
- 包含场景和配置
返回视频ID
- 6\. 等待并检查循环
- 类似于Reddit的工作流程
监控生成进度
- 7\. 下载与上传
与Reddit的工作流程相同
🎨 定制化
// In RSS Feed Read nodes
url: "https://www.reddit.com/r/YourSubreddit/top/.rss?t=week"
// Available time filters: hour, day, week, month, year, all更改Reddit来源
// In "Generate video" node prompt
{{ $json.data[8].title }} // Change index [0-24] for different posts
// Get multiple posts
{{ $json.data.slice(0, 5) }} // First 5 posts修改帖子选择
// For OpenAI
model: "gpt-4o-mini" // Fast and cheap
model: "gpt-4-turbo" // Balanced
model: "gpt-4" // Best quality
// For Ollama (local)
model: "mistral-small3.1:24b-instruct-2503-q8_0"
model: "llama3:70b"调整人工智能模型
// In AI Agent nodes
text: `
Turn the following joke into a video.
Make it engaging and easy to understand.
Add humor and timing.
{{ $json.data[8].contentSnippet }}
`自定义视频提示
// In "Start generating the video" node
{
"scenes": [...],
"config": {
"paddingBack": 1500, // Silence at end (ms)
"music": "upbeat", // Music tag
"voiceSpeed": 1.0, // TTS speed
"subtitleStyle": "bold" // Subtitle formatting
}
}更改视频配置
// In YouTube upload nodes
title: "{{ $json.output.videoTitle }}"
regionCode: "US" // Change region
categoryId: "24" // 24 = Entertainment
privacy: "public" // public, unlisted, private修改YouTube设置
// In Wait nodes
// Default uses webhook callback
// For fixed time:
waitTime: 60 // seconds
resumeAfter: 60调整等待时间
🛠️ MCP 服务器详情
终点(或:端点) | 终点 | 方法 | 目的 | |----------|--------|---------| /mcp/sse | | GET | MCP协议连接 | /api/short-video | | POST | 创建新视频 | /api/short-video/:id | | GET | 下载视频 | /api/short-video/:id/status | | GET | 检查生成状态 | /api/music-tags |
| GET | 列出可用音乐 |
视频生成API
{
"scenes": [
{
"text": "Here's an interesting fact...",
"searchTerms": ["space", "galaxy", "stars"]
}
],
"config": {
"paddingBack": 1500,
"music": "ambient"
}
}请求:
{
"videoId": "abc123",
"status": "processing"
}回答:
{
"status": "processing" | "ready" | "failed",
"progress": 45,
"eta": 120
}状态响应
🐛 故障排除
# Solution: Enable filesystem binary mode
N8N_DEFAULT_BINARY_DATA_MODE=filesystem
# In Docker Compose:
environment:
- N8N_DEFAULT_BINARY_DATA_MODE=filesystemYouTube上传失败(400错误)
# YouTube limits daily API uploads
# Free tier: 6 videos per day
# Solution: Disable YouTube nodes for testing
# Or: Apply for quota increaseYouTube API 配额限制
# Check server is running:
docker ps | grep short-video-maker
# Check logs:
docker logs short-video-maker
# Test endpoint:
curl http://localhost:3123/api/music-tagsMCP服务器连接失败
# Check status manually:
curl http://localhost:3123/api/short-video/VIDEO_ID/status
# Restart MCP server:
docker restart short-video-maker
# Check Pexels API key is valid视频生成卡住
// Verify MCP Client node configuration:
sseEndpoint: "http://host.docker.internal:3123/mcp/sse"
include: "selected"
includeTools: ["create-short-video"]AI代理未找到MCP工具
# Linux: Use host network mode
docker run --network host ...
# Or: Use container IP
docker inspect short-video-maker | grep IPAddressDocker Desktop 主机访问问题
📈 性能优化
// Use GPT-4o-mini instead of GPT-4
model: "gpt-4o-mini" // ~10x cheaper
// Use Ollama for free local inference
model: "mistral-small3.1:24b-instruct-2503-q8_0"降低人工智能成本
// Use smaller video resolution in MCP server
// Reduce scene count per video
scenes: [...].slice(0, 2) // Only 2 scenes
// Use shorter text per scene更快的视频生成
// Process multiple posts in parallel
// Split into separate workflow executions
// Use n8n's batch processing features批处理
- 🔒 安全考虑因素
- 在n8n凭证中安全存储所有API密钥
- 永远不要将凭证提交到版本控制系统
- 对敏感数据使用环境变量
- 限制MCP服务器访问(防火墙规则)
- 监控YouTube API配额使用情况
- 在上传前审查生成的内容
- 遵守Reddit的API服务条款
遵守YouTube的社区准则
💰 成本估算
GPT-4o-mini (script): $0.001-0.005
Pexels API: Free (with attribution)
MCP Server: Free (self-hosted)
YouTube Upload: Free
Total: ~$0.001-0.005 per video
GPT-4 (higher quality): $0.01-0.05 per video每视频(大约)
With GPT-4o-mini: $0.10-0.50/month
With GPT-4: $1-5/month
With Ollama: $0/month (electricity only)每月(100个视频)
- 📝 YouTube上传限制每日配额
- 每天6个视频(默认)文件大小
- 每个视频最大256 GB持续时间
- 短片必须≤60秒API限制
- 每日10,000配额单位 上传量 = 1,600 单位
每段视频
💡 内容创意
- 子版块来源
- r/Jokes - 有趣的短笑话
- r/LifeProTips - 实用的生活建议
- r/Stories - 短篇故事
- r/explainlikeimfive - 简单易懂的解释
- r/todayilearned(今日所学)- 有趣的事实
- r/ShowerThoughts - 让人脑洞大开的想法
- r/technicallythetruth(技术上来说确实如此)- 独到的见解
r/clevercomebacks - 机智的回应
- 视频风格
- 带有笑点时机的笑话格式
- 生活小窍门演示
- 带有悬疑元素的故事叙述
- 教育知识传递
- 励志名言视频
趣味事实集锦
- 🌐 MCP 服务器资源GitHub :
- 短视频制作工具npm(Node Package Manager,Node包管理器) :
- 短视频制作工具Docker Hub(通常可简化为“Docker”) :
- gyoridavid/短视频制作器文档
在GitHub仓库中可用
- 📊 需要跟踪的工作流程指标
- 每天生成的视频数量
- YouTube上传成功率
- 平均视频生成时间
- AI代币的使用和成本
- MCP服务器运行时间
- 视频观看次数
- 用户增长
API配额剩余
Reddit RSS订阅源
📄 许可证 这个工作流程是开源的,并且可以在以下(许可/条件下)获取:麻省理工学院许可证(MIT License)
。
🤝 贡献
- 欢迎贡献、提出问题和功能请求!
- 为项目创建分支
git checkout -b feature/AmazingFeature创建你的特性分支( - )
git commit -m 'Add multiple subreddit support'提交您的更改( - )
git push origin feature/AmazingFeature推送到分支( - )
提交拉取请求
👨💻 作者
- 雷多安祖曼(注:此为人名翻译,具体译法可能因语境和习惯而异)
- @redoanuzzaman(这个用户名直接翻译为中文仍为原样,因为它是一个特定的网络用户名,没有具体的含义需要翻译)
- 电子邮箱:redoanuzzaman707@gmail.com 网站:
redoan.dev(该域名可直接保留原样,若需意译,可理解为“重做/重新尝试开发平台”或“redoan开发域”,但具体含义需结合上下文确定)
- 🙏 致谢 gyoridavid 翻译为中文可以是“约里·戴维德”(注:这只是一个音译,实际人名可能根据具体语境和背景有所不同)。不过,由于“gyoridavid”并不是一个广为人知的专有名词或人名,在没有具体上下文的情况下,只能提供一个大致的音译。如果“gyoridavid”是某个特定领域或文化背景下的专有名词,那么可能需要更具体的翻译或解释
- 为短视频制作者提供的MCP服务器
- n8n社区,专注于工作流自动化工具
- OpenAI的GPT模型
- Pexels免费提供库存视频素材
使用Reddit作为内容来源
💖 表达你的支持
如果这个工作流程帮助你创作出了精彩的YouTube Shorts,请点个⭐️!
📞 支持
______________________________________________________________________
在这个仓库中打开一个问题(或提交一个问题)
使用🎬和AI自动化技术制作 最后更新时间:
