87 lines
2.9 KiB
Markdown
87 lines
2.9 KiB
Markdown
# 🎵 Songs2VID
|
|
|
|
<p align="center">
|
|
<img src="https://img.shields.io/badge/Status-100%25%20Operational-brightgreen?style=for-the-badge" alt="Status">
|
|
<img src="https://img.shields.io/badge/Docker-Supported-blue?style=for-the-badge&logo=docker" alt="Docker">
|
|
<img src="https://img.shields.io/badge/Edition-Self--hosted-orange?style=for-the-badge" alt="Self-hosted">
|
|
<img src="https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge" alt="License">
|
|
</p>
|
|
|
|
<p align="center">
|
|
<b>Turn your cover art + audio files into YouTube videos automatically.</b><br>
|
|
<i>Art-track layouts, blur backgrounds, typography, watermark studio, and per-track covers — unlocked for self-hosting.</i>
|
|
</p>
|
|
|
|
---
|
|
|
|
## 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)
|
|
|
|

|
|
|
|
---
|
|
|
|
## 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/Songs2VID/songs2vid
|
|
* Docker Hub: https://hub.docker.com/r/atakanozban/songs2vid
|
|
|
|
## License
|
|
|
|
MIT
|