Skip to content

Video ingest

Video ingest turns YouTube URLs, direct video URLs, and local MP4/MOV/WebM files into a manifest with transcript text and optional extracted frames.

Manifests live at:

{KEPRIX_HOME}/ingest/video/<job_id>/manifest.json

Frames live beside the manifest under frames/ and are ready for vision_analyze.

Frame modes

Mode Behavior
caption-only Fetch transcript or sidecar captions only; no frame files
sparse Extract one frame every N minutes
balanced Extract scene-change frames capped to a small set
dense Extract fixed interval frames for fast visual demos

API

Method Path Purpose
POST /api/ingest/video Ingest { source, mode, copy_to_vault }
GET /api/ingest/video List recent jobs
GET /api/ingest/video/{job_id} Fetch one manifest

Set KEPRIX_VIDEO_INGEST_ENABLED=0 to disable these routes.

CLI

keprix ingest video --url "https://youtube.com/watch?v=..." --mode balanced
keprix ingest video --file ./demo.mp4 --mode sparse
keprix ingest video list
keprix ingest video show <job_id>

Install optional dependencies with uv pip install yt-dlp youtube-transcript-api and install the ffmpeg system binary for frame extraction.