プロダクトモデル
product_id(string, required)name(string, required)description(string, required)publisher_properties(list[PublisherPropertySelector], required): このプロダクトが対象とするパブリッシャープロパティ。Property Targeting を参照。channels(list[string], optional): このプロダクトが販売される広告チャネル(例:["retail_media"]、["display", "olv"])。セラーは、リテールメディア・CTV/OLV・マルチチャネルバンドルなど、自明でないチャネルにまたがるプロダクトにはchannelsを宣言すべきです。プロダクトのチャネルは、そのプロパティのsupported_channelsの和集合のサブセットであるべきです。Media Channel Taxonomy を参照。format_ids(list[FormatID], required): 構造化フォーマット ID 参照。Creative Formats を参照。placements(list[Placement], optional): プロダクト内の特定広告プレースメント。提供される場合、バイヤーはクリエイティブ割り当て時に個別プレースメントをターゲティングできます。Placements を参照。shows(list[ShowSelector], optional): このプロダクトが対象とする番組。パブリッシャーごとにグルーピングされ、各エントリはpublisher_domainと、パブリッシャーのadagents.jsonで参照されるshow_idsを持ちます。Shows and episodes を参照。episodes(list[Episode], optional): このプロダクトで利用可能な特定エピソード。Shows and episodes を参照。delivery_type(string, required):"guaranteed"または"non_guaranteed"。exclusivity(string, optional): このプロダクトが排他的アクセスを提供するかどうか。"none"(フィールド未指定時のデフォルト)— 複数の広告主が同時に購入可能。"category"— 業種カテゴリーごとに 1 広告主のみ。"exclusive"— 単独スポンサーシップ。特定の番組やプレースメントに紐付く guaranteed プロダクトで最も関連します。pricing_options(list[PricingOption], required): このプロダクトで利用可能な価格モデルの配列。Pricing Models を参照。delivery_measurement(object, optional): 広告デリバリーを計測する主体 — インプレッションカウントに使用する広告サーバーとビューアビリティベンダー(例: “Google Ad Manager with IAS viewability”)。未指定の場合、バイヤーは自身の計測デフォルトを適用すべきです。Delivery Measurement を参照。outcome_measurement(OutcomeMeasurement, optional): プロダクトに含まれるビジネス成果計測 — インクリメンタル売上リフト、ブランドリフト調査など。リテールメディアプロダクトで一般的。creative_policy(CreativePolicy, optional): クリエイティブ要件と制限。is_custom(bool, optional): 特定ブリーフに基づき生成された場合はtrue。expires_at(datetime, optional):is_customの場合、プロダクトの有効期限。property_targeting_allowed(bool, optional, default: false): バイヤーがget_productsのプロパティリストフィルタリングを使ってこのプロダクトをpublisher_propertiesのサブセットに絞り込めるかどうか。false(デフォルト)の場合、プロダクトは「全か無か」— バイヤーはすべてのプロパティを受け入れなければならず、そうでなければproperty_listフィルタリング結果からプロダクトが除外されます。Property Targeting を参照。show_targeting_allowed(bool, optional, default: false): バイヤーがこのプロダクトのshowsのサブセットをターゲティングできるかどうか。false(デフォルト)の場合、プロダクトはバンドル — バイヤーはリストされたすべての番組を取得します。trueの場合、バイヤーはメディアバイで特定の番組を選択できます。catalog_types(list[string], optional): このプロダクトがカタログ駆動型キャンペーンでサポートするカタログタイプ。スポンサードプロダクトリスティングは["product"]を、求人ボードは["job", "offering"]を宣言します。バイヤーはこのフィールドを通じて同期済みカタログとプロダクトを照合します。Catalogs を参照。catalog_match(object, optional): バイヤーがget_productsでcatalogを提供する場合、このプロダクトで対象となるカタログアイテムを示します。matched_gtins(クロスリテーラー GTIN マッチ)、matched_ids(汎用アイテム ID マッチ)、matched_count、submitted_countを含みます。metric_optimization(object, optional): このプロダクトのメトリクス最適化機能。存在する場合、プロダクトがkind: "metric"のoptimization_goalsをサポートすることを示します。Metric optimization を参照。max_optimization_goals(integer, optional): パッケージでこのプロダクトが受け付けるoptimization_goalsの最大数。未指定の場合、上限は宣言されない。ほとんどのソーシャルプラットフォームは 1 つのみ受け付けます。conversion_tracking(object, optional): コンバージョンイベントトラッキング機能。存在する場合、プロダクトがkind: "event"のoptimization_goalsをサポートすることを示します。Conversion tracking を参照。product_card(object, optional): UI でのプロダクト表示用ビジュアルカード定義。Product Cards を参照。
Metric optimization
kind: "metric" の optimization_goals をサポートするプロダクトは、metric_optimization に機能を宣言します。メトリクスゴールにはイベントソースやコンバージョントラッキングの設定は不要 — セラーがこれらのメトリクスをネイティブに追跡します。
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
supported_metrics | string[] | Yes | このプロダクトが最適化できるメトリクス種別。バイヤーはここに列挙されている種別のメトリクスゴールのみ要求すべきです。 |
supported_view_durations | number[] | No | completed_views ゴールでサポートされる動画視聴時間の閾値(秒単位)。未指定の場合、セラーはプラットフォームのデフォルトを使用します。 |
supported_targets | string[] | No | 利用可能なターゲット種別: cost_per、threshold_rate。値は最適化ゴールの target.kind と一致します。列挙された種別のみ受け付けます。省略した場合、バイヤーはターゲットなしのメトリクスゴール(ボリューム最大化)を設定できるが、特定ターゲットは設定できません。 |
Conversion tracking
kind: "event" の optimization_goals をサポートするプロダクトは、conversion_tracking に機能を宣言します。セラーレベルの機能(サポートされるイベントタイプ、UID タイプ、アトリビューションウィンドウ)は get_adcp_capabilities で宣言されます。
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
action_sources | string[] | No | このプロダクトに関連するアクションソース(例: リテールメディアプロダクトは in_store と website を持つ場合があります)。 |
supported_targets | string[] | No | イベントゴールで利用可能なターゲット種別: cost_per、per_ad_spend、maximize_value。値は最適化ゴールの target.kind と一致します。列挙された種別のみ受け付けます。省略した場合、バイヤーはターゲットなしのイベントゴールを設定できます。 |
platform_managed | boolean | No | セラーが常時計測を提供するかどうか(例: リテーラーの購買アトリビューション)。true の場合、sync_event_sources はセラー管理のイベントソースを返します。 |
価格モデル
パブリッシャーは各プロダクトでサポートする価格モデルを宣言し、バイヤーはメディアバイ作成時に利用可能なオプションから選択します。このアプローチにより:- 1 プロダクトに複数価格モデル - 同一在庫を異なる価格体系で提供可能
- 複数通貨対応 - パブリッシャーがサポート通貨を宣言し、バイヤーはその通貨を使用しなければなりません
- 柔軟な価格設定 - CPM、CPCV、CPP(GRP ベース)、CPA などをサポート
サポートされる価格モデル
- CPM (Cost Per Mille) - 1,000 インプレッションあたりのコスト(従来型ディスプレイ)
- CPC (Cost Per Click) - 広告クリックあたりのコスト
- CPCV (Cost Per Completed View) - 動画/オーディオ 100% 再生完了あたりのコスト
- CPV (Cost Per View) - パブリッシャー定義の閾値での視聴あたりのコスト
- CPA (Cost Per Acquisition) - コンバージョンイベント(購買、リード、登録等)あたりのコスト
- CPP (Cost Per Point) - GRP あたりのコスト(TV/オーディオ)
- Flat Rate - 配信量に関わらず固定費
- Time - キャンペーン期間に応じてスケールする時間単位(日、週、月)あたりのコスト
PricingOption 構造
各価格オプションの例:fixed_price なし)の場合、floor_price を最低入札制約として、任意の price_guidance をパーセンタイルのヒントとして使用します。入札ベースのオークションモデル(cpm、vcpm、cpc、cpcv、cpv)では、max_bid をブール値シグナルとして含めることができ、bid_price が確定価格からバイヤー上限モードに切り替わることを示します:
Delivery Measurement
プロダクトは利用可能な場合、計測プロバイダーを宣言すべきだ:"Google Ad Manager with IAS viewability""Nielsen DAR for P18-49 demographic measurement""Geopath DOOH traffic counts updated monthly""Comscore vCE for video completion tracking""Self-reported impressions from proprietary ad server"
Outcome Measurement オブジェクト
成果計測を含むプロダクト(リテールメディアで一般的)の例:CreativePolicy オブジェクト
クリエイティブ要件や制限を定義します:Placements
プロダクトは、在庫内の特定広告プレースメントを任意で宣言できます。プレースメントが提供される場合:- バイヤーはプロダクト全体を購入 - パッケージは常にプロダクト全体を対象とし、個別プレースメント単位では購入しません
- プレースメントターゲティングはクリエイティブ割り当て時に実施 - 異なるクリエイティブを別プレースメントに割り当て可能
- プレースメント指定を省略 -
placement_idsを指定しないクリエイティブはパッケージ内の全プレースメントで配信
Placement オブジェクト構造
例: プレースメント付きプロダクト
番組とエピソード
番組はフォーマットやプレースメントと並ぶ、プロダクトの第三の次元です。プレースメントが広告の「どこに」表示されるかを、フォーマットが「どのように見えるか」を表すのに対し、番組は「コンテンツコンテキスト」— 視聴者が見ているプログラムを表します。プロダクトにshows と episodes を宣言することで、バイヤーは在庫購入時に特定の番組やエピソードをターゲティングできます。
完全なモデル、例、ターゲティングの詳細は Shows and episodes を参照。
Exclusivity
exclusivity フィールドは、プロダクトがその在庫への排他的アクセスを提供するかどうかを示します。未指定の場合はデフォルトで "none"。
| 値 | 意味 |
|---|---|
none | 複数の広告主がこのプロダクトを同時に購入できる |
category | 業種カテゴリーごとに 1 広告主のみ(例: 1 番組スポンサーシップに 1 自動車ブランド) |
exclusive | 単独スポンサーシップ — このプロダクトを購入できる広告主は 1 社のみ |
各レベルの使用場面
none: プログラマティック在庫、ランオブネットワーク、オープンオークションプロダクト。複数の広告主が同じ在庫を共有するのが前提。category: 競合分離が重要なポッドキャストや CTV スポンサーシップ。1 番組に 1 自動車ブランド、1 エピソードに 1 フィンテックブランド — ただし競合しない複数の広告主が同時に購入可能。exclusive: 単一の番組またはイベントの単独スポンサーシップ。広告主はそのコンテンツに関連付けられる唯一のブランドとなります。
shows を持つ guaranteed プロダクトには exclusivity を含めるべきです。"none" の暗黙のデフォルトは番組レベルの在庫には曖昧 — バイヤーはパブリッシャーが共有在庫を意図しているのか、単にフィールドを省略したのかを判断できません。
コンテンツスポンサーシップパターン
delivery_type: "guaranteed"、exclusivity: "exclusive"、shows を組み合わせたプロダクトはコンテンツスポンサーシップを表す — 広告主は特定コンテンツの唯一のスポンサーとなります。これはポッドキャストのタイトルスポンサーシップ、CTV 番組スポンサーシップ、イベントベースのテイクオーバーの標準パターンです。
Property Targeting
property_targeting_allowed フラグは、バイヤーが get_products のプロパティリストフィルタリングを使ってプロダクトをその publisher_properties のサブセットに絞り込めるかどうかを示します。
動作
-
property_targeting_allowed: false(デフォルト): プロダクトは「全か無か」。バイヤーのproperty_listにプロダクトのプロパティがすべて含まれていない場合、そのプロダクトは結果から完全に除外されます。 -
property_targeting_allowed: true: バイヤーはproperty_listに一致するプロパティにプロダクトを絞り込める。プロパティとバイヤーのリストに何らかの積集合がある場合、プロダクトは結果に含まれます。
ユースケース
| ユースケース | property_targeting_allowed | 理由 |
|---|---|---|
| ランオブネットワーク | false | バイヤーはネットワーク全体を受け入れなければなりません |
| プレミアムバンドル | false | スポーツ + ニュースバンドルはセットで販売 |
| フレキシブル在庫 | true | バイヤーはカテゴリー内の特定サイトをターゲティングできる |
例
全か無かプロダクト(property_targeting_allowed: false):
site_a と site_b のみを含む property_list で get_products を呼び出すと、バイヤーのリストにすべてのプロパティが含まれていない(site_c が欠落)ため、このプロダクトは除外される。
フレキシブルプロダクト(property_targeting_allowed: true):
tech と sports のみを含む property_list で get_products を呼び出すと、積集合があるためこのプロダクトは含まれる。バイヤーはその後このプロダクトを購入し、パッケージの targeting_overlay.property_list を通じて一致するプロパティのみをターゲティングできます。
カスタム/プリンシパル固有のプロダクト
サーバーは汎用カタログを提供しつつ、以下も返せる:- Principal-Specific Products: 特定クライアント向けまたは交渉済みのプロダクト
- Custom Products:
is_custom: trueとexpires_atタイムスタンプを持つ動的生成プロダクト
プロダクトの例
標準 CTV プロダクト(複数の価格オプション)
オークション型ディスプレイプロダクト
計測付きリテールメディアプロダクト
Product Cards
プロダクトカードは、UI でプロダクトを視覚的に示すための定義です。パブリッシャーは、カードフォーマットと必要アセットを含むカード定義を任意で提供できます。カードタイプ
パブリッシャーは少なくとも Standard カードを、必要に応じて詳細カードも提供すべきです。 Standard Card (product_card):
- プロダクトのグリッド/リスト表示向けコンパクトカード(300x400px)
- Retina 向けに 2x 密度画像をサポート
- プロダクトを素早く視覚的に把握
product_card_detailed, 任意):
- ヒーローカルーセルとテキスト説明を並べたレスポンシブレイアウト
- 下部に Markdown 仕様セクション
- メディアキットのような詳細ドキュメント
構造
カードの描画
カード表示には 2 つの方法があります。preview_creativeを使用: カードフォーマットとマニフェストを渡してレンダリング- 事前レンダリング: パブリッシャーがカードを生成し、静的に配信
標準カードフォーマット
AdCP リファレンスクリエイティブエージェントは次の 2 種の標準カードフォーマットを定義します:product_card_standard(300x400px) - プロダクトブラウズ用コンパクトカードproduct_card_detailed(レスポンシブ) - カルーセルと詳細仕様を含むリッチカード
プロダクトカードを含めるべき場面
プロダクトカードは任意だが、次のケースで推奨されます:- 強いビジュアルアイデンティティを持つプロダクト(番組、イベント、媒体など)
- プレミアムプロダクトで、見た目が価値向上につながる場合
- 複雑なプロダクトで、ビジュアルハイライトが理解を助ける場合
- 特定オーディエンスを狙う際、ビジュアルで訴求したい場合
クライアント描画ガイドライン
UI でプロダクトを表示する際のフォールバック順:product_cardがある →preview_creativeで描画、または事前レンダリング画像を表示- どちらもない → テキストのみ(プロダクト名 + 説明)を表示
- カード描画に失敗 → テキストのみ表示にフォールバック
プロポーザル
パブリッシャーはプロダクトと一緒に プロポーザル(予算配分付きの構造化メディアプラン)を返すことができます。バイヤーはそのまま実行できます。プロポーザルとは
プロポーザルは、提案予算配分とともにプロダクトをグルーピングした推奨購入戦略です。従来の営業担当が行っていたようなメディアプランニングの知見をエンコードします。 主な特徴:- 実行可能:
proposal_idを指定してcreate_media_buyで直接実行 - 予算非依存: 配分をパーセンテージで保持するため、任意の予算にスケール可能
- フォーキャスト付き: プロポーザルと配分にはデリバリーフォーキャストを含めることができ、バイヤーが購入前に期待されるパフォーマンスを評価するのに役立つ
プロポーザル構造
tags フィールドで配分を次元別に集計できる:
- チャネル別: desktop (50%) + mobile (20%) + in-app (30%) = 100%
- 言語別: German (40%) + French (60%) = 100%
プロポーザルの反復
プロポーザルはbuying_mode: "refine" と refine 配列を使って改善できます。プロポーザルを ID で参照すると、セラーは更新された配分、フォーキャスト、価格を含む更新版プロポーザルを返します:
get_products refinement を参照。
プロポーザルの実行
create_media_buy で proposal_id と total_budget を指定して実行します:
ch_desktop_de: 20% × $50,000 = $10,000ch_desktop_fr: 30% × $50,000 = $15,000- など
プロポーザルを返す場面
パブリッシャーは次の場合にプロポーザルを含める:- ブリーフに特定の配分戦略(チャネル配分、言語配分など)が求められます
- キャンペーン目標に基づく戦略的ガイダンスを提供できます
- 複数プロダクトを組み合わせた方が効果的
wholesale モード(バイヤーがターゲティングと配分を自ら指示します)ではプロポーザルを省略します。また、ブリーフがマルチプロダクト戦略を示唆しない場合も同様です。
プロポーザルは任意 — 配分ガイダンスが不要ならプロダクトのみ返しても構わない。refine モードでは、バイヤーがプロポーザルエントリを含めなかった場合でも、セラーは改善されたプロダクトと並んでプロポーザルを返してもよい。プロポーザルはセラーの提案であり、配分とキャンペーン最適化は主にオーケストレーター(バイヤーサイドエージェント)の責任です。
デリバリーフォーキャスト
パブリッシャーはプロポーザルと個別配分にデリバリーフォーキャストを添付し、バイヤーが予算をコミットする前に期待されるパフォーマンスを評価するのに役立てることができます。 各フォーキャストには 1 つ以上の ForecastPoint のpoints 配列が含まれ、各ポイントは予算レベルとメトリクス範囲(low/mid/high)をペアにします。単一ポイントは標準的なフォーキャスト; 予算の昇順で並べられた複数ポイントはメトリクスがどのようにスペンドに応じてスケールするかを示します。
メトリクスキーは 2 つの語彙から来る:
- デリバリー/エンゲージメント:
forecastable-metric列挙値(impressions、reach、clicks、spend、views、completed_views、grps など) - 成果:
event-type列挙値(purchase、lead、app_install、add_to_cart、subscribe など)
estimate— 過去の平均やヒューリスティクスに基づく概算modeled— 予測モデルや過去データから導出guaranteed— 予約済み在庫に裏付けられた契約上のコミット配信水準
フォーキャスト範囲単位
forecast_range_unit フィールドは、コンシューマーが points 配列をどう解釈するか — カーブが表す軸 — を伝える:
spend(デフォルト)— 予算レベルの昇順ポイント。標準的な予算カーブ。reach_freq— リーチ/フリークエンシーターゲットの昇順ポイント。パブリッシャーがフリークエンシー目標に応じてコストがどのようにスケールするかを示す放送計画で使用。weekly/daily— メトリクスは期間ごとの値。Budget はキャンペーン総スペンドを指します。weeklyで頻度 3.2 は週 3.2 回の接触を意味します。clicks/conversions— 成果ターゲットの昇順ポイント。目標ベースの計画で使用(例: 「コンバージョン目標を教えてくれれば予算を伝える」)。
weekly、daily)はメトリクスの解釈を変える。範囲単位なし(または spend)の場合、頻度 3.2 はキャンペーン全体で 3.2 回の接触を意味します。weekly の場合は週あたり 3.2 回を意味します。
フォーキャストは 2 つのレベルで表れる:
- プロポーザルレベル: メディアプラン全体の集計フォーキャスト
- 配分レベル: 個別ラインアイテムのプロダクトごとフォーキャスト
reach_unit(個人、世帯、デバイス、アカウント、Cookie)を宣言し、バイヤーがパブリッシャー間でリーチを比較できるようにします。GRP ベースのフォーキャスト(地上波 TV、ラジオ)は、CPP 価格と同じパターンに従い、ターゲットデモを指定するために demographic_system と demographic を使用します。
予算カーブ
予算の昇順で並べられた複数のフォーキャストポイントは、メトリクスがスペンドに応じてどのようにスケールするかを示し、バイヤーが最適な投資レベルを見つけるのに役立つ:GRP デモグラフィクス付き CTV
TV およびオーディオのフォーキャストは、ターゲットデモを指定するためにdemographic_system と demographic を使用します。これにより、バイヤーとセラーが計測表記について合意できる:
reach_unit: "households" は、この CTV パブリッシャーがリーチを個人ではなく世帯で計測することをバイヤーに伝える。reach_unit: "devices" を報告するディスプレイパブリッシャーは異なるものを計測しており、バイヤーは 2 つのリーチ数を直接比較すべきではありません。
成果フォーキャスト付きリテールメディア
リテールメディアパブリッシャーはデリバリーメトリクスとコンバージョン成果の両方を予測できます。成果メトリクスキーはevent-type 値を使用します:
impressions と clicks は forecastable-metric 値、purchase と add_to_cart は event-type 値です。どちらも ForecastRange(low/mid/high)を使用し、同じメトリクスマップに共存します。
配分レベルフォーキャスト
プロポーザルに配分ごとのフォーキャストが含まれる場合、バイヤーは各プロダクトを独立して評価できる:放送オーディオスポットプラン
放送およびオーディオパブリッシャーは、各配分にdaypart_targets を持つスポットプランプロポーザルを返し、forecast_range_unit: "weekly" で週次フリークエンシー予測を行うことができます。このパターンにより、パブリッシャーが最適化問題を解く — バイヤーがフリークエンシー目標を指定すると、パブリッシャーがそれを達成するプランを返します:
forecast_range_unit: "weekly" は、すべてのメトリクスが週次値であることをバイヤーに伝える — 頻度 3.2 はキャンペーン全体でなく週あたり 3.2 回の接触を意味します。Budget($75K)はキャンペーン総スペンドです。
各配分の daypart_targets はパブリッシャーが推奨する時間帯を指定します。これは targeting でのハードな daypart 制約と同じ構造 — ここではバイヤーが制約するのでなく、パブリッシャーがスポットプランを規定しています。
配分レベルのリーチは、同じリスナーがモーニングドライブとアフタヌーンドライブのスポットを両方聴く可能性があるため、プロポーザルレベルに加算されない(180K + 120K + 80K > 280K)。プロポーザルレベルのフォーキャストはこの重複を考慮しています。
ディスカバリーとの統合
プロダクトは自然言語でキャンペーンブリーフにマッチさせる Product Discovery プロセスで見つけ、特定後にcreate_media_buy で購入します。
関連情報
- Product Discovery - 自然言語でプロダクトを探索する方法
- Media Buys - プロダクト購入方法
- Targeting - 詳細ターゲティングオプション
- Creative Formats - フォーマット仕様と探索