VibeFrame Recipes
July 26, 2026 · View on GitHub
Verified recipes for common VibeFrame workflows.
These examples use the current top-level CLI surface: vibe init, vibe build,
vibe render, vibe generate, vibe edit, vibe remix, and vibe run.
Run vibe doctor first to confirm FFmpeg, Chrome/Chromium, and configured API
keys.
vibe doctor
1. Clean Up An Interview
Use this when you already have a recording and want a cleaner edit with captions.
Requires:
- FFmpeg for silence cutting and noise reduction
OPENAI_API_KEYfor Whisper captions
vibe edit silence-cut interview.mp4 -o interview-trimmed.mp4
vibe edit noise-reduce interview-trimmed.mp4 -o interview-clean.mp4
vibe edit caption interview-clean.mp4 -o interview-captioned.mp4
Preview paid or destructive-looking steps before running them:
vibe edit caption interview-clean.mp4 -o interview-captioned.mp4 --dry-run
2. Generate An Image, Then Animate It
This is the recommended AI media generation path: create a still frame first, then use it as the reference image for image-to-video.
Requires:
OPENAI_API_KEY,GOOGLE_API_KEY,XAI_API_KEY, or another supported image provider keyFAL_API_KEYfor Seedance via fal.aiIMGBB_API_KEYwhen the selected video provider needs an HTTPS image URL
vibe generate image \
"A cinematic product demo frame, clean terminal UI, blue highlights" \
-p openai \
-s 1536x1024 \
-o frame.png
vibe generate video \
"Slow camera push-in, subtle interface motion, polished product demo" \
-p seedance \
-i frame.png \
-d 8 \
-r 16:9 \
-o motion.mp4
Notes:
seedanceis the explicit provider name.falremains a compatibility alias.- Seedance currently accepts
-dvalues from 4 to 15 seconds. - Other video providers have different duration constraints; run
vibe generate video --helpbefore switching providers.
3. Build A Storyboard Video
Use this when you want to author a video from STORYBOARD.md and DESIGN.md.
This is the main "storyboard to final video" workflow.
Requires:
- Chrome or Chromium for HTML scene capture
- FFmpeg for final media assembly
- Provider keys only for the generation steps you use
- Kokoro can be used for local narration when available
vibe init my-video --profile agent --visual-style "Swiss Pulse" -r 16:9 -d 18
Edit:
my-video/STORYBOARD.mdmy-video/DESIGN.md
Then build and render:
vibe build my-video --dry-run
vibe build my-video --tts kokoro
vibe render my-video -o renders/my-video-final.mp4 --quality standard
Use these flags to control cost and regeneration:
vibe build my-video --skip-narration
vibe build my-video --skip-backdrop
vibe build my-video --force
vibe build prepares assets and scene composition. vibe render exports the
final MP4/WebM/MOV.
4. Turn Long Video Into Shorts
Use this when you have existing long-form content and want highlights or vertical clips.
Requires:
- FFmpeg for clipping/reframing
GOOGLE_API_KEYwhen using Gemini visual+audio analysisOPENAI_API_KEYwhen captions/transcription are needed
Extract highlight metadata:
vibe remix highlights long-video.mp4 \
-n 3 \
-d 60 \
--use-gemini \
-o highlights.json
Generate vertical shorts:
vibe remix auto-shorts long-video.mp4 \
-n 3 \
-d 45 \
-a 9:16 \
--add-captions \
-o ./shorts/
Manual path for one selected clip:
vibe edit reframe highlight-clip.mp4 -a 9:16 -o vertical.mp4
vibe remix animated-caption vertical.mp4 -s bounce -o vertical-captioned.mp4
5. Run A Video-As-YAML Pipeline
Use vibe run when you want a reproducible workflow with step references,
budgets, dry-runs, and checkpoints.
Create promo.yaml:
name: promo
budget:
costUsd: 5
maxToolErrors: 2
steps:
- id: image
action: generate-image
prompt: "A cinematic developer-tool hero frame"
provider: openai
output: frame.png
- id: video
action: generate-video
prompt: "Slow camera push-in, subtle interface motion"
image: $image.output
provider: seedance
duration: 8
output: motion.mp4
- id: grade
action: edit-grade
input: $video.output
preset: cinematic-warm
output: final.mp4
Run it:
vibe run promo.yaml --dry-run
vibe run promo.yaml --budget-usd 5
vibe run promo.yaml --resume
Checkpoints are written next to the YAML file. Use --resume after fixing a
failed provider key, network issue, or invalid step input.
6. Add A Lottie Animation Overlay
Use this when you have a Lottie animation (.json or .lottie from
LottieFiles or your own exports) and want to
composite it over an existing video.
Requires:
- Chrome or Chromium (Hyperframes renderer)
- FFmpeg for final compositing
- A
.jsonor.lottieanimation file
Overlay a Lottie logo on a product demo:
vibe edit motion-overlay demo.mp4 \
--asset logo.lottie \
--position bottom-right \
--scale 0.25 \
--opacity 0.9 \
-o demo-branded.mp4
Preview the parameters first:
vibe edit motion-overlay demo.mp4 \
--asset logo.lottie \
--position bottom-right \
--scale 0.25 \
--dry-run
Full-screen animated intro card:
vibe edit motion-overlay intro.mp4 \
--asset intro-card.json \
--position full \
--duration 3 \
--no-loop \
-o intro-with-card.mp4
Available positions: full, center, top-left, top-right, bottom-left,
bottom-right. The overlay loops by default; pass --no-loop for one-shot
animations. Use --start <sec> to delay when the overlay appears.
7. Compose VibeFrame Footage With HyperFrames
VibeFrame and upstream HyperFrames
each own half of a narrated, footage-led video: VibeFrame generates the
frontier clips (cast continuity, keyframe review, a hard --max-cost), and
HyperFrames' faceless-explainer workflow owns narration timing, word-synced
captions, a designed frame system, and transitions. This recipe runs them
together. It was validated end to end on 2026-07-26; the sharp edges below
are all from that run.
Requires:
- image + video provider keys for the vibe side (e.g.
GOOGLE_API_KEY,FAL_API_KEY, andRUNWAY_API_SECRETfor the face-shot fallback) npx hyperframes≥ 0.7.72 with its skills installed- for local TTS: a Python ≥ 3.10 venv with
kokoro-onnx(see step 3)
1. Generate the footage with vibe. Author scenes with keyframe: +
video: cues and a characters: pool, then build assets only - narration,
music, and composition belong to the other side:
vibe init film --from brief.md
vibe build film --dry-run --max-cost 8 --json # price gate
vibe build film --stage assets --skip-video \
--skip-narration --skip-music --skip-backdrop # stills first - review them
vibe build film --stage assets \
--skip-narration --skip-music --skip-backdrop # animate approved stills
Review the keyframes before animating: cross-scene prop drift (a kettle changing color between scenes) is cheap to fix at the still stage and expensive after. If Seedance rejects a face-visible keyframe (HTTP 422 likeness filter - see MODELS.md), route that shot through Runway:
vibe generate video "<the scene's motion prompt>" \
-p runway -i film/assets/keyframe-<beat>.png -d 5 \
-o film/assets/video-<beat>.mp4
2. Hand the clips to a HyperFrames project. Scaffold with the
faceless-explainer skill, copy the clips into public/, and write its
SCRIPT.md with the same narration your scenes carried (VO_MODE: verbatim). One script, both sides - if they drift, visuals and voice
disagree.
3. Let upstream own the timing. Its audio.mjs synthesizes narration
(Kokoro locally - a Python dependency, unlike vibe's built-in Kokoro:
uv venv --python 3.12 && uv pip install kokoro-onnx soundfile, then export
HYPERFRAMES_PYTHON=<venv>/bin/python), and sync-durations sets each
frame's length from the measured voice.
Three sharp edges, all hit in the validation run:
- Duration has no floor upstream.
sync-durationsREPLACES a frame's duration with the voice length (vibe keepsmax(declared, voice)), so a 5s clip under a 2s narration line gets hard-trimmed. Write narration long enough for the shot, or add silent frames - upstream keeps their estimates. - Frame ids start with digits (
01-grind), and.01-grind-xis an illegal CSS/querySelectorselector. Prefix authored classes with a letter (f01-) or gsap throws before registering the timeline and the render "completes" with frozen motion. - Give every
<video>anid. Upstream lint enforces it (media_missing_id) - without one the renderer cannot drive the video and it renders frozen.
4. Render upstream (npx hyperframes lint && npx hyperframes render)
and you get the hybrid: your generated footage under their word-synced
captions and design system.
Tips
- Use
--dry-runbefore provider-backed steps. - Add
--jsonwhere available when an agent needs structured output. - Use
vibe schema --list --surface publicto inspect the first-run command surface. - Use
vibe guidefor built-in step-by-step guides. - Prefer explicit providers in docs and demos, for example
-p openaior-p seedance, so new users can see which API key is required.