> ## 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.

# クリエイティブライブラリとコンセプト

> AdCP のクリエイティブライブラリは、バイヤーが広告サーバーや管理プラットフォーム全体でクリエイティブを参照・整理し、承認状態を追跡できるようにします。

クリエイティブライブラリは、バイヤーが AdCP を通じてクリエイティブを管理できるようにする — 既存のアセットの参照、新しいもののアップロード、キャンペーンへの割り当て、承認状態の追跡。クリエイティブライブラリは、ケイパビリティで `has_creative_library: true` を宣言するエージェントがホストする: 広告サーバー（CM360、Flashtalking）、クリエイティブ管理プラットフォーム（Celtra）、またはクリエイティブプロトコルも公開するセールスエージェント。

## モデル

クリエイティブライブラリは、安定した `creative_id`、観測可能なライフサイクル状態、そして任意の一つのメディアバイやパッケージとは別個の割り当て関係を持つ、アカウントスコープのクリエイティブリソースのコレクションです。実装は、完全なアドサーバーライブラリでも、セラーのストレージ上の薄いビューでもかまいませんが、プロトコルのコミットメントは同じです: バイヤーは `list_creatives` を通じてクリエイティブリソースを読み、`sync_creatives` を通じて更新し、セラーがそれを保持している間、割り当てをまたいで `creative_id` で参照できます。

クリエイティブライブラリを表明しないセラーからのインラインパッケージクリエイティブは、ライブラリクリエイティブではありません。それらはパッケージスコープのクリエイティブ添付です: セラーはそれらをメディアバイの一部として受け入れ配信しますが、独立したライブラリ管理やバイをまたぐ再利用は表明しません。

クリエイティブライブラリは3つのレベルでアセットを整理する:

| レベル     | AdCP 相当                                            | 例                                                      |
| ------- | -------------------------------------------------- | ------------------------------------------------------ |
| アカウント   | アカウント（[accounts プロトコル](/docs/accounts/overview)経由） | CM360 の広告主、Celtra のブランドワークスペース                         |
| コンセプト   | `concept_id` / `concept_name`                      | Flashtalking コンセプト、CM360 クリエイティブグループ、Celtra キャンペーンフォルダ |
| クリエイティブ | `creative_id`、`format_id`、`assets` を持つクリエイティブアイテム  | 300x250 ディスプレイ広告、30 秒ビデオスポット                           |

**コンセプト**はサイズとフォーマットをまたいで関連するクリエイティブをグループ化します。"Holiday 2026" コンセプトは 300x250 バナー、728x90 リーダーボード、30 秒ビデオを含む場合がある — すべて同じキャンペーンアイデアを表現しています。`concept_id` を使用してグループとしてフィルタリングと管理を行います。

### クリエイティブの状態と割り当ての状態は別物

ライブラリが独立して追跡する二つのもの:

* **クリエイティブの状態** — クリエイティブ自体のレビューステータス: `processing`、`pending_review`、`approved`、`rejected`、`archived`。クリエイティブエージェントのレビューワークフローが設定します。どこで使われるかに関わらず、ライブラリアセットとしてのクリエイティブに適用されます。
* **割り当ての状態** — クリエイティブと特定のメディアバイ上のパッケージとの関係。バイヤーがクリエイティブを割り当てたとき（`sync_creatives`、`creative_assignments`、または `create_media_buy` のインラインクリエイティブを介して）に作成されます。メディアバイまたはパッケージが拒否、キャンセル、完了されたとき、またはバイヤーが割り当てを削除したときに解放されます。

これらのライフサイクルは独立して追跡されます:

* ライブラリ内のクリエイティブは、任意の時点で**ゼロ個以上**のアクティブな割り当てを持ちます。
* メディアバイを拒否、キャンセル、完了すると、その割り当てが解放されます。それはクリエイティブのレビュー状態を変えず、クリエイティブをライブラリから削除せず、他のメディアバイでのクリエイティブの使用にも影響しません。
* 割り当てが存在した後にクリエイティブのレビュー状態が変わったとき（例: セラーが承認を取り消す、または以前に拒否されたクリエイティブを承認する）、セラーは新しい状態に基づいて実行中の配信を続行または停止してもよい（MAY）。バイヤーは、クリエイティブの状態変更後に割り当てレベルの影響を検出するために、[`get_media_buys`](/docs/media-buy/task-reference/get_media_buys) を介してパッケージごとに `approval_status` を再取得すべきです（SHOULD）。[クリエイティブレビュー](/docs/creative/sales-agent-creative-capabilities#creative-review)を参照。

新しいメディアバイでライブラリクリエイティブを再利用するバイヤーエージェントは、アセットが使用可能かを知るために**クリエイティブの状態**を、それが現在どこで実行中かを知るために**割り当ての状態**を確認します。

### クリエイティブはキャンペーンより長生きする

クリエイティブは、それを参照するバイとは独立してライブラリに永続化しなければなりません（MUST）。バイの拒否、キャンセル、完了は割り当てのみを解放します——クリエイティブは現在の `status` のままライブラリに残り、後続のバイで再利用できます。これは、クリエイティブがどのようにライブラリに入ったかに関わらず成立します: 明示的な [`sync_creatives`](/docs/creative/task-reference/sync_creatives)、[`create_media_buy`](/docs/media-buy/task-reference/create_media_buy) 上のライブラリ裏付けインラインクリエイティブ、または AdCP を通じて公開されるプラットフォームネイティブなアップロード。基盤となるアドサーバーがバイごとの添付とは別のライブラリオブジェクトを持たないセラーは、バイの存続期間中は `list_creatives` を通じてバイヤーが同期したクリエイティブを公開し、テアダウン後もその終端状態（`archived` を含む）を公開し続けることで、このルールを満たします——ライブラリはバイごとのストレージ上の薄いビューでよく、別個のストアである必要はありません。

アクティブな割り当てを超える保持はセラーが定義します。エージェントは、非アクティブ、フライト後の期限切れ、またはストレージポリシーのために未割り当てのクリエイティブをアーカイブしてもよく（MAY、[クリエイティブステータスのライフサイクル](/docs/creative/specification#クリエイティブステータスのライフサイクル)を参照）、公開済み投稿の認可の期限切れのような回復可能な依存関係の喪失のために `approved` → `suspended` へ遷移してもよく（MAY）、ポリシーの失効、テイクダウン、コンテンツドリフトのために `approved` → `rejected` へ遷移してもよい（MAY）。バイヤーが同期した後にクリエイティブの状態が変わるときは常に、バイヤーが再利用の前に再同期、置換、またはそのアセットへの依存の停止ができるよう、セラーは新しい状態を観測可能にしなければなりません（MUST）:

* アクティブなメディアバイに影響する状態変更（例: ライブな割り当てを持つクリエイティブの `approved` → `suspended` または `approved` → `rejected`）については、セラーはバイに対応する `impairment` を表面化しなければなりません（MUST）。[メディアバイの健全性](/docs/media-buy/media-buys/lifecycle#health-and-dependency-impairment)を参照。
* アクティブな割り当てのないクリエイティブの状態変更（例: セラーが非アクティブのために未割り当てのクリエイティブをアーカイブする）については、セラーは次の [`list_creatives`](/docs/creative/task-reference/list_creatives) の読み取りで新しい `status` を反映しなければなりません（MUST）——[snapshot-and-log 契約](/docs/protocol/snapshot-and-log)に従い、そのスナップショットが今日の準拠シグナルです。アカウントスコープのクリエイティブ状態変更のためのプッシュチャネルは[クリエイティブライフサイクルウェブフックの RFC](https://github.com/adcontextprotocol/adcp/issues/2261) の下で定義中です。そのチャネルが出荷されたら、セラーはそれでも追加で発火すべきです（SHOULD）。

バイヤーは、新しいバイで再利用する前に [`list_creatives`](/docs/creative/task-reference/list_creatives) を介して可用性を確認すべきです（SHOULD）。ライブラリクリエイティブは、バイヤーが供給した入力のバンドル——アップロードされたアセット、ブリーフ、ブランドとカタログのポインタ、またはそれらの組み合わせ——です。保持はバンドルに適用されます。フォーマットのレンダリングされた出力が個別にアドレス可能かどうかはフォーマットレベルの関心事であり、ライブラリの保持とは独立しています。

## ライブラリへの接続

クエリ前にアカウントアクセスを確立する:

```json theme={null}
{
  "accounts": [{
    "account_id": "acct_acme_2026",
    "account_name": "Acme Corp",
    "credentials": {
      "api_key": "..."
    }
  }]
}
```

アカウントのセットアップは、ライブラリがスタンドアロンのクリエイティブエージェントにあるかセールスエージェントにあるかに関わらず同じです。詳細は [accounts プロトコル](/docs/accounts/overview)を参照。

## クリエイティブの参照

[`list_creatives`](/docs/creative/task-reference/list_creatives) を使用してライブラリを参照します。コンセプト、フォーマット、ステータス、タグ、または日付範囲でフィルタリングする:

```json theme={null}
{
  "filters": {
    "concept_ids": ["concept_holiday_2026"],
    "statuses": ["approved"],
    "format_ids": [{
      "agent_url": "https://ads.flashtalking-example.com",
      "id": "display_300x250"
    }]
  },
  "include": {
    "variables": true,
    "assignments": true
  }
}
```

レスポンスの各クリエイティブには次の情報が含まれます:

```json theme={null}
{
  "creative_id": "ft_88201",
  "name": "Holiday 2026 - Medium Rectangle",
  "format_id": {
    "agent_url": "https://ads.flashtalking-example.com",
    "id": "display_300x250"
  },
  "status": "approved",
  "concept_id": "concept_holiday_2026",
  "concept_name": "Holiday 2026 Campaign",
  "created_date": "2026-10-15T14:00:00Z",
  "updated_date": "2026-11-20T09:30:00Z",
  "tags": ["holiday_2026", "display"],
  "variables": [
    {
      "variable_id": "headline",
      "name": "Headline text",
      "type": "text",
      "default_value": "Holiday Sale — Up to 40% Off"
    }
  ],
  "assignments": [
    { "package_id": "pkg_premium_display", "weight": 100 }
  ]
}
```

`status` フィールドはライブラリ内のクリエイティブの現在の状態を反映する: `processing`、`pending_review`、`approved`、`rejected`、`archived`。ステータス遷移の仕組みについては[クリエイティブレビュー](/docs/creative/sales-agent-creative-capabilities#creative-review)を参照。

## クリエイティブのアップロード

[`sync_creatives`](/docs/creative/task-reference/sync_creatives) を使用して新しいクリエイティブをアップロードするか既存のものを更新します。この操作は upsert セマンティクスを使用する — `creative_id` がすでに存在する場合は更新し、そうでなければ作成します。

```json theme={null}
{
  "creatives": [
    {
      "creative_id": "acme_video_001",
      "name": "Holiday Sale 30s",
      "format_id": {
        "agent_url": "https://creative.adcontextprotocol.org",
        "id": "video_standard_30s"
      },
      "assets": {
        "video": {
          "url": "https://cdn.acme-example.com/holiday-sale-30s.mp4",
          "width": 1920,
          "height": 1080,
          "duration_ms": 30000
        },
        "click_url": {
          "url": "https://acme-example.com/holiday-sale"
        }
      }
    }
  ]
}
```

レスポンスは各クリエイティブに何が起きたかを示します:

```json theme={null}
{
  "creatives": [
    {
      "creative_id": "acme_video_001",
      "action": "created"
    }
  ]
}
```

アップロード後、クリエイティブはライブラリのレビュープロセスに入る。`list_creatives` を確認して `pending_review` から `approved` への遷移を確認します。

### アサインメント付きアップロード

同じ呼び出しでクリエイティブをパッケージに割り当てる:

```json theme={null}
{
  "creatives": [
    {
      "creative_id": "acme_video_001",
      "name": "Holiday Sale 30s",
      "format_id": { "agent_url": "...", "id": "video_standard_30s" },
      "assets": { "...": "..." }
    }
  ],
  "assignments": [
    {
      "creative_id": "acme_video_001",
      "package_id": "pkg_premium_video"
    }
  ]
}
```

## ライブラリクリエイティブからのタグ生成

ライブラリのクリエイティブに配信タグが必要な場合は、マニフェストの代わりに `creative_id` を使って [`build_creative`](/docs/creative/task-reference/build_creative) を使用します:

```json theme={null}
{
  "creative_id": "ft_88201",
  "concept_id": "concept_holiday_2026",
  "target_format_id": {
    "agent_url": "https://ads.flashtalking-example.com",
    "id": "display_300x250"
  }
}
```

クリエイティブエージェントはライブラリから `creative_id` を解決し、配信タグを含むマニフェストを返します。タグフォーマットはプラットフォームによって異なる:

* **Flashtalking、Celtra**: どんな環境にも適応するユニバーサルタグ。プレースメントコンテキスト不要。
* **CM360**: トラフィッキングコンテキストが必要なプレースメントレベルのタグ。`media_buy_id` と `package_id` を渡す:

```json theme={null}
{
  "creative_id": "cm360_creative_12345",
  "target_format_id": {
    "agent_url": "https://ads.cm360-example.com",
    "id": "display_300x250"
  },
  "media_buy_id": "buy_holiday_q4",
  "package_id": "pkg_premium_display"
}
```

詳しくは[タグ生成モデル](/docs/creative/implementing-creative-agents#tag-generation-models)を参照。

## クリエイティブのキャンペーンへの割り当て

ライブラリクリエイティブをメディアバイに付与するには2つのパスがある:

### パス 1: パッケージのクリエイティブアサインメント

メディアバイ作成時に ID でライブラリクリエイティブを参照する:

```json theme={null}
{
  "packages": [{
    "product_id": "premium_display",
    "creative_assignments": [
      { "creative_id": "ft_88201", "weight": 60 },
      { "creative_id": "ft_88202", "weight": 40 }
    ]
  }]
}
```

これは、クリエイティブがすでにエージェントのライブラリにある場合（`sync_creatives` またはプラットフォーム独自のアップロードフローを経由して）に機能します。

### パス 2: パッケージのインラインクリエイティブ

メディアバイと一緒にクリエイティブを直接アップロードする — 別途同期ステップ不要:

```json theme={null}
{
  "packages": [{
    "product_id": "premium_display",
    "creatives": [{
      "creative_id": "acme_banner_001",
      "name": "Holiday banner",
      "format_id": { "agent_url": "...", "id": "display_300x250" },
      "assets": { "...": "..." }
    }]
  }]
}
```

`creative.has_creative_library: true` も表明するセラーでは、エージェントはクリエイティブをライブラリに追加し、1つの操作でパッケージに割り当てます。クリエイティブライブラリを表明しないインライン専用のセラーでは、同じ `creatives` ペイロードは、再利用可能なライブラリエントリを作成せずにパッケージスコープのアセットを割り当てます。詳細は[インラインクリエイティブ管理](/docs/creative/sales-agent-creative-capabilities)を参照。

**ライブラリ裏付けのインラインクリエイティブは、`sync_creatives` のアップロードと同じライブラリライフサイクルに従います。** セラーが `creative.has_creative_library: true` を表明する場合、インライン形式は「1 回の呼び出しで同期して割り当てる」という利便性であって、別個のライフサイクルではありません。提出されると、クリエイティブは `sync_creatives` の下で持つのと同じレビューフロー、保持、識別子でライブラリに入ります。`create_media_buy` タスクが `pending_manual` として解決されバイが決してアクティブにならない場合、またはバイが拒否またはキャンセルされる場合、解放されるのはパッケージの割り当てのみです。クリエイティブはライブラリに残り、後続の `create_media_buy` 呼び出しで `creative_id` により参照できます。この割り当て解放の動作はメディアバイ側で規範的です——[メディアバイの状態遷移](/docs/media-buy/specification#media-buy-state-transitions)のルールを参照。

インライン専用のセラーでは、バイヤーはクリエイティブ本体をメディアバイのパッケージに添付されたものとして扱うべきです。セラーは、バイをレビュー、配信、置換、監査するのに十分なパッケージスコープのクリエイティブ状態を保持するかもしれませんが、`list_creatives`、`sync_creatives`、後の `creative_assignments` の再利用のような再利用可能なライブラリ操作は表明していません。

クリエイティブレビューはメディアバイの結果とは独立して進みます。セラーは、バイがアクティブにならなかったという理由だけでレビューをスキップしてはなりません（MUST NOT）。バイの拒否はそれ自体では提出されたクリエイティブの拒否を意味しません——クリエイティブの拒否は、含まれるバイのステータスから暗黙的にではなく、それ自身の `rejection_reason` を持つ意図的なレビューの判断でなければなりません（MUST）。セラーは、将来の割り当てがアクティブになる前にレビューが完了する限り、現在アクティブな割り当てのないクリエイティブのレビューを後回しにしてもよい（MAY）。

**ケイパビリティフラグのスコープ。** `inline_creative_management: true` は、セールスエージェントが `create_media_buy` と `update_media_buy` でインラインクリエイティブを受け入れることを表明します。それ自体ではクリエイティブライブラリを表明しません。分離されたライブラリライフサイクルは、セラーが `creative.has_creative_library: true` も表明する場合に適用されます。

### マルチセラー配布

複数のセラーと作業する場合、クリエイティブを一度ビルドして配布する:

1. クリエイティブエージェントで**ビルド**する:

```json theme={null}
{
  "message": "Create a holiday promotion banner",
  "target_format_ids": [
    { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_300x250" },
    { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_728x90" }
  ]
}
```

2. 各セラーのライブラリに**同期**する:

```json theme={null}
{
  "creatives": [
    {
      "creative_id": "holiday_2026_300x250",
      "name": "Holiday 2026 - Medium Rectangle",
      "concept_id": "concept_holiday_2026",
      "format_id": { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_300x250" },
      "assets": { }
    }
  ]
}
```

各セールスエージェントで `sync_creatives` を個別に呼び出す。セラー間で同じ `creative_id` と `concept_id` を使用して、メディアバイ全体で同じクリエイティブとキャンペーンコンセプトを関連付けられるようにします。完全なパターンは[マルチエージェントクリエイティブオーケストレーション](/docs/creative/multi-agent-orchestration)を参照。

3. セラーごとに**承認状態を追跡**する — 各セラーは独立してレビューします。各エージェントで `list_creatives` をポーリングしてステータスを確認します。クリエイティブはポリシーに基づいて、あるセラーでは `approved`、別のセラーでは `rejected` になる場合があります。

## 承認状態の追跡

クリエイティブの承認は2つのレベルで動作する:

**ライブラリレベル**: [`list_creatives`](/docs/creative/task-reference/list_creatives) の各クリエイティブの `status` フィールド — `processing`、`pending_review`、`approved`、`rejected`、`archived`。

**パッケージレベル**: [`get_media_buys`](/docs/media-buy/task-reference/get_media_buys) の各クリエイティブの `approval_status` — `pending_review`、`approved`、または `rejection_reason` 付きの `rejected`。

クリエイティブはライブラリでは `approved` でも、プレースメント固有のポリシーに違反する場合はパッケージレベルで `rejected` になる可能性があります。新しいクリエイティブを同期またはメディアバイに提出した後は、両方をポーリングします。

## ダイナミッククリエイティブ最適化（DCO）

動的コンテンツ変数を持つクリエイティブは、`include: { variables: true }` を要求するとライブラリに `variables` 配列付きで表示されます。各変数は広告サーバーが配信時に埋める槽を定義します:

```json theme={null}
{
  "variables": [
    {
      "variable_id": "headline",
      "name": "Headline text",
      "type": "text",
      "default_value": "Holiday Sale — Up to 40% Off"
    },
    {
      "variable_id": "product_image",
      "name": "Product image",
      "type": "image",
      "default_value": "https://cdn.acme-example.com/hero.jpg"
    },
    {
      "variable_id": "cta_color",
      "name": "CTA button color",
      "type": "color",
      "default_value": "#FF6600"
    }
  ]
}
```

`list_creatives` フィルターで `has_variables: true` を使用して DCO クリエイティブを見つける。変数タイプは一般的なプラットフォームパターンと一致する: `text`、`color`、`image`、`video`、`number`、`boolean`。

広告サーバーが配信時にこれらの変数をどのように使用するか（データフィード、ターゲティングルール、最適化アルゴリズム）は AdCP のスコープ外です。AdCP は変数の*スロット*をモデル化し、最適化ロジックはモデル化しません。

## 次のステップ

* [生成クリエイティブ](/docs/creative/generative-creative) — AI 駆動のクリエイティブ生成とメディアバイ内のブリーフワークフロー
* [セールスエージェントのクリエイティブ機能](/docs/creative/sales-agent-creative-capabilities) — セラーがメディアとクリエイティブの両方を管理する場合
* [クリエイティブエージェントの実装](/docs/creative/implementing-creative-agents) — プラットフォームを中心に AdCP クリエイティブエージェントを構築します
* [sync\_creatives リファレンス](/docs/creative/task-reference/sync_creatives) — アップロード API の詳細
* [list\_creatives リファレンス](/docs/creative/task-reference/list_creatives) — 完全なフィルタリングオプションを含むクエリ API の詳細
