audio-generation
Guide to audio generation and understanding in MassGen. Covers text-to-speech, music, sound…
Reference guide for adding new media generation backends to MassGen's unified generate_media tool.
$ npx -y skills add massgen/massgen --skill multimedia-backend-integrator --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/multimedia-backend-integratorContext preview
The summary Claude sees to decide when to auto-load this skill.
Reference guide for adding new media generation backends to MassGen's unified generate_media tool.
name: multimedia-backend-integrator description: Reference guide for adding new media generation backends to MassGen's unified generate_media tool.
Reference guide for adding new media generation backends to MassGen's unified `generate_media` tool.
_base.py -- Registration: API keys, default models, priority lists _selector.py -- Auto-selection logic: picks best backend by key + priority _image.py -- Image backends: OpenAI, Google (Gemini/Imagen), Grok, OpenRouter _video.py -- Video backends: Grok, Google Veo, OpenAI Sora _audio.py -- Audio backends: ElevenLabs, OpenAI TTS generate_media.py -- Entry point: routing, validation, batch mode, image-to-image
Each backend that supports iterative editing needs a continuation mechanism:
| Backend | Store Type | Key Format | What's Stored | How Continuation Works | |---------|-----------|------------|---------------|----------------------| | **OpenAI** | Stateless (server-side) | `response.id` | Nothing locally | Pass `previous_response_id` to next call | | **Gemini** | `_GeminiChatStore` (in-memory) | `gemini_chat_{uuid12}` | (client, chat) tuples | Reuse chat object for `send_message()`; client kept alive to prevent HTTP connection GC | | **Grok** | `_GrokImageStore` (in-memory) | `grok_img_{uuid12}` | Base64 strings | Pass stored base64 as `image_url` data URI |
class _NewBackendStore:
def __init__(self, max_items: int = 50):
self._store: OrderedDict[str, Any] = OrderedDict()
self._max = max_items
def save(self, data: Any) -> str:
store_id = f"prefix_{uuid.uuid4().hex[:12]}"
if len(self._store) >= self._max:
self._store.popitem(last=False) # LRU eviction
self._store[store_id] = data
return store_id
def get(self, store_id: str) -> Any | None:
return self._store.get(store_id)
_store = _NewBackendStore()1. **Missing from priority list** — Backend works when explicitly specified but never auto-selected 2. **Sync vs async** — Some SDKs are sync-only; wrap in `asyncio.to_thread()` if needed 3. **Ephemeral URLs** — Some APIs return temporary URLs; always prefer base64 or download immediately 4. **Falsy duration** — `duration or default` treats `0` as falsy; use `if duration is not None` 5. **Existing test breakage** — Adding to priority list changes auto-selection; update existing tests that clear env vars 6. **Image-to-image gating** — The `_generate_single_with_input_images` function has a backend allowlist
| File | Purpose | |------|---------| | `massgen/tool/_multimodal_tools/generation/_base.py` | API keys, default models, priorities | | `massgen/tool/_multimodal_tools/generation/_selector.py` | Backend auto-selection logic | | `massgen/tool/_multimodal_tools/generation/_image.py` | Image generation backends | | `massgen/tool/_multimodal_tools/generation/_video.py` | Video generation backends | | `massgen/tool/_multimodal_tools/generation/_audio.py` | Audio generation backends | | `massgen/tool/_multimodal_tools/generation/generate_media.py` | Entry point and routing | | `massgen/tool/_multimodal_tools/TOOL.md` | User-facing documentation | | `massgen/tests/test_grok_multimedia_generation.py` | Reference: Grok backend tests | | `massgen/tests/test_grok_multimedia_backend_selection.py` | Reference: Grok selection tests | | `massgen/tests/test_multimodal_image_backend_selection.py` | Reference: image selection tests |
🚀 MassGen is an open-source multi-agent scaling system that runs in your terminal, autonomously orchestrating frontier models and agents to collaborate, reason, and produce high-quality results. | Join us on Discord: discord.massgen.ai
Guide to audio generation and understanding in MassGen. Covers text-to-speech, music, sound…
Complete guide for integrating a new LLM backend into MassGen. Use when adding a new provider…
Guide for creating evolving skills - detailed workflow plans that capture what you'll do,…
This skill should be used when agents need to search codebases for text patterns or…
Guide to image generation and editing in MassGen. Use when creating images, editing existing…
Guide for creating properly structured YAML configuration files for MassGen. This skill…