RedditVideoMakerBot
一句话生成 Reddit 短视频,支持多语音引擎和自定义背景
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
一句话生成 Reddit 短视频,支持多语音引擎和自定义背景
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
RedditVideoMakerBot 是由开发者 Lewis Menelaws(GitHub ID: elebumm)创建、TMRRW 公司支持维护的一个开源项目,核心功能是将 Reddit 帖子一键转化为适合 TikTok、YouTube Shorts 等平台发布的短视频。该项目解决了短视频内容创作中"素材获取 + 剪辑加工"这一最耗时的环节——用户只需提供 Reddit API 凭证并选择 subreddit,整个流程从帖子抓取、语音合成、背景视频拼接、字幕叠加到最终 MP4 渲染,全部自动化完成,无需任何视频编辑经验。
截至 2026 年 6 月,该项目在 GitHub 上拥有超过 12,400 Star 和 2,893 Fork,是内容自动化领域最受关注的开源项目之一。项目维护活跃,最近更新于 2026 年 5 月 25 日,积累了 115 位订阅者关注。代码采用 MIT 许可证,以 Python 为唯二主力语言(Python 3.10),架构清晰,代码可读性良好,对新手友好。

项目采用典型的五层模块化架构,每层职责明确,层与层之间通过清晰的数据结构传递信息:
main.py) — 流程编排与版本检查reddit/) — Reddit API 访问与数据拉取TTS/) — 多引擎文字转语音video_creation/) — 截图下载、背景处理、最终合成utils/) — 配置管理、清理、版本检查等通用功能GUI/) — Flask Web 配置界面这种分层设计使得添加新的 TTS 引擎或背景素材变得极为简单,只需在对应目录添加新模块并在配置中引用即可。
main.py 启动
↓
get_subreddit_threads() → praw Reddit API → 返回结构化 reddit_object
↓
save_text_to_mp3() → TTSEngine → 7种引擎之一 → MP3文件列表 + 总时长
↓
get_screenshots_of_reddit_posts() → Playwright浏览器 → 截图PNG
↓
背景配置 → download_background_video/audio() → yt-dlp YouTube下载
↓
chop_background() → moviepy 裁剪到指定时长
↓
make_final_video() → ffmpeg-python 合并 → MP4 输出
reddit/subreddit.py)使用官方 PRAW 库访问 Reddit 数据,支持以下工作模式:
手动模式:用户输入 subreddit 名称,从热帖中获取内容。
指定 ID 模式:通过 config.toml 配置 post_id,直接抓取特定帖子。
AI 排序模式:当 ai_similarity_enabled=true 时,启用 spaCy + sentence-transformers 对热帖按关键词相似度排序,选择最相关的内容。
关键处理逻辑:
[removed]、[deleted] 的评论blocked_words)的评论min_comment_length 和 max_comment_length 之间# 典型 reddit_object 结构
{
"thread_url": "https://new.reddit.com/...",
"thread_title": "帖子标题",
"thread_id": "abc123",
"is_nsfw": False,
"comments": [
{"comment_body": "...", "comment_url": "...", "comment_id": "xyz"},
...
]
}
TTS/)语音合成是整个项目的技术核心之一。通过 engine_wrapper.py 中的 TTSEngine 基类实现了策略模式,支持 7 种 TTS 引擎的热插拔:
gTTS (GTTS.py) — Google Translate 内置 TTS,免费但语音质量一般,适合尝鲜用户。
TikTok TTS (TikTok.py) — 利用 TikTok 网页的语音 API,质量接近 ElevenLabs,免费但需要获取 sessionid,技术上较为巧妙。
ElevenLabs (elevenlabs.py) — 付费服务,提供高质量自然语音,支持多语言。
AWS Polly (aws_polly.py) — 亚马逊云服务,神经网络语音,支持多种语言和声音。
Streamlabs Polly (streamlabs_polly.py) — Streamlabs API,类似于 AWS Polly。
OpenAI TTS (openai_tts.py) — OpenAI 的 tts-1/tts-1-hd 模型,支持 alloy、nova 等 11 种声音。
pyttsx3 (pyttsx.py) — 本地离线 TTS,不需要网络但质量较差。
TTSEngine 的 run() 方法执行以下步骤:
split_post)video_creation/screenshot_downloader.py)这是项目中最具技术挑战的模块之一。使用 Playwright 启动无头 Chromium 浏览器:
zoom 参数控制页面缩放级别,适配不同分辨率page.evaluate() 直接修改 DOM 中的文本内容关键实现:使用 bounding_box() 获取元素位置后截图,确保只截取帖子/评论内容区域。
video_creation/background.py)通过 yt-dlp 从 YouTube 下载背景视频和音频:
moviepy 的 subclipped() 方法裁剪到精确时长ffmpeg_extract_subclip 处理 ffmpeg 兼容性问题video_creation/final_video.py)这是最复杂的模块,核心逻辑:
两种渲染模式:
FFmpeg 渲染管线:
# 进度跟踪线程
class ProgressFfmpeg(threading.Thread):
# 解析 ffmpeg -progress 输出,实时更新进度条
# 视频叠加
background_clip.overlay(image_clip,
enable=f"between(t,{start},{end})")
# 硬件加速
ffmpeg.output(..., c:v="h264_nvenc", b:v="20M")
水印与缩略图:支持自定义频道名称、背景来源署名和视频缩略图生成。
项目 requirements.txt 包含约 20 个核心依赖,可分为以下几类:
视频处理:moviepy(视频剪辑)、ffmpeg-python(FFmpeg Python 绑定)
浏览器自动化:playwright(无头浏览器,版本 1.49.1)
Reddit 集成:praw(官方 Reddit API 包装器)、prawcore
语音服务:gTTS、elevenlabs、boto3/botocore(AWS)、OpenAI 间接依赖
AI/ML 能力:torch(2.7.0)、transformers(4.52.4)、spacy(3.8.7)— 主要用于 AI 帖子相似度排序
工具库:yt-dlp(视频下载)、translators(翻译)、rich(彩色终端输出)、Flask(Web GUI)
注意:torch + transformers 组合约 3-5GB 磁盘空间,但仅在开启 ai_similarity_enabled 时使用。
run() 接口settings.py 实现了 TOML 模板 + 交互式校验,支持默认值、类型检查、正则校验、范围校验settings.py 中使用 eval() 处理用户输入(type 字段),存在代码注入风险tests/ 目录)except: bare except 捕获所有异常DEFAULT_MAX_LENGTH = 50,可移至配置文件提供 Dockerfile,基于 python:3.10.14-slim,安装 ffmpeg 和 pip 依赖。
install.sh 支持 macOS (Homebrew)、Arch (pacman)、Debian (apt)、Fedora (dnf)、CentOS (yum),自动安装系统依赖、下载仓库、安装 Python 依赖、安装 Playwright。
项目虽非 AI 模型训练项目,但深度集成了 AI/ML 技术:
分类:AI 应用层 / 内容自动化
RedditVideoMakerBot 是一个成熟、稳定、社区活跃的内容自动化工具。其技术栈覆盖了浏览器自动化、多引擎 TTS、FFmpeg 视频合成等实用技术,架构设计清晰易扩展。适合有 Python 基础的创作者批量生产短视频内容,主要挑战在于 Reddit API 凭证管理和部分付费 TTS 服务的成本控制。
分析时间: 2026-06-08 分析深度: Level 2 — 代码架构 + 依赖生态 + 质量评估 数据来源: GitHub API v3 + 源码分析