# 🎵 Songs2VID

Status Docker Self-hosted License

Turn your cover art + audio files into YouTube videos automatically.
Art-track layouts, blur backgrounds, typography, watermark studio, and per-track covers — unlocked for self-hosting.

--- ## What's the deal? **Songs2VID** (npm package `songs2yt`) is a self-hosted automation app that takes your audio files (MP3/WAV/FLAC) and cover images, encodes them with FFmpeg in a background queue, and uploads them to your YouTube channel. This is the **open-source (self-hosted) edition**: * **Zero practical limits:** no video quotas, credits, or Stripe paywalls * **Fully unlocked:** playlists, REST API, art-track layouts, custom watermarks/fonts, per-track covers (`S2VID_EDITION=selfhosted`) * **Your infra:** run it on your own server > Hosted cloud product: [songs2vid.com](https://songs2vid.com) · Docs: [docs.songs2vid.com](https://docs.songs2vid.com) · API: [docs.songs2vid.com/docs/api/overview](https://docs.songs2vid.com/docs/api/overview) ![Songs2VID](https://www.atakanozban.com/Content/uploads/projects-media/f59f2b3c290042ceb8d12fe9395b0dda.png) --- ## Requirements * **Docker & Docker Compose** (recommended) * *Or:* Node 20+, Postgres, Redis, FFmpeg * Google Cloud OAuth client with **YouTube Data API v3** enabled --- ## Quick Start (Docker) ```bash cp .env.example .env # Fill in GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, NEXTAUTH_SECRET, and NEXTAUTH_URL docker compose up -d --build ``` * Open `http://localhost:3000` * OAuth redirect URL: `{NEXTAUTH_URL}/api/auth/callback/google` * `S2VID_EDITION=selfhosted` is set by compose (no Stripe keys required) ## Local Development ```bash cp .env.example .env docker compose -f docker-compose.dev.yml up -d npm install npm run db:push npm run dev # Terminal 1 npm run worker # Terminal 2 ``` Optional: fetch curated watermark fonts into `assets/fonts/` with `node scripts/fetch-watermark-fonts.mjs`. ## Features * Batch audio → YouTube video jobs * Art-track layout templates + blur background + fine-tuning offsets * Watermark studio (text / logo / curated + custom fonts) * Per-track cover images and artist field * YouTube playlists + REST API (`/api/v1`) ## Stack * Next.js · Postgres · Redis / BullMQ · NextAuth (Google) · FFmpeg · YouTube Data API ## Links * Docs: https://docs.songs2vid.com * Hosted: https://songs2vid.com * Gitea: https://git.atakanozban.com/Songs2YT/songs2yt * Docker Hub: https://hub.docker.com/r/atakanozban/songs2yt ## License MIT