search-assets について
search-assetsは、DAM内のファイルを探すためのLuceneフィルターを組み立てるスキルです。フィールドを推測せず、名前、タグ、フォルダー、ファイル属性、アカウント固有のメタデータを検索できます。
主な機能
- 01絞り込んだLucene検索条件の作成
- 02カスタムメタデータ項目とタグの確認
- 03フォルダー、ファイル種別、属性での絞り込み
- 04名前、タグ、埋め込みメタデータの検索
- 05検索結果の並べ替えとページ分割
活用シーン
- 01メタデータやタグでキャンペーン素材を検索
- 02寸法、形式、サイズからファイルを特定
- 03指定フォルダー内の検索
- 04日付や長さの条件に合う素材を取得
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ imagekit-developer/ skills --skill search-assetsインストール後、Claude Code で/search-assetsを入力して読み込まれたか確認します。
詳細
search_media_library searchQuery
DAM で search_media_library を、絞り込み条件を厳密に指定して呼び出してください。広範囲のページを取得して、コード内で絞り込まないでください。
推測する前にフィールドを確認する
アカウントごとに任意のカスタムメタデータフィールドが定義されています。ユーザーが入力する一般的な語句(「Nike」「summer campaign」「EMEA」「approved」など)は、フィールド名、選択肢、タグ、または単なるファイル名である可能性があります。"customMetadata.<name>" を決して作り出さないでください。
name または tags に指定する可能性のある説明的な語句ごとに、次の手順を実行してください。
list_custom_metadata_fieldsを一度呼び出します。各フィールドのname、label、schema.selectOptionsと語句を照合します(大文字と小文字は区別しません)。"customMetadata.<name>"にはlabelではなく、フィールドのnameを使用してください。- その語句を
labelとしてlist_client_tagsを呼び出します。タグが返された場合は、返されたタグのnameをそのまま使い、tags IN [...]で絞り込みます。 - どちらの呼び出しでも一致しなかった場合に限り、
name HAS "…"にフォールバックできます。リテラルなファイル名、拡張子、および「X という名前の/呼ばれる/タイトルの」と明示された語句には、この確認は不要です。
一致しなかった場合はコストがかからないため、フィールドを推測せず、該当するカスタムメタデータ条件を省略してください。「files」「show me」「assets」などの埋め草の語句は除外してください。
選択型:SingleSelect → = / IN、MultiSelect → IN / NOT IN。ユーザーが入力した表記より、返された selectOptions の値を優先してください。テキスト型 → = : HAS、数値型/日付型 → < <= > >=、ブール型 → 引用符なしの true / false を使った =。
入力
| 入力 | 用途 |
|---|---|
searchQuery | Lucene フィルター(以下を参照)。 |
path | フォルダーの範囲。例:/products。 |
type | file / file-version / folder / all。searchQuery が省略された場合にのみ有効です。 |
fileType | image / non-image / all。 |
sort | ASC_/DESC_ + CREATED(デフォルトは ASC_CREATED)、UPDATED、NAME、SIZE、WIDTH、HEIGHT、DURATION、RELEVANCE、ORIGINAL_CREATION_DATE。HAS と組み合わせる場合は DESC_RELEVANCE を指定してください。*_ORIGINAL_CREATION_DATE は、予約済みフィールド _internal_original_created_datetime で並べ替えます。値がないファイルはアップロード時刻にフォールバックします。 |
limit / skip | ページサイズ(最大 1000)とオフセット。デフォルトのページサイズは 20 です。 |
単純なフォルダー範囲は path に、画像と非画像の区別は fileType に指定してください。searchQuery を指定する場合は、type を searchQuery に含めてください(type = "folder"、または (name HAS "logo") AND type = "folder")。その場合、type 引数は無視され、結果はデフォルトでファイルになります。
構文
- 演算子:
=:<<=>>=INNOT INNOT =HASEXISTSNOT EXISTS - 結合:
AND、OR。グループ化:( ... ) - 引用符: 文字列値は
"二重引用符"で囲みます。数値とブール値(true/false)は引用符で囲みません。customMetadata/embeddedMetadataのフィールド名は引用符で囲む必要があります。例:"customMetadata.brand"。 := 前方一致/サブフォルダー内。== 完全一致。HAS= 大文字と小文字を区別しない全文検索(トークン化)。
フィールド
| フィールド | 演算子 | 値に関する注意 |
|---|---|---|
name | = : IN NOT = NOT IN HAS | = は完全一致(大文字と小文字を区別)、: は前方一致、HAS は大文字と小文字を区別しない全文検索 |
tags | IN NOT IN HAS EXISTS NOT EXISTS | tags と AITags の両方に一致します |
type | = IN NOT = NOT IN | "file" | "file-version" | "folder" |
id | = IN NOT = NOT IN | fileId または folderId |
createdAt / updatedAt | = < <= > >= IN NOT = NOT IN | ISO 8601 または相対値("1h" "2d" "3w" "4m" "1y") |
width / height | = < <= > >= IN NOT = NOT IN | ピクセル単位。画像のみ |
size | = < <= > >= IN NOT = NOT IN | バイト数(1024)または "1mb" / "10kb" |
videoDuration | = < <= > >= IN NOT = NOT IN | 動画のみ。単位付きで引用符で囲みます:"30sec" "1.5min" "2hr"(または s/m/h)。単位のない数値は秒です |
format | = IN | "jpg" "png" "webp" "gif" "svg" "avif" "pdf" "mp4" … |
private / published / transparency | = | ブール値。引用符で囲みません |
createdBy | = IN NOT = NOT IN | アップロードしたユーザーのメールアドレス |
path | = : IN NOT = NOT IN | = はフォルダーの完全一致、: はフォルダーとサブフォルダー |
"customMetadata.<field>" | 型に依存 | フィールド名を引用符で囲みます。list_custom_metadata_fields で確認できます。予約済みの _internal_original_created_datetime(Date、ラベルは "Original creation date")は、この機能を有効にしているアカウントに限り reserved: true として一覧表示されます |
"embeddedMetadata.<field>" | 型に依存 | DAM スキーマではなく、ファイルから取得します。Keywords は IN/EXISTS、DateTimeOriginal は日付演算子、LocationTaken は地理検索("40,100 5km")をサポートします |
例
name HAS "red dress"
name = "red-dress.jpg"
name : "red-dress"
createdAt > "7d" AND size > "2mb"
tags IN ["sale", "summer"]
tags NOT EXISTS
format IN ["jpg", "webp"]
path : "/sales-banner/"
"customMetadata.brand" = "nike"
"customMetadata.Region" IN ["EMEA"]
"customMetadata.rating" > 4.3
"embeddedMetadata.DateTimeOriginal" > "1y"
videoDuration > "1min" AND format = "mp4"
"customMetadata._internal_original_created_datetime" < "2021-01-01"
(size < "1mb" AND width > 500) OR (tags IN ["summer-sale", "banner"])
ユーザーが「Nike のアセット」と言った場合 → list_custom_metadata_fields で brand と Nike を含む選択肢を確認 → "customMetadata.brand" = "Nike"。フィールドまたはタグに一致するものがある場合は、name HAS "Nike" で検索しないでください。
注意点
nameの=/:は大文字と小文字を区別します。大文字と小文字を区別しない検索にはHASを使用してください。tagsの検索ではtagsとAITagsの両方が対象になります。HASはスペースや句読点でトークンに分割します。最後のトークンは前方一致で照合されます。sort: DESC_RELEVANCEと組み合わせてください。- ブール値(
private、published、transparency)は引用符で囲まず、文字列値は引用符で囲みます。 width/height/transparencyは画像のみに適用され、videoDurationは動画のみに適用されます。単位はsec/min/hrであり、minutes/hoursではありません。list_custom_metadata_fieldsが_internal_original_created_datetimeを返す場合にのみ、ASC_ORIGINAL_CREATION_DATE/DESC_ORIGINAL_CREATION_DATEで並べ替えてください。それ以外の場合は*_CREATEDを使用してください。"customMetadata.<field>"は、アカウントで定義されているフィールドのみを照合します。トークン全体を引用符で囲んでください。searchQueryが設定されている場合、typeツール引数は無視されます。代わりに、searchQueryにtype = "folder"(またはtype IN [...])を指定してください。