Files
songs2vid/website/docs/intro.md
T
Atakan Doğan ÖzbanandCursor 56880256e5 Enlarge watermark badge for preview/encode parity and document video title fields.
Fix double-scaled badge preview, bump default watermark to 42% frame width, and update OSS docs/API for title vs songTitle separation and shared typography.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 18:28:07 +02:00

1.8 KiB

sidebar_position, slug
sidebar_position slug
1 /intro

Introduction

Songs2VID turns a cover image and one or more audio files into YouTube-ready videos, then uploads them to your channel.

This documentation is for self-hosted / open-source deployments (S2VID_EDITION=selfhosted).

What you can do

  • Combine one image with multiple tracks in a batch
  • Set per-video metadata (YouTube video title, on-video song title / artist, description, tags, privacy, resolution)
  • Art-track layouts with blur backgrounds and fine-tuning (padding, title/artist gap, text offsets)
  • Typography: curated or uploaded .ttf / .otf fonts shared by Layout Studio preview and FFmpeg
  • Custom watermarks: Songs2VID badge, text, or logo — positions/offsets match the live preview
  • Unique cover image per track
  • Add uploads to YouTube playlists
  • Use the REST API for automation

See Video editing for composition controls in the dashboard and API.

Self-host

Follow Getting started. Set S2VID_EDITION=selfhosted for unlimited video allowance, API access, and all layout features (the optional root Compose example sets this for you).

For local development, npm run dev:all starts the app (port 3000), worker, and this docs site (port 3001).

Going to a public URL? See Production notes (OAuth redirect, worker, HTTPS). Docker/Caddy samples in the repo are optional.

REST API

Programmatic uploads and job creation. Generate an API key under Dashboard → Settings → API access. Start with API overview.

Stack

  • Next.js 15 (App Router, TypeScript, Tailwind)
  • PostgreSQL + Prisma
  • Redis + BullMQ
  • NextAuth (Google OAuth with YouTube scopes)
  • FFmpeg for encoding
  • YouTube Data API v3