Skip to main content
セールスエージェントはメディアバイプロトコルとともにクリエイティブプロトコルを実装できます。その場合、1つのエージェントエンドポイントがメディアバイとクリエイティブ管理の両方を処理する — バイヤーは別のサービスを発見して接続する必要がない。 これは、配信時にクリエイティブを生成したり、内部でクリエイティブライブラリを管理したり、広告プロダクトの一部としてフォーマット固有のクリエイティブサービスを提供したりするセラーにとって一般的なケースです。

仕組み

セールスエージェントは get_adcp_capabilities でクリエイティブプロトコルのサポートを宣言する:
{
  "$schema": "https://adcontextprotocol.org/schemas/v3/protocol/get-adcp-capabilities-response.json",
  "adcp": { "major_versions": [3] },
  "supported_protocols": ["media_buy", "creative"],
  "media_buy": {
    "features": {
      "inline_creative_management": true
    }
  },
  "creative": {
    "has_creative_library": true,
    "supports_generation": true,
    "supports_transformation": false,
    "supports_compliance": false
  }
}
inline_creative_management(購入時にパッケージにクリエイティブを付与するメディアバイ機能)とクリエイティブプロトコルサポートは独立していることに注意。セールスエージェントはどちらか一方または両方をサポートできます。 inline_creative_managementcreate_media_buy でクリエイティブをパッケージに直接付与することを許可する — クリエイティブは購入注文とともに移動します。クリエイティブプロトコルサポート(supported_protocols"creative")は、エージェントが build_creativelist_creative_formatssync_creatives などのクリエイティブタスクを実装することを意味します。セールスエージェントはクリエイティブプロトコルを実装せずにインラインクリエイティブ管理をサポートする場合がある(バイヤーは外部でクリエイティブを管理し、購入で参照するだけ)、またはインライン管理なしでクリエイティブプロトコルを実装する場合もある(クリエイティブはパッケージに割り当てる前に sync_creatives で別途同期されます)。 バイヤーはすべてのタスク — メディアバイとクリエイティブ — を同じエージェント URL で呼び出す。タスクが属するプロトコルがスキーマを決定し、エージェントのタイプは関係ありません。

利用可能なクリエイティブタスク

セールスエージェントが supported_protocols"creative" を宣言すると、任意のクリエイティブプロトコルタスクを実装できる:
タスク実装するタイミング
list_creative_formats常に — バイヤーがサポートされているフォーマットを発見する必要がある
sync_creativesエージェントがクリエイティブライブラリをホストする場合。セールスエージェントはクリエイティブとパッケージの一括マッピングのために assignments フィールドをサポートすべきです。
list_creativesバイヤーがライブラリを参照する必要がある場合
build_creativeエージェントがクリエイティブを生成または変換する場合
preview_creativeエージェントがプレビューをレンダリングできる場合
get_creative_deliveryエージェントがバリアントレベルの配信データを報告できる場合
これらはスタンドアロンのクリエイティブエージェントが実装するのと同じタスクです。違いは運用上のものであり、プロトコルレベルではない: バイヤーは別のサービスを発見して接続する必要がない。 メディアバイの accounts プロトコルをすでに実装しているセールスエージェントは、クリエイティブタスクのために追加のアカウント設定は必要ない — 同じアカウントが両方のプロトコルをカバーします。

クリエイティブレビュー

クリエイティブを受け取るセールスエージェント — create_media_buy のインライン付与または sync_creatives 経由 — は、配信前にクリエイティブレビューを実施する場合があります。これは、クリエイティブがポリシーコンプライアンス、マルウェア、またはブランドセーフティ違反のためにスキャンされる実際のパブリッシャーおよび SSP ワークフローを反映しています。 クリエイティブレビューの状態は2つのレベルでサーフェスされます:
  • クリエイティブライブラリ: list_creatives の各クリエイティブの status フィールドはクリエイティブステータス列挙型を使用します: processingpending_reviewapprovedrejectedarchived
  • パッケージレベル: get_media_buys レスポンスの各クリエイティブの approval_status フィールドはクリエイティブ承認ステータス列挙型を使用します: pending_reviewapproved、または人間が読める説明付きの rejected。却下されたクリエイティブには rejection_reason が含まれます。
クリエイティブはライブラリでは approved でも、プレースメント固有のポリシーに違反する場合はパッケージレベルで rejected になる可能性がある(例: オーディオのみのプレースメントでのビデオクリエイティブ)。 バイヤーは、特に厳格なクリエイティブポリシーを持つパブリッシャーの場合、新しいクリエイティブを含むメディアバイを同期または提出した後、list_creatives または get_media_buys をポーリングすべきです。 配信時にセラーが生成する生成フォーマットの場合、クリエイティブレビューは個々のクリエイティブではなくブリーフとブランドアイデンティティに適用されます。セラーはブリーフの制約とブランドアセットが生成が始まる前にポリシーを満たしているかを検証します。 プラットフォームとコミュニティガイドライン: ソーシャルプラットフォーム、UGC サイト、コミュニティ主導のパブリッシャーは、標準的な広告ポリシーを超えたコンテンツポリシー(例: コミュニティスタンダード、プロモートコンテンツガイドライン、カテゴリ固有の制限)を執行することが多い。これらのプラットフォーム固有のポリシーは同じ rejection_reason フィールドを通じてサーフェスされる — バイヤーはそれらを処理するために別のメカニズムを必要としません。コミュニティガイドライン違反でクリエイティブが却下された場合、rejection_reason はどのポリシーが違反されたかを説明し、バイヤーが修正して再提出できるようにします。

生成クリエイティブの実装チェックリスト

生成クリエイティブを提供するセールスエージェントは以下を行うべきだ:
  1. ケイパビリティを宣言する get_adcp_capabilities で:
    • クリエイティブケイパビリティの supports_generation: true
    • supported_protocols"creative"
    • クリエイティブがメディアバイとともに移動する場合は inline_creative_management: true
  2. list_creative_formats を通じて生成フォーマットを定義するformat_id.agent_url が自分のエージェントを指します。記述的なフォーマット名とアセット要件(最低限 brief アセット)を含めます。
  3. preview_creative を実装する — フライト前レビューのための代表的なプレビューを返します。バイヤーが異なる配信時の条件をシミュレートできるよう context_description インプットをサポートします。会話型フォーマットの場合、サンドボックステスト用の interactive_url を含めます。
  4. get_creative_delivery を実装する — 何が生成され配信されたかを示すバリアントマニフェストを返します。バリアントごとの generation_context(context_type、topic、device_class)と配信メトリクスを含めます。バリアント保持を計画する: フライト後の監査のために少なくとも 90 日間のバリアントデータを保持します。
  5. 購入時にブリーフを検証する — バイヤーが create_media_buy でブリーフを提出する際、ブリーフの制約(ブランドアイデンティティ、ガードレール、必須開示)が生成ケイパビリティと互換性があることを検証します。そうでない場合は明確なエラーで拒否します。
  6. ブリーフのクリエイティブレビューを処理する — 生成フォーマットでは、レビューは個々のクリエイティブではなくブリーフとブランドアイデンティティに適用されます。get_media_buys のパッケージの approval_status を通じてレビュー状態を伝える。

セールスエージェントの生成フォーマット

配信時にクリエイティブを生成するセラー — コンテキスト広告、ページマッチドディスプレイ、AI 生成ネイティブ — は独自の生成フォーマットをホストします。format_id.agent_url はセールスエージェント自体を指す:
{
  "format_id": {
    "agent_url": "https://ads.seller-example.com",
    "id": "contextual_display_generative"
  },
  "name": "Contextual display (AI-generated)",
  "type": "display",
  "description": "Display ads generated at serve time based on page context and brand brief"
}
バイヤーはセールスエージェントの list_creative_formats を通じてこのフォーマットを発見し、メディアバイ作成時にブリーフを提供します:
{
  "packages": [{
    "product_id": "premium_display",
    "pricing_option_id": "cpm_standard",
    "budget": 50000,
    "creatives": [{
      "creative_id": "brand_contextual_brief",
      "name": "Q2 contextual campaign brief",
      "format_id": {
        "agent_url": "https://ads.seller-example.com",
        "id": "contextual_display_generative"
      },
      "assets": {
        "brief": {
          "content": "Highlight our sustainability story. Match tone to editorial context."
        }
      }
    }]
  }]
}
セラーはこのブリーフとバイヤーのブランドアイデンティティを使用して配信時にクリエイティブを生成します。別の build_creative 呼び出しは不要 — ブリーフはメディアバイとともに移動します。 規制対象カテゴリ(金融サービス、製薬)の場合、エージェントのクリエイティブケイパビリティで supports_compliance: true を確認します。コンプライアンス対応エージェントは生成中に必須開示と規制要素を検証する — エージェントが執行できるよう、ブリーフにコンプライアンス要件を含めます。

生成出力のプレビュー

生成フォーマットでは、preview_creative は2つの目的を果たす: キャンペーン前 — ブリーフマニフェストと context_description インプットを渡して、エージェントが生成できるものの代表的なサンプルを確認します:
{
  "request_type": "single",
  "quality": "draft",
  "creative_manifest": {
    "format_id": {
      "agent_url": "https://ads.seller-example.com",
      "id": "contextual_display_generative"
    },
    "assets": {
      "brief": {
        "content": "Highlight our sustainability story. Match tone to editorial context."
      }
    }
  },
  "inputs": [
    { "name": "Tech article", "context_description": "Article about semiconductor manufacturing" },
    { "name": "Lifestyle blog", "context_description": "Blog post about sustainable living" }
  ]
}
クリエイティブの方向性の高速な反復には quality: "draft" を使用し、ステークホルダーレビューには quality: "production" を使用します。これらのプレビューは例示的なもの — 実際の出力は配信時のライブシグナルに依存します。プレビューはアクティブなメディアバイを必要としない — create_media_buy を呼び出す前にプレビューできます。 キャンペーン後get_creative_deliveryvariant_id を渡して、実際に配信されたものを再生する:
{
  "request_type": "variant",
  "variant_id": "gen_tech_mobile_001"
}
レスポンスにはバリアントの実際のマニフェストとレンダリングされたプレビューが含まれます。これは忠実な再生であり、再生成ではありません。 完全なメンタルモデルと期待テーブルについては生成クリエイティブのプレビューを参照。

配信レポート

両プロトコルを実装するセールスエージェントは、配信データの2つの補完的なビューを提供します:
タスクプロトコル提供する内容
get_media_buy_deliveryメディアバイどこで、どれだけ: インプレッション、支出、プレースメントデータ、オプションの by_creative ブレークダウン
get_creative_deliveryクリエイティブ何が実行されたか、どのように: バリアントマニフェスト、生成コンテキスト、バリアントレベルのメトリクス
両タスクは同じエージェント URL で呼び出されます。media_buy_idcreative_id を結合キーとして使用して、両レスポンスのデータを関連付ける。 生成フォーマットでは、get_creative_delivery がバイヤーが実際に生成されたものを見る場所です。各バリアントにはマニフェスト(実際のレンダリングされたクリエイティブ — ヘッドラインテキスト、画像 URL、フォーマット)と生成コンテキスト(ページトピックやデバイスクラスなど、生成をトリガーしたシグナル)が含まれます。get_media_buy_delivery は支出、ペーシング、次元ブレークダウンを含む集計ビューを提供します。

例: セールスエージェントのバリアントレベルレポート

{
  "media_buy_id": "mb_12345",
  "currency": "USD",
  "reporting_period": {
    "start": "2026-03-01T00:00:00-05:00",
    "end": "2026-03-08T23:59:59-05:00",
    "timezone": "America/New_York"
  },
  "creatives": [
    {
      "creative_id": "brand_contextual_brief",
      "format_id": {
        "agent_url": "https://ads.seller-example.com",
        "id": "contextual_display_generative"
      },
      "totals": {
        "impressions": 300000,
        "spend": 15000,
        "clicks": 12000,
        "ctr": 0.04
      },
      "variant_count": 47,
      "variants": [
        {
          "variant_id": "gen_tech_mobile_001",
          "generation_context": {
            "context_type": "web_page",
            "topic": "technology, semiconductors",
            "device_class": "mobile"
          },
          "manifest": {
            "format_id": {
              "agent_url": "https://ads.seller-example.com",
              "id": "contextual_display_generative"
            },
            "assets": {
              "headline": {
                "asset_type": "text",
                "content": "Sustainable tech for a better tomorrow"
              },
              "hero_image": {
                "asset_type": "image",
                "url": "https://cdn.seller-example.com/generated/tech_mobile_001.jpg",
                "width": 300,
                "height": 250
              }
            }
          },
          "impressions": 45000,
          "spend": 2250,
          "clicks": 2700,
          "ctr": 0.06
        }
      ]
    }
  ]
}

別のクリエイティブエージェントを使う場合

以下の場合、別のクリエイティブエージェントが適している:
  • クリエイティブサービスがセラーから独立している — クリエイティブ管理プラットフォーム、広告サーバー、フォーマット変換サービス
  • 複数のセラーが同じクリエイティブを配信する必要がある — バイヤーが1か所でクリエイティブを管理して配布します
  • バイヤーがセラー間で集中型クリエイティブアナリティクスを望む
セラーの広告プロダクトが統合されたケイパビリティとしてクリエイティブ生成や管理を含む場合、両プロトコルをセールスエージェントに実装することがすべての人にとってよりシンプルです。

ケイパビリティの発見

バイヤーは get_adcp_capabilities を確認して、セールスエージェントがサポートしているものを理解する:
const caps = await agent.getAdcpCapabilities({});

if (caps.errors) {
  throw new Error(`Capabilities check failed: ${caps.errors[0].message}`);
}

const sellsMedia = caps.supported_protocols.includes('media_buy');
const managesCreatives = caps.supported_protocols.includes('creative');

if (managesCreatives) {
  const { has_creative_library, supports_generation } = caps.creative;

  if (supports_generation) {
    // Agent generates creatives — look for generative formats
    const formats = await agent.listCreativeFormats({});
    if (formats.errors) {
      console.error('Format discovery failed:', formats.errors);
    }
  }

  if (has_creative_library) {
    // Agent hosts a library — can sync and browse creatives
    const creatives = await agent.listCreatives({
      account: { account_id: 'acc_123' }
    });
    if (creatives.errors) {
      console.error('Library browse failed:', creatives.errors);
    }
  }
}

関連ドキュメント