reddit-video-bot/PLAN.md
sylyx 98e829c995 Initial implementation of reddit-video-bot
Full pipeline: Reddit sourcing → Groq text optimization → Edge-TTS voice
generation → Whisper transcription → FFmpeg video rendering with word-level
subtitles. Includes SQLite deduplication and .env-based config.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 10:29:32 +02:00

82 lines
4.3 KiB
Markdown

# Projekt-Plan: Automatisierter Reddit-Story Video Creator
Dieses Projekt automatisiert die Erstellung von Social-Media-Videos (TikTok, YouTube Shorts, Reels) basierend auf populären Reddit-Beiträgen. Das Ziel ist ein "Low-Cost, High-Efficiency" Workflow.
## 1. Architektur & Workflow
1. **Sourcing**: Ein Skript sucht über die Reddit API (`praw`) nach viralen Posts in Subreddits wie `r/AITAH`, `r/relationship_advice` oder `r/confessions`. Bereits verarbeitete Posts werden über eine lokale SQLite-Datenbank übersprungen.
2. **Processing (Groq)**: Der Text wird an Groq (Llama 3) gesendet. Die KI bereinigt den Text, entfernt unnötige Kürzel, verbessert den Spannungsbogen und sorgt für einen starken "Hook" in den ersten 3 Sekunden.
3. **Voice (Edge-TTS)**: Der optimierte Text wird mit der Microsoft Edge TTS Engine in eine hochwertige, menschlich klingende MP3-Datei umgewandelt (kostenlos).
4. **Transkription (Whisper)**: Das Audio wird mit OpenAI Whisper lokal transkribiert, um wortgenaue Zeitstempel für die Untertitel zu erhalten. Standard-Modell: `base` (schnell) — für höhere Qualität auf `medium` wechseln.
5. **Visuals & Montage (FFmpeg)**:
* Hintergrundvideo (z.B. Minecraft Parkour) wird geladen und bei Bedarf geloopt, sodass es die volle Audio-Länge abdeckt.
* Audio wird darübergelegt.
* Untertitel werden per `ffmpeg drawtext`-Filter wort-genau und animiert eingeblendet (schneller und stabiler als MoviePy TextClip).
6. **Export**: Das fertige Video wird als `.mp4` im Hochformat (9:16) exportiert.
## 2. Tech-Stack
- **Sprache**: Python 3.10+
- **LLM**: Groq API (Llama 3 70B)
- **Voice**: `edge-tts` (Python Bibliothek)
- **Transkription**: `openai-whisper` (lokal, Modell: `base` oder `medium`)
- **Video-Editing**: `ffmpeg` (direkt via `subprocess`), `moviepy` nur für einfache Clips
- **Reddit API**: `praw`
- **Secrets**: `python-dotenv` + `.env` Datei
- **Deduplication**: `sqlite3` (Standardbibliothek, kein Extra-Install)
## 3. Verzeichnisstruktur
```text
reddit-video-bot/
├── main.py # Hauptsteuerung des Bots
├── .env # API-Keys (wird nicht committed)
├── .env.example # Vorlage mit Platzhaltern
├── src/
│ ├── reddit_client.py # Holt Posts von Reddit, prüft Duplikate per SQLite
│ ├── processor.py # Groq-Integration & Text-Optimierung
│ ├── voice_gen.py # Edge-TTS Integration
│ ├── subtitler.py # Whisper-Transkription & Wort-Zeitstempel
│ └── video_engine.py # Montage mit FFmpeg (loop, audio, drawtext)
├── assets/
│ ├── background_videos/ # Speicherort für Hintergrund-Loops
│ └── fonts/ # Schriftarten für Untertitel
├── output/ # Hier landen die fertigen Videos
├── processed.db # SQLite: bereits verarbeitete Post-IDs
└── requirements.txt # Abhängigkeiten
```
## 4. Implementierungsschritte
### Phase 1: Setup & Sourcing
- `requirements.txt` und `.env.example` erstellen, Bibliotheken installieren.
- `reddit_client.py` implementieren: Authentifizierung, Abruf der Top-Posts der letzten 24h, SQLite-Check auf Duplikate.
### Phase 2: Logik & Stimme
- `processor.py` erstellen: Groq API einbinden und Prompt-Engineering für virale Storys.
- `voice_gen.py` erstellen: Funktion zum Speichern von Text als MP3 via `edge-tts`.
### Phase 3: Transkription & Untertitel
- `subtitler.py` erstellen: Whisper Modell laden (`base` als Default), Audio zu Wort-Zeitstempeln konvertieren.
- Zeitstempel als strukturierte Liste ausgeben (für FFmpeg `drawtext`).
### Phase 4: Video-Engine *(höchstes Risiko — früh prototypen)*
- `video_engine.py` erstellen:
- Zufälligen Clip aus `assets/background_videos/` wählen.
- Hintergrundvideo per FFmpeg loopen bis Audio-Länge erreicht ist.
- Audio einbetten.
- Untertitel wort-genau per `drawtext`-Filter rendern.
- Ziel-Format: 9:16, 1080x1920.
### Phase 5: Automatisierung
- `main.py` schreiben: Alle Module verknüpfen, Post-ID nach erfolgreichem Export in SQLite speichern.
## 5. Kosten-Optimierung
- **Groq**: Kostenlos (Free Tier).
- **Edge-TTS**: Kostenlos.
- **Whisper**: Kostenlos (läuft lokal).
- **Reddit API**: Kostenlos (für persönliche Nutzung).
- **Visuals**: Einmalig kostenlose Gameplay-Videos von YouTube/Pexels laden.
**Gesamtkosten pro Video: ~0,00 €**