Turns a YouTube video into: transcript summary, blog draft, LinkedIn post, Twitter thread, thumbnail text ideas.
python -m venv .venv
# Linux / macOS
source .venv/bin/activate
# Windows PowerShell
.venv\Scripts\Activate.ps1
pip install -r requirements.txtCopy & edit env file:
cp env.example .env # (Windows) copy env.example .envAdd your GOOGLE_API_KEY (Gemini key from Google AI Studio).
Install FFmpeg:
- Windows: https://www.gyan.dev/ffmpeg/builds/ (extract, add
binto PATH or setFFMPEG_BINin.env) - macOS:
brew install ffmpeg - Linux (Debian/Ubuntu):
sudo apt-get install ffmpeg
cd frontend
npm install
# Start dev server
npm run dev
# Build for production
npm run buildThe dev server runs at http://localhost:5173 (default). The frontend expects the FastAPI backend at http://127.0.0.1:8000 (see VITE_API_BASE in code).
uvicorn app.main:app --reloadOpen: http://127.0.0.1:8000/docs
GET /health– basic health checkPOST /process– body:
{
"url": "https://www.youtube.com/watch?v=...",
"tone": "professional",
"audience": "founders, marketers",
"language": "en",
"outputs": ["blog", "linkedin", "twitter", "thumbnail"]
}- Modern UI: Vite + React + Tailwind CSS frontend
- Input Validation: Validates YouTube URLs and input parameters
- Error Handling: Comprehensive error handling with proper HTTP status codes
- Resource Management: Automatic cleanup of temporary files
- Logging: Detailed logging for debugging and monitoring
- CORS Support: Cross-origin resource sharing enabled
- API Documentation: Auto-generated OpenAPI documentation
- Provide
GEMINI_API_KEY(Google AI Studio).OPENAI_API_KEYno longer used. - Whisper model downloads on first run; choose a smaller model for speed.
- Thumbnail ideas are truncated to <= 40 chars.
- Temporary audio files are automatically cleaned up after processing.
pytest tests/docker build -t repurposer .
docker run -p 8000:8000 --env-file .env repurposerRepurposer/
├── app/ # FastAPI backend
├── frontend/ # Vite + React + Tailwind frontend
├── tests/ # Backend tests
├── Dockerfile # Backend Dockerfile
├── requirements.txt
└── ...
- ✅ Added Vite + React frontend
- ✅ Fixed duplicate Dockerfile content
- ✅ Added proper error handling and validation
- ✅ Implemented resource cleanup
- ✅ Added comprehensive logging
- ✅ Enhanced test coverage
- ✅ Added input validation for URLs and parameters
- ✅ Created missing env.example file