高度なフィルタリング、ソート、ページネーション、オプションのデータ拡張を備えたクリエイティブラ イブラリ検索タスクです。柔軟なクエリでクリエイティブアセットを効率よく探索・管理できます。
応答時間: 約 1 秒(シンプルな DB 参照)
list_creatives はクリエイティブラ イブラリに対する包括的な検索・フィルタリング機能を提供します。複数のフィルター、ソート、ページネーション、割り当て/パフォーマンスなどの拡張データの含有をサポートします。
主な特徴:
- 高度なフィルタリング: フォーマット、ステータス、タグ、日付、割り当てなどで検索
- 柔軟なソート: 作成日、更新日、名前、ステータス、パフォーマンス指標で並べ替え
- ページネーション: 大規模ライブラリを効率的に取得
- データ拡張の任意指定: 割り当て情報、パフォーマンスデータ、サブアセットを必要に応じて含める
- フィールド選択: 返却フィールドを限定しレスポンスサイズを最適化
- タグベース探索: 「すべてのタグ一致」と「いずれかのタグ一致」に対応
- 割り当てステータスでの絞り込み: 割り当て済み/未割り当て/特定パッケージ向けを検索
リクエストパラメーター
基本パラメーター
| Parameter | Type | Required | Description |
|---|
filters | object | No | クリエイティブ検索のフィルター条件 |
sort | object | No | ソート条件 |
pagination | object | No | ページネーション制御 |
データ含有オプション
| Parameter | Type | Required | Description |
|---|
include_assignments | boolean | No | パッケージ割り当て情報を含める(デフォルト: true) |
include_performance | boolean | No | パフォーマンス指標を含める(デフォルト: false) |
include_sub_assets | boolean | No | カルーセル/ネイティブなどのサブアセットを含める(デフォルト: false) |
fields | array | No | 返却するフィールドを限定(未指定なら全フィールド) |
フィルターオプション
フォーマットとステータス
{
"filters": {
"formats": ["video"], // フォーマット種別で絞り込み
"statuses": ["approved", "pending_review"] // ステータスで絞り込み
}
}
アーカイブ済みクリエイティブはデフォルト除外です。 status: "archived" を指定するか、statuses 配列に "archived" を含めて明示的に取得してください。
タグフィルター
{
"filters": {
"tags": ["q1_2024", "video"], // すべてのタグに一致 (AND)
"tags_any": ["mobile", "desktop"] // いずれかのタグに一致 (OR)
}
}
テキスト検索
{
"filters": {
"name_contains": "nike", // 名前の部分一致(大文字小文字を区別しない)
"creative_ids": ["hero_video", "banner_300x250"] // 特定 ID
}
}
日付範囲フィルター
{
"filters": {
"created_after": "2024-01-01T00:00:00Z",
"created_before": "2024-12-31T23:59:59Z",
"updated_after": "2024-06-01T00:00:00Z",
"updated_before": "2024-06-30T23:59:59Z"
}
}
割り当てステータス
{
"filters": {
"assigned_to_packages": ["pkg_ctv_001"], // いずれかのパッケージに割り当て済み
"media_buy_ids": ["mb_123", "mb_456"], // いずれかのメディアバイに割り当て済み
"buyer_refs": ["campaign_abc", "campaign_xyz"], // 該当 buyer_ref を持つメディアバイに割り当て済み
"unassigned": true // 未割り当てのみ
}
}
パフォーマンスフィルター
{
"filters": {
"has_performance_data": true // パフォーマンスデータが存在するもののみ
}
}
ソートオプション
昇順/降順を指定して並べ替えます。
{
"sort": {
"field": "created_date", // created_date, updated_date, name, status, assignment_count, performance_score
"direction": "desc" // asc または desc
}
}
利用可能なソートフィールド:
created_date - アップロード日時(デフォルト)
updated_date - 最終更新日時
name - クリエイティブ名(アルファベット順)
status - 審査ステータス
assignment_count - パッケージ割り当て数
performance_score - 集計パフォーマンス指標
ページネーション
結果件数とナビゲーションを制御します。
{
"pagination": {
"limit": 50, // 1ページあたり最大件数 (1-100, デフォルト: 50)
"offset": 0 // スキップ件数 (デフォルト: 0)
}
}
レスポンス形式
必要に応じた拡張データ付きでクリエイティブ情報を返却します。
{
"message": "Found 25 creatives matching your query",
"context_id": "ctx_list_789012",
"query_summary": {
"total_matching": 25,
"returned": 10,
"filters_applied": ["format=video", "status=approved"]
},
"pagination": {
"limit": 10,
"offset": 0,
"has_more": true,
"total_pages": 3,
"current_page": 1
},
"creatives": [
{
"creative_id": "hero_video_30s",
"name": "Brand Hero Video 30s",
"format_id": {
"agent_url": "https://creative.adcontextprotocol.org",
"id": "video_30s_vast"
},
"status": "approved",
"created_date": "2024-01-15T10:30:00Z",
"updated_date": "2024-01-15T14:20:00Z",
// ... other creative fields
"assignments": { /* include_assignments=true の場合 */ },
"performance": { /* include_performance=true の場合 */ },
"sub_assets": [ /* include_sub_assets=true の場合 */ ]
}
],
"format_summary": {
"video_30s_vast": 15,
"display_300x250": 8,
"audio_30s": 2
},
"status_summary": {
"approved": 20,
"pending_review": 3,
"rejected": 2,
"archived": 5
}
}
使用例
例 1: 基本的なライブラリ検索
承認済みの動画クリエイティブを一覧取得:
{
"filters": {
"formats": ["video"],
"statuses": ["approved"]
},
"sort": {
"field": "created_date",
"direction": "desc"
},
"pagination": {
"limit": 20
}
}
例 2: ブランドキャンペーン向け検索
Nike キャンペーンのクリエイティブをパフォーマンスデータ込みで取得:
{
"filters": {
"name_contains": "nike",
"has_performance_data": true,
"created_after": "2024-01-01T00:00:00Z"
},
"include_performance": true,
"sort": {
"field": "performance_score",
"direction": "desc"
}
}
例 3: 未割り当てクリエイティブ
新規キャンペーンに割り当て可能なクリエイティブを取得:
{
"filters": {
"unassigned": true,
"statuses": ["approved"]
},
"sort": {
"field": "created_date",
"direction": "desc"
},
"pagination": {
"limit": 50
}
}
例 4: 特定パッケージ向け検索
特定パッケージに割り当てられたクリエイティブを取得:
{
"filters": {
"assigned_to_packages": ["pkg_ctv_premium_001"]
},
"include_assignments": true,
"include_performance": true,
"sort": {
"field": "assignment_count",
"direction": "desc"
}
}
例 5: 複数フォーマットのタグ検索
モバイル最適化されたクリエイティブを複数フォーマットで検索:
{
"filters": {
"formats": ["display_320x50", "video_9x16_mobile", "display_300x250"],
"tags_any": ["mobile_optimized", "responsive"],
"statuses": ["approved"]
},
"sort": {
"field": "updated_date",
"direction": "desc"
}
}
例 6: 特定フィールドのみ取得する軽量クエリ
UI ドロップダウン用に最小限の情報を取得:
{
"fields": ["creative_id", "name", "format", "status"],
"include_assignments": false,
"filters": {
"statuses": ["approved"]
},
"sort": {
"field": "name",
"direction": "asc"
}
}
例 7: ネイティブ広告テンプレートの探索
サブアセット付きのネイティブ広告テンプレートを検索:
{
"filters": {
"formats": ["display_native_sponsored_post", "display_native_article"]
},
"include_sub_assets": true,
"sort": {
"field": "updated_date",
"direction": "desc"
}
}
例 8: 期間別の分析
特定の四半期にアップロードされたクリエイティブを分析:
{
"filters": {
"created_after": "2024-01-01T00:00:00Z",
"created_before": "2024-03-31T23:59:59Z"
},
"include_performance": true,
"sort": {
"field": "created_date",
"direction": "asc"
},
"pagination": {
"limit": 100
}
}
例 9: キャンペーン単位の検索
特定メディアバイ/キャンペーンで使用されたクリエイティブを取得:
{
"filters": {
"media_buy_ids": ["mb_summer_2025", "mb_spring_2025"],
"statuses": ["approved"]
},
"include_assignments": true,
"include_performance": true,
"sort": {
"field": "performance_score",
"direction": "desc"
}
}
例 10: buyer_ref で検索
関連キャンペーンにまたがって buyer_ref でクリエイティブを検索:
{
"filters": {
"buyer_refs": ["nike_q2_2024", "nike_summer_sale"],
"formats": ["video", "display"]
},
"include_assignments": true,
"sort": {
"field": "updated_date",
"direction": "desc"
}
}
例 11: アーカイブ済みを取得
デフォルトでは除外されるアーカイブ済みクリエイティブを表示:
{
"filters": {
"status": "archived"
},
"sort": {
"field": "updated_date",
"direction": "desc"
}
}
クエリ最適化のヒント
1. 具体的なフィルターを使う
- まずフォーマットで絞り込み、結果を狭める
- ステータスでアクション可能なものに集中
- 複数フィルターを組み合わせ、精度を高める
2. フィールド選択の最適化
fields で必要なデータだけを返却
- 割り当て情報が不要な場合は
include_assignments: false
- パフォーマンス分析が必要なときだけパフォーマンスデータを要求
3. ページネーション戦略
- インタラクティブ UI では少量(10-20 件)から開始
- バルク処理では大きめ(50-100 件)を使用
has_more を見て効率的にページング
4. ソートの考慮
- 時系列で見るなら
created_date
- 効果重視なら
performance_score
- アルファベット順なら
name
フィルター組み合わせ例
最近の高パフォーマンスクリエイティブ:
{
"filters": {
"has_performance_data": true,
"created_after": "2024-01-01T00:00:00Z"
},
"sort": { "field": "performance_score", "direction": "desc" },
"include_performance": true
}
割り当て準備完了のクリエイティブ:
{
"filters": {
"statuses": ["approved"],
"unassigned": true
},
"sort": { "field": "created_date", "direction": "desc" }
}
キャンペーン固有検索:
{
"filters": {
"tags": ["q2_2024", "brand_awareness"],
"formats": ["video", "display"]
},
"sort": { "field": "updated_date", "direction": "desc" }
}
エラーハンドリング
無効なフィルター値
フィルターに不正値がある場合、具体的なエラーを返します。
{
"message": "Query validation failed",
"errors": [
"Invalid format: 'invalid_format' does not match any known format",
"Invalid sort field: 'invalid_field' must be one of [created_date, updated_date, name, status, assignment_count, performance_score]"
]
}
大規模な結果セット
非常に大きな結果が返る場合:
{
"message": "Query returned 10,000+ results, consider adding more specific filters",
"query_summary": {
"total_matching": 10247,
"returned": 50
}
}
パフォーマンス上の注意
1. 早期フィルター
- 最も選択度の高いフィルターを優先
- フォーマット/ステータスで結果を削減
- 日付範囲と組み合わせて効率化
2. 適切なページネーション
- 100 件超の大きすぎるページはタイムアウトしやすい
- 一貫性が必要なら offset ベースを利用
- 非常に大きい場合はカーソルベースも検討
3. フィールド選択
fields で必要なフィールドのみ取得
- パフォーマンス指標は分析時だけ要求
- ドロップダウン/オートコンプリートでは最小限のフィールドを使用
連携パターン
クリエイティブ選択 UI
// ドロップダウン用の軽量リストを取得
const response = await adcp.list_creatives({
fields: ["creative_id", "name", "format"],
filters: { statuses: ["approved"] },
sort: { field: "name", direction: "asc" },
include_assignments: false
});
パフォーマンスダッシュボード
// パフォーマンス指標付きで上位クリエイティブを取得
const response = await adcp.list_creatives({
filters: {
has_performance_data: true,
created_after: "2024-01-01T00:00:00Z"
},
sort: { field: "performance_score", direction: "desc" },
include_performance: true,
pagination: { limit: 10 }
});
割り当て管理
// 未割り当てで新規キャンペーンに使えるクリエイティブを検索
const response = await adcp.list_creatives({
filters: {
unassigned: true,
statuses: ["approved"],
formats: ["video", "display"]
},
sort: { field: "created_date", direction: "desc" }
});
list_creatives タスクは強力なクエリ機能を提供し、複雑なワークフローでもクリエイティブアセットを効率的に探索・分析・管理できます。