mcpField
M
multimedia-backend-integrator

multimedia-backend-integrator

github.com/massgen開発1.1k75 回インストール20 週間前に更新
リポジトリ

multimedia-backend-integrator について

MassGen にメディア生成バックエンドを追加する開発者向けのガイドです。登録、実装、ルーティング、テストに加え、継続処理の保存方法と注意点をまとめています。

主な機能

  1. 01バックエンド登録と優先順位の設定
  2. 02画像・動画・音声の実装手順
  3. 03自動選択と画像編集のルーティング要件
  4. 04継続処理の保存パターン
  5. 05テスト項目と注意点

活用シーン

  1. 01MassGen に画像生成バックエンドを追加
  2. 02動画または音声バックエンドを統合
  3. 03選択ロジックと継続処理への対応を確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/massgen/massgen --skill multimedia-backend-integrator

インストール後、Claude Code で/multimedia-backend-integratorを入力して読み込まれたか確認します。

詳細

マルチメディアバックエンドインテグレーター

MassGen の統合 generate_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

新しいバックエンドを追加するための完全なチェックリスト

1. 登録(_base.py)
  • BACKEND_API_KEYS に追加:バックエンド名を環境変数にマッピングします
  • DEFAULT_MODELS に追加:バックエンド名を、サポートする各タイプの {MediaType: model_name} にマッピングします
  • BACKEND_PRIORITY に追加:メディアタイプごとの適切な位置に挿入します
2. 実装(_image.py / _video.py / _audio.py)
  • モジュールの先頭で SDK の import を追加します
  • _generate_{media}_{backend}(config) -> GenerationResult を実装します
  • 最初に API キーを確認し、キーがない場合はエラー結果を返します
  • API キーを使って SDK クライアントを作成します
  • config.* のフィールドを SDK のパラメーターにマッピングします
  • 継続処理(該当する場合)を処理します —「継続ストアのパターン」を参照してください
  • 出力バイト列を config.output_path に書き込みます
  • メタデータを含む GenerationResult を返します
  • try/except で囲み、エラーをログに記録します
3. ディスパッチャーの更新
  • メディアタイプの generate_{media}() 関数に elif backend == "new_backend": を追加します
4. 画像から画像への生成のサポート(generate_media.py)
  • _generate_single_with_input_images の selected_backend not in (...) チェックにバックエンド名を追加します
  • 自動選択チェーンにフォールバックとして elif has_api_key("new_backend"): を追加します
  • エラーメッセージを更新し、新しいバックエンドと環境変数に言及します
5. ドキュメント
  • TOOL.md:フロントマターに環境変数を、表にバックエンドを、キーワードに関連語を追加します
  • generate_media.py の docstring:backend_type のリストと Supported Backends を更新します
6. テスト
  • バックエンド登録テスト(API キー、デフォルトモデル、優先順位)
  • 自動選択テスト(このバックエンドのキーのみの場合、複数のキーがある場合)
  • SDK 呼び出しの検証(正しいパラメーターが渡されること)
  • 出力ファイルが正しく書き込まれること
  • 継続処理のフロー(該当する場合)
  • エラー処理(キーの欠落、API エラー)
  • パラメーターのマッピング(aspect_ratio、size、duration)
  • 優先順位リストの長さや内容を検証する既存のテストを更新します

継続ストアのパターン

反復編集をサポートする各バックエンドには、継続処理の仕組みが必要です。

バックエンドストアの種類キーの形式保存する内容継続処理の方法
OpenAIステートレス(サーバー側)response.idローカルには何も保存しません次の呼び出しに previous_response_id を渡します
Gemini_GeminiChatStore(インメモリー)gemini_chat_{uuid12}(クライアント、チャット)のタプルsend_message() にチャットオブジェクトを再利用します。HTTP 接続の GC を防ぐため、クライアントは保持します
Grok_GrokImageStore(インメモリー)grok_img_{uuid12}Base64 文字列保存した Base64 を image_url データ 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. 優先順位リストへの追加漏れ — バックエンドを明示的に指定すれば動作しますが、自動選択されません
  2. 同期処理と非同期処理 — SDK によっては同期処理のみです。必要に応じて asyncio.to_thread() でラップします
  3. 一時的な URL — 一時的な URL を返す API があります。常に Base64 を優先するか、すぐにダウンロードしてください
  4. 偽と評価される duration — duration or default では 0 が偽と評価されます。if duration is not None を使用してください
  5. 既存テストへの影響 — 優先順位リストへの追加によって自動選択が変わります。環境変数をクリアする既存テストを更新してください
  6. 画像から画像への生成の制限 — _generate_single_with_input_images 関数には、許可するバックエンドのリストがあります

参照ファイル

ファイル目的
massgen/tool/_multimodal_tools/generation/_base.pyAPI キー、デフォルトモデル、優先順位
massgen/tool/_multimodal_tools/generation/_selector.pyバックエンドの自動選択ロジック
massgen/tool/_multimodal_tools/generation/_image.py画像生成バックエンド
massgen/tool/_multimodal_tools/generation/_video.py動画生成バックエンド
massgen/tool/_multimodal_tools/generation/_audio.py音声生成バックエンド
massgen/tool/_multimodal_tools/generation/generate_media.pyエントリーポイントとルーティング
massgen/tool/_multimodal_tools/TOOL.mdユーザー向けドキュメント
massgen/tests/test_grok_multimedia_generation.py参照:Grok バックエンドのテスト
massgen/tests/test_grok_multimedia_backend_selection.py参照:Grok 選択テスト
massgen/tests/test_multimodal_image_backend_selection.py参照:画像選択テスト

コメント