> ## Documentation Index
> Fetch the complete documentation index at: https://adcp-docs-ja.pier1.co.jp/llms.txt
> Use this file to discover all available pages before exploring further.

# Creative Manifests

クリエイティブマニフェストは、ブランドコンテンツのプリセット（再利用可能な構成）を定義し、特定のクリエイティブフォーマットでインスタンス化できるようにします。

マニフェストは構造・レイアウト・レンダリング動作を定義しません。代わりに、クリエイティブフォーマットが定義した要件を満たす具体的なアセット値を提供します。フォーマット定義と組み合わせることで、レンダリング可能なクリエイティブインスタンスが生成されます。

フォーマット、マニフェスト、クリエイティブエージェントの連携概要は [Creative Protocol Overview](/docs/creative) を参照してください。

## Manifest Structure

### 基本構造

```typescript theme={null}
{
  format_id: {                 // Format this manifest is for
    agent_url: string;         // Creative agent URL
    id: string;                // Format identifier
  };
  promoted_offering?: string;  // Product being advertised (maps to create_media_buy)
  assets: {
    [asset_id: string]: {      // Keyed by asset_id from format's assets
      // Asset type is determined by format specification, not declared here
      // Type-specific fields depend on asset_type defined in format's assets

      // Image: url, width, height, format, alt_text
      // Video: url, width, height, duration_ms, format, bitrate_kbps
      // Audio: url, duration_ms, format, bitrate_kbps
      // Text: content, language
      // URL: url, description
      // HTML: content or url, version
      // CSS: content, media
      // JavaScript: content, module_type
      // VAST: url or content, vast_version, vpaid_enabled, duration_ms, tracking_events
      // DAAST: url or content, daast_version, duration_ms, tracking_events, companion_ads
      // Promoted Offerings: brand_manifest, product_selectors, offerings, asset_selectors
      // Webhook: url, method, timeout_ms, response_type, security, supported_macros, required_macros
    }
  };
}
```

### Asset ID

各アセットはフォーマットの `assets` 配列で定義された `asset_id` をキーにします。`asset_id` はフォーマット仕様の要件を参照するための技術的識別子です。

**Asset ID の仕組み**:

フォーマットが必須アセットを定義する場合:

```json theme={null}
{
  "assets": [
    {
      "asset_id": "banner_image",
      "asset_type": "image",
      "required": true
    },
    {
      "asset_id": "clickthrough_url",
      "asset_type": "url",
      "required": true
    }
  ]
}
```

マニフェストでは **同じ asset\_id をキーとして使用する必要があります**:

```json theme={null}
{
  "assets": {
    "banner_image": {        // ← format の asset_id と一致
      "url": "https://cdn.example.com/banner.jpg",
      "width": 300,
      "height": 250
    },
    "clickthrough_url": {    // ← format の asset_id と一致
      "url": "https://example.com/landing"
    }
  }
}
```

**一般的な asset\_id**（フォーマットによって異なります）:

* `banner_image`, `hero_image`: メインビジュアル
* `logo`: ブランドロゴ
* `headline`, `description`: テキスト
* `cta_text`: ボタン文言
* `video_file`: 動画コンテンツ
* `vast_tag`: 動画配信用 VAST XML
* `clickthrough_url`: ランディングページ URL

必須の asset\_id は必ずフォーマットの `assets` を確認してください。

### 完全な例

冗長なフィールドを省き、最新の構造を示すクリエイティブマニフェストの例です。

```json theme={null}
{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "display_300x250"
  },
  "promoted_offering": "Premium Dog Food",
  "assets": {
    "banner_image": {
      "asset_type": "image",
      "url": "https://cdn.example.com/banner.jpg",
      "width": 300,
      "height": 250
    },
    "headline": {
      "asset_type": "text",
      "content": "Nutrition Dogs Love"
    },
    "description": {
      "asset_type": "text",
      "content": "Made with real chicken and wholesome grains"
    },
    "clickthrough_url": {
      "asset_type": "url",
      "url": "https://acmecorp.example.com/products/premium-dog-food?campaign={MEDIA_BUY_ID}",
      "description": "Product landing page"
    }
  }
}
```

**Note**: 各アセットは `asset_type` 判別子（`image`、`text`、`url` など——[アセットタイプ](/docs/creative/asset-types)を参照）を運びます。これにより、バリデーターは 14 すべてではなく一致するアセットスキーマを選択し、選ばれた分岐のみに対してエラーを報告できます。フォーマット仕様も各 `asset_id` に期待される `asset_type` を宣言します。マニフェストとフォーマットは一致すべきです。

## クリエイティブマニフェストの種類

マニフェストは、上記の 3 つのクリエイティブエージェントモダリティに対応して、静的・動的・ハイブリッドになり得ます。

### 静的マニフェスト

即時レンダリング可能なすべてのアセットを含むマニフェストです。**Static Asset Delivery** または **Prompt to Static Rendering** モードのクリエイティブエージェントが生成します。

```json theme={null}
{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "native_responsive"
  },
  "assets": {
    "hero_image": {
      "asset_type": "image",
      "url": "https://cdn.example.com/hero.jpg",
      "width": 1200,
      "height": 627,
      "alt_text": "Product image"
    },
    "logo": {
      "asset_type": "image",
      "url": "https://cdn.example.com/logo.png",
      "width": 100,
      "height": 100
    },
    "headline": {
      "asset_type": "text",
      "content": "Premium Quality You Can Trust"
    },
    "description": {
      "asset_type": "text",
      "content": "Discover why veterinarians recommend our formula"
    },
    "cta_text": {
      "asset_type": "text",
      "content": "Learn More"
    }
  }
}
```

**ユースケース**:

* 従来のディスプレイ広告
* 事前レンダリングされた動画広告
* 静的ネイティブ広告
* 固定クリエイティブキャンペーン

### 動的マニフェスト

リアルタイム生成用のエンドポイントやコードを含むマニフェストです。**Prompt to Dynamic Rendering** モード（DCO/生成系）で生成されます。

```json theme={null}
{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "display_dynamic_300x250"
  },
  "assets": {
    "dynamic_content": {
      "asset_type": "webhook",
      "url": "https://creative-agent.example.com/render/campaign-123",
      "method": "POST",
      "timeout_ms": 500,
      "supported_macros": ["WEATHER", "TIME", "DEVICE_TYPE", "COUNTRY"],
      "response_type": "html",
      "security": {
        "method": "hmac_sha256",
        "hmac_header": "X-Signature"
      }
    },
    "fallback_image": {
      "asset_type": "image",
      "url": "https://cdn.example.com/fallback-300x250.jpg",
      "width": 300,
      "height": 250
    }
  }
}
```

**ユースケース**:

* 天候連動クリエイティブ
* 時間帯に応じたメッセージ切り替え
* 商品在庫状況のメッセージ
* リアルタイム在庫更新

**Note**: クライアントサイドで動的レンダリングする場合は、webhook の代わりに `html` や `javascript` アセットタイプでタグを埋め込みます。

**動的マニフェストはアセットタイプを混在させられます** — 一部は静的（画像・動画）、一部は動的（webhook、マクロ入りタグ）。例: 静的なヒーロー動画とパーソナライズされたエンドカード webhook を含む動画 VAST タグ。

### DOOH マニフェスト（インプレッション計測あり）

デジタル屋外広告 (DOOH) では、他のフォーマット同様インプレッショントラッキングを使用しますが、デバイス識別子の代わりに会場固有のマクロを利用します。

```json theme={null}
{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "dooh_billboard_1920x1080"
  },
  "promoted_offering": "Premium Coffee Blend",
  "assets": {
    "billboard_image": {
      "url": "https://cdn.example.com/billboard-1920x1080.jpg",
      "width": 1920,
      "height": 1080
    },
    "impression_tracker": {
      "url": "https://tracking.example.com/imp?screen={SCREEN_ID}&venue={VENUE_TYPE}&ts={PLAY_TIMESTAMP}&lat={VENUE_LAT}&lon={VENUE_LONG}",
      "url_type": "tracker_pixel"
    }
  }
}
```

**DOOH 特有のマクロ**（完全な一覧は [Universal Macros](/docs/creative/universal-macros) を参照）:

* `{SCREEN_ID}` - 物理スクリーンの一意識別子
* `{VENUE_TYPE}` - 会場カテゴリ（airport, mall, transit, highway, retail）
* `{VENUE_LAT}` / `{VENUE_LONG}` - 位置座標
* `{PLAY_TIMESTAMP}` - 掲出時刻（Unix タイムスタンプ）
* `{DWELL_TIME}` - 平均滞在時間

仕組みはデジタル広告のインプレッション計測と同じで、表示時に URL が発火します。違いは、DOOH ではデバイス ID ではなく固定の会場コンテキストを使う点です。

## マニフェストの扱い

### マニフェストの作成

マニフェスト（JSON）は次の 2 通りで作成できます。

**1. 手動組み立て**

フォーマット要件と自社アセットを直接組み合わせます。

```json theme={null}
{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "native_responsive"
  },
  "promoted_offering": "Premium Salmon Formula",
  "assets": {
    "hero_image": {
      "asset_type": "image",
      "url": "https://cdn.example.com/salmon-hero.jpg",
      "width": 1200,
      "height": 627
    },
    "headline": {
      "asset_type": "text",
      "content": "New Premium Salmon Formula"
    }
  }
}
```

**2. AI 生成（任意）**

クリエイティブエージェントに `build_creative` を呼び出し、自然言語のブリーフからマニフェストを生成します。詳細は [Generative Creative](/docs/creative/generative-creative) を参照してください。

### マニフェストの検証

使用前にマニフェストをフォーマット要件と照合します。

1. **フォーマット整合性**: `format_id` が意図したフォーマットと一致しているか
2. **必須アセット**: フォーマットで必須 (`required: true`) の `asset_id` がすべて `assets` オブジェクトに存在するか
3. **キー一致**: マニフェストの `assets` オブジェクト内の各キーがフォーマットの `assets` 配列の `asset_id` と一致しているか
4. **アセット仕様**: 寸法・ファイルサイズ・尺などフォーマット要件を満たしているか
5. **マクロサポート**: 動的マニフェストの場合、必要なマクロに対応しているか

**無効な asset\_id の扱い**

* **必須 asset\_id の欠落**: クリエイティブエージェントは欠落した必須アセットをエラーで返し、拒否しなければなりません
* **未知の asset\_id**: フォーマットに存在しないキーを含むマニフェストは拒否し、タイプミスや非対応フォーマットを即座に検出します
* **asset\_type の不一致**: フォーマット仕様で要求されたタイプと異なる場合は明確な型不一致エラーで拒否します

`build_creative` を実装するクリエイティブエージェントは検証を自動で行います。手動で組み立てる場合は、`list_creative_formats` で返されるフォーマット仕様と照合してください。

**フォーマットを前提とした検証**: マニフェストの JSON スキーマでは資産キーに柔軟なパターン（`^[a-z0-9_]+$`）を採用しています。正しいキーかどうか、どのタイプかはフォーマットの `assets` を参照して実行時に検証します。asset\_type 情報はマニフェスト自体には含まれず、`asset_id` をフォーマットの `assets` 配列で引くことで決まります。

#### 検証フロー

クリエイティブエージェントがマニフェストを検証する際:

1. マニフェストから **format\_id** を取得
2. フォーマットレジストリからフォーマット仕様を取得（`agent_url` に応じてローカル/リモート）
3. **`manifest.assets` 内の各アセットキーについて:**
   * フォーマットの `format.assets` で `asset_id` を検索
   * 見つからなければ → 「Unknown asset\_id ...」のエラーで拒否
   * 見つかれば → フォーマット要件から期待する `asset_type` を特定
   * アセットタイプスキーマ（例: `/schemas/v3/core/assets/image-asset.json`）を取得
   * アセットペイロードをスキーマに対して検証
   * フォーマットの `requirements` フィールドにある追加制約を検証
4. **必須アセットがすべて存在するか確認**（フォーマットで `required: true` のもの）
5. **タイプ固有の制約を検証**（寸法、ファイルサイズ、尺など）

フォーマット仕様が、各 `asset_id` のタイプと適用される制約の単一の信頼できる情報源となります。

**検証はスキーマ時ではなく実行時**: クリエイティブマニフェストの JSON スキーマはアセットキーに柔軟なパターンを使っています。妥当性チェックは、マニフェストをクリエイティブエージェントに送信した際に、対応するフォーマットの `assets` を基に行われます。

### マニフェストのプレビュー

`preview_creative` タスクでマニフェストのレンダリングを確認します。

```json theme={null}
{
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "native_responsive"
  },
  "creative_manifest": {
    "format_id": {
      "agent_url": "https://creative.adcontextprotocol.org",
      "id": "native_responsive"
    },
    "assets": {
      "hero_image": {
        "url": "https://cdn.example.com/hero.jpg",
        "width": 1200,
        "height": 627
      },
      // ... other assets
    }
  },
  "macro_values": {
    "CLICK_URL": "https://example.com/landing",
    "CACHE_BUSTER": "12345"
  }
}
```

クリエイティブエージェントはプレビュー URL とレンダリング結果を返します。

### マニフェストの送信

マニフェストは `sync_creatives` でクリエイティブラリに登録し、メディアバイで ID を参照します。

```json theme={null}
{
  "task": "sync_creatives",
  "parameters": {
    "creatives": [
      {
        "creative_id": "native-salmon-v1",
        "name": "Salmon Special Native Ad",
        "format_id": {
          "agent_url": "https://creative.adcontextprotocol.org",
          "id": "native_responsive"
        },
        "manifest": {
          "format_id": {
            "agent_url": "https://creative.adcontextprotocol.org",
            "id": "native_responsive"
          },
          "promoted_offering": "Fresh Pacific Salmon",
          "assets": {
            "headline": {
              "content": "Fresh Pacific Salmon - 20% Off Today"
            },
            "main_image": {
              "url": "https://cdn.example.com/salmon.jpg",
              "width": 1200,
              "height": 628
            }
          }
        }
      }
    ]
  }
}
```

その後、メディアバイで `creative_id` を参照します。マニフェストは 1 つのフォーマットに対応します。

## マクロ置換

マニフェストは動的値のためのマクロプレースホルダーをサポートします。AdCP ではすべてのパブリッシャーで一貫して動作するユニバーサルマクロを使用します。

利用可能なマクロ、置換プロセス、フォーマット固有のマクロサポートについては [Universal Macros](/docs/creative/universal-macros) を参照してください。

## Best Practices

### クリエイティブエージェント向け

1. **完全なマニフェスト**: フォーマットの必須アセットをすべて含めます
2. **アセット検証**: アセットがフォーマット仕様を満たすことを確認します
3. **フォールバック提供**: 動的クリエイティブにはフォールバックアセットを含めます
4. **マクロの明示**: 使用するマクロを明確にします
5. **バージョニング**: アセット管理のためにバージョン付き URL を使用します

### パブリッシャー向け

1. **受領時の検証**: フォーマット要件と照合します
2. **アセットキャッシュ**: ホストされたアセットを事前取得・キャッシュします
3. **障害対応**: 動的マニフェストにはフォールバックレンダリングを実装します
4. **マクロサポート**: ユニバーサルマクロを実装します
5. **テンプレート提供**: カスタムフォーマット向けにレンダリングテンプレートを提供します

### バイヤー向け

1. **検証**: マニフェストがフォーマット要件を満たすことを確認（手動または `build_creative`）
2. **プレビュー**: 送信前に必ずプレビューします
3. **マクロテスト**: マクロ置換が期待どおりか確認します
4. **アセット最適化**: アセットのサイズや圧縮を適切に行います
5. **ライブラリ整理**: クリエイティブラリでアセット管理を行います

## Advanced Topics

### カタログ

カタログ駆動のフォーマット（プロダクトカルーセル、ダイナミックプロダクト広告）のマニフェストは、カタログを `assets` マップ内のアセットとして含めます。ワークフローについては[クリエイティブ内のカタログ](/docs/creative/catalogs#catalogs-in-creatives)を参照してください。

### 繰り返し可能なアセットグループ

カルーセルやスライドショーなど複数アセットのフォーマットについては、[Carousel & Multi-Asset Formats](/docs/creative/channels/carousels) を参照してください。

## スキーマリファレンス

* [Creative Manifest Schema](https://adcontextprotocol.org/schemas/v3/core/creative-manifest.json)
* [Preview Creative Request](https://adcontextprotocol.org/schemas/v3/creative/preview-creative-request.json)
* [Preview Creative Response](https://adcontextprotocol.org/schemas/v3/creative/preview-creative-response.json)

## 関連ドキュメント

* [Creative Formats](/docs/creative/formats) - フォーマット仕様とディスカバリー
* [Channel Guides](/docs/creative/channels/video) - 動画・ディスプレイ・音声・DOOH・カルーセルのフォーマット例
* [build\_creative タスク](/docs/creative/task-reference/build_creative)
* [preview\_creative タスク](/docs/creative/task-reference/preview_creative)
