Turn YouTube videos into blogs, LinkedIn posts, and Twitter threads — with optional writing style matching.
Note: Working of the Tool at the end ✌️.
- Paste a YouTube URL
- Pick an output format (blog, LinkedIn, Twitter)
- Optionally match a writing style from sample text
- Get AI-generated content in seconds
Authenticated via Google OAuth. All content is saved to your account.
Backend — Python (FastAPI), Groq Whisper API (transcription), Google Gemini + LlamaIndex (content generation), SQLAlchemy + NeonDB (PostgreSQL), JWT auth
Frontend — React 19, Vite
├── backend/
│ ├── app/
│ │ ├── main.py # API routes + middleware
│ │ ├── auth.py # Google OAuth + JWT
│ │ ├── database.py # SQLAlchemy models (User, Style, Blog)
│ │ ├── schema.sql # DDL for manual DB setup
│ │ └── services/
│ │ ├── audio_downloader.py # yt-dlp YouTube audio download
│ │ ├── transcriber.py # Groq Whisper transcription
│ │ ├── style_analyzer.py # Writing style analysis via Gemini
│ │ └── generate_blog_from_style.py # Content generation via LlamaIndex
│ ├── requirements.txt
│ └── runtime.txt
├── frontend/
│ ├── src/
│ │ ├── api/repurpose.js # API client
│ │ ├── context/AuthContext.jsx # Auth state
│ │ └── components/ # UI components
│ ├── package.json
│ └── vite.config.js
└── env.example
- Python 3.11+
- Node.js 18+
- NeonDB account (free tier works)
- Google Cloud project with OAuth credentials
- Gemini API key
- Groq API key
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtcd frontend
npm installCopy env.example to .env in the project root and fill in your keys. See the file for descriptions of each variable.
Create a project on NeonDB, copy the connection string into NEON_DATABASE_URL in .env. Tables are auto-created on first startup, or you can run backend/app/schema.sql manually.
In Google Cloud Console, create OAuth 2.0 credentials and add http://localhost:8000/auth/callback as an authorized redirect URI.
Start both in separate terminals:
# Backend (from backend/)
uvicorn app.main:app --reload --port 8000
# Frontend (from frontend/)
npm run devFrontend runs at http://localhost:5173, backend at http://localhost:8000. The Vite dev server proxies /api and /auth requests to the backend.
Interactive docs available at http://localhost:8000/docs when running.
| Method | Path | Description |
|---|---|---|
| GET | /auth/google |
Start Google OAuth flow |
| GET | /auth/callback |
OAuth callback |
| GET | /auth/me |
Get current user |
| POST | /api/download |
Download YouTube audio |
| POST | /api/transcribe |
Transcribe audio via Groq |
| POST | /api/analyze-style |
Analyze writing style |
| POST | /api/generate-blog |
Generate content |
| GET | /api/styles |
List saved styles |
| POST | /api/styles |
Create a style |
| DELETE | /api/styles/{id} |
Delete a style |
| GET | /api/blogs |
List generated content |
| DELETE | /api/blogs/{id} |
Delete content |
See DEPLOYMENT.md for instructions on deploying to Vercel (frontend) + Render (backend).
##Demo