Songs2VID is an automation tool that converts your audio and image files into high-quality videos and uploads them directly to YouTube.
Go to file
Atakan Doğan Özban a8beabfe36 fix: move LayoutStudio before per-audio section and add ultrafast preset + 1fps output
- LayoutStudio was buried after the per-audio list, making settings invisible
  before submit; moved it right after the Files section so layout/watermark
  settings are always visible in the workflow
- Add -preset ultrafast and -r 1 to both libx264 encode paths; without a
  preset FFmpeg defaults to medium and wastes time on motion estimation for
  still images; -r 1 avoids 25x frame synthesis overhead on 1080p
2026-08-19 17:07:28 +02:00
app Use bundled Arimo instead of Google Fonts so Docker builds work without fetching Inter. 2026-08-17 13:04:46 +02:00
assets Add lower-corner layouts, custom blur backgrounds, and classic blur fill. 2026-08-07 00:51:37 +02:00
components fix: move LayoutStudio before per-audio section and add ultrafast preset + 1fps output 2026-08-19 17:07:28 +02:00
docs Fix still-image encodes ending ~50s past audio and refresh support/docs links. 2026-08-10 19:08:10 +02:00
hooks Initial OSS scaffold from Songs2VID (pre-strip) 2026-08-03 06:15:05 +02:00
integrations/n8n Fix still-image encodes ending ~50s past audio and refresh support/docs links. 2026-08-10 19:08:10 +02:00
lib fix: move LayoutStudio before per-audio section and add ultrafast preset + 1fps output 2026-08-19 17:07:28 +02:00
prisma Add n8n community node, /api/v1/render alias, and job webhooks for OSS automation. 2026-08-08 16:32:28 +02:00
public Strip Songs2VID to a payment-free self-hosted OSS core. 2026-08-03 06:52:00 +02:00
scripts Make layout blur, opacity, and watermark position apply in rendered videos. 2026-08-17 12:47:19 +02:00
types Strip Songs2VID to a payment-free self-hosted OSS core. 2026-08-03 06:52:00 +02:00
worker Add n8n community node, /api/v1/render alias, and job webhooks for OSS automation. 2026-08-08 16:32:28 +02:00
.dockerignore Exclude integrations/n8n from Next/Docker builds so the app image typechecks cleanly. 2026-08-08 16:47:16 +02:00
.env.example Close OSS self-host gaps: in-repo API docs, legal notes, and packaging. 2026-08-03 07:36:08 +02:00
.eslintrc.json Initial OSS scaffold from Songs2VID (pre-strip) 2026-08-03 06:15:05 +02:00
.gitignore Close OSS self-host gaps: in-repo API docs, legal notes, and packaging. 2026-08-03 07:36:08 +02:00
docker-compose.dev.yml Strip Songs2VID to a payment-free self-hosted OSS core. 2026-08-03 06:52:00 +02:00
docker-compose.yml Close OSS self-host gaps: in-repo API docs, legal notes, and packaging. 2026-08-03 07:36:08 +02:00
Dockerfile Strip Songs2VID to a payment-free self-hosted OSS core. 2026-08-03 06:52:00 +02:00
DOCKERHUB_OVERVIEW.md Fix still-image encodes ending ~50s past audio and refresh support/docs links. 2026-08-10 19:08:10 +02:00
LICENSE Close OSS self-host gaps: in-repo API docs, legal notes, and packaging. 2026-08-03 07:36:08 +02:00
next-env.d.ts Initial OSS scaffold from Songs2VID (pre-strip) 2026-08-03 06:15:05 +02:00
next.config.ts Strip Songs2VID to a payment-free self-hosted OSS core. 2026-08-03 06:52:00 +02:00
package-lock.json Strip Songs2VID to a payment-free self-hosted OSS core. 2026-08-03 06:52:00 +02:00
package.json Close OSS self-host gaps: in-repo API docs, legal notes, and packaging. 2026-08-03 07:36:08 +02:00
postcss.config.mjs Initial OSS scaffold from Songs2VID (pre-strip) 2026-08-03 06:15:05 +02:00
README.md Fix still-image encodes ending ~50s past audio and refresh support/docs links. 2026-08-10 19:08:10 +02:00
tailwind.config.ts Initial OSS scaffold from Songs2VID (pre-strip) 2026-08-03 06:15:05 +02:00
tsconfig.json Exclude integrations/n8n from Next/Docker builds so the app image typechecks cleanly. 2026-08-08 16:47:16 +02:00

🎬 Songs2VID

Payment-free, self-hosted software that turns cover art and audio into YouTube videos (FFmpeg encoding + BullMQ jobs). Every deployment has full entitlements — there are no plans, credits, purchases, subscriptions, paywalls, or Stripe.

Sign in with Google, open the dashboard, and create videos. Settings cover account, YouTube connection, and API keys only.

Songs2VID Dashboard

🚀 Quick start (Docker)

Published image: atakanozban/songs2vid:latest

  1. Clone this repo (or copy docker-compose.yml + .env.example).
  2. Copy .env.example to .env and set at least:
    • NEXTAUTH_SECRET
    • GOOGLE_CLIENT_ID
    • GOOGLE_CLIENT_SECRET
  3. In Google Cloud Console, enable YouTube Data API v3 and add an OAuth redirect URI:
    • Local: http://localhost:3000/api/auth/callback/google
    • Production: https://YOUR_DOMAIN/api/auth/callback/google
  4. Start the stack (web + worker + Postgres + Redis):
docker compose up -d

Compose uses the published image by default (atakanozban/songs2vid:latest) and can also build from this repo (docker compose up -d --build).

Open http://localhost:3000 → sign in → dashboard.

No Stripe keys, billing env vars, or edition flags are required. Watermarks are optional; OSS does not force a free-tier SaaS badge paywall.

✨ Features

  • 📦 Batch: one cover (or per-track covers) + many audio files → YouTube uploads
  • 🖼️ Classic letterbox and art-track layouts (blur backgrounds, typography, fine-tuning)
  • 💧 Custom watermarks (badge, text, or logo) and curated or uploaded fonts
  • ▶️ YouTube playlists, privacy, tags, resolution, categories
  • 🔌 REST API for automation (keys under Dashboard → Settings → API key)
  • 🤖 n8n community node n8n-nodes-songs2vid + optional webhookUrl callbacks
  • 🔓 Always-on self-hosted entitlements (no quota paywall)

📚 API documentation

🛠️ Local development

docker compose -f docker-compose.dev.yml up -d
cp .env.example .env   # then edit secrets / Google OAuth
npm install
npm run db:migrate
npm run dev:all

⚙️ Environment

See .env.example for the required and optional variables. Matching guide: docs.songs2vid.com/docs/environment.

In-app Privacy and Terms pages describe self-hosted responsibility: the operator of each instance controls data and access; this software does not process payments. They are not the paid cloud terms for songs2vid.com.

🧱 Stack

  • Next.js 15, TypeScript, Tailwind
  • PostgreSQL and Prisma
  • Redis and BullMQ
  • NextAuth with Google OAuth (YouTube scopes)
  • FFmpeg
  • YouTube Data API v3

📄 License

MIT