43 lines
1.0 KiB
Markdown
43 lines
1.0 KiB
Markdown
# Songs2YT
|
|
|
|
Self-hosted tool that turns a cover image + audio files into YouTube videos and uploads them to your channel.
|
|
|
|
This is the **open-source edition**: no video quotas, no API rate limits, playlists and REST API unlocked (`S2YT_EDITION=selfhosted`).
|
|
|
|
Hosted product: [songs2yt.com](https://songs2yt.com)
|
|
|
|
## Requirements
|
|
|
|
- Docker (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
|
|
# set GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, NEXTAUTH_SECRET, NEXTAUTH_URL
|
|
docker compose up -d --build
|
|
```
|
|
|
|
Open http://localhost:3000
|
|
OAuth redirect: `{NEXTAUTH_URL}/api/auth/callback/google`
|
|
|
|
## Local development
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
docker compose -f docker-compose.dev.yml up -d # Postgres + Redis
|
|
npm install
|
|
npm run db:push
|
|
npm run dev # terminal 1
|
|
npm run worker # terminal 2
|
|
```
|
|
|
|
## Stack
|
|
|
|
Next.js · Postgres · Redis/BullMQ · NextAuth (Google) · FFmpeg · YouTube Data API
|
|
|
|
## License
|
|
|
|
MIT
|