Transcribe Instagram Reels instantly with AI-powered speech recognition.
- Instant Transcription - Paste any Instagram Reel URL and get accurate transcripts
- Multi-language Support - Automatically detects and transcribes in multiple languages
- Timestamps - Get word-by-word timestamps for easy navigation
- Shareable Links - Share transcript pages with anyone
- No Login Required - Start transcribing immediately
- Frontend: Next.js 14, React, TypeScript, Tailwind CSS, Shadcn UI
- Backend: Next.js API Routes, Prisma ORM
- Worker: Go, yt-dlp, Whisper (Python)
- Database: PostgreSQL
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CLIENT β
β (Browser / User) β
βββββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββ
β
β HTTP
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β NEXT.JS SERVER β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β App Router β β
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
β β β Home (/) β β /transcript β β /api/* β β β
β β β β β /[id] β β β β β
β β βββββββββββββββ βββββββββββββββ ββββββββ¬βββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββ β
β β β
β βββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββ β
β β API Routes β β β
β β βββββββββββββββββββ βββββββββββββββββββ β βββββββββββββββββββ β β
β β β POST /transcribeβ β GET /task/[id] β β β GET /thumbnail/ β β β
β β β β β β β β [filename] β β β
β β β Create Task β β Poll Status β β β Serve Images β β β
β β ββββββββββ¬βββββββββ ββββββββββ¬βββββββββ β ββββββββββ¬βββββββββ β β
β βββββββββββββΌβββββββββββββββββββββΌβββββββββββΌβββββββββββΌβββββββββββββββββ β
ββββββββββββββββΌβββββββββββββββββββββΌβββββββββββΌβββββββββββΌβββββββββββββββββββββ
β β β β
β β β β Read Files
βΌ βΌ β βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββ
β POSTGRESQL β β
β ββββββββββββββββββββββββββββββββββββββββββ β β
β β tasks table β β β
β β ββββββββββββ¬ββββββββββ¬ββββββββββββββ β β β
β β β id β status β source_url β β β β
β β β (uuid) β PENDING β instagram.. β β β β
β β β β PROCESS β β β β β
β β β β DONE β β β β β
β β β β FAILED β β β β β
β β ββββββββββββ΄ββββββββββ΄ββββββββββββββ β β β
β ββββββββββββββββββββββββββββββββββββββββββ β β
ββββββββββββββββββββββββ¬ββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββ
β β
β Poll for PENDING β
βΌ β
ββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββ
β GO WORKER β β
β ββββββββββββββββββββββββββββββββββββββββββ β β
β β Main Loop β β β
β β β β β
β β 1. Claim PENDING task β β β
β β 2. Download video (yt-dlp) β β β
β β 3. Transcribe (Whisper) β β β
β β 4. Download thumbnail β β β
β β 5. Mark task DONE β β β
β ββββββββββββββββββββββββββββββββββββββββββ β β
β β β
β ββββββββββββββββββββββββββββββββββββββββββ β βββββββββββββββββββββββββββ β
β β downloads/ β β β External APIs β β
β β βββββββββββββ βββββββββββββ β β β βββββββββββββββββββ β β
β β β thumbnailsβ βtranscriptsβ ββββββββββΌβββ β β Instagram β β β
β β β /*.jpg β β /*.json β β β β (via yt-dlp) β β β
β β βββββββββββββ βββββββββββββ β β βββββββββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
User Server Database Worker
β β β β
β 1. Submit URL β β β
ββββββββββββββββββββββββ>β β β
β β 2. Create Task β β
β ββββββββββββββββββββββββ>β β
β 3. Return taskId β β β
β<ββββββββββββββββββββββββ β β
β β β β
β 4. Poll /task/[id] β β 5. Claim Task β
ββββββββββββββββββββββββ>β β<βββββββββββββββββββββββ
β β 6. Get Status β β
β ββββββββββββββββββββββββ>β 7. Download Video β
β 8. Status: PROCESSING β β 8. Transcribe β
β<ββββββββββββββββββββββββ β 9. Save Files β
β β β β
β ... keep polling ... β β 10. Mark DONE β
β β β<βββββββββββββββββββββββ
β β β β
β 11. Poll /task/[id] β β β
ββββββββββββββββββββββββ>β 12. Get Status + Data β β
β ββββββββββββββββββββββββ>β β
β 13. Status: DONE β β β
β + transcript β β β
β<ββββββββββββββββββββββββ β β
β β β β
β 14. Redirect to β β β
β /transcript/[id] β β β
βΌ βΌ βΌ βΌ
reelstudio/
βββ server/ # Next.js frontend & API
β βββ app/ # App router pages
β β βββ api/ # API routes
β β βββ transcript/ # Transcript view pages
β βββ components/ # React components
β β βββ ui/ # Shadcn UI components
β βββ lib/ # Utilities
β βββ prisma/ # Database schema
β
βββ worker/ # Go worker for processing
βββ cmd/worker/ # Entry point
βββ internal/ # Internal packages
βββ downloads/ # Downloaded media & thumbnails
β βββ thumbnails/ # Cached thumbnails
β βββ transcripts/ # Transcript JSON files
β βββ tmp/ # Temporary video files
βββ scripts/ # Python transcription scripts
- Node.js 18+
- Go 1.21+
- Python 3.10+
- PostgreSQL
- yt-dlp
- ffmpeg
Create .env files in both server/ and worker/ directories:
server/.env
DATABASE_URL="postgresql://user:password@localhost:5432/reelstudio"worker/.env
DATABASE_URL="postgresql://user:password@localhost:5432/reelstudio"-
Clone the repository
git clone https://github.com/stym06/reelstudio.git cd reelstudio -
Set up the database
cd server npm install npx prisma generate npx prisma db push -
Start the frontend
cd server npm run dev -
Set up the worker
cd worker python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt make run
- Paste an Instagram Reel URL in the input field
- Click "Get Transcript" and wait for processing
- View your transcript with timestamps
- Copy or share the transcript link
| Endpoint | Method | Description |
|---|---|---|
/api/transcribe |
POST | Submit a new transcription task |
/api/task/[id] |
GET | Get task status and transcript |
/api/thumbnail/[filename] |
GET | Serve cached thumbnails |
MIT