← Home

2026 · personal · private

shorts-factory

A short-form video pipeline from topic to publish

Role
Design and implementation
Period
2026.08
Status
One command → video
Stack
Python, ffmpeg, Ollama, LLM
Links

Why

A single short takes seven manual steps: finding a topic, script, narration, caption timing, background, editing, upload. I split those seven into swappable providers so one command produces a video.

Pipeline

topic → script (LLM) → narration (TTS) → caption timing → background → ffmpeg assembly → publish

Defaults all run locally with no API key (local LLM, macOS TTS, gradient background, estimated timing). Clone it, have ffmpeg, get a video. Paid APIs are swapped in one line at a time in config.toml.

$ shorts-factory make "Does the elevator close button actually work?"
▶ script (llm) · narration (macos, 6 segments) · background (gradient) · captions (estimate) · render
✓ 26.8 s / 2.1 MB → out/…

Decisions

  • Zero third-party dependencies in the core; only Python 3.11+ and ffmpeg.
  • The Homebrew ffmpeg 8 slim build has no libass, so the subtitle filter was unavailable. Captions are drawn as frames with Pillow and overlaid instead.
  • Structured output quality varies by local model, so the script parser has forgiving fallbacks.

Status

One command yields a 26-second, 2 MB result. Includes a browser preview panel (HTML/JS).