Skip to main content

Video pipeline

Long uploads become ranked clips and platform-ready files through a staged pipeline. Exact task names and retries live in the application code; this page is the conceptual map.

Stages

  1. Ingest: upload or URL import; media lands in object storage; a video row is created.
  2. Transcription: speech-to-text (Whisper-class) produces segments used everywhere downstream.
  3. Scoring: multi-signal highlight detection (LLM scoring, audio loudness, scene changes, hook heuristics, and trend keywords, with sentiment as a supporting signal). See the public Signals section on this site for the product framing.
  4. Style: caption presets and style briefs interpreted into render parameters. Auto-direction (zoom punches, speaker reframes, pacing) exists as a shot planner in the backend but is not yet called by production renders; treat it as coming soon.
  5. Render: FFmpeg with allow-listed arguments; plugins can hook pre/post render.
  6. Publish: scheduled or immediate posts to linked social accounts with idempotent retries.
  7. Analytics: YouTube metrics are available to allowlisted test users while Google verification is in progress; other platforms show clearly simulated data.

Platform status

YouTube publishing and analytics are live for allowlisted test users while Google verification is in progress. TikTok, X, Instagram, Facebook, and Reddit publishing are coming soon. Upload code paths exist for some of these platforms, but a deployment without platform credentials configured falls back to stub post IDs instead of real uploads. Analytics mirrors this: YouTube metrics are real for connected test channels, while other platforms return clearly simulated data unless the operator opts them in via the ANALYTICS_REAL_PLATFORMS allowlist (stub posts always stay simulated).

Async execution

Heavy stages run on Celery workers. Progress streams to the UI via realtime channels.