Skip to main content
このガイドは Content Standards プロトコルの実装パターンを 3 つの視点で説明します:
  1. Sales agents accepting and enforcing brand safety standards
  2. Orchestrators coordinating content standards across publishers
  3. Governance agents providing content evaluation services

役割の整理

まず役割分担を把握します:
RoleExamplesResponsibilities
OrchestratorDSP, トレーディングデスク、代理店プラットフォームメディアバイを調整し、スタンダード参照をセラーへ渡し、検証用アーティファクトを受領
Sales Agentパブリッシャー Ad サーバー、SSPスタンダード受領、ローカルモデルのキャリブレーション、配信時の適用、アーティファクト送付
Governance AgentIAS, DoubleVerify, ブランドセーフティサービススタンダードをホストし、calibrate_contentvalidate_content_delivery を実装
典型的なフロー:
1. Brand sets up standards with governance agent (via orchestrator)
2. Orchestrator sends standards_ref with get_products/create_media_buy
3. Sales agent accepts or rejects based on capability
4. Sales agent calibrates against governance agent
5. Sales agent enforces during delivery
6. Sales agent provides artifacts (push via webhook or pull via get_media_buy_artifacts)
7. Orchestrator forwards artifacts to governance agent for validation

Sales Agent 向け

Sales Agent(パブリッシャー Ad サーバー、SSP 等)は、オーケストレーターのポリシーを受け入れ配信時に適用します。

コアモデル

オーケストレーターが content_standards_ref を含めてきたら、次を行います:
  1. Fetch the standards from the governance agent and evaluate if you can fulfill them
  2. Accept or reject the buy based on your capabilities
  3. Calibrate your evaluation model against the governance agent’s expectations
  4. Enforce the standards during delivery
  5. Provide artifacts to the orchestrator for validation
要件を満たせない場合は 買い付けを拒否 してください。順守できないキャンペーンを受けないこと。

実装すべきこと

1. get_productscreate_media_buy で content standards の参照を受ける Orchestrators pass their standards via reference:
{
  "content_standards_ref": {
    "standards_id": "nike_emea_brand_safety",
    "agent_url": "https://brandsafety.ias.com"
  }
}
受け取ったら:
  • Fetch the standards document from the governance agent at agent_url
  • Evaluate whether you can enforce these requirements
  • If you cannot meet the standards, reject the request
  • If you can, accept and store the association with the media buy
2. 実行可能か判断する The standards document contains:
  • Policy (natural language description of acceptable/unacceptable content)
  • Calibration exemplars (pass/fail examples to interpret edge cases)
  • Floor (reference to external baseline safety standards)
要件と自社の能力を突き合わせます。パブリッシャーごとに「adjacency」の定義は異なります(Reddit はコメント、YouTube は関連動画、ニュースサイトは記事本文など)。ブランド意図を実質的に担保できるなら受け入れて問題ありません。 対応できない場合(例: 屋外など adjacency が成立しないチャネルを要求された場合)は拒否します。 3. 評価機構を構築する Use the standards document to train or configure your content evaluation system. This could be:
  • An LLM with the rules as system prompt
  • A classifier trained on the calibration examples
  • A rules engine for deterministic evaluation
  • A third-party brand safety vendor
プロトコルは実装方法を規定しません。スタンダードを順守することが求められます。 4. ガバナンスエージェントとキャリブレーションする After accepting the buy, calibrate your local model by calling calibrate_content on the governance agent. You send sample artifacts from your inventory, they tell you how they would rate them:
// You send examples from your inventory to the governance agent
{
  "standards_id": "nike_emea_brand_safety",
  "artifacts": [
    {
      "property_id": { "type": "domain", "value": "espn.com" },
      "artifact_id": "article_123",
      "assets": [{ "type": "text", "role": "title", "content": "Marathon Runner Collapses at Finish Line" }]
    }
  ]
}

// Governance agent responds with their interpretation
{
  "evaluations": [{
    "artifact_id": "article_123",
    "suitable": true,
    "confidence": 0.9,
    "explanation": "Sports injury coverage in athletic context - aligns with brand's sports marketing positioning"
  }]
}
返却結果を使ってローカルモデルを調整します。判定に異議があれば理由を確認し、追加質問で擦り合わせます。 5. アーティファクトをオーケストレーターへ送る After delivery, push artifacts to the orchestrator so they can validate against the governance agent. Configure via artifact_webhook in the media buy:
// Artifact webhook payload (you send this to the orchestrator)
{
  "media_buy_id": "mb_nike_reddit_q1",
  "batch_id": "batch_20250115_001",
  "timestamp": "2025-01-15T11:00:00Z",
  "artifacts": [
    {
      "artifact": {
        "property_id": { "type": "domain", "value": "reddit.com" },
        "artifact_id": "r_fitness_abc123",
        "assets": [{ "type": "text", "role": "title", "content": "Best protein sources" }]
      },
      "delivered_at": "2025-01-15T10:30:00Z",
      "impression_id": "imp_abc123"
    }
  ]
}
ポーリングを好むオーケストレーター向けに get_media_buy_artifacts もサポートします。

実装チェックリスト

  • Parse content_standards_ref in get_products and create_media_buy
  • Fetch and evaluate standards documents from governance agents
  • Reject buys you cannot fulfill - don’t accept campaigns you can’t enforce
  • Build content evaluation against the standards document
  • Call calibrate_content on the governance agent to align interpretation
  • Implement get_media_buy_artifacts so orchestrators can retrieve content for validation
  • Support artifact_webhook for push-based artifact delivery
  • Support reporting_webhook for delivery metrics

オーケストレーター向け

オーケストレーター(DSP、トレーディングデスク、代理店プラットフォーム)は、ブランド・ガバナンスエージェント・パブリッシャー間でコンテントスタンダードを調整します。

オーケストレーションパターン

Brand → Orchestrator → Governance Agent (setup)
                    → Sales Agent (buying)
                    ← Sales Agent (artifacts)
                    → Governance Agent (validation)
                    → Brand (reporting)
1. ブランドがガバナンスエージェントでスタンダードを設定するのを支援 Brands create content standards through a governance agent. You might facilitate this or the brand may do it directly:
// Standards stored at the governance agent
{
  "standards_id": "nike_emea_brand_safety",
  "name": "Nike EMEA Brand Safety Policy",
  "brand_id": "nike",
  "policy": "Sports and fitness content is ideal. Avoid violence, adult themes, drugs.",
  "calibration_exemplars": {
    "pass": [
      { "type": "url", "value": "https://espn.com/nba/story/_/id/12345/lakers-win", "language": "en" }
    ],
    "fail": [
      { "type": "url", "value": "https://tabloid.example.com/celebrity-scandal", "language": "en" }
    ]
  }
}
2. 購入時にスタンダード参照を渡す プロダクト探索やメディアバイ作成時に、ガバナンスエージェント参照を含めます:
{
  "product_id": "espn_sports_display",
  "packages": [...],
  "content_standards_ref": {
    "standards_id": "nike_emea_brand_safety",
    "agent_url": "https://brandsafety.ias.com"
  },
  "artifact_webhook": {
    "url": "https://your-platform.com/webhooks/artifacts",
    "authentication": {
      "schemes": ["HMAC-SHA256"],
      "credentials": "your-shared-secret-min-32-chars"
    },
    "delivery_mode": "batched",
    "batch_frequency": "hourly",
    "sampling_rate": 0.25
  }
}
パブリッシャーが基準を満たせない場合は買い付けを拒否します。拒否を適切に扱い、代替在庫を探してください。 3. Sales Agent からアーティファクトを受け取る Sales Agent は artifact_webhook にアーティファクトを送ります。これをガバナンスエージェントに転送して検証します:
# Receive artifact webhook from sales agent
@app.post("/webhooks/artifacts")
async def receive_artifacts(payload: ArtifactWebhookPayload):
    # Forward to governance agent for validation
    validation_result = await governance_agent.validate_content_delivery(
        standards_id=get_standards_id(payload.media_buy_id),
        records=[
            {"artifact": a.artifact, "record_id": a.impression_id}
            for a in payload.artifacts
        ]
    )

    # Log any failures
    for result in validation_result.results:
        if any(f.status == "failed" for f in result.features):
            log_brand_safety_incident(payload.media_buy_id, result)

    return {"status": "received", "batch_id": payload.batch_id}
4. ブランドへ報告 検証結果をブランドに提示します:
  • Incidents: 基準を満たさなかったコンテンツ
  • Coverage: 配信のうち検証された割合
  • Trends: コンテンツセーフティの経時変化

実装チェックリスト

  • Facilitate brand setup with governance agents
  • Include content_standards_ref in get_products and create_media_buy requests
  • Configure artifact_webhook to receive artifacts from sales agents
  • Handle rejections from publishers who can’t fulfill standards
  • Forward artifacts to governance agent via validate_content_delivery
  • Build reporting for brands

ガバナンスエージェント向け

ガバナンスエージェント(IAS、DoubleVerify など)はコンテンツ評価をサービスとして提供します。

実装するもの

1. コンテンツスタンダードをホストし提供する Store standards configurations and expose them via get_content_standards:
// Response to get_content_standards
{
  "standards_id": "nike_emea_brand_safety",
  "version": "1.2.0",
  "name": "Nike EMEA - all digital channels",
  "policy": "Sports and fitness content is ideal. Lifestyle content about health is good...",
  "calibration_exemplars": {
    "pass": [...],
    "fail": [...]
  }
}
2. calibrate_content を実装する Sales agents call this to align their local models before campaign execution. They send sample artifacts, you respond with how the brand would rate them:
def calibrate_content(standards_id: str, artifacts: list) -> dict:
    standards = get_standards(standards_id)
    evaluations = []

    for artifact in artifacts:
        # Evaluate against brand's policy
        result = evaluate_against_policy(artifact, standards)
        evaluations.append({
            "artifact_id": artifact["artifact_id"],
            "suitable": result.suitable,
            "confidence": result.confidence,
            "explanation": result.explanation  # Help them understand your reasoning
        })

    return {"evaluations": evaluations}
キャリブレーションは対話的です。追加質問やエッジケースに対応できるようにしてください。 3. validate_content_delivery を実装する Orchestrators call this to validate artifacts after delivery. Batch evaluation at scale:
def validate_content_delivery(standards_id: str, records: list) -> dict:
    standards = get_standards(standards_id)
    results = []

    for record in records:
        features = []
        for feature in ["brand_safety", "brand_suitability"]:
            evaluation = evaluate_feature(record["artifact"], standards, feature)
            features.append({
                "feature_id": feature,
                "status": "passed" if evaluation.passed else "failed",
                "value": evaluation.value,
                "message": evaluation.message if not evaluation.passed else None
            })
        results.append({
            "record_id": record["record_id"],
            "features": features
        })

    return {
        "summary": compute_summary(results),
        "results": results
    }

実装チェックリスト

  • Implement create_content_standards for brands to set up policies
  • Implement get_content_standards for sales agents to fetch policies
  • Implement calibrate_content for sales agents to align their models
  • Implement validate_content_delivery for orchestrators to validate delivery
  • Support dialogue in calibration (follow-up questions, edge cases)

Content Access Pattern

All three roles may need to exchange content securely. The content_access pattern provides authenticated access to a URL namespace:
{
  "content_access": {
    "url_pattern": "https://cache.example.com/*",
    "auth": {
      "type": "bearer",
      "token": "eyJ..."
    }
  }
}
  • url_pattern: URLs matching this pattern use this auth
  • auth.type: Authentication method (bearer, api_key, signed_url)
  • auth.token: The credential
Include this in:
  • get_content_standards response (governance agent → sales agent: “fetch examples here”)
  • get_media_buy_artifacts response (sales agent → orchestrator: “fetch content here”)
This avoids per-asset tokens and keeps payloads small while enabling secure content exchange.