The AI model was interpreting MM:SS timestamps (e.g., 38:07) as decimal
seconds (38.07s) instead of 2287s, causing clips from long videos to have
near-zero durations. Switching to raw seconds (e.g., [2287.0s - 2295.0s])
eliminates the ambiguity.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Gemini sometimes produces JSON with unescaped characters that break
standard parsing. Added multiple fallback strategies including regex
extraction of individual clip objects.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4K downloads are 229MB+ and too slow through the WG tunnel.
720p is sufficient quality for clip analysis and extraction.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
CPU-based Ollama inference on Netcup is too slow due to server memory
pressure. Add OpenAI-compatible API support so we can use Gemini Flash
or other cloud APIs for clip analysis. Also increase transcript sample
size to 20K chars since cloud APIs handle it easily.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
47-minute videos produce ~48K chars of transcript which takes
>10 minutes for llama3.1:8b on CPU to process.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Worker accesses Whisper via Docker DNS (whisper-local:8000) instead
of through the WG tunnel, avoiding 524 timeout on large audio uploads.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Routes Whisper API traffic directly to local Traefik instead of
through the WG tunnel via Cloudflare, avoiding 524 timeouts on
large audio file uploads.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Flipped WG topology to avoid WSL2 UDP port forwarding issues:
- Netcup is now WG server (has public IP, listens on UDP 51820)
- Home WSL2 is WG client (connects outbound, no port forwarding needed)
- Home client NAT masquerades worker traffic through residential IP
- AllowedIPs=0.0.0.0/0 routes all worker internet through tunnel
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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>
- 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>
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>