Self-hosted Opus Clip alternative — reels.biba.live
Go to file
Sebastjan Artič 90cdad516b Universal chorus selection: chorus mandatory, pre-chorus only natural extension
User feedback: 'REFREN je obvezen, pre-chorus opcijsko' + 'sistem mora biti
stabilen za vse jezike, tudi španščino in romunščino'.

Two changes:

1. Web search is now MANDATORY first step (was: optional fallback):
   - Even if Claude thinks it knows the song, must search lyrics first
   - Universal lyrics sources by language:
     SLO: besedila.com, lyricstranslate.com
     DE: songtexte.com
     HR/SR/BS: tekstovi.net
     ES: letras.com, musica.com
     RO: versuri.ro
     IT: angolotesti.it
     FR: paroles.net
     EN: genius.com, azlyrics.com
     Universal: lyricstranslate.com (any language)
   - Search strategy: artist+title first, then transcript snippet fallback
   - Without lyrics, Claude cannot reliably identify chorus boundaries

2. Simplified selection rules - chorus is THE priority:
   - Chorus (full first occurrence) = MANDATORY
   - Pre-chorus = ONLY if 1-2 verse lines tightly connected to chorus
   - In doubt: just take chorus alone (12-25s)
   - Outro fillers explicitly multi-language:
     SLO 'aj ja ja' / 'ej ej ej'
     EN 'yeah' / 'oh oh'
     ES 'ay ay ay'
     RO 'hei hei'
     JA 'la la la'
   - 12-35s total range (was 15-35s, now allows shorter chorus-only clips)

This makes the system language-agnostic: works the same way for Slovenian
narodno-zabavna, Spanish reggaeton, Romanian manele, German Schlager, etc.
The lyrics lookup is what makes it stable across languages.
2026-04-29 13:36:34 +00:00
app Integrate ElevenLabs Scribe (best multilingual STT 2026) 2026-04-29 12:03:40 +00:00
scripts Universal chorus selection: chorus mandatory, pre-chorus only natural extension 2026-04-29 13:36:34 +00:00
templates Modal preview: click Preview opens fullscreen video player 2026-04-29 13:21:36 +00:00
.env.example Initial: reels clipper app 2026-04-28 15:28:22 +00:00
.gitignore Initial: reels clipper app 2026-04-28 15:28:22 +00:00
docker-compose.yml Initial: reels clipper app 2026-04-28 15:28:22 +00:00
Dockerfile Add Deno runtime for yt-dlp YouTube nsig challenge solving 2026-04-28 16:05:09 +00:00
README.md Initial: reels clipper app 2026-04-28 15:28:22 +00:00
requirements.txt Upgrade yt-dlp to nightly for new YouTube nsig algorithm support 2026-04-28 15:48:39 +00:00

Reels Clipper · biba.live

Self-hosted Opus Clip alternativa za FOLX TV / PTC. Pretvori 16:9 video v 9:16 reels/shorts/tiktok format z auto face tracking, podnapisi (sl/de/en) in avto-detekcijo refrena v glasbenih pesmih.

Features

  • 📤 Drag & drop upload (do 2 GB)
  • 📺 YouTube URL paste (yt-dlp)
  • 🎯 Smart reframe: track (face follow), center, blur (za glasbo)
  • 🎵 Auto-chorus detection (Whisper + energy hibrid)
  • 📝 Burned-in podnapisi (faster-whisper, multi-jezik)
  • 🎨 3 stili podnapisov: reels, yellow (MrBeast), minimal
  • 🔐 HTTP Basic Auth
  • 📊 Real-time progress (Server-Sent Events)
  • 📦 Docker / Coolify ready

Quick start (lokalno)

docker compose up --build
# odpri http://localhost:8000

Default login: sebastjan / nastavi AUTH_PASS v .env.

Coolify deploy

  1. V Coolify ustvari nov projekt → Docker Compose iz tega repoja
  2. Domena: reels.biba.live
  3. Env vars:
    AUTH_USER=sebastjan
    AUTH_PASS=<močno geslo>
    MAX_UPLOAD_MB=2000
    
  4. Volume reels_data se ustvari avtomatsko
  5. Deploy → Coolify postavi Traefik reverse proxy + SSL via Let's Encrypt

Pipeline

Upload / YouTube
       ↓
[ yt_download.py ]    ← samo če YouTube
       ↓
[ find_chorus.py ]    ← samo če auto_chorus=true (Whisper + RMS analiza)
       ↓
[ reframe.py ]        ← 16:9 → 9:16 (track / center / blur)
       ↓
[ subtitle.py ]       ← Whisper transkripcija + burn-in
       ↓
   reel.mp4

API

  • POST /api/upload — multipart file upload, vrne job_id
  • POST /api/youtube — JSON {url, mode, lang, ...}
  • POST /api/process — start processing za uploaded job
  • GET /api/jobs — list vseh
  • GET /api/jobs/{id} — status
  • GET /api/stream/{id} — SSE stream progress
  • GET /api/download/{id} — final reel
  • DELETE /api/jobs/{id} — pobriši

Dependencies

  • FFmpeg (system)
  • faster-whisper (transkripcija)
  • OpenCV (face detection)
  • yt-dlp (YouTube)
  • FastAPI + uvicorn (server)