mirror of
https://git.atakanozban.com/Songs2VID/songs2vid.git
synced 2026-10-04 10:38:32 +02:00
Songs2VID is an automation tool that converts your audio and image files into high-quality videos and uploads them directly to YouTube.
|
|
||
|---|---|---|
| app | ||
| components | ||
| lib | ||
| prisma | ||
| public | ||
| types | ||
| worker | ||
| .env.example | ||
| .eslintrc.json | ||
| .gitignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| docker-compose.yml | ||
| eslint.config.mjs | ||
| next-env.d.ts | ||
| next.config.ts | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.mjs | ||
| README.md | ||
| tailwind.config.ts | ||
| tsconfig.json | ||
s2yt
Create YouTube videos from an image and audio files.
Stack
- Next.js 15 (App Router, TypeScript, Tailwind)
- PostgreSQL + Prisma
- Redis + BullMQ
- NextAuth (Google OAuth with YouTube scopes)
- FFmpeg for video encoding
- YouTube Data API v3
Setup
- Copy environment variables:
cp .env.example .env
- Start PostgreSQL and Redis:
docker compose up -d
- Install dependencies and run migrations:
npm install
npm run db:push
-
Configure Google OAuth in Google Cloud Console:
- Enable YouTube Data API v3
- Create OAuth 2.0 credentials
- Add redirect URI:
http://localhost:3000/api/auth/callback/google - Set
GOOGLE_CLIENT_IDandGOOGLE_CLIENT_SECRETin.env
-
Install FFmpeg on your system (required for the worker).
-
Start the web app and worker in separate terminals:
npm run dev
npm run worker
Free Plan
- 14 videos/month (each audio = 1 video)
- Max 720p resolution
- 30 MB max per file
- Watermark required
- Per-video metadata (title auto-filled from audio filename)
Scripts
npm run dev— Next.js dev servernpm run worker— Background job processornpm run db:push— Push Prisma schema to databasenpm run build— Production build