vox-ai-motion-graphics-generator
🎬 Turn any topic into a finished Vox-style paper-collage explainer / motion graphics video — script, collage keyframes, animation, voice-over, music & captions, all automated. An agent skill for Claude Code, Codex & other coding agents.
原始仓库简介 · 中文摘要待补充 · agent-skill / ai-motion-graphics / ai-video / claude-code / collage / explainer-video
README / 项目原文
Vox AI Motion Graphics Generator
Turn any topic into a finished Vox-style paper-collage explainer video
📺 Watch the Vox AI Motion Graphics Generator in action →
🚨 The problem with making explainer videos today:
- ❌ Fragmented workflow — separate tools for scripting, image gen, animation, voice-over, music, and captions
- ❌ No narrative structure — raw text-to-video models don't understand story arcs, hooks, or pacing
- ❌ Inconsistent look — the collage aesthetic drifts from shot to shot
- ❌ Hours of manual editing — stitching, ducking music, and burning captions by hand
💡 The solution:
🎬 Screenwriter, Collage Artist, Animator, and Editor — all in one automated pipeline.
Type one topic. The agent writes the story beats, renders each beat as a torn-paper collage poster, animates it, adds a narrator voice-over, music, and burned-in captions — then stitches everything into a finished final.mp4. You stay in control with just two approval gates: the story beat map and the visual theme.
🎥 Demo
https://github.com/user-attachments/assets/3db826d1-3271-4e8a-b4d0-a843013e67c7
One topic in, a fully narrated & captioned Vox-style collage video out. (download the demo)
"Make me a 15-second Vox-style collage video on the history of coffee." → a styled
final.mp4, fully narrated and captioned.
📽️ Generated Showcase Videos (Playable Demo Videos)
Below are end-to-end videos generated using the pipeline:
https://github.com/user-attachments/assets/d9b3e85b-2f4a-4c64-9692-747f085dfd28
▶ "History of Coffee (Ethiopia 850 AD)" · 5s (B-roll Film)
https://github.com/user-attachments/assets/6628b678-78ff-481a-bc39-d7098ec1f2fe
▶ "Cold Brew Product Ad" · 5s (C-roll Film)
| Mode | Film Title | Topic / Subject | Playable Video Link | Keyframe Poster | Motion Model | Narration Voice |
|---|---|---|---|---|---|---|
| B-roll | ☕ History of Coffee | Ethiopia 850 AD | Play Video (out/demo/final.mp4) |
out/demo/keyframes/kf_1a.jpg |
veo3.1-image-to-video |
MiniMax TTS (Q19bea09caa6IRAeW7) |
| C-roll | 🍾 Cold Brew Product Ad | Artisanal Cold Brew Bottle | Play Video (out/demo-croll/final.mp4) |
out/demo-croll/keyframes/kf_1.jpg |
veo3.1-image-to-video |
MiniMax TTS (Q19bea09caa6IRAeW7) |
🎬 Generated Assets Summary:
- ☕ B-roll (History of Coffee):
- 📹 Video: Play Video (
out/demo/final.mp4) | 🖼️ Poster:out/demo/keyframes/kf_1a.jpg| 📹 Clip:out/demo/clips/clip_1a.mp4| 🎙️ Voice:out/demo/audio/narr_1.mp3| 🎵 BGM:out/demo/audio/bgm.mp3- 🍾 C-roll (Cold Brew Product Anchor):
- 📹 Video: Play Video (
out/demo-croll/final.mp4) | 📸 Anchor Photo:out/demo-croll/anchor_photo.jpg| 🖼️ Poster:out/demo-croll/keyframes/kf_1.jpg| 📹 Clip:out/demo-croll/clips/clip_1.mp4| 🎙️ Voice:out/demo-croll/audio/narr_1.mp3| 🎵 BGM:out/demo-croll/audio/bgm.mp3
📑 Table of Contents
- ✨ Key Features
- 🎨 The Look
- 🔄 How It Works
- 🧩 Models
- 🚀 Quick Start
- 🛠️ Project Structure
- 🔗 Related Projects
✨ Key Features
- 3 Input Modalities (A-roll, B-roll, C-roll):
- B-roll (Topic → Film) — a single one-line prompt produces a complete, captioned, narrated video
- A-roll (Talking-Head Video → Collage) — segment a presenter video with ASR (
openai-whisper) and re-style into paper-collage while keeping real face, gestures, and lip-sync - C-roll (Single Photo / Product → Anchored Collage) — cut out a selfie or product shot as a photographic sticker and build animated collage posters around it
- Authentic Vox collage aesthetic — torn paper, cutouts, tape, halftone dots, newspaper clippings, bold flat color, big headlines
- Story-first — picks a narrative arc (timeline, problem-agitate-solution, how-it-works…) and writes a hook-led beat map before generating anything
- Style bake-off — renders the same beat in 3–4 themes so you pick the look before committing
- Living-poster motion — animates each collage keyframe into dynamic motion with Google Veo 3.1
- Voice + music + captions — narration (TTS or voice cloning), background music ducked under the voice, and burned-in captions, all automated
- Two human gates, everything else automated — approve the beat map, pick the theme; the pipeline handles the rest
- Agent-native — a self-contained skill any coding agent (Claude Code, Codex, Antigravity, …) can read and run
- One API key + ffmpeg — no cluster of accounts to wire up
🎨 The Look
The aesthetic is the modern editorial paper-collage popularized by Vox explainers and creators like Stav Zilber and rom1trs: hand-cut paper cutouts, torn edges, tape, halftone dots, newspaper clippings, bold flat colors per beat, and big cutout headlines — brought to life with dynamic motion, a narrator voice-over, music, and burned-in captions.
The collage look is born in the image step (each beat is a finished collage poster), and the motion is added after — so the DNA of the style is locked in before anything moves.
🔄 How It Works
A single topic, video, or photo flows through the pipeline driven by beats.json under out/<project>/:
topic / video / photo
│
├─ 1. Beat Map Pick a narrative arc → write beats.json ◀── GATE 1: approve the beat map
├─ 2. Style Bake-Off Render the same beat in 3–4 themes ◀── GATE 2: pick the look
├─ 3. Keyframes One collage poster per beat (nano-banana-2 / flux-dev)
├─ 4. Motion Animate each poster into a clip (veo3.1-image-to-video)
├─ 5. Voice & Music Narration (minimax-speech-2.6) + BGM (suno-create-music)
├─ 6. Assemble Stitch clips, duck music, burn captions (ffmpeg)
└─ final.mp4
3 Modalities:
- B-roll (Topic → Film): Topic in → script → keyframe posters → Veo 3.1 motion → TTS narration + Suno music →
final.mp4. - A-roll (Talking-Head → Collage): Presenter video in → Whisper ASR beat segmentation → video-edit restyling → audio remuxing →
final.mp4. - C-roll (Photo / Product → Collage): Product photo in → photographic sticker cutout → anchored collage posters → Veo 3.1 motion → cloned voice →
final.mp4.
🧩 Models
| Pipeline Job | Model Endpoint |
|---|---|
| Keyframes / Collage Posters | nano-banana-2 / flux-dev |
| Motion / Animation | veo3.1-image-to-video / veo3.1-fast-image-to-video / runway-image-to-video |
| Re-style Talking-Head (A-roll) | gemini-omni-video-edit / veo3.1-image-to-video |
| Anchor Photo in Collage (C-roll) | nano-banana-2 / flux-dev |
| Narration (TTS) | minimax-speech-2.6-turbo |
| Voice Cloning (C-roll) | minimax-voice-clone |
| Background Music | suno-create-music |
| Audio Transcription (A-roll ASR) | openai-whisper |
| Background Removal | remove-background |
🚀 Quick Start
1. Install local dependencies
- ffmpeg + ffprobe (
brew install ffmpegon macOS /choco install ffmpegon Windows) - Python 3 with Pillow (
pip install pillow)
2. Configure environment keys
export MUAPI_API_KEY="your-api-key" # image / video / voice / music models — key from muapi.ai
export OPENAI_API_KEY="your-openai-key" # story planning & ASR
3. Run Pipeline via Agent or CLI:
Mode 1: B-roll (Topic → Film)
Ask your coding agent:
"Make me a 15-second Vox-style collage video introducing the history of coffee."
Or run CLI scripts manually:
python scripts/style_bakeoff.py out/my-topic american-retro,swiss-modern,punk-zine
python scripts/keyframes.py out/my-topic
python scripts/clips.py out/my-topic
python scripts/audio.py out/my-topic
python scripts/assemble.py out/my-topic
Mode 2: A-roll (Talking-Head Video → Collage)
python scripts/asr_beats.py out/my-aroll source_presentation.mp4
python scripts/aroll_clips.py out/my-aroll
python scripts/aroll_assemble.py out/my-aroll
Mode 3: C-roll (Single Photo / Product → Anchored Collage)
python scripts/croll_keyframes.py out/my-croll
python scripts/clips.py out/my-croll
python scripts/audio.py out/my-croll
python scripts/assemble.py out/my-croll
🛠️ Project Structure
.
├── SKILL.md # full agent workflow + approval gates
├── AGENTS.md # entry point for coding agents (Claude Code, Codex, Antigravity)
├── README.zh.md # Chinese documentation
├── scripts/ # one script per pipeline stage
│ ├── muapi_client.py # MuAPI client wrapper
│ ├── provider.py # task queue & status polling
│ ├── style_bakeoff.py # multi-theme style candidates
│ ├── keyframes.py # B-roll collage poster generator
│ ├── clips.py # B-roll video animator (Veo 3.1)
│ ├── audio.py # TTS narration & Suno music generator
│ ├── text_overlay.py # subtitle captions & watermark generator
│ ├── assemble.py # ffmpeg video assembly, ducking & composition
│ ├── asr_beats.py # A-roll Whisper ASR beat cutter
│ ├── aroll_clips.py # A-roll talking-head video restyler
│ ├── aroll_assemble.py # A-roll clip & audio remuxer
│ └── croll_keyframes.py # C-roll photo sticker anchor generator
├── references/ # prompt guide, beat/story library, voices
└── examples/ # sample beats.json
This is an agent skill — Claude Code auto-loads it from SKILL.md; Codex and other agents follow SKILL.md via AGENTS.md. Just ask for a "vox video" or a "collage video."
🔗 Related Projects
- MuAPI — Unified API for the image, video, speech, voice, and music models used by this pipeline.
- MuAPI video generation docs — API guidance for the image-to-video and text-to-video stages.
- MuAPI music and speech docs — API guidance for narration, voice cloning, and background-music generation.
- Open-AI-Micro-Drama-Generator — agentic AI micro-drama video generator
- AI-B-roll — auto-generate AI b-roll for your videos
- Text-To-Video-AI — generate full videos from text
- AI-Youtube-Shorts-Generator — auto-clip long videos into viral vertical shorts
- awesome-ai-video-models — compare AI video models by API, price & speed
⭐ Star this repo if it helped you — and explore 50+ more open-source AI apps →
English · 简体中文
🎬 Vox Director (拼贴动效导演) & Veo 3.1 ComfyUI 节点
一个选题、口播视频或照片进,一条成片出——脚本、拼贴关键帧、动效、旁白、配乐、字幕全流程自动化的 Vox 风格拼贴讲解/广告视频。
一个基于 MuAPI 平台 API 和本地 ffmpeg 的 Agent 技能 与 ComfyUI 节点套件,可供任何编码 Agent(Claude Code、Codex、Antigravity 等)或在 ComfyUI 中使用。给它一句话选题、口播视频或产品照片,直接输出成片 .mp4。
out/demo/final.mp4
▶《咖啡简史(埃塞俄比亚公元 850 年)》· 5 秒 (B-roll)
![]() |
![]() |
| 咖啡简史 · 5 秒 (B-roll) | 冷萃咖啡产品广告 · 5 秒 (C-roll) |
▶ 点击任意封面/路径播放生成视频
📽️ 实测生成视频(在线播放)
以下是使用 Vox AI Motion Graphics Generator 全流程自动生成的示例视频:
https://github.com/user-attachments/assets/d9b3e85b-2f4a-4c64-9692-747f085dfd28
▶《咖啡简史(埃塞俄比亚公元 850 年)》· 5 秒 (B-roll Film)
https://github.com/user-attachments/assets/6628b678-78ff-481a-bc39-d7098ec1f2fe
▶《冷萃咖啡产品广告》· 5 秒 (C-roll Film)
| 模式 | 影片 | 选题 / 主体 | 播放视频 | 拼贴海报封面 | 动效模型 | 旁白音色 |
|---|---|---|---|---|---|---|
| B-roll | ☕ 咖啡简史 | 埃塞俄比亚公元 850 年 | 播放视频 (out/demo/final.mp4) |
out/demo/keyframes/kf_1a.jpg |
veo3.1-image-to-video |
MiniMax TTS (Q19bea09caa6IRAeW7) |
| C-roll | 🍾 冷萃咖啡产品广告 | 冷萃咖啡瓶照片锚定 | 播放视频 (out/demo-croll/final.mp4) |
out/demo-croll/keyframes/kf_1.jpg |
veo3.1-image-to-video |
MiniMax TTS (Q19bea09caa6IRAeW7) |
🎬 生成素材汇总:
- ☕ B-roll (咖啡简史):
- 📹 视频: 播放视频 (
out/demo/final.mp4) | 🖼️ 海报:out/demo/keyframes/kf_1a.jpg| 📹 动效:out/demo/clips/clip_1a.mp4| 🎙️ 旁白:out/demo/audio/narr_1.mp3| 🎵 配乐:out/demo/audio/bgm.mp3- 🍾 C-roll (冷萃咖啡产品锚定):
- 📹 视频: 播放视频 (
out/demo-croll/final.mp4) | 📸 锚定原图:out/demo-croll/anchor_photo.jpg| 🖼️ 海报:out/demo-croll/keyframes/kf_1.jpg| 📹 动效:out/demo-croll/clips/clip_1.mp4| 🎙️ 旁白:out/demo-croll/audio/narr_1.mp3| 🎵 配乐:out/demo-croll/audio/bgm.mp3
这是什么
风格是 Vox 讲解片带火的现代编辑感纸质拼贴:手撕纸片、毛边、胶带、半调网点、报纸剪贴、每一拍一块大胆平涂色、大号剪纸标题——再配上动效、旁白、配乐和字幕,让整张海报活过来。
工作原理
一个选题依次流过每个阶段脚本,全程由每个项目一份 beats.json 驱动:
选题 / 视频 / 照片
│
├─ 1. 分镜脚本 选叙事弧线 → 写 beats.json ◀── 决策点 1:你确认分镜脚本
├─ 2. 风格试片 同一拍渲成 3–4 种主题 ◀── 决策点 2:你看图挑风格
├─ 3. 关键帧 每拍一张拼贴海报 (nano-banana-2 / flux-dev)
├─ 4. 动效 让每张海报动起来 (veo3.1-image-to-video)
├─ 5. 旁白+配乐 统一旁白 (minimax-speech-2.6) + 背景乐 (suno-create-music)
├─ 6. 合成 ffmpeg:拼接、配乐在旁白下自动闪避、烧字幕+水印
└─ final.mp4
三种输入形态复用同一套引擎:
- B-roll——一个选题进去,画面全靠生成。 它写脚本、生成每张拼贴海报、用 Veo 3.1 生成动效、配旁白与音乐,合成视频。
- A-roll——你已经有一段口播视频。 它会被 ASR 自动切成段(
openai-whisper),再整段套上拼贴风格,真人的脸、口型、手势逐帧保留(gemini-omni-video-edit/veo3.1)。 - C-roll——你只有一张静态照片(自拍、产品图)。主体被抠成摄影质感的贴纸——绝不重绘——每一段的海报围着它生成(
nano-banana-2/flux-dev)。旁白支持声音克隆(minimax-voice-clone)。
模型(已在 MuAPI 上验证)
| 用途 | 模型 |
|---|---|
| 关键帧 / 拼贴海报 | nano-banana-2 / flux-dev |
| 动效 / 视频生成 | veo3.1-image-to-video / veo3.1-fast-image-to-video |
| 口播视频转拼贴 (A-roll) | gemini-omni-video-edit / veo3.1-image-to-video |
| 照片锚进拼贴 (C-roll) | nano-banana-2 / flux-dev |
| 旁白 TTS | minimax-speech-2.6-turbo |
| 声音克隆 | minimax-voice-clone |
| 背景音乐 | suno-create-music |
| 语音识别 (A-roll ASR) | openai-whisper |
| 抠图背景消除 | remove-background |
快速开始(三种模式)
export MUAPI_API_KEY="sk-..."
# 1. B-roll (选题成片)
python scripts/style_bakeoff.py out/my-topic american-retro,swiss-modern,punk-zine
python scripts/keyframes.py out/my-topic
python scripts/clips.py out/my-topic
python scripts/audio.py out/my-topic
python scripts/assemble.py out/my-topic
# 2. A-roll (口播视频转拼贴)
python scripts/asr_beats.py out/my-aroll source_presentation.mp4
python scripts/aroll_clips.py out/my-aroll
python scripts/aroll_assemble.py out/my-aroll
# 3. C-roll (单张照片/产品锚定拼贴)
python scripts/croll_keyframes.py out/my-croll
python scripts/clips.py out/my-croll
python scripts/audio.py out/my-croll
python scripts/assemble.py out/my-croll
Veo 3.1 ComfyUI 节点
ComfyUI custom nodes for generating videos with Google's Veo 3.1 model via the MuAPI platform.
Related Projects
- Veo 3 on MuAPI — Model landing page for Veo generation.
- Veo 3 text-to-video playground — Try the model directly in the browser.
- veo4-video-generator — Ready-made Next.js SaaS for Veo — no ComfyUI needed
- Veo-4-API — Python wrapper for Veo 4 API — use the latest Veo model in scripts
- muapi-comfyui — ComfyUI nodes for 100+ MuAPI models including Veo
- awesome-ai-video-models — compare AI video models by API, price & speed
Nodes
| Node | Description |
|---|---|
| 🎬 Veo 3.1 Text to Video | Generate 8-second video from a text prompt |
| 🎬 Veo 3.1 Image to Video | Animate a static image; optionally anchor the last frame |
| 🎬 Veo 3.1 Reference to Video | Generate video guided by up to 4 reference images |
| 🎬 Veo 3.1 Extend Video | Continue a previous generation with a new prompt |
| 🎬 Veo 3.1 4K Upscale | Upscale any previous Veo 3.1 generation to 4K |
| 🎬 Veo 3.1 Save Video | Download & save generated video; returns frames tensor |
All nodes live in the 🎬 Veo 3.1 category in the ComfyUI node menu.
Available Models
Text to Video
| Model | Speed | Quality |
|---|---|---|
veo3.1-text-to-video |
Standard | Highest, with audio |
veo3.1-fast-text-to-video |
Fast | Good |
veo3.1-lite-text-to-video |
Fast | Lightweight |
Image to Video
| Model | Speed | Quality |
|---|---|---|
veo3.1-image-to-video |
Standard | Highest, with audio |
veo3.1-fast-image-to-video |
Fast | Good |
veo3.1-lite-image-to-video |
Fast | Lightweight |
Other Variants
veo3.1-reference-to-video— multi-image reference generationveo3.1-extend-video— extend a previous generationveo3.1-4k-video— upscale a previous generation to 4K
All models output 8-second videos (Veo 3.1 fixed duration).
Installation
cd ComfyUI/custom_nodes
git clone https://github.com/YOUR_USERNAME/muapi-veo31-comfyui
pip install -r muapi-veo31-comfyui/requirements.txt
Restart ComfyUI.
Setup
- Get an API key from MuAPI
- Paste it into the
api_keyfield of any Veo 3.1 node
Parameters
Common
| Parameter | Description |
|---|---|
api_key |
Your MuAPI API key |
prompt |
Text description of the video |
aspect_ratio |
16:9 or 9:16 |
resolution |
720p, 1080p, or 4k |
extra_params_json |
Any additional model parameters as JSON |
Image to Video extras
| Parameter | Description |
|---|---|
image |
Start frame (IMAGE tensor) |
last_image |
Optional end frame for first–last mode |
Reference to Video extras
| Parameter | Description |
|---|---|
image_1 … image_4 |
Reference images (up to 4) |
generate_audio |
Whether to generate audio (default: true) |
Extend / 4K Upscale
| Parameter | Description |
|---|---|
request_id |
request_id output from a previous generation node |
Example Workflows
| File | Description |
|---|---|
MuAPI_Veo31_T2V_Example.json |
Text → Video → Save |
MuAPI_Veo31_I2V_Example.json |
Image → Video → Save |
MuAPI_Veo31_Reference_Example.json |
2 reference images → Video → Save |
Load any workflow via ComfyUI → Load (drag & drop the JSON).
Chaining nodes
Veo31TextToVideo
└─ video_url ──► Veo31VideoSaver ──► frames ──► PreviewImage
└─ first_frame──► PreviewImage
└─ request_id ──► Veo31ExtendVideo
└─ request_id ──► Veo314KUpscale
Requirements
- Python 3.8+
- ComfyUI (any recent version)
requests,Pillow,numpy,torch,opencv-python
License
MIT

