Loading...
Loading...
Reference guide for adding new media generation backends to MassGen's unified generate_media tool.
npx skill4agent add massgen/massgen multimedia-backend-integratorgenerate_media_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_base.pyBACKEND_API_KEYSDEFAULT_MODELS{MediaType: model_name}BACKEND_PRIORITY_image.py_video.py_audio.pyimport_generate_{media}_{backend}(config) -> GenerationResultconfig.*config.output_pathGenerationResultelif backend == "new_backend":generate_{media}()generate_media.pyselected_backend not in (...)_generate_single_with_input_imageselif has_api_key("new_backend"):TOOL.mdgenerate_media.pybackend_typeSupported Backends| Backend | Store Type | Key Format | What's Stored | How Continuation Works |
|---|---|---|---|---|
| OpenAI | Stateless (server-side) | | Nothing locally | Pass |
| Gemini | | | (client, chat) tuples | Reuse chat object for |
| Grok | | | Base64 strings | Pass stored base64 as |
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()asyncio.to_thread()duration or default0if duration is not None_generate_single_with_input_images| File | Purpose |
|---|---|
| API keys, default models, priorities |
| Backend auto-selection logic |
| Image generation backends |
| Video generation backends |
| Audio generation backends |
| Entry point and routing |
| User-facing documentation |
| Reference: Grok backend tests |
| Reference: Grok selection tests |
| Reference: image selection tests |