Commit Graph

14 Commits

Author SHA1 Message Date
Jeff Emmett 19468aeac8 Add WireGuard tunnel for YouTube downloads through residential IP
YouTube blocks datacenter IPs. This adds a WireGuard client sidecar
to route worker traffic through a home residential IP tunnel.
- wireguard/ has the WG server config (runs on WSL2 at home)
- Worker uses network_mode: service:wireguard for tunnel routing
- wg-client/ and cookies.txt added to .gitignore (contain secrets)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 19:58:39 +00:00
Jeff Emmett 0e4eec4f12 fix: add web_creator client fallback, friendlier YouTube bot error
- Try multiple YouTube player clients for better compatibility
- Show user-friendly error suggesting upload when YouTube blocks download

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 18:41:19 +00:00
Jeff Emmett be3b1ca706 fix: copy cookies to temp file so yt-dlp doesn't overwrite originals
yt-dlp saves rotated cookies back on exit, destroying fresh exports.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 18:39:35 +00:00
Jeff Emmett c5505417a5 feat: add deno runtime for yt-dlp YouTube JS extraction
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 18:35:11 +00:00
Jeff Emmett 5c9b7c74e0 fix: use raw string for HTML template to preserve JS backslashes
Python was interpreting \' as ' in the onclick handlers, breaking JS.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 11:36:48 +00:00
Jeff Emmett 128aad405c feat: add user-friendly frontend with upload, progress, and clip gallery
Replaces API endpoint listing with a proper UI:
- YouTube URL input or drag-and-drop video upload
- Real-time SSE progress bar with stage messages
- Clip results gallery with virality scores, categories, transcripts
- Preview/download links for extracted clips
- Recent jobs history with click-to-view

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 11:27:29 +00:00
Jeff Emmett 53c1ed5c4c feat: add landing page with API docs at root URL
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 13:14:13 +00:00
Jeff Emmett 1784bb35ff fix: increase Ollama timeout to 600s for CPU inference
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 13:05:29 +00:00
Jeff Emmett 4619b53b5e fix: update yt-dlp to latest for YouTube bot detection bypass
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 12:40:59 +00:00
Jeff Emmett fb5d189334 fix: make cookies file writable for yt-dlp cookie saving
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 12:39:50 +00:00
Jeff Emmett 7e121334ba fix: simplify cookies mount path
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 12:38:46 +00:00
Jeff Emmett 5018915b10 fix: mount YouTube cookies file for yt-dlp authentication
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 12:35:49 +00:00
Jeff Emmett 6ab5f805a4 fix: use arq CLI to start worker instead of python -m
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 12:33:02 +00:00
Jeff Emmett 6aa8a676ec feat: ClipForge Phase 1 - core pipeline MVP
Self-hosted AI video clipper (Opus Clip alternative).
Pipeline: YouTube URL -> yt-dlp download -> Whisper transcription ->
Ollama AI clip selection -> FFmpeg extraction.

- FastAPI backend with PostgreSQL + Redis + ARQ worker
- 7-stage processing pipeline with SSE progress tracking
- Services: download (yt-dlp), transcription (whisper.jeffemmett.com),
  AI analysis (Ollama), clip extraction (FFmpeg stream copy)
- API: create jobs, track progress, list clips, render, download
- Docker Compose with Traefik labels for clip.jeffemmett.com

Cost: $0/video using existing infrastructure.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 12:27:43 +00:00