Skip to main content
クリエイティブマニフェストは、ブランドコンテンツのプリセット(再利用可能な構成)を定義し、特定のクリエイティブフォーマットでインスタンス化できるようにします。 マニフェストは構造・レイアウト・レンダリング動作を定義しません。代わりに、クリエイティブフォーマットが定義した要件を満たす具体的なアセット値を提供します。フォーマット定義と組み合わせることで、レンダリング可能なクリエイティブインスタンスが生成されます。 フォーマット、マニフェスト、クリエイティブエージェントの連携概要は Creative Protocol Overview を参照してください。

Manifest Structure

基本構造

{
  format_id: {                 // Format this manifest is for
    agent_url: string;         // Creative agent URL
    id: string;                // Format identifier
  };
  promoted_offering?: string;  // Product being advertised (maps to create_media_buy)
  assets: {
    [asset_id: string]: {      // Keyed by asset_id from format's assets
      // Asset type is determined by format specification, not declared here
      // Type-specific fields depend on asset_type defined in format's assets

      // Image: url, width, height, format, alt_text
      // Video: url, width, height, duration_ms, format, bitrate_kbps
      // Audio: url, duration_ms, format, bitrate_kbps
      // Text: content, language
      // URL: url, description
      // HTML: content or url, version
      // CSS: content, media
      // JavaScript: content, module_type
      // VAST: url or content, vast_version, vpaid_enabled, duration_ms, tracking_events
      // DAAST: url or content, daast_version, duration_ms, tracking_events, companion_ads
      // Promoted Offerings: brand_manifest, product_selectors, offerings, asset_selectors
      // Webhook: url, method, timeout_ms, response_type, security, supported_macros, required_macros
    }
  };
}

Asset ID

各アセットはフォーマットの assets 配列で定義された asset_id をキーにします。asset_id はフォーマット仕様の要件を参照するための技術的識別子です。 Asset ID の仕組み: フォーマットが必須アセットを定義する場合:
{
  "assets": [
    {
      "asset_id": "banner_image",
      "asset_type": "image",
      "required": true
    },
    {
      "asset_id": "clickthrough_url",
      "asset_type": "url",
      "required": true
    }
  ]
}
マニフェストでは 同じ asset_id をキーとして使用する必要があります:
{
  "assets": {
    "banner_image": {        // ← format の asset_id と一致
      "url": "https://cdn.example.com/banner.jpg",
      "width": 300,
      "height": 250
    },
    "clickthrough_url": {    // ← format の asset_id と一致
      "url": "https://example.com/landing"
    }
  }
}
一般的な asset_id(フォーマットによって異なる):
  • banner_image, hero_image: メインビジュアル
  • logo: ブランドロゴ
  • headline, description: テキスト
  • cta_text: ボタン文言
  • video_file: 動画コンテンツ
  • vast_tag: 動画配信用 VAST XML
  • clickthrough_url: ランディングページ URL
必須の asset_id は必ずフォーマットの assets を確認してください。

完全な例

冗長なフィールドを省き、最新の構造を示すクリエイティブマニフェストの例です。
{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "display_300x250"
  },
  "promoted_offering": "Premium Dog Food",
  "assets": {
    "banner_image": {
      "url": "https://cdn.example.com/banner.jpg",
      "width": 300,
      "height": 250
    },
    "headline": {
      "content": "Nutrition Dogs Love"
    },
    "description": {
      "content": "Made with real chicken and wholesome grains"
    },
    "clickthrough_url": {
      "url": "https://example.com/products/premium-dog-food",
      "description": "Product landing page"
    }
  }
}
Note: アセットタイプ(imagetexturl など)はマニフェスト内では宣言しません。各 asset_id がどのタイプかは、フォーマット仕様の assets 配列を参照して決まります。

クリエイティブマニフェストの種類

マニフェストは、上記の 3 つのクリエイティブエージェントモダリティに対応して、静的・動的・ハイブリッドになり得ます。

静的マニフェスト

即時レンダリング可能なすべてのアセットを含むマニフェストです。Static Asset Delivery または Prompt to Static Rendering モードのクリエイティブエージェントが生成します。
{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "native_responsive"
  },
  "assets": {
    "hero_image": {
      "url": "https://cdn.example.com/hero.jpg",
      "width": 1200,
      "height": 627,
      "alt_text": "Product image"
    },
    "logo": {
      "url": "https://cdn.example.com/logo.png",
      "width": 100,
      "height": 100
    },
    "headline": {
      "content": "Premium Quality You Can Trust"
    },
    "description": {
      "content": "Discover why veterinarians recommend our formula"
    },
    "cta_text": {
      "content": "Learn More"
    }
  }
}
ユースケース:
  • 従来のディスプレイ広告
  • 事前レンダリングされた動画広告
  • 静的ネイティブ広告
  • 固定クリエイティブキャンペーン

動的マニフェスト

リアルタイム生成用のエンドポイントやコードを含むマニフェストです。Prompt to Dynamic Rendering モード(DCO/生成系)で生成されます。
{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "display_dynamic_300x250"
  },
  "assets": {
    "dynamic_content": {
      "url": "https://creative-agent.example.com/render/campaign-123",
      "method": "POST",
      "timeout_ms": 500,
      "supported_macros": ["WEATHER", "TIME", "DEVICE_TYPE", "COUNTRY"],
      "response_type": "html",
      "security": {
        "method": "hmac_sha256",
        "hmac_header": "X-Signature"
      }
    },
    "fallback_image": {
      "url": "https://cdn.example.com/fallback-300x250.jpg",
      "width": 300,
      "height": 250
    }
  }
}
ユースケース:
  • 天候連動クリエイティブ
  • 時間帯に応じたメッセージ切り替え
  • 商品在庫状況のメッセージ
  • リアルタイム在庫更新
Note: クライアントサイドで動的レンダリングする場合は、webhook の代わりに htmljavascript アセットタイプでタグを埋め込みます。 動的マニフェストはアセットタイプを混在させられます — 一部は静的(画像・動画)、一部は動的(webhook、マクロ入りタグ)。例: 静的なヒーロー動画とパーソナライズされたエンドカード webhook を含む動画 VAST タグ。

DOOH マニフェスト(インプレッション計測あり)

デジタル屋外広告 (DOOH) では、他のフォーマット同様インプレッショントラッキングを使用しますが、デバイス識別子の代わりに会場固有のマクロを利用します。
{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "dooh_billboard_1920x1080"
  },
  "promoted_offering": "Premium Coffee Blend",
  "assets": {
    "billboard_image": {
      "url": "https://cdn.example.com/billboard-1920x1080.jpg",
      "width": 1920,
      "height": 1080
    },
    "impression_tracker": {
      "url": "https://tracking.example.com/imp?screen={SCREEN_ID}&venue={VENUE_TYPE}&ts={PLAY_TIMESTAMP}&lat={VENUE_LAT}&lon={VENUE_LONG}",
      "url_type": "tracker_pixel"
    }
  }
}
DOOH 特有のマクロ(完全な一覧は Universal Macros を参照):
  • {SCREEN_ID} - 物理スクリーンの一意識別子
  • {VENUE_TYPE} - 会場カテゴリ(airport, mall, transit, highway, retail)
  • {VENUE_LAT} / {VENUE_LONG} - 位置座標
  • {PLAY_TIMESTAMP} - 掲出時刻(Unix タイムスタンプ)
  • {DWELL_TIME} - 平均滞在時間
仕組みはデジタル広告のインプレッション計測と同じで、表示時に URL が発火します。違いは、DOOH ではデバイス ID ではなく固定の会場コンテキストを使う点です。

マニフェストの扱い

マニフェストの作成

マニフェスト(JSON)は次の 2 通りで作成できます。 1. 手動組み立て フォーマット要件と自社アセットを直接組み合わせます。
{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "native_responsive"
  },
  "promoted_offering": "Premium Salmon Formula",
  "assets": {
    "hero_image": {
      "url": "https://cdn.example.com/salmon-hero.jpg",
      "width": 1200,
      "height": 627
    },
    "headline": {
      "content": "New Premium Salmon Formula"
    }
  }
}
2. AI 生成(任意) クリエイティブエージェントに build_creative を呼び出し、自然言語のブリーフからマニフェストを生成します。詳細は Generative Creative を参照してください。

マニフェストの検証

使用前にマニフェストをフォーマット要件と照合します。
  1. フォーマット整合性: format_id が意図したフォーマットと一致しているか
  2. 必須アセット: フォーマットで必須 (required: true) の asset_id がすべて assets オブジェクトに存在するか
  3. キー一致: マニフェストの assets オブジェクト内の各キーがフォーマットの assets 配列の asset_id と一致しているか
  4. アセット仕様: 寸法・ファイルサイズ・尺などフォーマット要件を満たしているか
  5. マクロサポート: 動的マニフェストの場合、必要なマクロに対応しているか
無効な asset_id の扱い
  • 必須 asset_id の欠落: クリエイティブエージェントは欠落した必須アセットをエラーで返し、拒否しなければならない
  • 未知の asset_id: フォーマットに存在しないキーを含むマニフェストは拒否し、タイプミスや非対応フォーマットを即座に検出する
  • asset_type の不一致: フォーマット仕様で要求されたタイプと異なる場合は明確な型不一致エラーで拒否する
build_creative を実装するクリエイティブエージェントは検証を自動で行います。手動で組み立てる場合は、list_creative_formats で返されるフォーマット仕様と照合してください。 フォーマットを前提とした検証: マニフェストの JSON スキーマでは資産キーに柔軟なパターン(^[a-z0-9_]+$)を採用しています。正しいキーかどうか、どのタイプかはフォーマットの assets を参照して実行時に検証します。asset_type 情報はマニフェスト自体には含まれず、asset_id をフォーマットの assets 配列で引くことで決まります。

検証フロー

クリエイティブエージェントがマニフェストを検証する際:
  1. マニフェストから format_id を取得
  2. フォーマットレジストリからフォーマット仕様を取得(agent_url に応じてローカル/リモート)
  3. manifest.assets 内の各アセットキーについて:
    • フォーマットの format.assetsasset_id を検索
    • 見つからなければ → 「Unknown asset_id …」のエラーで拒否
    • 見つかれば → フォーマット要件から期待する asset_type を特定
    • アセットタイプスキーマ(例: /schemas/v2/core/assets/image-asset.json)を取得
    • アセットペイロードをスキーマに対して検証
    • フォーマットの requirements フィールドにある追加制約を検証
  4. 必須アセットがすべて存在するか確認(フォーマットで required: true のもの)
  5. タイプ固有の制約を検証(寸法、ファイルサイズ、尺など)
フォーマット仕様が、各 asset_id のタイプと適用される制約の単一の信頼できる情報源となります。 検証はスキーマ時ではなく実行時: クリエイティブマニフェストの JSON スキーマはアセットキーに柔軟なパターンを使っています。妥当性チェックは、マニフェストをクリエイティブエージェントに送信した際に、対応するフォーマットの assets を基に行われます。

マニフェストのプレビュー

preview_creative タスクでマニフェストのレンダリングを確認します。
{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "native_responsive"
  },
  "creative_manifest": {
    "format_id": {
      "agent_url": "https://creative.adcontextprotocol.org",
      "id": "native_responsive"
    },
    "assets": {
      "hero_image": {
        "url": "https://cdn.example.com/hero.jpg",
        "width": 1200,
        "height": 627
      },
      // ... other assets
    }
  },
  "macro_values": {
    "CLICK_URL": "https://example.com/landing",
    "CACHE_BUSTER": "12345"
  }
}
クリエイティブエージェントはプレビュー URL とレンダリング結果を返します。

マニフェストの送信

マニフェストは sync_creatives でクリエイティブラリに登録し、メディアバイで ID を参照します。
{
  "task": "sync_creatives",
  "parameters": {
    "creatives": [
      {
        "creative_id": "native-salmon-v1",
        "name": "Salmon Special Native Ad",
        "format_id": {
          "agent_url": "https://creative.adcontextprotocol.org",
          "id": "native_responsive"
        },
        "manifest": {
          "format_id": {
            "agent_url": "https://creative.adcontextprotocol.org",
            "id": "native_responsive"
          },
          "promoted_offering": "Fresh Pacific Salmon",
          "assets": {
            "headline": {
              "content": "Fresh Pacific Salmon - 20% Off Today"
            },
            "main_image": {
              "url": "https://cdn.example.com/salmon.jpg",
              "width": 1200,
              "height": 628
            }
          }
        }
      }
    ]
  }
}
その後、メディアバイで creative_id を参照します。マニフェストは 1 つのフォーマットに対応します。

マクロ置換

マニフェストは動的値のためのマクロプレースホルダーをサポートします。AdCP ではすべてのパブリッシャーで一貫して動作するユニバーサルマクロを使用します。 利用可能なマクロ、置換プロセス、フォーマット固有のマクロサポートについては Universal Macros を参照してください。

Best Practices

クリエイティブエージェント向け

  1. 完全なマニフェスト: フォーマットの必須アセットをすべて含める
  2. アセット検証: アセットがフォーマット仕様を満たすことを確認する
  3. フォールバック提供: 動的クリエイティブにはフォールバックアセットを含める
  4. マクロの明示: 使用するマクロを明確にする
  5. バージョニング: アセット管理のためにバージョン付き URL を使用する

パブリッシャー向け

  1. 受領時の検証: フォーマット要件と照合する
  2. アセットキャッシュ: ホストされたアセットを事前取得・キャッシュする
  3. 障害対応: 動的マニフェストにはフォールバックレンダリングを実装する
  4. マクロサポート: ユニバーサルマクロを実装する
  5. テンプレート提供: カスタムフォーマット向けにレンダリングテンプレートを提供する

バイヤー向け

  1. 検証: マニフェストがフォーマット要件を満たすことを確認(手動または build_creative
  2. プレビュー: 送信前に必ずプレビューする
  3. マクロテスト: マクロ置換が期待どおりか確認する
  4. アセット最適化: アセットのサイズや圧縮を適切に行う
  5. ライブラリ整理: クリエイティブラリでアセット管理を行う

Advanced Topics

繰り返し可能なアセットグループ

カルーセルやスライドショーなど複数アセットのフォーマットについては、Carousel & Multi-Asset Formats を参照してください。

スキーマリファレンス

関連ドキュメント