Skip to main content
AdCP には広告業務全体でブランドセーフティと規制遵守を確保するための包括的なポリシーコンプライアンス機能が含まれます。本ドキュメントでは、メディアバイのライフサイクルを通じてポリシーチェックをどのように実装・適用すべきかを説明します。

概要

AdCP におけるポリシーコンプライアンスの中心は必須の広告主ブランド記述である brand_manifest です。これによりパブリッシャーは次を行えます:
  • 在庫を提示する前に不適切な広告主をフィルタリング
  • カテゴリー固有の制限を適用
  • ブランドセーフティ基準を維持
  • 規制要件に準拠

Brand Manifest

すべてのプロダクト探索およびメディアバイ作成リクエストには、広告主ブランドを記述する brand_manifest を含める必要があります:
{
  "name": "Nike",
  "url": "https://nike.com",
  "category": "athletic_apparel"
}
マニフェストが提供する内容:
  • name: リクエストを送る広告主/ブランド
  • url: 確認用のブランド公式サイト
  • category (任意): ポリシーフィルタリング用の業種カテゴリ
何をプロモーションするかを示す brief フィールドと組み合わせることで、パブリッシャーはポリシー判断に必要な完全なコンテキストを得られます。 ブリーフとブランド情報の詳細なガイドは Brief Expectations を参照してください。

ポリシーチェックの実装

パブリッシャーはワークフローの 2 つの重要なポイントでポリシーチェックを実装する必要があります:

1. プロダクト探索中 (get_products)

get_products リクエストを受け取ったら、パブリッシャーは次を行います:
  1. brand_manifest が存在し有効であることを検証する
  2. ブランドとカテゴリ情報を抽出する
  3. パブリッシャーポリシーに照らして確認する
  4. 不適切なプロダクトを除外する
ポリシーチェックフローの例:
def check_brand_policy(brand_manifest: dict) -> PolicyResult:
    # Extract brand information
    brand_name = brand_manifest.get("name")
    brand_url = brand_manifest.get("url")
    category = brand_manifest.get("category")

    # Verify brand identity if needed
    if not verify_brand_domain(brand_name, brand_url):
        return PolicyResult(
            status="blocked",
            message="Brand verification failed"
        )

    # Check blocked categories
    if category in BLOCKED_CATEGORIES:
        return PolicyResult(
            status="blocked",
            message=f"{category} advertising is not permitted on this publisher"
        )

    # Check restricted categories
    if category in RESTRICTED_CATEGORIES:
        return PolicyResult(
            status="restricted",
            message=f"{category} advertising requires manual approval",
            contact="[email protected]"
        )

    return PolicyResult(status="allowed", category=category)

2. メディアバイ作成時 (create_media_buy)

メディアバイを作成する際は次を行います:
  1. brand_manifest をパブリッシャーポリシーに照らして検証する
  2. キャンペーンブリーフとの整合性を確認する
  3. 必要に応じて手動レビューフラグを付ける
  4. 違反時に適切なエラーを返す

ポリシーコンプライアンスのレスポンス

プロトコルは 3 つのコンプライアンスステータスを定義しています:

allowed

ブランドは初期ポリシーチェックを通過し、プロダクトが通常通り返されます。
{
  "products": [...],
  "policy_compliance": {
    "status": "allowed"
  }
}

restricted

ブランドカテゴリはプロダクトを表示する前に手動承認が必要です。
{
  "products": [],
  "policy_compliance": {
    "status": "restricted",
    "message": "Cryptocurrency advertising is restricted but may be approved on a case-by-case basis.",
    "contact": "[email protected]"
  }
}

blocked

ブランドカテゴリがこのパブリッシャーではサポートできません。
{
  "products": [],
  "policy_compliance": {
    "status": "blocked",
    "message": "Publisher policy prohibits alcohol advertising without age verification capabilities."
  }
}

クリエイティブ検証

アップロードされたすべてのクリエイティブは、宣言された brand_manifest に照らして検証する必要があります:
  1. 自動分析: クリエイティブ認識を用いてブランド一貫性を確認
  2. 人によるレビュー: センシティブなカテゴリに対する手動確認
  3. 継続的モニタリング: キャンペーン配信中の継続的なチェック
これにより次を保証します:
  • クリエイティブ内容が宣言されたブランドと一致する
  • 誤解を招く広告や欺瞞的な広告がない
  • すべての関係者にとってのブランドセーフティ

一般的なポリシーカテゴリ

パブリッシャーは通常、次のカテゴリに制限を設けます:

ブロック対象カテゴリ

  • 違法な製品やサービス
  • 禁止コンテンツ(地域によって異なる)
  • 特別なライセンスを要するカテゴリ

制限対象カテゴリ(手動承認)

  • アルコール(年齢制限が必要な場合あり)
  • ギャンブル/ゲーム
  • 暗号資産/金融サービス
  • 政治広告
  • ヘルスケア/医薬品
  • 出会い系サービス

特別要件

  • 政治広告は開示が必要な場合がある
  • ヘルスケアは免責事項が必要な場合がある
  • 金融サービスはコンプライアンスレビューが必要

実装ベストプラクティス

  1. 明確なコミュニケーション: 制限の具体的な理由を示す
  2. 連絡先情報: 制限カテゴリに対する営業連絡先を含める
  3. 一貫した適用: すべての広告主に対しポリシーを均等に適用する
  4. ドキュメンテーション: 広告主向けに明確なポリシー文書を維持する
  5. 異議申立手続き: 広告主がポリシー例外を要求できるようにする

エラーハンドリング

メディアバイ作成時のポリシー違反例:
{
  "error": {
    "code": "POLICY_VIOLATION",
    "message": "Brand category not permitted on this publisher",
    "field": "brand_manifest",
    "suggestion": "Contact publisher for category approval process"
  }
}

HITL との統合

ポリシー判断は Human-in-the-Loop ワークフローをトリガーできます:
  1. 制限カテゴリは pending_manual タスクを生成する
  2. 人によるレビュワーがキャンペーンを評価する
  3. 承認または却下が返信される
  4. その決定に基づきキャンペーンを進行または終了する

関連ドキュメント