Media-Gen Orchestrator
The single entry skill for generative + transformational media work. It locates the task on the
modality × stage map — what asset (image / 3D / video / GIF) and what stage (generate →
transform → assemble) — and delegates to one of 11 specialist spokes. The cross-cutting decision
every request shares — which backend to route to, given its access/billing model and the
modality — lives in media-gen-core; read it before picking an image or video generator.
Routing map (intent → spoke)
Generate an image
- Via your ChatGPT Plus/Pro plan, no per-image billing →
gpt-image-2
- Via Google Gemini 3.1 Flash Image (multi-image input, Search grounding) →
nano-banana-2
- Batch generation against the OpenAI Images API (+ gallery) →
openai-image-gen
- Headers, icons, diagrams, mermaid, infographics (a full visual-content system) →
art
Transform / clean up an image
- Upscale, sharpen, de-noise screenshots & assets →
image-enhancer
- Restyle / edit an existing image (image-to-image) →
gpt-image-2, nano-banana-2 (both edit, not just generate)
Make a 3D asset
- Image(s) → textured mesh (GLB/OBJ/PLY/STL) via Hunyuan3D-2.1 →
hunyuan3d
Generate video
- Shot-by-shot AI video (Kling / Sora / Grok), character-consistent series →
ai-video-director
Process / assemble video
- Convert, resize, compress, extract audio, GIF↔MP4 →
ffmpeg
- Pull frames or short clips out of a video →
video-frames
Work with GIFs
- Search GIF providers, download, extract stills/sheets →
gifgrep
- Author a size-constrained animated GIF for Slack →
slack-gif-creator
Picked-up spokes
Additional image-generation spokes (picked up from antigravity-awesome-skills, MIT). Route to these
alongside the generators above:
- Standalone Gemini image CLI — generate an image from a prompt with only a
GEMINI_API_KEY
and stdlib Python, no MCP server (good for UI placeholders, docs illustrations, icons) → imagen
- SEO-optimized image assets — OG/social cards, blog heroes, schema
ImageObject visuals,
product shots, infographics, each with per-use-case aspect ratio + resolution and a post-gen SEO
checklist (alt text, WebP, schema, og:image tags) → seo-image-gen
Routing note: prefer seo-image-gen when the image is destined for a page/social card and must be
search/social optimized; prefer imagen for a quick subscription-free local generate; prefer the
plan-backed generators (gpt-image-2, nano-banana-2, openai-image-gen) when their specific
backend/capability (multi-image input, character consistency, batch gallery) is required.
Standard Operating Flow
- Locate the task: which modality (image / 3D / video / GIF) and which stage (generate →
transform → assemble).
- If it generates an image or video, pull the routing model from
media-gen-core first —
the right backend depends on access (subscription vs API key vs local GPU/HF), cost, and the
specific capability needed (multi-image input, character consistency, format).
- Delegate to the spoke(s). Multi-step asks fan out in modality order — generators produce
assets, then processors transform/assemble them. E.g. "make an animated logo intro" →
art/gpt-image-2 (frames) → ai-video-director or ffmpeg (motion) → ffmpeg (encode).
- Return: chosen spoke(s), the backend/model selected and why (access + capability), the output
format, and the next action.
Guardrails
See media-gen-core. In short: confirm the backend's prerequisite before generating — a
subscription-backed CLI (gpt-image-2), an API key + billing (openai-image-gen, paid image
APIs), or a local/hosted GPU (hunyuan3d via HF Gradio) are not interchangeable, and silently
picking the wrong one wastes a paid call or fails. Generation is non-deterministic and may incur
cost or rate limits — state the cost/quota implication before a batch. Respect provider content
policies and the license/attribution of any downloaded GIF or reference image. Keep ffmpeg/
video-frames re-encodes lossless-aware (don't silently transcode a master).
Loading spokes on demand
To keep CLI startup context lean, this cluster's spokes are not separately registered as
skills — only this orchestrator and its *-core are enumerated. When you route to a spoke named
above, load it on demand by reading its file:
~/.agents/skill-clusters/skills/<spoke-name>/SKILL.md (or skills/<spoke-name>/SKILL.md inside
the skill-clusters repo).
1---2name: media-gen-orchestrator3description: Route a media-generation task to the right tool among 11 specialists — image generation (GPT Image 2, Nano Banana 2, OpenAI Images), image enhancement, image-to-3D, AI video direction, FFmpeg processing, frame extraction, and GIF search/authoring. USE WHEN a user wants to generate, edit, upscale, convert, or assemble an image, 3D model, video, or GIF but hasn't named the specific tool or backend.4---56# Media-Gen Orchestrator78The single entry skill for generative + transformational media work. It locates the task on the9**modality × stage** map — *what asset* (image / 3D / video / GIF) and *what stage* (generate →10transform → assemble) — and delegates to one of 11 specialist spokes. The cross-cutting decision11every request shares — **which backend to route to, given its access/billing model and the12modality** — lives in `media-gen-core`; read it before picking an image or video generator.1314## Routing map (intent → spoke)1516**Generate an image**17- Via your ChatGPT Plus/Pro plan, no per-image billing → `gpt-image-2`18- Via Google Gemini 3.1 Flash Image (multi-image input, Search grounding) → `nano-banana-2`19- Batch generation against the OpenAI Images API (+ gallery) → `openai-image-gen`20- Headers, icons, diagrams, mermaid, infographics (a full visual-content system) → `art`2122**Transform / clean up an image**23- Upscale, sharpen, de-noise screenshots & assets → `image-enhancer`24- Restyle / edit an existing image (image-to-image) → `gpt-image-2`, `nano-banana-2` *(both edit, not just generate)*2526**Make a 3D asset**27- Image(s) → textured mesh (GLB/OBJ/PLY/STL) via Hunyuan3D-2.1 → `hunyuan3d`2829**Generate video**30- Shot-by-shot AI video (Kling / Sora / Grok), character-consistent series → `ai-video-director`3132**Process / assemble video**33- Convert, resize, compress, extract audio, GIF↔MP4 → `ffmpeg`34- Pull frames or short clips out of a video → `video-frames`3536**Work with GIFs**37- Search GIF providers, download, extract stills/sheets → `gifgrep`38- Author a size-constrained animated GIF for Slack → `slack-gif-creator`3940## Picked-up spokes4142Additional image-generation spokes (picked up from antigravity-awesome-skills, MIT). Route to these43alongside the generators above:4445- **Standalone Gemini image CLI** — generate an image from a prompt with *only* a `GEMINI_API_KEY`46 and stdlib Python, no MCP server (good for UI placeholders, docs illustrations, icons) → `imagen`47- **SEO-optimized image assets** — OG/social cards, blog heroes, schema `ImageObject` visuals,48 product shots, infographics, each with per-use-case aspect ratio + resolution and a post-gen SEO49 checklist (alt text, WebP, schema, `og:image` tags) → `seo-image-gen`5051Routing note: prefer `seo-image-gen` when the image is destined for a page/social card and must be52search/social optimized; prefer `imagen` for a quick subscription-free local generate; prefer the53plan-backed generators (`gpt-image-2`, `nano-banana-2`, `openai-image-gen`) when their specific54backend/capability (multi-image input, character consistency, batch gallery) is required.5556## Standard Operating Flow57581. Locate the task: which **modality** (image / 3D / video / GIF) and which **stage** (generate →59 transform → assemble).602. If it **generates** an image or video, pull the routing model from `media-gen-core` first —61 the right backend depends on access (subscription vs API key vs local GPU/HF), cost, and the62 specific capability needed (multi-image input, character consistency, format).633. Delegate to the spoke(s). Multi-step asks fan out in modality order — generators produce64 assets, then processors transform/assemble them. E.g. *"make an animated logo intro"* →65 `art`/`gpt-image-2` (frames) → `ai-video-director` or `ffmpeg` (motion) → `ffmpeg` (encode).664. Return: chosen spoke(s), the backend/model selected and why (access + capability), the output67 format, and the next action.6869## Guardrails7071See `media-gen-core`. In short: **confirm the backend's prerequisite before generating** — a72subscription-backed CLI (`gpt-image-2`), an API key + billing (`openai-image-gen`, paid image73APIs), or a local/hosted GPU (`hunyuan3d` via HF Gradio) are *not* interchangeable, and silently74picking the wrong one wastes a paid call or fails. Generation is non-deterministic and may incur75cost or rate limits — state the cost/quota implication before a batch. Respect provider content76policies and the license/attribution of any downloaded GIF or reference image. Keep `ffmpeg`/77`video-frames` re-encodes lossless-aware (don't silently transcode a master).7879## Loading spokes on demand8081To keep CLI startup context lean, this cluster's spokes are **not** separately registered as82skills — only this orchestrator and its `*-core` are enumerated. When you route to a spoke named83above, **load it on demand** by reading its file:8485`~/.agents/skill-clusters/skills/<spoke-name>/SKILL.md` (or `skills/<spoke-name>/SKILL.md` inside86the skill-clusters repo).