コア原則: ブリーフによるターゲティング
AdCP でターゲティングを指定する主な方法はキャンペーンブリーフです。複雑なターゲティングパラメータを設定する代わりに、バイヤーはオーディエンス要件を平易な言葉で記述します:targeting_overlay.signal_targeting_groups を使います。バイ時の適格性は、選択したプロダクトのシグナルターゲティング契約に由来します: signal_targeting_allowed、存在する場合はインラインの Product.signal_targeting_options、インラインオプションを省略するホールセールプロダクトについてはセラーの get_signals フィード、そして signal_targeting_rules です。シグナルは名前付きのターゲティング可能な次元であり、signal_ref で参照します: プロダクトローカルなシグナルオプションには scope: "product"、データプロバイダーが公開する adagents.json の signals[] で定義されたシグナルには data_provider_domain を伴う scope: "data_provider"、adagents.json の signals[] で公開されていないソースネイティブなシグナルには signal_source_url を伴う scope: "signal_source" です。signal_ref.scope はバイ時の解決パスであってプロヴェナンス(出所)ではなく、権威ある拡充情報はセラー、データプロバイダー、またはソースのシグナル定義に存在します。この目的のために audience_include や audience_exclude を流用しないでください。それらのフィールドは sync_audiences を通じて登録されたファーストパーティオーディエンス専用です。
プロダクトは、すでにプロダクトに束ねられている、または束ねる予定のシグナルを included_signals で公開することもできます。それらのシグナルは記述的なプロダクトメタデータであってパッケージレベルのターゲティング制御ではなく、バイヤーは signal_targeting_groups でそれらをエコーしません。
なぜブリーフベースなのか
ターゲティング衝突を排除
- 単一のソース: すべてのターゲティングはパブリッシャーのプロダクト定義に由来します
- レイヤリングの衝突なし: 複数のターゲティングシステムが競合することを避けます
- 価格の一貫性: ターゲティングのコストは透明であり、メディア価格に含まれます
実装を簡素化
- 自然言語: バイヤーは馴染みのある言葉でニーズを記述します
- パブリッシャーの専門知識: パブリッシャーは自身のインベントリとオーディエンス機能を最もよく知っています
- 複雑さの低減: プラットフォーム固有のターゲティング構文を学ぶ必要がありません
正確な価格付けを実現
- すべて込みの価格: すべてのターゲティングコストがプロダクト価格に組み込まれています
- サプライズなし: バイヤーは完全なコストを事前に把握できます
- 市場主導: 価格はターゲティングされたインベントリの真の市場価値を反映します
TMP を用いたリアルタイム判断
インプレッション時に行わなければならないターゲティングの判断には、AdCP は トラステッドマッチプロトコル(TMP) を使います。TMP は、あらゆるサーフェスにわたって配信時に事前交渉されたパッケージを評価する、リアルタイムの実行レイヤーです。 TMP は、構造的に分離された二つの操作——コンテキストマッチ(コンテンツの関連性)とアイデンティティマッチ(ユーザーの適格性)——を通じて、各適格インプレッションに対するリアルタイムの視点をバイヤーに与えます。ユーザーのアイデンティティとページのコンテキストをバイヤーに同時に露出させることはありません。 主な機能:- パブリッシャー横断のフリークエンシーキャップ: アイデンティティマッチのパスを通じて、複数のパブリッシャーにまたがるユーザーの露出を管理します
- 動的なオーディエンスターゲティング: PII を共有せずに、インプレッション時にオーディエンスのメンバーシップを評価します
- ブランド適合性の強制: コンテキストマッチのパスを通じたリアルタイムのコンテンツ評価
- ファーストパーティデータの活性化: 顧客データをパブリッシャーに露出させずに使用します
- パブリッシャー横断のフリークエンシーキャップ
- サプレッションリスト(既存顧客、過去のコンバージョン者)
- ブリーフで表現できないオーディエンスセグメント
- 静的なルールを超えるリアルタイムのブランド適合性
- ウェブ、モバイル、CTV、AI アシスタント、リテールメディアにまたがる任意のインプレッション時の判断
パブリッシャーはこうターゲティングを含めます
パブリッシャーはターゲティング機能を直接プロダクト定義に組み込みます:地理的ターゲティング
プロダクトは地理的なカバレッジを指定します:デモグラフィックターゲティング
オーディエンスの特性がプロダクトに組み込まれます:コンテキストターゲティング
コンテンツとの整合がプロダクト記述に内在します:デバイス・プラットフォームターゲティング
技術仕様がプロダクトフォーマットに含まれます:代表的なターゲティング要件のブリーフ例
地理的ターゲティング
デモグラフィックターゲティング
コンテキストターゲティング
行動ターゲティング
プロダクト応答に含まれるターゲティング情報
パブリッシャーはプロダクトを返す際、バイヤーが必要とするターゲティング情報を含めます:プロダクトフィルター vs ターゲティングオーバーレイ
一部のターゲティング次元は、get_products のフィルターと create_media_buy のターゲティングオーバーレイの両方に現れます。これらは異なる段階で異なる目的を果たします:
フィルターは、セルサイドエージェントにバイヤーにとって何が重要かを伝え、関連するプロダクトをキュレーションできるようにします。プロキシミティのフィルターがなければ、セラーは geo_proximity をサポートしないプロダクトを推奨するかもしれず、バイヤーは
create_media_buy までそのギャップに気づきません。
オーバーレイは、実行時に正確な機能的制約を適用します。オーバーレイはセラーのアドサーバーが強制するものです。
値フィルター(countries、regions、metros、postal_areas、geo_proximity、keywords)はカバレッジエリアで絞り込みます——「これらの場所のインベントリを見せてほしい」。ケイパビリティフィルター(required_geo_targeting、required_features)はセラーが何を強制できるかで絞り込みます——「郵便番号レベルのターゲティングをサポートするセラーのみ」。これらは組み合わせられます: 特定のエリアのインベントリを、その粒度でターゲティングできるセラーから必要とする場合は両方を使います。
バイヤーへ: 発見時にフィルターを渡し、それからバイ時に同じ値(または洗練させた版)をオーバーレイとして適用します。オーバーレイのスキーマはより厳格である点に注意してください——例えば、keyword_targets は match_type を必須としますが、keywords フィルターはデフォルトで broad になります。
例: 発見からバイまで
keywords(フィルター)が keyword_targets(オーバーレイ)になり、match_type が必須になる点に注意してください。
ターゲティングオーバーレイを使う場面
create_media_buy と update_media_buy のターゲティングオーバーレイはまれであり、以下の場合にのみ使うべきです:
地理的な制限
geo フィールドは次の場合のみ使います:- RCT テスト: 特定の地理的分割を必要とするランダム化比較試験
- 規制コンプライアンス: 地理的制限に関する法的要件
- プロダクトの絞り込み: プロダクトが複数の地域にまたがり、そのサブセットに制限する必要がある場合
geo_countries: ISO 3166-1 alpha-2 の国コード(例:["US", "GB"])geo_regions: ISO 3166-2 の細分区分コード(例:["US-CA", "GB-SCT"])geo_metros: 明示的なシステム(例:nielsen_dma、uk_itl2)を伴う構造化されたメトロエリア——すべてのパブリッシャーがメトロレベルのターゲティングをサポートするわけではありませんgeo_postal_areas: 明示的な国とシステム(例:US/zip、GB/outward、ZA/postal_code)を伴う構造化された郵便エリア——すべてのパブリッシャーが郵便レベルのターゲティングをサポートするわけではありません
geo_countries_exclude:geo_countriesと同じ形式geo_regions_exclude:geo_regionsと同じ形式geo_metros_exclude:geo_metrosと同じ形式geo_postal_areas_exclude:geo_postal_areasと同じ形式
年齢制限(コンプライアンス)
法的コンプライアンスの要件のために使います:- アルコール広告: 米国で検証済みの 21 歳以上を要求
- ギャンブル/ゲーミング: 管轄区域に応じて検証済みの 18 歳以上または 21 歳以上を要求
- カンナビス: 現地の規制に応じて検証済みの年齢を要求
age-verification-method.json で定義、ISO/IEC 27566-1 の年齢保証標準に基づく):
facial_age_estimation- AI ベースの年齢推定(Yoti など)id_document- 政府発行 ID のスキャンdigital_id- 検証済みのデジタルアイデンティティクレデンシャルcredit_card- 決済カードによる年齢ゲートworld_id- World ID オーブ検証
get_adcp_capabilities で宣言します。
デバイスプラットフォーム(技術的互換性)
技術要件のために使います:- アプリインストールキャンペーン: iOS 専用アプリは
device_platform: ["ios"]を要求 - CTV キャンペーン: 特定の TV オペレーティングシステムをターゲット
device-platform.json で定義、CTV 向けに拡張された Sec-CH-UA-Platform 標準に基づく):
- ブラウザ:
ios、android、windows、macos、linux、chromeos - CTV:
tvos、tizen、webos、fire_os、roku_os - その他:
unknown
デバイスタイプ(フォームファクター)
OS ではなくハードウェアのカテゴリでパフォーマンス最適化のためにターゲティングする場合に使います:- モバイルキャンペーン: OS を問わずすべてのモバイルデバイスをターゲット
- CTV キャンペーン: すべてのプラットフォームにわたるコネクテッド TV をターゲット
- フォームファクターの除外: アプリインストールキャンペーンで CTV をスキップ
device_type_exclude を使います:
device-type.json で定義):
desktop、mobile、tablet、ctv、dooh、unknown
device_type はフォームファクター(モバイル、デスクトップ、CTV)をターゲットします。device_platform はオペレーティングシステム(iOS、Android、tvOS)をターゲットします。パフォーマンス最適化には device_type を、技術的互換性には device_platform を使います。
言語(ローカライゼーション)
ローカライゼーション要件のために使います:- クリエイティブが特定の言語である
- キャンペーンが特定の言語話者をターゲットする
en、es、fr、de、zh)。
フリークエンシーキャップ
二つのフリークエンシー制御は、独立して、または一緒に使えます: 露出間のクールダウン —suppress は連続した配信を防ぎます:
max_impressions + per + window が総露出を制限します:
per フィールドは、リーチ最適化ゴールの reach_unit と同じエンティティタイプを使います——リーチキャンペーンの上にハードキャップを重ねる場合は、一致する値を使ってください。
地理的オーバーレイの例(RCT テスト)
RCT テストでは、包含ターゲティングよりも除外ターゲティングの方がしばしば単純です。含める何百もの DMA を列挙する代わりに、全国キャンペーンからホールドアウト市場を除外します。包含と除外を組み合わせた場合、除外フィールドは包含された集合から差し引かれます(例: 「米国からこれら 3 つの DMA を引いたもの」):ターゲティングオーバーレイを使うべきでないもの
代わりにブリーフで表現してください:- デモグラフィックの好み(年齢、性別、収入)- ブリーフのテキストで「ミレニアルをターゲット」や「高収入世帯」
- デバイスの好み - ブリーフのテキストで「モバイルユーザー」や「CTV 視聴者」(
device_platformオーバーレイは技術的互換性のためだけに使用) - コンテンツカテゴリ - ブリーフのテキストで「スポーツコンテンツ」や「ニュースサイト」
- 一般的なオーディエンスの好み - ブリーフのテキストで「自動車購入意向者」や「ラグジュアリー購入者」。バイヤーがこのパッケージに特定の名前付きシグナルを適用したい場合は、
signal_targeting_groupsを使います。 - デイパートの好み - ブリーフのテキストで「朝の通勤時間」や「プライムタイムの夜」
なぜ好みにはブリーフの方が良いのか:
- 自然言語は意図をより明確に捉えます
- パブリッシャーは自身のインベントリを知っており、効果的にターゲティングできます
- チャネル固有の複雑さを避けられます(DOOH にブラウザはありません)
- エッジケースの少ない、よりシンプルな API
利用可能なターゲティングオーバーレイパラメータ
地理的ターゲティングは、すべての geo 次元について包含(〜に制限)と除外(〜から除外)の両方をサポートします。包含フィールドと除外フィールドは組み合わせられます——例えば、ある国を含めつつ、その中の特定のメトロを除外できます。除外のセマンティクス
包含なしの除外。 除外フィールドが対応する包含フィールドなしに存在する場合、除外はプロダクトの完全な地理的カバレッジに適用されます。例えば、プロダクトが米国全体をカバーし、バイヤーがgeo_metros_exclude のみを指定した場合、除外されたメトロがプロダクトの全国的なフットプリントから取り除かれます。
レベル横断の解決。 地理的レベルは階層を成します: 国 > 地域 > メトロ > 郵便。セラーは、より高いレベルでの除外がより具体的なレベルでの包含より優先されるように、階層的な衝突を解決すべきです(SHOULD)。例えば、geo_countries_exclude: ["US"] と geo_regions: ["US-CA"] の組み合わせは、米国への配信なしという結果になるべきです——国レベルの除外が優先されます。
同一値の重複。 セラーは、同じ値が同じレベルの包含フィールドと除外フィールドの両方に現れるリクエスト(例: geo_countries: ["US"] と geo_countries_exclude: ["US"])を拒否し、説明的なエラーを返すべきです(SHOULD)。
ケイパビリティ。 get_adcp_capabilities で地理的ターゲティングのサポートを宣言するセラーは、そのレベルで包含と除外の両方をサポートすべきです(SHOULD)。セラーが一方向のみをサポートする場合、サポートしないフィールドを黙って無視するのではなく、バリデーションエラーを返さなければなりません(MUST)。
geo_countries
- 説明: 特定の国に配信を制限する
- 形式: ISO 3166-1 alpha-2 の国コード
- 例:
["US", "CA"]、["GB", "FR", "DE"] - ユースケース: 規制コンプライアンス、国別キャンペーン
geo_countries_exclude
- 説明: 特定の国を配信から除外する
- 形式: ISO 3166-1 alpha-2 の国コード
- 例:
["RU", "CN"] - ユースケース: 規制コンプライアンス、制裁
geo_regions
- 説明: 特定の地域/州に配信を制限する
- 形式: ISO 3166-2 の細分区分コード
- 例:
["US-CA", "US-NY"]、["GB-SCT", "GB-ENG"] - ユースケース: 州レベルのコンプライアンス、地域テスト
geo_regions_exclude
- 説明: 特定の地域/州を配信から除外する
- 形式: ISO 3166-2 の細分区分コード
- 例:
["US-CA"]、["CA-QC"] - ユースケース: 規制コンプライアンス(例: 州ごとのカンナビス規制)、RCT ホールドアウト地域、プロダクトが利用できない地域
geo_metros
- 説明: 特定のメトロエリアに配信を制限する
- 形式: それぞれ
systemとvaluesを持つオブジェクトの配列 - システム:
nielsen_dma(米国)、uk_itl1/uk_itl2(英国)、eurostat_nuts2(EU)、custom - 例:
[{ "system": "nielsen_dma", "values": ["501", "803"] }] - ユースケース: ローカルキャンペーン、メトロレベルの RCT テスト
- 注: セラーはサポートするシステムを
get_adcp_capabilitiesで宣言しなければなりません
geo_metros_exclude
- 説明: 特定のメトロエリアを配信から除外する
- 形式: それぞれ
systemとvaluesを持つオブジェクトの配列 - 例:
[{ "system": "nielsen_dma", "values": ["602"] }] - ユースケース: RCT ホールドアウト市場、競合除外ゾーン、プロダクトが利用できない市場
- 注: セラーはサポートするシステムを
get_adcp_capabilitiesで宣言しなければなりません
geo_postal_areas
- 説明: 特定の郵便エリアに配信を制限する
- 形式: それぞれ
country、system、valuesを持つオブジェクトの配列 - システム:
zip、zip_plus_four、outward、full、fsa、plz、code_postal、postcode、pin、postal_codeなどの国ローカルな値 - 例:
[{ "country": "US", "system": "zip", "values": ["10001", "10002"] }] - ユースケース: ハイパーローカルキャンペーン、郵便レベルの制限
- 注: セラーはサポートするシステムを
get_adcp_capabilitiesで宣言しなければなりません。3.x への移行期間中は、us_zipのような非推奨の国融合システムが互換性と SDK のバックフィルのために引き続き受け入れられます。
geo_postal_areas_exclude
- 説明: 特定の郵便エリアを配信から除外する
- 形式: それぞれ
country、system、valuesを持つオブジェクトの配列 - 例:
[{ "country": "US", "system": "zip", "values": ["90210"] }] - ユースケース: RCT ホールドアウトの郵便番号、配信制限エリア
- 注: セラーはサポートするシステムを
get_adcp_capabilitiesで宣言しなければなりません。非推奨のレガシー形式は 3.x への移行期間中は引き続き受け入れられます。
axe_include_segment
- 説明: 包含ターゲティング用のセグメント ID(レガシーの AXE フィールド)
- 形式: 文字列のセグメント識別子
- 例:
"seg_auto_intenders_q1"、"audience_lapsed_buyers_30d" - ユースケース: 動的なオーディエンスターゲティング、ファーストパーティデータの活性化
- 注: このフィールドはレガシーの AXE 統合に由来します。新しい実装では TMP を使うべきです。そこではオーディエンスターゲティングはアイデンティティマッチのパスを通じて扱われます。
axe_exclude_segment
- 説明: 除外ターゲティング用のセグメント ID(レガシーの AXE フィールド)
- 形式: 文字列のセグメント識別子
- 例:
"seg_existing_customers"、"audience_past_converters" - ユースケース: 顧客サプレッション、フリークエンシー管理
- 注: このフィールドはレガシーの AXE 統合に由来します。新しい実装では TMP を使うべきです。そこではサプレッションはアイデンティティマッチのパスを通じて扱われます。
audience_include
- 説明: これらのファーストパーティ CRM オーディエンスのメンバーであるユーザーに配信を制限します。アップロードされたリスト上の人だけが広告を見る資格を持ちます。
- 形式:
sync_audiencesからのaudience_id文字列の配列 - 例:
["lapsed_subscribers", "high_value_prospects"] - ユースケース: 既知ユーザーへのリターゲティング、既存メンバーをターゲットするロイヤルティキャンペーン、クローズドプラットフォーム(LinkedIn、Meta、TikTok、Google Ads)での CRM ベースの包含
- 類似/拡張のためではない: あるオーディエンスに似た新しいユーザーを見つけるには、キャンペーンブリーフでその意図を記述します(「既存顧客のような人にリーチ」)——セラーが拡張戦略を扱います
- 前提条件: オーディエンスは使用前に
sync_audiencesを通じて登録されreadyになっていなければなりません - 注: セラーは
get_adcp_capabilitiesでサポートを宣言しなければなりません
audience_exclude
- 説明: これらのファーストパーティ CRM オーディエンスのメンバーであるユーザーへの配信を抑制します。マッチしたユーザーは他のターゲティングに関わらず除外されます。
- 形式:
sync_audiencesからのaudience_id文字列の配列 - 例:
["existing_customers", "recent_purchasers"] - ユースケース: 獲得キャンペーンでの顧客サプレッション、最近のコンバージョン者の除外、オプトアウトしたユーザーの抑制
- 前提条件: オーディエンスは使用前に
sync_audiencesを通じて登録されreadyになっていなければなりません - 注: セラーは
get_adcp_capabilitiesでサポートを宣言しなければなりません
signal_targeting_groups
- 説明: セラーが提供するデータシグナルの基本的なブール型のグルーピング。単純な包含のみのシグナルターゲティングと、
(A OR B) AND NOT (C OR D)のようなグループ化された包含/除外の表現の両方に使います。 - ディスカバリー: ホールセールプロダクトは
signal_targeting_allowed: trueを設定してインラインのsignal_targeting_optionsを省略でき、バイヤーはその場合get_signalsを選択可能なシグナルフィードとして使います。プロダクトは、プロダクト固有の価格、活性化ハンドル、デフォルト、グルーピングのヒント、またはブリーフ/refine 応答向けの関連サブセットが必要な場合に、インラインのsignal_targeting_optionsを返します。 - 形式: 必須のトップレベル
operator: "all"とgroups配列を持つオブジェクト。v1 ではallのみをサポートしますが、トップレベルのオペレーターは常に存在します。 - 子グループ: 各子グループは
operator: "any"またはoperator: "none"と、パッケージシグナルターゲティングオブジェクトのsignals配列を持ちます。各シグナルはsignal_ref、value_type、値フィールド、加えて任意のコマーシャルおよび活性化ハンドルを持ちます。 - レガシーのフラットターゲティング:
targeting_overlay.signal_targetingは、古いクライアント向けに SignalRef の移行ウィンドウ中はスキーマ的に有効なままですが、非推奨です。新しいパッケージレベルのシグナル選択はsignal_targeting_groupsを使い、セラーが包含/除外グループ、プロダクトルール、シグナルごとの価格を一貫して適用できるようにします。 - セマンティクス:
anyはユーザーがそのグループ内の少なくとも一つのシグナルにマッチしなければならないことを意味します。noneはユーザーがそのグループ内のどのシグナルにもマッチしてはならないことを意味します。トップレベルのallにより、すべての子グループが通過しなければなりません。単純な包含のみのターゲティングには、operator: "any"の子グループを一つ送ります。 - 解決モデル:
signal_targeting_rules.resolution_modelは、セラーが選択されたシグナルをインベントリにどう適用するかをバイヤーに伝えます。direct_targetingは、選択されたシグナルがパッケージのターゲティング述語のように振る舞うことを意味します。seller_plannedは、選択されたシグナルが、プロダクト固有のインベントリ、タイミング、可用性、リーチ、ペーシングの制約に対するセラー管理のプランニングへの入力であることを意味します。バイヤーは、選択されたオーディエンスをより低レベルのインベントリやスケジュールの決定に分解しようとすべきではありません。 - 選択グループ: プロダクトが
signal_targeting_rules.selection_group_rulesを宣言する場合、各子グループはちょうど一つのselection_groupと一つのターゲティングモードのシグナルを含まなければならず(MUST)、バイヤーは各(selection_group, targeting_mode)ペアにつき最大一つの子グループを送らなければなりません(MUST)。セラーは、異なる選択グループのルールを同じanyまたはnoneグループに組み合わせる、重複した、混在した、または折りたたまれた子グループを拒否しなければなりません(MUST)。selection_groupはプロダクトが定義する合成可能性のバケットであって、バックエンドのアイデンティティタイプではありません: 例えば、GAM ベースのセラーは、オーディエンスセグメントとキーバリューの両方を通常のsignal_refオプションとして公開し、それらが自由に OR 結合できるときは一つのselection_groupを、別々の AND 節としてトラフィックしなければならないときは別々のselection_groupを使うことができます。 - 価格: 選択したプロダクトの
signal_targeting_optionsエントリがpricing_optionsを持つ場合はpricing_option_idを含めます。シグナルがプロダクト価格に束ねられているか、追加コストがない場合にのみ省略します。signal_targeting_optionsのプロダクトスコープの価格は、そのプロダクトについて権威があります。プロダクトオプションにプロダクト固有の価格がない場合、セラーはget_signalsで公開されるデフォルトの価格を使ってもかまいません(MAY)。 - シグナル参照: プロダクトローカルなシグナルオプションには
signal_ref: { "scope": "product", "signal_id": "..." }を使います。データプロバイダーが公開する adagents.json のsignals[]で定義されたシグナルにはsignal_ref: { "scope": "data_provider", "data_provider_domain": "...", "signal_id": "..." }を使います。signal_refはシグナル定義を識別します。signal_agent_segment_idは、プロダクトオプションが公開する場合に、解決済みのセグメントまたは実行ハンドルを識別します。公開されたsignal_agent_segment_idはパッケージエントリでそのままエコーし、カテゴリ値からアイデンティティを再構築するよりもそれを優先してください。プロバイダーは、リアルタイムの雨と予報の高降水量のような定義を区別するために、ハンドルを名前空間で分けられるからです。プロダクトオプションがactivation_status: "requires_activation"を持つ場合、それはsignal_agent_segment_idを含まなければなりません(MUST)。まずシグナルを活性化し、それからセラーが要求する場合はactivation_keyを含めます。 - プロバイダー公開シグナル: プロバイダー公開シグナルについては、
signal_ref.data_provider_domainが上流のデータプロバイダーを識別し、signal_ref.signal_idが公開シグナル定義を識別します。バイヤーは、プロバイダーのadagents.jsonのauthorized_agentsエントリにセラーがあるかを確認することで、セラーがそのシグナルを提供する権利を検証できます。 - プロダクトゲーティング: セラーは次の場合にシグナルエントリを拒否すべきです(SHOULD): プロダクトがそのシグナルをインラインまたは
get_signalsを通じて公開していない、パッケージレベルの選択についてsignal_targeting_allowedが false、シグナルがプロダクトのsignal_targeting_rulesに違反している、シグナルのallowed_targeting_modesが要求された子グループのオペレーターを許可しない、シグナルがアカウントに対してアクティブでない、または要求された値がシグナル定義の範囲外である。allowed_targeting_modes: ["include"]はanyグループに、["exclude"]はnoneグループにマップされます。バイナリのパッケージシグナルエントリはvalue: trueを使います。除外にはvalue: falseではなく親のnoneグループを使います。シグナルターゲティングの制限はプロダクトスコープであり、セラー全体のget_adcp_capabilitiesでは宣言されません。プロダクトは異なるアドサーバーやプラットフォームに支えられている可能性があるからです。selection_modeがfixedの場合、バイヤーはsignal_targeting_groupsへの編集を省略すべきです(SHOULD)。セラーは固定/デフォルトの選択を適用し、結果のパッケージ状態でそれらをエコーしなければなりません(MUST)。 - 更新:
targeting_overlayはcreate_media_buyとupdate_media_buyで共有されるため、選択されたシグナル、グループ表現、またはpricing_option_idが価格付けされたエンベロープを変更する場合、セラーはフライト途中のシグナルグループの変更をREQUOTE_REQUIREDで拒否してもかまいません(MAY)。 - ファーストパーティオーディエンスのためではない:
sync_audiencesからのバイヤーがアップロードしたオーディエンスにはaudience_include/audience_excludeを使います。
signal_ref の背後に隠されています。バイヤーは「オーディエンスセグメント」と「キーバリュー」のために別々のアイデンティティシステムを必要とすべきではありません。選択したプロダクトの signal_targeting_rules が、それらのオプションを一緒に合成できるかどうかを記述します。プロダクトが gam_audience_segments グループと gam_key_values グループの両方を targeting_mode: "include" で公開する場合、バイヤーはトップレベルの all の下に二つの any 子グループを合成するのであって、一つの折りたたまれた混在グループにはしません。
線形放送スケジュールのような、インベントリとオーディエンスのプランニングが不可分なプロダクトについては、セラーは resolution_model: "seller_planned" を使います。必須のオーディエンス選択は依然として selection_mode: "required" または必須の selection_group_rules エントリに存在します。プロダクト横断のオーディエンスの一貫性は、セラーがデータプロバイダーでもある場合でさえ、共有された scope: "data_provider" のシグナル定義から得られます。
frequency_cap
- 説明: エンティティごとに広告の露出頻度を制限します。二つの任意の制御を独立して、または一緒に使えます。
- クールダウン制御:
suppress— 同じエンティティへの連続した露出の間の最小時間。後方互換性のためにsuppress_minutes(数値)も受け入れられます。 - インプレッションキャップ:
max_impressions+per+window— エンティティごと・時間ウィンドウごとの総インプレッション上限。三つのフィールドはすべて一緒に必須です。 - ユースケース: ユーザー体験の管理、広告疲労の防止、ハードな上限でリーチ最適化ゴールを補完
- 例:
{"suppress": {"interval": 60, "unit": "minutes"}}、{"max_impressions": 5, "per": "households", "window": {"interval": 7, "unit": "days"}}
age_restriction
- 説明: コンプライアンスのために最低年齢を要求します
- 形式:
min(必須)、verification_required、accepted_methodsを持つオブジェクト - 例:
{"min": 21, "verification_required": true}、{"min": 18, "accepted_methods": ["world_id"]} - ユースケース: アルコール(21+)、ギャンブル(18+)、カンナビス規制
- 注: プラットフォームはサポートする検証方法を
get_adcp_capabilitiesで宣言します
device_platform
- 説明: 特定のオペレーティングシステムプラットフォームに制限します
- 形式: Sec-CH-UA-Platform 標準のプラットフォーム識別子の配列
- 例:
["ios"]、["ios", "android"]、["tvos", "fire_os"] - ユースケース: アプリインストールキャンペーン(iOS 専用アプリ)、CTV 固有のキャンペーン
- 値:
ios、android、windows、macos、linux、chromeos、tvos、tizen、webos、fire_os、roku_os
device_type
- 説明: 特定のデバイスのフォームファクターに制限します
- 形式: デバイスタイプ識別子の配列
- 例:
["mobile"]、["mobile", "tablet"]、["ctv"] - ユースケース: モバイル専用プロモーション、すべての TV プラットフォームをターゲットする CTV キャンペーン、特定のキャンペーンから DOOH を除外
- 値:
desktop、mobile、tablet、ctv、dooh、unknown - 注: セラーは
get_adcp_capabilitiesのターゲティングでdevice_type: trueを宣言しなければなりません
device_type_exclude
- 説明: 特定のデバイスのフォームファクターを配信から除外します
- 形式: デバイスタイプ識別子の配列
- 例:
["dooh"]、["ctv", "dooh"] - ユースケース: アプリインストールキャンペーンで CTV を除外、ダイレクトレスポンスキャンペーンで DOOH を除外
- 注: セラーが
get_adcp_capabilitiesでdevice_type: trueを宣言する場合にサポートされます
language
- 説明: 特定の言語設定を持つユーザーに制限します
- 形式: ISO 639-1 の 2 文字言語コードの配列
- 例:
["en"]、["es", "en"]、["zh", "ja", "ko"] - ユースケース: ローカライズされたクリエイティブ、言語固有のキャンペーン
keyword_targets
- 説明: 検索およびリテールメディアプラットフォーム向けに特定のキーワードをターゲットします。指定されたキーワードにマッチするクエリに配信を制限します。
- 形式:
keyword、match_type(broad、phrase、またはexact)、および任意のbid_priceを持つオブジェクトの配列 - アイデンティティ: 各キーワードはタプル
(keyword, match_type)で識別されます。異なるマッチタイプを持つ同じキーワード文字列は別個のターゲットです。単一リクエスト内の重複ペアはセラーによって拒否されるべきです(SHOULD)。 - マッチタイプ:
broad— 関連クエリと同義語クエリにマッチphrase— キーワードフレーズを順序どおりに含むクエリにマッチexact— キーワードクエリのみにマッチ
- キーワードごとの入札: 任意の
bid_priceは、そのキーワードについてパッケージレベルのbid_priceを上書きします。価格オプションからmax_bidの解釈を継承します:max_bidが true のときはこれがキーワードの入札上限、false のときはこれが正確な入札です。省略した場合はパッケージのbid_priceが適用されます。 - ユースケース: 検索キャンペーン、リテールメディアのスポンサープロダクト、キーワードベースの意図ターゲティング
- 注: セラーは
get_adcp_capabilitiesでexecution.targeting.keyword_targetsを、受け入れるsupported_match_typesとともに宣言しなければなりません。セラーが宣言するマッチタイプのみを使ってください——セラーはサポートしないマッチタイプを拒否しなければなりません。ローンチ後にキーワードを段階的に追加または更新するには、update_media_buyでkeyword_targets_addとkeyword_targets_removeを使います。キーワードレベルの配信データ(レポートのby_keyword)は、プロダクトにreporting_capabilities.supports_keyword_breakdown: trueを必要とします——これらは独立したケイパビリティです。by_keywordはキーワード粒度(keyword+match_type ペアごとに 1 行)であって、検索語粒度ではありません。
negative_keywords
- 説明: 特定のキーワードを配信から除外します。これらのキーワードにマッチするクエリは広告をトリガーしません。
- 形式:
keywordとmatch_type(broad、phrase、またはexact)を持つオブジェクトの配列 - ユースケース: 無関係なクエリへの無駄な支出を防ぐ、競合のブランド語を除外
- 注: セラーは
get_adcp_capabilitiesでexecution.targeting.negative_keywordsを、受け入れるsupported_match_typesとともに宣言しなければなりません。ローンチ後にネガティブを段階的に追加/削除するには、update_media_buyでnegative_keywords_addとnegative_keywords_removeを使います。
store_catchments
- 説明: 同期された店舗カタログの店舗商圏内のユーザーをターゲットします
- 形式:
sync_catalogsを通じて同期された store 型カタログをそれぞれ参照するオブジェクトの配列 - 必須フィールド:
catalog_id - 任意フィールド:
store_ids(特定の店舗に絞り込む)、catchment_ids("walk"や"drive"のような特定のゾーンに絞り込む) - ユースケース: 来店促進キャンペーン、ローカルインベントリ広告、近接ターゲティング
store_ids を省略した場合、カタログ内のすべての店舗がターゲットされます。catchment_ids を省略した場合、すべての商圏ゾーンがターゲットされます。セラーは店舗商圏ターゲティングのサポートを get_adcp_capabilities で宣言しなければなりません。
geo_proximity
- 説明: 任意の地理的地点の周囲の、移動時間、距離、またはカスタム境界内のユーザーをターゲットします
- 形式: それぞれちょうど一つの方法を持つオブジェクトの配列:
travel_time+transport_mode、radius、またはgeometry - 必須フィールド:
lat+lng(travel_time と radius の方法の場合)、またはgeometry(事前計算された境界の場合) - 任意フィールド:
label(エントリの人が読める名前) - ユースケース: 観光キャンペーン(都市から車で 2 時間以内)、イベントターゲティング(会場の近く)、空港の商圏エリア
- セマンティクス: 複数のエントリは OR を使います——列挙された任意の地点の範囲内のユーザーが適格です。他の geo ターゲティングフィールドと交差します(例:
geo_countriesと組み合わせると近接をそれらの国に制限します)
driving、walking、cycling、public_transport。geometry の方法は、(TravelTime、Mapbox などで)すでにアイソクロンを計算したバイヤーがポリゴンを直接渡すことを可能にします——これはルーティングエンジンを持たないセラーの参加も可能にします。
10 か所以上をターゲットするキャンペーンには、代わりにロケーションカタログを持つ store_catchments の使用を検討してください。継続的な管理とロケーションごとのレポートをサポートします。geo_proximity には除外バリアントがありません——これは設計上の意図であり、「ある地点の近くの全員」を除外することが意味のあるターゲティング制約になることはめったにないためです。
セラーは、自身のプライバシーポリシーと適用される規制に合致した最小エリアのしきい値を強制すべきです(SHOULD)。セラーは get_adcp_capabilities で geo_proximity のサポートを、どの方法(radius、travel_time、geometry)と移動手段がサポートされるかを指定して宣言しなければなりません。
検証済みの例:
ステークホルダー別の利点
バイヤー向け
- シンプルなプランニング: オーディエンスのニーズを自然に記述
- 透明な価格: すべてのコストが事前に込み
- 複雑さの低減: ターゲティングの設定が不要
- より良い成果: パブリッシャーの専門知識が配信を最適化
パブリッシャー向け
- 価格の制御: ターゲティングをプロダクト価格に束ねる
- 専門知識の活用: インベントリとオーディエンスの知識を適用
- 統合の簡素化: 技術的なターゲティングパラメータが少ない
- 市場でのポジショニング: ターゲティング機能で差別化
プラットフォーム向け
- 衝突の低減: 単一のターゲティングソースがレイヤリングの問題を排除
- クリーンな実装: より複雑でないターゲティングロジック
- より良いパフォーマンス: パブリッシャーのインベントリ特性に最適化
リアルタイムターゲティングシグナル
オーケストレーターは、静的なオーバーレイで表現できるものを超えた動的で高カーディナリティなターゲティングのために、パブリッシャーにリアルタイムターゲティングシグナルを提供できます。これらのシグナルは次を可能にします:- ブランドセーフティ - リアルタイムのコンテンツフィルタリングと隣接制御
- ブランド適合性 - ブランド価値とのコンテキスト的整合
- オーディエンスターゲティング - リアルタイムで更新される動的なオーディエンスセグメント
- コンテキストターゲティング - ページレベルまたはモーメントレベルのターゲティング判断
シグナル vs オーバーレイの違い
- シグナルはキャンペーンのセットアップ時ではなく、インプレッション時に評価されます
- シグナルはより高いカーディナリティをサポートします(数十ではなく数千の値)
- シグナルはメディアバイを変更せずに継続的に更新できます
- シグナルは、ブリーフでは表現できない高度なコンテキストターゲティングを可能にします
リアルタイムシグナルを使う場面
✅ リアルタイムシグナルを使う場合:- ブランドセーフティのフィルタリング(安全でないコンテンツをブロック)
- ブランド適合性のスコアリング(適した文脈を優先)
- 動的なオーディエンスターゲティング(リアルタイムのセグメントメンバーシップ)
- コンテキストターゲティング(ページレベルまたはモーメントレベルの判断)
- 高カーディナリティなターゲティング(数千の値)
- キャンペーンのフライト中に変化するターゲティング
ローンチ後のキーワード管理
キーワードターゲットとネガティブキーワードはどちらもupdate_media_buy で段階的な操作をサポートし、targeting_overlay 全体を置き換える必要をなくします:
keyword_targets_add—(keyword, match_type)のアイデンティティでアップサートします。新しいキーワードを追加するか、既存のもののbid_priceを更新します。keyword_targets_remove— マッチする(keyword, match_type)ペアを削除します。negative_keywords_add— ネガティブを追加します。重複は no-op です。negative_keywords_remove— マッチするペアを削除します。存在しないエントリは no-op です。
targeting_overlay.keyword_targets が keyword_targets_add または keyword_targets_remove とともに存在する場合、バリデーションエラーを返すべきです(SHOULD)(ネガティブキーワードについても同様)。段階的な操作と完全なオーバーレイの置き換えは、単一の更新内では相互排他的です。
他のオーバーレイフィールドを保ちつつキーワードターゲティングをすべて削除するには、keyword_targets フィールドなしで完全な targeting_overlay を送ります。
実装要件
パブリッシャーが必ず満たすこと:
- 地理的ターゲティングのサポート: プラットフォームがサポートする範囲で、地理的な包含と除外のパラメータ(
geo_countries、geo_countries_exclude、geo_regions、geo_regions_exclude、geo_metros、geo_metros_exclude、geo_postal_areas、geo_postal_areas_exclude)を扱います。サポートするメトロと郵便のシステムをget_adcp_capabilitiesで宣言します - ブリーフの解釈: ブリーフを使って適切なオーディエンスとコンテンツのターゲティングを決定します
- ターゲティングの検証: サポートできないターゲティングを持つメディアバイを拒否します
- 制限の文書化: 地理的ターゲティングの制限をプロダクト記述で明確に伝えます
バイヤーが推奨されること:
- まずブリーフを使う: ほとんどのターゲティングニーズを自然言語ブリーフで表現します
- オーバーレイを最小化: 技術的なターゲティングは地理的制限または RCT テストにのみ使います
- パブリッシャーを信頼: パブリッシャーにブリーフの解釈へインベントリの知識を適用させます
- 早期に検証: 技術的なターゲティングを適用する前にプロダクトのケイパビリティを確認します
ベストプラクティス
- ブリーフをデフォルトに - 自然言語の記述から始めます
- 明確なブリーフを書く: オーディエンスとコンテキストの要件を具体的にします
- パブリッシャーの専門知識を信頼: パブリッシャーは自身のインベントリ機能を最もよく知っています
- 動的なターゲティングにはシグナルを使う - リアルタイムシグナルは、複雑で高カーディナリティなターゲティングをオーバーレイより上手く扱います
- 技術的オーバーレイを最小化: 地理的制限またはコンプライアンスにのみ使います
- オーディエンスの適合を検証: プロダクト記述がキャンペーンゴールと一致することを確認します
- すべて込みの価格 - ターゲティングコストがプロダクトレートに組み込まれていることを期待します
将来の進化
- 強化されたブリーフ処理: より高度な自然言語理解
- オーディエンスの発見: 利用可能なオーディエンスを探索するためのより良いツール
- より深いシグナル統合: より高度なリアルタイムターゲティング機能
- パフォーマンス最適化: キャンペーン結果に基づく AI 主導のオーディエンス絞り込み
関連ドキュメント
- トラステッドマッチプロトコル(TMP) - インプレッション時のターゲティング、フリークエンシーキャップ、ブランド適合性のためのリアルタイム実行レイヤー
- シグナルプロトコル - ブランド適合性とコンテキストターゲティングのためのリアルタイムターゲティングシグナル
- プロダクトディスカバリー - ブリーフがどのようにターゲティングされたプロダクト推奨へつながるか
- ブリーフ例 - 効果的なターゲティングブリーフの実例
- ポリシーコンプライアンス - 自動化されたコンプライアンスチェックと強制