Atakan Doğan Özban 682020ff5a Restrict Google OAuth to youtube.force-ssl and document zero Google data sharing.
Addresses Google OAuth verification feedback on scopes and privacy disclosure.
2026-07-22 18:17:49 +02:00
2026-07-12 15:40:35 +02:00
2026-07-12 15:40:35 +02:00
2026-07-12 15:40:35 +02:00
2026-07-12 15:40:35 +02:00
2026-07-12 15:40:35 +02:00

s2yt

Create YouTube videos from an image and audio files.

Stack

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

Setup

  1. Copy environment variables:
cp .env.example .env
  1. Start PostgreSQL and Redis:
docker compose up -d
  1. Install dependencies and run migrations:
npm install
npm run db:push
  1. Configure Google OAuth in Google Cloud Console:

    • Enable YouTube Data API v3
    • Create OAuth 2.0 credentials
    • Add redirect URI: http://localhost:3000/api/auth/callback/google
    • Set GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET in .env
  2. Install FFmpeg on your system (required for the worker).

  3. Start the web app and worker in separate terminals:

npm run dev
npm run worker

Free Plan

  • 14 videos/month (each audio = 1 video)
  • Max 720p resolution
  • 30 MB max per file
  • Watermark required
  • Per-video metadata (title auto-filled from audio filename)

Scripts

  • npm run dev — Next.js dev server
  • npm run worker — Background job processor
  • npm run db:push — Push Prisma schema to database
  • npm run build — Production build
S
Description
Songs2VID is an automation tool that converts your audio and image files into high-quality videos and uploads them directly to YouTube.
https://www.songs2vid.com
Readme MIT
615 MiB
Languages
TypeScript 96%
CSS 1.9%
JavaScript 1.5%
Dockerfile 0.6%