Skip to content

Concepts

The ideas that shape Keryx. Each links to the authoritative section of the design spec.

The authoring loop

A reel is made by a human-in-the-loop loop: distil the post into a storyboard → render a silent draft to check pacing → generate voice and music → assemble → polish per-line → compose social copy → lock & correlate back to the post. The three audio/copy layers iterate independently and cheaply — you never redo the whole reel to change one line. → spec §3.2

Reels & the storyboard

The storyboard is the creative seed: per card, an on-screen text, a separate vo narration (which may carry SSML pauses), palette roles, a scene prompt, and resolved media (image or video, generated or uploaded). → spec §3.1

Themes (config-driven)

Palette, voice, music tone and per-card illustration style live in config, not code — typed (article / reel / portrait) and keyword-identified, so a run of reels isn't a monotonous block and a second brand is just new config. → spec §6

Pluggable providers

Image, video, voice, music and rendering each sit behind a narrow interface, chosen from config at construction (Gemini / ElevenLabs / ffmpeg defaults). New adapters are additive; no call site hardwires a vendor. → spec §3.4

The social lifecycle

Each platform's social set moves draft → approved → posted, with an optional per-outlet schedule. Posting refuses anything not approved — the accidental-posting guard. On-demand from CLI/studio; unattended only in CI. → spec §4.3

Stateless tool, git-first persistence

Keryx holds no per-project state; the owning project's git repo is the store and the concurrency boundary. Large media uses a configurable store (S3/R2 default; GitLab packages / LFS optional). Config is hot-reloadable. → spec §3.2, §3.5