Sync layouts, typography, and watermark studio for self-hosted OSS.
Unlock features without credits/Stripe, point docs to docs.songs2vid.com, and drop leftover billing admin surfaces. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -8,82 +8,79 @@
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<b>Turn your cover art + audio files into YouTube videos automatically. No manual rendering BS.</b><br>
|
||||
<i>The ultimate life-saver for creators who waste hours opening Premiere/Vegas just to upload a single track.</i>
|
||||
<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?
|
||||
## What's the deal?
|
||||
|
||||
**Songs2VID** is a self-hosted automation beast that takes your audio files (MP3/WAV) and cover images, smashes them together with FFmpeg in a background queue, and uploads them straight to your YouTube channel.
|
||||
**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 limits:** No video upload quotas, no API rate limit bullshit.
|
||||
* 🔓 **Fully Unlocked:** Playlists and REST API are completely unlocked (`S2VID_EDITION=selfhosted`).
|
||||
* ☁️ **Full Control:** Run it on your own server. Your data, your rules.
|
||||
* **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
|
||||
|
||||
> Check out the hosted version: [songs2vid.com](https://songs2vid.com)
|
||||
> 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
|
||||
## Requirements
|
||||
|
||||
* **Docker & Docker Compose** (highly recommended, saves your mental health)
|
||||
* **Docker & Docker Compose** (recommended)
|
||||
* *Or:* Node 20+, Postgres, Redis, FFmpeg
|
||||
* Google Cloud OAuth client with **YouTube Data API v3** enabled
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Quick Start (Docker)
|
||||
|
||||
Skip the setup headache. Copy the env, spin it up, and go touch grass:
|
||||
## Quick Start (Docker)
|
||||
|
||||
```bash
|
||||
# Copy env template
|
||||
cp .env.example .env
|
||||
|
||||
# Fill in GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, NEXTAUTH_SECRET, and NEXTAUTH_URL
|
||||
nano .env
|
||||
|
||||
# Fire up the engine
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
* Open `http://localhost:3000`
|
||||
* OAuth Redirect URL on Google Console: `{NEXTAUTH_URL}/api/auth/callback/google`
|
||||
* OAuth redirect URL: `{NEXTAUTH_URL}/api/auth/callback/google`
|
||||
* `S2VID_EDITION=selfhosted` is set by compose (no Stripe keys required)
|
||||
|
||||
## 💻 Local Development
|
||||
|
||||
Want to hack on the codebase? Follow this:
|
||||
## Local Development
|
||||
|
||||
```bash
|
||||
# 1. Prepare env
|
||||
cp .env.example .env
|
||||
|
||||
# 2. Spin up Postgres & Redis
|
||||
docker compose -f docker-compose.dev.yml up -d
|
||||
|
||||
# 3. Get dependencies
|
||||
npm install
|
||||
|
||||
# 4. Push database schema
|
||||
npm run db:push
|
||||
|
||||
# 5. Run it (open two terminals)
|
||||
npm run dev # Terminal 1 (Next.js)
|
||||
npm run worker # Terminal 2 (BullMQ/FFmpeg Worker)
|
||||
npm run dev # Terminal 1
|
||||
npm run worker # Terminal 2
|
||||
```
|
||||
|
||||
## 🏗️ Stack
|
||||
Optional: fetch curated watermark fonts into `assets/fonts/` with `node scripts/fetch-watermark-fonts.mjs`.
|
||||
|
||||
* Next.js (Frontend & API)
|
||||
* Postgres (Database)
|
||||
* Redis / BullMQ (Background render queue)
|
||||
* NextAuth (Google OAuth)
|
||||
* FFmpeg (The engine merging audio + image)
|
||||
* YouTube Data API (The rocket launcher pushing to YT)
|
||||
## Features
|
||||
|
||||
## 📄 License
|
||||
* 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`)
|
||||
|
||||
This project is licensed under the MIT License.
|
||||
## 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
|
||||
|
||||
Reference in New Issue
Block a user