# Songs2VID

Payment-free, self-hosted software that turns cover art and audio into YouTube videos (FFmpeg + BullMQ). Full entitlements in every deployment — no plans, credits, Stripe, or paywall.

**Image:** `atakanozban/songs2vid:latest`  
**License:** MIT

**Primary source hub:** https://git.atakanozban.com/Songs2VID  
**Repo:** https://git.atakanozban.com/Songs2VID/songs2vid  
**Docs:** https://docs.songs2vid.com  
**n8n (npm):** https://www.npmjs.com/package/n8n-nodes-songs2vid  
**Web UI (secondary mirror):** https://songs2vid.com

## Quick start

1. Clone the repo (Compose + `.env.example`) from Gitea, or reuse the sample `docker-compose.yml`.
2. Copy `.env.example` → `.env` and set:
   - `NEXTAUTH_SECRET`
   - `GOOGLE_CLIENT_ID`
   - `GOOGLE_CLIENT_SECRET`
3. Enable **YouTube Data API v3** in Google Cloud and add OAuth redirect:
   - `http://localhost:3000/api/auth/callback/google` (or your public HTTPS origin)
4. Run:

```bash
docker pull atakanozban/songs2vid:latest
docker compose up -d
```

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

No Stripe, billing, or edition environment variables are required. Watermarks are optional (no free-tier badge paywall).

## What you get

- Batch encode: cover art + audio → YouTube upload
- Classic and art-track layouts, blur, typography, watermarks
- Playlists, privacy, tags, resolutions
- REST API (Dashboard → Settings → API key)
- Always-on self-hosted entitlements

## Stack

Next.js 15 · PostgreSQL/Prisma · Redis/BullMQ · NextAuth (Google + YouTube) · FFmpeg

## Links

- Primary source hub: https://git.atakanozban.com/Songs2VID
- Full documentation: https://docs.songs2vid.com
- Getting started: https://docs.songs2vid.com/docs/getting-started
- Environment variables: https://docs.songs2vid.com/docs/environment
- REST API: https://docs.songs2vid.com/docs/api/overview
- In-repo API notes: https://git.atakanozban.com/Songs2VID/songs2vid/src/branch/main/docs/api
- n8n node: https://www.npmjs.com/package/n8n-nodes-songs2vid
- Web UI: https://songs2vid.com
