# anil-matcha/vox-ai-motion-graphics-generator architecture

> Architecture diagram of the GitHub repository anil-matcha/vox-ai-motion-graphics-generator, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/anil-matcha/vox-ai-motion-graphics-generator
- Repository: https://github.com/anil-matcha/vox-ai-motion-graphics-generator

## Overview

Vox AI Motion Graphics Generator turns a topic, presenter video, or photo into a narrated, captioned collage video. Its main workflow is story beats → theme selection → visual generation and motion → audio → assembly; A-roll and C-roll have distinct input-specific paths. The graph includes the sampled media, provider, and rendering layers. README documents the overall stages and capabilities, while excerpts establish several module calls; unsampled orchestration links are omitted or documented from the README.

Main entry points: [`scripts/provider.py`](https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/provider.py) (Provider jobs), [`scripts/keyframes.py`](https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/keyframes.py) (B-roll keyframes), [`scripts/aroll_clips.py`](https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/aroll_clips.py) (A-roll restyling), [`scripts/assemble.py`](https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/assemble.py) (B-roll assembly)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_story["Story and style"]
  node_beats["Beat map"]
  node_bakeoff["Theme bake-off<br/>[style_bakeoff.py]"]
  node_styles["Style system<br/>[styles.py]"]
  node_asr["A-roll beat segmentation<br/>[asr_beats.py]"]
end

subgraph group_visual["Visual production"]
  node_keyframes["B-roll keyframes<br/>[keyframes.py]"]
  node_croll["C-roll keyframes<br/>[croll_keyframes.py]"]
  node_motion["B-roll motion<br/>[clips.py]"]
  node_aroll["A-roll restyling<br/>[aroll_clips.py]"]
end

subgraph group_audio["Audio and finish"]
  node_audio["Narration and music<br/>[audio.py]"]
  node_assemble["B-roll assembly<br/>[assemble.py]"]
  node_aroll_assemble["A-roll assembly<br/>[aroll_assemble.py]"]
  node_captions["Caption overlays<br/>[text_overlay.py]"]
  node_final["Finished video"]
end

subgraph group_platform["Media services"]
  node_provider["Provider jobs<br/>[provider.py]"]
  node_muapi["MuAPI client<br/>[muapi_client.py]"]
  node_muapi_service{{"MuAPI API"}}
end

node_creator(("Creator / agent"))
node_video["Presenter video"]
node_photo["Anchor photo"]

node_creator -->|"provides topic"| node_beats
node_creator -->|"approves beats"| node_beats
node_beats -->|"selects theme"| node_bakeoff
node_bakeoff -->|"uses presets"| node_styles
node_beats -->|"supplies scenes"| node_keyframes
node_keyframes -->|"composes prompts"| node_styles
node_creator -->|"picks theme"| node_bakeoff
node_keyframes -->|"provides posters"| node_motion
node_motion -->|"submits video jobs"| node_provider
node_keyframes -->|"submits image jobs"| node_provider
node_croll -->|"submits image jobs"| node_provider
node_provider -->|"delegates requests"| node_muapi
node_muapi -->|"calls API"| node_muapi_service
node_video -->|"provides speech"| node_asr
node_asr -->|"submits ASR job"| node_provider
node_asr -->|"writes beat map"| node_aroll
node_video -->|"provides footage"| node_aroll
node_aroll -->|"submits restyle jobs"| node_provider
node_photo -->|"anchors posters"| node_croll
node_beats -->|"supplies narration"| node_audio
node_audio -->|"submits audio jobs"| node_provider
node_motion -->|"provides clips"| node_assemble
node_audio -->|"provides tracks"| node_assemble
node_assemble -->|"renders overlays"| node_captions
node_assemble -->|"stitches video"| node_final
node_aroll -->|"provides clips"| node_aroll_assemble
node_aroll_assemble -->|"remuxes video"| node_final

click node_bakeoff "https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/style_bakeoff.py"
click node_styles "https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/styles.py"
click node_asr "https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/asr_beats.py"
click node_keyframes "https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/keyframes.py"
click node_croll "https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/croll_keyframes.py"
click node_motion "https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/clips.py"
click node_aroll "https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/aroll_clips.py"
click node_provider "https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/provider.py"
click node_muapi "https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/muapi_client.py"
click node_audio "https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/audio.py"
click node_assemble "https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/assemble.py"
click node_aroll_assemble "https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/aroll_assemble.py"
click node_captions "https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/text_overlay.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_beats,node_bakeoff,node_styles,node_asr toneBlue
class node_keyframes,node_croll,node_motion,node_aroll toneAmber
class node_audio,node_assemble,node_aroll_assemble,node_captions,node_final toneMint
class node_provider,node_muapi,node_muapi_service toneRose
class node_creator,node_video,node_photo toneIndigo
```

## Components

### Story and style

- **Beat map**
- [Theme bake-off](https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/style_bakeoff.py): `scripts/style_bakeoff.py`
- [Style system](https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/styles.py): `scripts/styles.py`
- [A-roll beat segmentation](https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/asr_beats.py): `scripts/asr_beats.py`

### Visual production

- [B-roll keyframes](https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/keyframes.py): `scripts/keyframes.py`
- [C-roll keyframes](https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/croll_keyframes.py): `scripts/croll_keyframes.py`
- [B-roll motion](https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/clips.py): `scripts/clips.py`
- [A-roll restyling](https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/aroll_clips.py): `scripts/aroll_clips.py`

### Audio and finish

- [Narration and music](https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/audio.py): `scripts/audio.py`
- [B-roll assembly](https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/assemble.py): `scripts/assemble.py`
- [A-roll assembly](https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/aroll_assemble.py): `scripts/aroll_assemble.py`
- [Caption overlays](https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/text_overlay.py): `scripts/text_overlay.py`
- **Finished video**

### Media services

- [Provider jobs](https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/provider.py): `scripts/provider.py`
- [MuAPI client](https://github.com/anil-matcha/vox-ai-motion-graphics-generator/blob/main/scripts/muapi_client.py): `scripts/muapi_client.py`
- **MuAPI API**

### Other components

- **Creator / agent**
- **Presenter video**
- **Anchor photo**

## Connections

- Creator / agent → Beat map: provides topic (evidence: `README.md`)
- Creator / agent → Beat map: approves beats (evidence: `README.md`)
- Beat map → Theme bake-off: selects theme (evidence: `README.md`)
- Theme bake-off → Style system: uses presets (evidence: `scripts/style_bakeoff.py`)
- Beat map → B-roll keyframes: supplies scenes (evidence: `README.md`)
- B-roll keyframes → Style system: composes prompts (evidence: `scripts/keyframes.py`)
- Creator / agent → Theme bake-off: picks theme (evidence: `README.md`)
- B-roll keyframes → B-roll motion: provides posters (evidence: `README.md`)
- B-roll motion → Provider jobs: submits video jobs (evidence: `scripts/clips.py`)
- B-roll keyframes → Provider jobs: submits image jobs (evidence: `scripts/keyframes.py`)
- C-roll keyframes → Provider jobs: submits image jobs (evidence: `scripts/croll_keyframes.py`)
- Provider jobs → MuAPI client: delegates requests (evidence: `scripts/provider.py`)
- MuAPI client → MuAPI API: calls API (evidence: `scripts/muapi_client.py`)
- Presenter video → A-roll beat segmentation: provides speech (evidence: `README.md`)
- A-roll beat segmentation → Provider jobs: submits ASR job (evidence: `scripts/asr_beats.py`)
- A-roll beat segmentation → A-roll restyling: writes beat map (evidence: `scripts/asr_beats.py`)
- Presenter video → A-roll restyling: provides footage (evidence: `README.md`)
- A-roll restyling → Provider jobs: submits restyle jobs (evidence: `scripts/aroll_clips.py`)
- Anchor photo → C-roll keyframes: anchors posters (evidence: `README.md`)
- Beat map → Narration and music: supplies narration (evidence: `README.md`)
- Narration and music → Provider jobs: submits audio jobs (evidence: `scripts/audio.py`)
- B-roll motion → B-roll assembly: provides clips (evidence: `README.md`)
- Narration and music → B-roll assembly: provides tracks (evidence: `README.md`)
- B-roll assembly → Caption overlays: renders overlays (evidence: `scripts/assemble.py`)
- B-roll assembly → Finished video: stitches video (evidence: `README.md`)
- A-roll restyling → A-roll assembly: provides clips (evidence: `README.md`)
- A-roll assembly → Finished video: remuxes video (evidence: `README.md`)
