Integrated media pack generation for AI agents. Use mmx for image, music, and TTS. Use Manim for video. Use ffmpeg to assemble the final cut.
- Organized by deliverable. Build
promo-packandlesson-packoutputs, not one-off assets. - Shared media backend.
mmx image,mmx music, andmmx speechcover stills, soundtrack, and narration. - Programmatic video. Manim owns the video lane for explainers, architecture builds, and technical motion.
- Integrated output. Packs generate prompts, narration, a Manim project, design-module briefs, commands, and final assembly steps together.
The repo has two layers:
- Capabilities:
media-creation,music-creation,manim-video,motion-edit - Packs:
promo-pack,lesson-pack
Typical flow:
brief
-> still prompts
-> cover / diagram / cards / article-illustration briefs
-> soundtrack prompt
-> narration script
-> manim plan/script/concat
-> render scenes
-> stitch + mux
-> final asset pack
Epic fantasy meets technical content. Massive scale, atmospheric depth, warm amber light against dark teal shadows. Grand scale with intimate human presence.
Deep teal: #2a5a6a (sky, water, shadows)
Dusk plum: #8a5a6a (accent, depth)
Golden amber: #d4a574 (light, warmth)
Warm cream: #e8dcc4 (stone, parchment)
Dark indigo: #1a1a2a (deep background)
git clone https://github.com/ameno-/media-gen.git
cd media-gen
bash scripts/setup_system_deps.sh
bash scripts/setup_manim_env.sh
cp config.example.sh config.sh
source config.shsetup_system_deps.sh uses Homebrew and may prompt for admin access when installing the TeX distribution.
Direct generation:
mmx image generate --prompt "Epic technical banner" --aspect-ratio 16:9
mmx music generate --prompt "Cinematic technical soundtrack" --instrumental --out soundtrack.mp3
mmx speech synthesize --text "Welcome to the lesson." --out narration.mp3Build a full pack:
python3 scripts/build_media_pack.py \
--pack lesson \
--title "Context Routing" \
--brief "Teach the core mechanism of context routing." \
--subject "knowledge flowing through a routing graph"
python3 scripts/run_pack.py --pack-dir generated/context-routing-lesson --dry-runskills/media-creation/- static image styles and still generationskills/music-creation/- soundtrack generation viammx musicskills/manim-video/- Manim-based video productionskills/motion-edit/- stitch and mux lane after renderskills/cover-image/- stronger hero and header still directionskills/diagram-creation/- architecture and concept diagramsskills/image-cards/- card/carousel sequencesskills/article-illustration/- section-aware article visualsskills/format-markdown/- markdown cleanup before visual/publish stepsskills/url-to-markdown/- source ingestion from URLsskills/markdown-to-html/- publishing transformskills/compress-image/- final still optimizationskills/imagine-backend/- optional multi-provider still backend
skills/promo-pack/- launches, announcements, hero assets, short promosskills/lesson-pack/- explainers, tutorials, educational visuals
See docs/PACKS.md for the integrated builder and runner flow.
See docs/VISUAL-SYSTEM.md for the shared design language.
- Brewfile for macOS system deps
- requirements.txt for the OpenRouter adapter
- requirements-manim.txt for the Manim render env
cp -r skills/media-creation ~/.letta/skills/
cp -r skills/music-creation ~/.letta/skills/
cp -r skills/manim-video ~/.letta/skills/
cp -r skills/promo-pack ~/.letta/skills/
cp -r skills/lesson-pack ~/.letta/skills/cp -r skills/media-creation ~/.claude/skills/
cp -r skills/music-creation ~/.claude/skills/
cp -r skills/manim-video ~/.claude/skills/
cp -r skills/promo-pack ~/.claude/skills/
cp -r skills/lesson-pack ~/.claude/skills/Say "build a promo pack" or "build a lesson pack" and the agent can route stills to mmx, video to Manim, and assembly to ffmpeg.
media-gen/
├── README.md
├── config.example.sh
├── scripts/
│ ├── build_media_pack.py
│ ├── render_manim_pack.py
│ ├── run_pack.py
│ ├── setup_manim_env.sh
│ └── smoke_test.py
├── skills/
│ ├── media-creation/
│ ├── music-creation/
│ ├── manim-video/
│ ├── motion-edit/
│ ├── cover-image/
│ ├── diagram-creation/
│ ├── image-cards/
│ ├── article-illustration/
│ ├── format-markdown/
│ ├── url-to-markdown/
│ ├── markdown-to-html/
│ ├── compress-image/
│ ├── imagine-backend/
│ ├── promo-pack/
│ └── lesson-pack/
├── adapters/
│ └── openrouter_image.py
├── docs/
│ ├── SETUP.md
│ ├── CLI-INTEGRATION.md
│ ├── PACKS.md
│ ├── VISUAL-SYSTEM.md
│ └── STYLE-TEMPLATE.md
└── examples/
No API keys in this repo. All keys are environment variables.
OPENROUTER_API_KEY # OpenRouter image generation
OPENAI_API_KEY # Codex/OpenAI image usage
MINIMAX_API_KEY # mmx image / music / speechCopy config.example.sh to config.sh, fill in keys, never commit it.
Check the local setup and key presence:
python3 scripts/check_setup.py