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>
82 lines
4.3 KiB
Markdown
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 €**
|