MuAPI Director
Turn a topic, talking-head video, or photo into a finished Vox-style paper-collage video: a bold, punchy, narrated explainer/ad where each beat is a torn-paper collage poster that comes alive, with voice-over, music and captions. Powered by MuAPI (MUAPI_API_KEY) + local ffmpeg.
Input Modalities
- B-roll (topic → film): Pass a topic (e.g. "A brief history of Silicon Valley"). It drafts a script, builds keyframe posters, animates them, synthesizes narration/BGM, and assembles the video.
- A-roll (talking-head video → collage): Pass a presenter talking-head recording. It runs ASR, segments the transcript, and re-styles the video into paper-collage graphics while preserving facial features, lip-sync, and gestures frame-for-frame.
- C-roll (one photo → collage): Pass a selfie or product shot. The subject is cut out as an unedited photographic sticker, anchored into generated collage posters per beat, and animated.
Prerequisites
MUAPI_API_KEYset in your environment (get one from https://muapi.ai).ffmpeg+ffprobeinstalled on system path.- Python 3 with
Pillow(pip install pillow).
Workflow Steps
B-roll Mode (Topic)
- Write
out/<project>/beats.jsoncontaining topic, language, and beat map. python3 scripts/style_bakeoff.py out/<project>(Pick theme from candidates).python3 scripts/keyframes.py out/<project>(Generates collage posters).python3 scripts/clips.py out/<project>(Animates posters into motion clips).python3 scripts/audio.py out/<project>(Generates TTS narration and instrumental BGM).python3 scripts/assemble.py out/<project>(Muxes audio, ducking, captions, watermark ->final.mp4).
A-roll Mode (Talking Head)
python3 scripts/asr_beats.py out/<project> <source.mp4>python3 scripts/aroll_clips.py out/<project>python3 scripts/aroll_assemble.py out/<project>
C-roll Mode (Photo Anchor)
- Add
"mode": "croll","anchor_photo": "photo.png","croll_subject": "portrait"|"product"tobeats.json. python3 scripts/croll_keyframes.py out/<project>python3 scripts/clips.py out/<project>python3 scripts/audio.py out/<project>python3 scripts/assemble.py out/<project>