Skip to main content
Creative Protocol は、広告キャンペーン向けに AI を活用したクリエイティブ生成とアセット管理を可能にします。本ガイドでは 5 分で最初のクリエイティブを作成する方法を説明します。 Three tiers of generative creative: Tier 1 static (one creative, one variant), Tier 2 optimized (asset group combinations), Tier 3 generated (AI creates for each context)
技術リファレンス: 本ガイドでは build_creative タスク の使い方を示します。完全な API 仕様はタスクリファレンスを参照。

概要

Creative Protocol は AI を用いたクリエイティブ生成を提供します。
  • build_creative: 静的マニフェストまたは動的コードを使い AI でクリエイティブを生成
  • preview_creative: クリエイティブマニフェストのプレビューを生成
  • list_creative_formats: サポートされるクリエイティブフォーマットを探索
アセットは brand identity 経由で提供され、個別のアセットライブラリ管理は不要です。

クイックスタート: 最初のクリエイティブを生成します

ステップ 1: 基本的な生成

ネイティブディスプレイ広告を生成する最もシンプルなリクエスト例:
{
  "message": "Create a simple ad for a coffee shop promotion - 20% off all drinks this week",
  "target_format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "display_native"
  }
}

ステップ 2: レスポンスの理解

構造化されたクリエイティブマニフェストが返されます。
{
  "creative_manifest": {
    "format_id": {
      "agent_url": "https://creative.adcontextprotocol.org",
      "id": "display_native"
    },
    "assets": {
      "headline": {
        "content": "20% Off All Drinks This Week!"
      },
      "description": {
        "content": "Visit our cozy coffee shop and enjoy premium coffee at an unbeatable price."
      },
      "call_to_action": {
        "content": "Visit Today"
      }
    }
  }
}

ステップ 3: クリエイティブをプレビューします

反復前にどのように見えるかを確認するためにマニフェストをプレビューする:
{
  "request_type": "single",
  "creative_manifest": {
    "format_id": {
      "agent_url": "https://creative.adcontextprotocol.org",
      "id": "display_native"
    },
    "assets": {
      "headline": {
        "content": "20% Off All Drinks This Week!"
      },
      "description": {
        "content": "Visit our cozy coffee shop and enjoy premium coffee at an unbeatable price."
      },
      "call_to_action": {
        "content": "Visit Today"
      }
    }
  }
}
レスポンスには iframe に埋め込める preview URL が含まれます。デバイスバリアント、バッチプレビュー、出力フォーマットオプションは preview_creative を参照。

ステップ 4: クリエイティブを洗練します

前回の出力の creative_manifest を新しい message と一緒に渡すことで反復できます。あるいは、brief アセット(assets.brief)を更新してクリエイティブの方向性を変えることもできる — brief はクリエイティブがどうあるべきかについてバイヤーが管理するソースオブトゥルースです。
{
  "message": "Make the headline more exciting and add urgency",
  "target_format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "display_native"
  },
  "creative_manifest": {
    "format_id": {
      "agent_url": "https://creative.adcontextprotocol.org",
      "id": "display_native"
    },
    "assets": {
      "headline": {
        "content": "20% Off All Drinks This Week!"
      }
    }
  }
}

よくあるパターン

brand identity の活用

ブランドのコンテキストを提供して、より良い生成結果を得る:
{
  "message": "Create a display ad for our coffee shop promotion",
  "target_format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "display_300x250"
  },
  "brand": {
    "domain": "mycoffeeshop.com"
  }
}
最小限のブランド参照: ドメインだけから手軽に生成を始められます:
{
  "message": "Create a coffee shop ad",
  "target_format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "display_native"
  },
  "brand": {
    "domain": "mycoffeeshop.com"
  }
}
詳細な例は brand.json reference を参照。

保有アセットの利用

既存のアセットを提供し、クリエイティブに組み込む:
{
  "message": "Create a display ad featuring our signature latte",
  "target_format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "display_300x250"
  },
  "creative_manifest": {
    "format_id": {
      "agent_url": "https://creative.adcontextprotocol.org",
      "id": "display_300x250"
    },
    "assets": {
      "brand_logo": {
        "url": "https://mycoffeeshop.com/assets/logo.png",
        "width": 200,
        "height": 50
      }
    }
  }
}

動的コードの生成

クリエイティブエージェントは、ブリーフの要件に基づいて静的マニフェストを返すか動的コードを返すかを判断します。天気に応じた挙動、時間帯適応、位置情報ベースのコンテンツなどランタイムロジックが必要な場合、エージェントはマニフェストのアセットに実行可能なコードを返します。 動的な挙動を示す説明的なブリーフを使用します:
{
  "message": "Create a weather-responsive coffee ad that shows hot drinks when cold, iced drinks when warm",
  "target_format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "display_native"
  }
}
コードベースのクリエイティブはレスポンスのアセット構造で識別できる — マニフェストには静的コンテンツと並行して、または代わりにコードアセットが含まれます:
{
  "creative_manifest": {
    "format_id": {
      "agent_url": "https://creative.adcontextprotocol.org",
      "id": "display_native"
    },
    "assets": {
      "code": {
        "content": "<script>/* weather-responsive logic */</script>"
      },
      "headline_warm": {
        "content": "Cool Down with Our Iced Collection"
      },
      "headline_cold": {
        "content": "Warm Up with Our Signature Roasts"
      }
    }
  }
}

クリエイティブをメディアバイに添付します

クリエイティブを構築してプレビューしたら、それをメディアバイに添付します。build_creative からのマニフェストを create_media_buy のクリエイティブとして渡す(完全なリクエスト構造は create_media_buy を参照):
{
  "packages": [{
    "product_id": "premium_display",
    "pricing_option_id": "cpm_standard",
    "budget": 10000,
    "creatives": [{
      "creative_id": "coffee_promo_v3",
      "name": "Coffee shop 20% off - final",
      "format_id": {
        "agent_url": "https://creative.adcontextprotocol.org",
        "id": "display_native"
      },
      "assets": {
        "headline": {
          "content": "This Week Only: 20% Off Every Drink!"
        },
        "description": {
          "content": "Visit our cozy coffee shop and enjoy premium coffee at an unbeatable price."
        },
        "call_to_action": {
          "content": "Visit Today"
        }
      }
    }]
  }]
}
インラインクリエイティブ管理を持つセラーの場合、クリエイティブはメディアバイと一緒に伝達されます。他のワークフローでは、sync_creatives を使ってメディアバイで参照する前にクリエイティブをセールスエージェントのライブラリにアップロードします。

フォーマットディスカバリー

標準フォーマット

すぐに使える一般的なフォーマット ID:
  • display_native - ネイティブ広告フォーマット
  • display_300x250 - ミディアムレクタングルバナー
  • video_standard_30s - 30 秒動画広告

パブリッシャー固有のフォーマット

パブリッシャーのカスタムフォーマットを使う場合は、ソースを指定します:
{
  "message": "Create a premium video ad",
  "target_format_id": {
    "agent_url": "https://premium-publisher.com",
    "id": "premium_video_15s"
  }
}

セラー側での生成(メディアバイ内のブリーフ)

上記の例では build_creative を使ってインタラクティブにクリエイティブを生成しています。セラーがサービス時にクリエイティブを生成する場合 — コンテキスト広告、ページマッチドディスプレイ、AI 生成ネイティブ — は異なるパターンが適用されます。 このフローでは、セールスエージェントが Media Buy Protocol と Creative Protocol の両方を実装します。バイヤーは create_media_buy の一部としてブリーフを提供し、セラーはサービス時にクリエイティブを生成します。build_creative の呼び出しは不要です。

仕組み

  1. ジェネレーティブフォーマットの探索 — セールスエージェントで list_creative_formats を呼び出す。format_id.agent_url がセールスエージェント自身を指しているフォーマットを探す。
  2. メディアバイにブリーフを含める — ブリーフをアセットとして含むクリエイティブを送信します:
{
  "packages": [{
    "product_id": "premium_display",
    "pricing_option_id": "cpm_standard",
    "budget": 50000,
    "creatives": [{
      "creative_id": "brand_contextual_brief",
      "name": "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. Avoid competitor comparisons."
        }
      }
    }]
  }]
}
  1. ローンチ前にプレビュー — セールスエージェントで preview_creative をブリーフマニフェストと context_description インプットとともに呼び出し、エージェントが生成するものの代表的なサンプルを確認します。高速な反復には quality: "draft" を、ステークホルダーレビューには quality: "production" を使います。これらは例示的なもの — 実際の出力はサービス時のライブシグナルに依存します。
{
  "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. Avoid competitor comparisons."
      }
    }
  },
  "inputs": [
    { "name": "Tech article", "context_description": "Article about semiconductor manufacturing" },
    { "name": "Travel blog", "context_description": "Blog post about eco-friendly travel" }
  ]
}
プレビューはメディアバイがアクティブである必要はない — create_media_buy を呼び出す前にブリーフマニフェストだけでプレビューできます。詳細なメンタルモデルはジェネレーティブクリエイティブのプレビューを参照。
  1. セラーがサービス時に生成 — セラーはブリーフとバイヤーの brand identity を使用して、インプレッションごとまたはページコンテキストごとにページに合わせたクリエイティブを生成します。ブリーフと brand identity がガードレールとして機能し、エージェントはその制約内で生成します。継続的な生成にバイヤーのアクションは不要です。
  2. 生成されたバリアントのレビュー — セールスエージェントで get_creative_delivery を呼び出し(Creative Protocol を実装しています)、バリアントマニフェストと生成コンテキストを含む生成結果を確認します:
{
  "media_buy_ids": ["mb_12345"],
  "max_variants": 20
}
レスポンスには、配信されたものを正確に示すバリアントレベルのマニフェストと、生成コンテキスト(ページトピック、デバイスクラスなど)が含まれます。 バリアントの保持: エージェントはバリアントデータを無期限に保持することを要求されない。get_creative_delivery を呼び出す際は、max_variants でクリエイティブごとに返されるバリアント数を制御します。エージェントは独自の基準に基づいて返すバリアントを選択する — 通常はインプレッション量(最も配信されたものが優先)だが、一部は最新順や代表的なサンプリングを使う場合もあります。大量のジェネレーティブキャンペーンでは、生成されたすべてのバリアントのサブセットのみが保持されることを想定します。キャンペーン後の一括取得に頼らず、キャンペーン中に早めに頻繁に max_variants をリクエストすること。

build_creative との主な違い

側面build_creativeメディアバイ内のブリーフ
生成のタイミングオンデマンド、キャンペーン開始前サービス時、キャンペーン全期間
誰が生成するかスタンドアロンのクリエイティブエージェントまたはセールスエージェントセールスエージェント(統合型)
ローンチ前プレビュー即時(マニフェストがクリエイティブそのもの)代表的なサンプル(ブリーフ + シミュレートされたコンテキスト)
バイヤーの関与インタラクティブ — レビュー、反復、承認サンプルをプレビューしてセットアンドフォーゲット — ブリーフが継続的な制約
バリアントの可視性即時(レスポンスで返されます)配信後(get_creative_delivery 経由)
フォーマットの権威format_id.agent_url はフォーマットを所有するエージェントを指すformat_id.agent_url はセールスエージェント自身
詳細は Creative capabilities on sales agents を参照。

サービス時生成のガードレール

セラーがサービス時にクリエイティブを生成する場合、バイヤーの制御手段は以下の通り:
  • ブリーフ — トーン、トピック、除外事項(「競合他社との比較は避ける」)に関する明示的な指示
  • Brand identity — 色、ロゴ、ボイスガイドライン、brand.json 経由の承認済みアセット
  • プリフライトプレビュー — ローンチ前に様々なコンテキストでエージェントが生成するものをサンプル確認
  • ポストフライト監査get_creative_delivery 経由でバリアントマニフェストと生成コンテキストをレビュー、preview_creative バリアントモードで特定バリアントを再生
ポストフライトレビューでブランドに反するバリアントが発見された場合、より具体的な制約でブリーフを更新して create_media_buy 経由で再送信します。規制対象カテゴリ(金融サービス、製薬)の場合は、ブリーフにコンプライアンス要件を含める — クリエイティブ機能で supports_compliance: true を宣言するエージェントは、生成中に開示事項と必須要素を検証します。

会話型・インタラクティブフォーマット

一部のジェネレーティブフォーマットはステートフル — AI チャット、インタラクティブエクスペリエンス、会話型ネイティブ広告。これらはメディアバイ内のブリーフパターンと同じに従うが、理解しておく価値のある独自の特性があります。

フォーマット探索

list_creative_formats での会話型フォーマットの例:
{
  "format_id": {
    "agent_url": "https://ads.seller-example.com",
    "id": "conversational_native"
  },
  "name": "Conversational native ad",
  "type": "native",
  "description": "AI-powered conversational ad that responds to user messages within the content feed. Adapts tone and recommendations based on conversation context."
}

ブリーフ構造

会話型フォーマットのブリーフにはペルソナ、トピックの境界、ガードレールが含まれます:
{
  "packages": [{
    "product_id": "premium_native",
    "pricing_option_id": "cpm_engaged",
    "budget": 25000,
    "creatives": [{
      "creative_id": "brand_chat_brief",
      "name": "Product advisor chat",
      "format_id": {
        "agent_url": "https://ads.seller-example.com",
        "id": "conversational_native"
      },
      "assets": {
        "brief": {
          "content": "Act as a helpful product advisor for our outdoor gear line. Recommend products based on the user's activity interests. Keep responses concise (2-3 sentences). Never discuss competitor products. Always include a product link when recommending."
        }
      }
    }]
  }]
}

会話のプレビュー

会話型フォーマットのプリフライトプレビューは代表的な最初のインタラクションを生成します。異なるエントリポイントをシミュレートするには context_description を使います:
{
  "request_type": "batch",
  "quality": "production",
  "requests": [
    {
      "creative_manifest": {
        "format_id": {
          "agent_url": "https://ads.seller-example.com",
          "id": "conversational_native"
        },
        "assets": {
          "brief": {
            "content": "Act as a helpful product advisor for our outdoor gear line. Recommend products based on the user's activity interests."
          }
        }
      },
      "inputs": [
        { "name": "Hiking enthusiast", "context_description": "User reading an article about day hikes near Portland" },
        { "name": "Runner", "context_description": "User browsing a running shoe review page" }
      ]
    }
  ]
}
プレビューレスポンスに interactive_url が含まれる場合、レビュアーはサンドボックスでエクスペリエンスと直接インタラクトできる — 異なる会話パスのテスト、ガードレールの確認、トーンの確認が可能です。 ガードレールのテスト: ブリーフの制約をエージェントが尊重するかを確認するために、プレビューインプットに adversarial なコンテキストを含める:
{
  "inputs": [
    { "name": "Competitor question", "context_description": "User asks which brand makes better hiking boots than yours" },
    { "name": "Off-topic request", "context_description": "User asks for medical advice about a knee injury" },
    { "name": "Price haggling", "context_description": "User asks for a discount code or tries to negotiate pricing" }
  ]
}
これらのプレビューを注意深くレビューする — ハッピーパスのプレビューでは表面化しないエッジケースをエージェントがどのように処理するかがわかる。 会話型フォーマットの場合、プレビューレスポンスにはレビュアーが会話をライブでテストできる interactive_url が含まれることがある:
{
  "response_type": "single",
  "previews": [
    {
      "preview_id": "prev_hiker",
      "renders": [
        {
          "render_id": "render_1",
          "output_format": "url",
          "preview_url": "https://ads.seller-example.com/preview/conv_hiker_001",
          "role": "primary"
        }
      ],
      "input": { "name": "Hiking enthusiast", "context_description": "User reading an article about day hikes near Portland" }
    }
  ],
  "interactive_url": "https://ads.seller-example.com/sandbox/conv_hiker_001",
  "expires_at": "2026-04-01T00:00:00Z"
}
interactive_url はレビュアーがエージェントと実際の会話ができるサンドボックスを提供し、異なるパスのテスト、ガードレールの確認、インタラクティブなトーン確認が可能です。静的プレビューは代表的な最初のインタラクションを示し、サンドボックスはエージェントが実際にどのように動作するかを示します。

会話のバリアントマニフェスト

キャンペーン実行後、get_creative_delivery はエージェントが生成したものを捉えたバリアントマニフェストを返します。会話型フォーマットでは、各バリアントは会話セッションを表します:
{
  "variant_id": "conv_hiker_session_042",
  "generation_context": {
    "context_type": "conversational",
    "topic": "outdoor recreation, hiking gear",
    "device_class": "mobile",
    "ext": {
      "turn_count": 4,
      "engagement_duration_seconds": 45
    }
  },
  "manifest": {
    "format_id": {
      "agent_url": "https://ads.seller-example.com",
      "id": "conversational_native"
    },
    "assets": {
      "greeting": {
        "asset_type": "text",
        "content": "Planning a hike? I can help you find the right gear for the trail."
      },
      "transcript": {
        "asset_type": "text",
        "content": "Agent: Planning a hike? I can help you find the right gear for the trail.\nUser: Looking for a lightweight daypack\nAgent: For day hikes near Portland, I'd recommend our TrailLite 22L — it's 380g with a built-in rain cover. [link]\nUser: What about trekking poles?\nAgent: The CompactTrek poles fold to 36cm and weigh just 240g per pair. Great for the elevation changes on trails like Dog Mountain. [link]"
      },
      "products_shown": {
        "asset_type": "text",
        "content": "TrailLite 22L Daypack, CompactTrek Folding Poles"
      }
    }
  },
  "impressions": 1,
  "clicks": 2
}
バリアントマニフェストの詳細レベルはエージェントによって異なります。完全なトランスクリプトを提供するもの(上記のように)もあれば、匿名化されたユーザーシグナルとともに要約された交換を提供するものもあります。重要なのは、バイヤーがブランドの AI がユーザーに何を言ったかを監査できることです。

セッション管理とデータ処理

会話型フォーマットには静的広告にはない考慮事項がある:
  • ターン制限: ブリーフにターン数または時間の制限を含める(「5 回のやり取りの後、丁寧に会話を終了する」)。エージェントが独自の制限を設けることもある — list_creative_formats のフォーマット説明を確認します。
  • エスカレーション: 答えられない場合にエージェントがすべきことを定義する(「ユーザーが返品について聞いた場合は、ヘルプセンターへのリンクを提供する」)。スコープ外の質問に対する明示的なガイダンスがない場合、エージェントの挙動は未定義です。
  • トランスクリプト内のユーザーデータ: get_creative_delivery からのバリアントマニフェストにはユーザーメッセージが含まれる場合があります。規制対象業種の場合は、ローンチ前にエージェントのデータ処理慣行(匿名化、保持期限)を確認します。
  • コストへの影響: エンゲージメントごとまたはターンごとの料金体系の会話型広告は、可変コストが発生することがあります。get_products でプロダクトの料金モデルを確認して、会話の深さが支出にどう影響するかを把握します。
これらの制約はブリーフの自然言語で表現されます。プロトコルはランタイムでこれらを強制しない — get_creative_delivery 経由のポストフライトバリアントレビューでコンプライアンスを確認します。 詳細なメンタルモデルは ジェネレーティブクリエイティブのプレビュー を参照。

次のステップ

よくある問題

フォーマットが見つからない

フォーマットエラーが出る場合、そのフォーマットをパブリッシャーがサポートしていない可能性があります。次を試すとよい:
  1. まず標準の AdCP フォーマット(display_native, video_standard_30s)を使用します
  2. パブリッシャーの list_creative_formats エンドポイントを確認します
  3. format_id.agent_url の URL が正しいか検証します

クオリティモデルを理解します

クリエイティブクオリティには独立した 2 つの軸がある:
  • ビルドクオリティbuild_creativequality): 生成フィデリティを制御 — クリエイティブ生成にどれだけのコンピュートを費やすか。draft は低解像度画像やシンプルなレイアウトを使った粗いコンセプトを高速に生成します。production はポリッシュされた最終品質の出力を生成します。
  • プレビュークオリティpreview_creativequalitybuild_creativepreview_quality): レンダーフィデリティを制御 — クリエイティブのレビューのための可視化方法。draft は高速な低フィデリティレンダリングで迅速な反復向け。production はステークホルダーレビュー向けの完全品質レンダリング。
これらの軸は独立しています。よくある組み合わせ:
ビルドプレビューユースケース
draftdraft高速な探索 — 素早いコンセプト、素早いプレビュー
draftproductionドラフトコンセプトのステークホルダーレビュー — ドラフトクリエイティブの完全品質レンダリング
productionproduction最終レビュー — ポリッシュされたクリエイティブ、ポリッシュされたプレビュー
productiondraftサムネイルグリッド — 選択のためのクイックサムネイルとして表示される最終クリエイティブ
片方のクオリティレベルのみをサポートするエージェントは、サポートしないパラメーターを無視します。エコーバックフィールドはない — 検査によってクオリティを確認します。

クリエイティブ品質の問題

クリエイティブ出力を改善するには:
  1. ビルドクオリティプレビュークオリティは独立した軸 — 上記のクオリティモデルを理解するを参照。反復には draft、最終レビューには production を使います。
  2. メッセージをより具体的にする: 「アーストーンでミニマルなコーヒー広告を作成して」
  3. アセットやガイドラインを含む充実した brand identity を提供します
  4. refinement を使って反復する — マニフェストを新しいメッセージとともに渡し返すか、brief アセットを更新します

アセット管理

アセットは brand identity 経由で提供します:
  1. ブランドアイデンティティに説明的なタグ付きでアセットを含めます
  2. リクエストで asset_filters を使い特定アセットを選択します
  3. 大規模な在庫では商品カタログを参照します
最初のクリエイティブを作る準備はできたか?上記の基本例から始めて試してみよう。