Create Reddit Videos with just one command
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Go to file
Claude 2c4a8a8a64
feat: add complete web UI for configuration and video generation
3 days ago
.github FIX: Stop CI from closing valid issues 1 year ago
GUI feat: add complete web UI for configuration and video generation 3 days ago
TTS feat: integrate Qwen3 TTS and add progress GUI 4 days ago
assets fancy title screen 2 years ago
fonts Added the story mode with 2 methods by Electro199 (#1288) 3 years ago
reddit feat: replace Reddit API with no-OAuth scraper 3 days ago
utils feat: replace Reddit API with no-OAuth scraper 3 days ago
video_creation feat: integrate Qwen3 TTS and add progress GUI 4 days ago
.dockerignore chore: release 3.4.0 (#2426) 3 months ago
.gitattributes chore(*): Add devcontainer vscode support 4 years ago
.gitignore fancy title screen 2 years ago
.pylintrc Remove init-hook from pylint 4 years ago
.python-version chore: release 3.4.0 (#2426) 3 months ago
CODE_OF_CONDUCT.md Add code of conduct completing community standards 4 years ago
CONTRIBUTING.md Sorry, wrong repo URL 4 years ago
Dockerfile feat: integrate Qwen3 TTS and add progress GUI 4 days ago
GUI.py fix isort profile 2 years ago
LICENSE Merge branch 'develop' into pr/ProjectSlxsh/418 4 years ago
README.md feat: replace Reddit API with no-OAuth scraper 3 days ago
build.sh setup.py heavily refactored, all files formatted with python-BLACK and added shebang lines 4 years ago
config.example.toml feat: replace Reddit API with no-OAuth scraper 3 days ago
docker-compose.yml feat: add complete web UI for configuration and video generation 3 days ago
docker-entrypoint.sh feat: replace Reddit API with no-OAuth scraper 3 days ago
install.sh Update install.sh 4 years ago
main.py feat: replace Reddit API with no-OAuth scraper 3 days ago
progress_gui.py feat: add complete web UI for configuration and video generation 3 days ago
requirements.txt feat: replace Reddit API with no-OAuth scraper 3 days ago
run.bat Version 3.2 3 years ago
run.sh fixed run.sh 4 years ago

README.md

Reddit Video Maker Bot

Automatically generate short-form videos from Reddit posts. No Reddit API credentials required.

Features

  • No Reddit API Keys Needed: Uses Reddit's public .json endpoints (no OAuth required)
  • Multiple TTS Engines: Qwen3 TTS (default), OpenAI TTS, ElevenLabs, TikTok, Google Translate, AWS Polly
  • Real-time Progress GUI: Web-based dashboard showing video generation progress with live updates
  • Docker Support: Fully containerized with docker-compose for easy deployment
  • Background Customization: Multiple background videos and audio tracks included
  • Story Mode: Special mode for narrative subreddits (r/nosleep, r/tifu, etc.)
  • AI Content Sorting: Optional semantic similarity sorting for relevant posts

Quick Start with Docker

# Clone the repository
git clone https://github.com/elebumm/RedditVideoMakerBot.git
cd RedditVideoMakerBot

# Create your config file
cp config.example.toml config.toml
# Edit config.toml with your TTS settings (no Reddit credentials needed!)

# Start with docker-compose
docker-compose up -d

# View progress at http://localhost:5000

Manual Installation

Requirements

  • Python 3.10, 3.11, or 3.12
  • FFmpeg
  • Playwright browsers

Setup

# Clone repository
git clone https://github.com/elebumm/RedditVideoMakerBot.git
cd RedditVideoMakerBot

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: .\venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Install Playwright browsers
playwright install
playwright install-deps

# Download spaCy model (for story mode)
python -m spacy download en_core_web_sm

# Copy and configure
cp config.example.toml config.toml
# Edit config.toml with your settings

# Run the bot
python main.py

Configuration

Create a config.toml file in the project root. The bot will prompt you for settings on first run.

Reddit Settings (No API Keys Required!)

The bot scrapes Reddit's public .json endpoints - no API credentials needed:

[reddit.scraper]
user_agent = "python:reddit_video_bot:1.0"  # Customize to avoid rate limiting
request_delay = 2.0  # Seconds between requests

[reddit.thread]
subreddit = "AskReddit"  # Target subreddit
post_id = ""             # Optional: specific post ID
min_comments = 20        # Minimum comments required

Note: This approach is subject to Reddit's rate limiting. If you experience 429 errors, increase request_delay.

Qwen TTS Setup (Default)

Qwen TTS requires a running Qwen TTS server:

[settings.tts]
voice_choice = "qwentts"
qwen_api_url = "http://localhost:8080"
qwen_email = "your_email@example.com"
qwen_password = "your_password"
qwen_speaker = "Vivian"  # Options: Chelsie, Ethan, Vivian, Asher, Aria, Oliver, Emma, Noah, Sophia
qwen_language = "English"
qwen_instruct = "Warm, friendly, conversational."

Qwen TTS API Usage:

# 1. Login to get token
TOKEN=$(curl -s http://localhost:8080/api/agent/api/auth/login \
  -H 'Content-Type: application/json' \
  -d '{"email":"you@example.com","password":"YOUR_PASSWORD"}' \
  | python -c "import sys, json; print(json.load(sys.stdin)['access_token'])")

# 2. Generate TTS
curl -s http://localhost:8080/api/qwen-tts \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"text": "Hello!", "language": "English", "speaker": "Vivian", "instruct": "Warm, friendly."}' \
  --output output.wav

TTS Options

Provider Key Requirements
Qwen TTS qwentts Qwen TTS server
OpenAI openai API key
ElevenLabs elevenlabs API key
TikTok tiktok Session ID
Google Translate googletranslate None (free)
AWS Polly awspolly AWS credentials
Streamlabs Polly streamlabspolly None (rate limited)

Progress GUI

The bot includes a real-time progress tracking GUI.

# Enable GUI mode
export REDDIT_BOT_GUI=true
python main.py

# Or run GUI standalone
python progress_gui.py

Access at: http://localhost:5000

Features

  • Real-time progress updates via WebSocket
  • Step-by-step visualization
  • Preview images during generation
  • Job history tracking

Docker Deployment

Using Docker Compose

# docker-compose.yml
services:
  reddit-video-bot:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - ./config.toml:/app/config.toml:ro
      - ./results:/app/results
    environment:
      - REDDIT_BOT_GUI=true

Environment Variables

Variable Description
REDDIT_SUBREDDIT Target subreddit
TTS_VOICE_CHOICE TTS provider
QWEN_API_URL Qwen TTS server URL
QWEN_EMAIL Qwen TTS email
QWEN_PASSWORD Qwen TTS password

Project Structure

RedditVideoMakerBot/
├── main.py                 # Entry point
├── progress_gui.py         # Progress GUI server
├── config.toml             # Configuration file
├── TTS/                    # TTS engine modules
│   ├── qwen_tts.py        # Qwen TTS provider
│   ├── openai_tts.py      # OpenAI TTS provider
│   └── ...
├── video_creation/         # Video generation
├── reddit/                 # Reddit scraper (no-auth)
│   ├── scraper.py         # Public .json endpoint scraper
│   └── subreddit.py       # Thread fetcher
├── utils/                  # Utilities
│   ├── progress.py        # Progress tracking
│   └── settings.py        # Configuration
├── GUI/                    # Web GUI templates
│   ├── progress.html
│   └── static/
├── Dockerfile
└── docker-compose.yml

Output

Generated videos are saved to results/{subreddit}/.

Limitations

Reddit Scraper Limitations

  • Rate Limiting: Reddit may throttle or block requests. Increase request_delay if needed.
  • ~1000 Post Cap: Reddit listings are capped at ~1000 posts. Run daily for continuous collection.
  • Incomplete Comments: Large threads may have missing comments ("more" placeholders are skipped).
  • Policy Compliance: Respect Reddit's Terms of Service when using scraped content.

Troubleshooting

Common Issues

Rate Limited (429 errors)

# Increase delay in config.toml
[reddit.scraper]
request_delay = 5.0  # Try 5+ seconds

FFmpeg not found

# Ubuntu/Debian
sudo apt install ffmpeg

# macOS
brew install ffmpeg

# Windows
# Download from https://ffmpeg.org/download.html

Playwright browsers missing

playwright install
playwright install-deps

TTS authentication failed

  • Verify your Qwen TTS server is running
  • Check credentials in config.toml
  • Ensure the API URL is correct

License

Roboto Fonts are licensed under Apache License V2