searching-media について
設定済みのソースから既存の画像やメディアを検索・取得するためのルーティングスキルです。検索元と結果をユーザーが選択する必要があり、メディアの生成や編集は行いません。
主な機能
- 01利用可能なメディアソースへの検索振り分け
- 02キーワードと分類語による検索
- 03Data 360 ハイブリッド検索への対応
- 04検索元と結果の選択を必須化
- 05ユーザー指定 URL やパスの受付
活用シーン
- 01アプリで使う既存画像の検索
- 02接続済みメディアライブラリからの素材検索
- 03特定の写真やグラフィックの特定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ forcedotcom/ sf-skills --skill searching-mediaインストール後、Claude Code で/searching-mediaを入力して読み込まれたか確認します。
詳細
メディア検索
既存の画像やメディアを検索・取得するための汎用ルーティングスキルです。
対象範囲
このスキルは、既存のメディアを検索するためのものであり、新しいメディアを作成するためのものではありません。
ユーザーが次のことを求めている場合に、このスキルを使用します。
- Salesforce CMS、Data Cloud で画像を検索する
- アプリで使用する既存のビジュアルアセットを探す
- 接続されたソースからメディアを取得する
- プロジェクトで利用可能な画像を閲覧する
- 特定の写真やグラフィックを見つける
ユーザーが次のことを求めている場合は、このスキルを使用しないでください。
- AI で新しい画像を生成する(画像生成ツールを使用してください)
- グラフィックやデザインを一から作成する
- 既存の画像を編集または変更する
- カスタムビジュアルや図を作成する
検索する前に
重要:これはルーティングスキルであり、直接検索するスキルではありません。
ユーザーが画像を探すよう依頼した場合:
最初に必ず ask_followup_question ツールを使用して、検索元を提示してください。
- ask_followup_question を使用して、利用可能な検索元を選択肢として提示します
- ツールの応答からユーザーの選択を受け取ります
- その後で、選択に応じた適切な検索ツールを呼び出します
してはいけないことの例:
- ❌ ユーザーが検索元を選ぶ前にいずれかのツールを呼び出すこと(MCP ツール、ファイルの読み取り、ディスクリプターの確認など)
- ❌ 「利用可能な MCP ツールを確認します」—ツール呼び出しでツールを調査または検出しないでください
- ❌
search_electronic_mediaまたはsearch_media_cms_channelsをすぐに呼び出すこと - ❌ 利用可能なツールを調べるために、MCP ツールのディスクリプターやスキーマを読み取ること
- ❌ 質問せずに、使用する検索元を決めること
すべきことの例:
- ✅ テキストのみで応答し、番号付きの検索元リストを提示する
- ✅ 「どの選択肢を使用しますか?」と尋ねる
- ✅ ユーザーが選択を返すまで待つ
- ✅ その後にのみ、ユーザーが選択したツールを呼び出す
このスキルが起動した際の最初の応答は、検索元を提示するテキストのみのメッセージでなければなりません。ツール呼び出しは禁止です。例外はありません。
ワークフローの概要
ユーザーが検索元を選ぶ必要があります。この手順を省略することはできません。
このチェックリストをコピーして、進捗を記録してください。
Media Search Progress:
- [ ] Step 1: Check your own tool list for available search tools (no tool calls — just inspect what's in your context)
- [ ] Step 2: Present only the available options to the user as a numbered list (plain text, no tool calls)
- [ ] Step 3: Wait for the user to reply with their selection
- [ ] Step 4: Execute the selected search method (this is the first tool call)
- [ ] Step 5: Present all results to user for selection
- [ ] Step 6: Apply selected image to code
手順 4 の前にツールを呼び出した場合、このスキルに正しく従えていません。
検索元の提示(最初の応答)
利用可能なツールを特定するために、ツールを呼び出したり、MCP のディスクリプターを読んだり、外部リクエストを行ったりしないでください。
ツールはすでにコンテキストに読み込まれています。すでに利用できるツールの名前を確認してください。これはツール呼び出しではなく、自己参照です。
手順 1:ツール一覧を確認する(ツール呼び出しなし)
コンテキストにあるツールを確認し、次の名前があるかチェックします。
search_media_cms_channels→ 存在する場合は **「キーワードで検索」**を含めますsearch_electronic_media→ 存在する場合は **「Data 360 ハイブリッド検索で検索」**を含めます- 最後の選択肢には必ず **「その他」**を含めます
手順 2:応答を作成する
実際に利用できるツールに対応する検索元のみを含めます。番号を順番に付けます。
I can help you find that image. Where would you like to search?
[NUMBER]. [SEARCH SOURCE NAME] — [Brief description]
...
[NUMBER]. Other — Provide your own URL or path
Which option would you like to use?
手順 3:停止して待つ
リストを提示したら、停止します。ツールを呼び出さないでください。先に進まないでください。ユーザーが選択を返すまで待ちます。
例
両方のツールが利用可能な場合:
I can help you find that image. Where would you like to search?
1. Search using Data 360 hybrid search — Semantic search across Salesforce CMS and connected DAMs
2. Search using keywords — Search Salesforce CMS by keywords and taxonomies
3. Other — Provide your own URL or path
Which option would you like to use?
search_media_cms_channels のみ利用可能な場合:
I can help you find that image. Where would you like to search?
1. Search using keywords — Search Salesforce CMS by keywords and taxonomies
2. Other — Provide your own URL or path
Which option would you like to use?
search_electronic_media のみ利用可能な場合:
I can help you find that image. Where would you like to search?
1. Search using Data 360 hybrid search — Semantic search across Salesforce CMS and connected DAMs
2. Other — Provide your own URL or path
Which option would you like to use?
どちらのツールも利用できない場合:
No automated media search sources are currently configured. Please provide a direct URL or asset library path.
続行する前に、ユーザーが選択するのを待ってください。
選択された検索方法の実行
⚠️ ユーザーが番号付きリストから選択肢を明示的に選んだ場合にのみ、この手順に進んでください。
まだ選択肢を提示していない場合は、まず「検索元の提示」セクションに戻ってください。
ユーザーが選択肢を選んだら、以下の該当する検索方法を実行します。
キーワードを使用した検索
ツール: search_media_cms_channels
手順:
-
クエリを分析する — ユーザーが何を検索しているのか(対象、属性、ドメイン)を理解します
-
キーワードを抽出する — 画像のメタデータに含まれていそうな具体的な名詞
- ドメイン固有の同義語を使用します
- 最大10語
- 例:
- 「高級アパート」→ apartment、villa、penthouse、residence、condo
- 「会社のロゴ」→ logo、emblem、corporate logo
- 「明るい部屋」→ (具体的な名詞がない場合は空)
-
タクソノミーを抽出する — 特徴的な性質、スタイル、雰囲気、カテゴリー
- 形容詞と属性のみ
- 例:
- 「川の眺めがある高級アパート」→ Luxury、Premium、Waterfront、Riverside、Panoramic
- 「明るく広々とした部屋」→ Bright、Spacious、Open、Airy、Light
- 「車」→ (特徴を表す語がない場合は空)
-
ロケールを決定する —
en_US、es_MX、fr_FRの形式を使用します(デフォルト:en_US) -
JSON ペイロードを作成する — 以下の構造を正確に組み立てます:
{
"inputs": [{
"searchKeyword": "keyword1 OR keyword2 OR keyword3",
"taxonomyExpression": "{\"OR\": [\"Taxonomy1\", \"Taxonomy2\"]}",
"searchLanguage": "en_US",
"channelIds": "",
"channelType": "PublicUnauthenticated",
"contentTypeFqn": "sfdc_cms__image",
"pageOffset": 0,
"searchLimit": 5
}]
}
フィールドのルール:
searchKeyword:キーワードをOR(スペース-OR-スペース)で連結します。キーワードがない場合は空文字列を使用します。taxonomyExpression:JSON オブジェクト{"OR": ["term1", "term2"]}を文字列化します。タクソノミーがない場合は"{}"を使用します。searchLanguage:アンダースコア形式のロケール(例:en_US)channelIds:常に空文字列channelType:常に"PublicUnauthenticated"contentTypeFqn:常に"sfdc_cms__image"pageOffset:0から開始し、ページネーションではsearchLimitずつ増やしますsearchLimit:デフォルトは5。ユーザーが件数を増やすように求めた場合は調整します
例:
クエリ:「川の眺めがある高級アパート」
{
"inputs": [{
"searchKeyword": "apartment OR villa OR penthouse OR residence",
"taxonomyExpression": "{\"OR\": [\"Luxury\", \"Premium\", \"Waterfront\", \"Riverside\"]}",
"searchLanguage": "en_US",
"channelIds": "",
"channelType": "PublicUnauthenticated",
"contentTypeFqn": "sfdc_cms__image",
"pageOffset": 0,
"searchLimit": 5
}]
}
クエリ:「明るく広々とした部屋」(具体的な名詞なし)
{
"inputs": [{
"searchKeyword": "",
"taxonomyExpression": "{\"OR\": [\"Bright\", \"Spacious\", \"Open\", \"Airy\"]}",
"searchLanguage": "en_US",
"channelIds": "",
"channelType": "PublicUnauthenticated",
"contentTypeFqn": "sfdc_cms__image",
"pageOffset": 0,
"searchLimit": 5
}]
}
クエリ:「車の画像」(特徴を表す語なし)
{
"inputs": [{
"searchKeyword": "car OR automobile OR vehicle OR auto",
"taxonomyExpression": "{}",
"searchLanguage": "en_US",
"channelIds": "",
"channelType": "PublicUnauthenticated",
"contentTypeFqn": "sfdc_cms__image",
"pageOffset": 0,
"searchLimit": 5
}]
}
- 正確な JSON ペイロードを使用してツールを呼び出します
Data 360 ハイブリッド検索を使用した検索
ツール: search_electronic_media
手順:
- ユーザーのクエリをそのまま使用します — キーワードの抽出や変換は不要です
search_electronic_mediaを呼び出します- クエリをツールの
searchQueryパラメーターに渡します
例:
- ユーザーのクエリ:「自然光が入るモダンで高級なアパート」
- ツール呼び出し:
search_electronic_media(searchQuery="modern luxury apartment with natural lighting")
その他(ユーザー提供の URL)
ユーザーに以下の情報を尋ねます:
- 画像への直接 URL
- アセットライブラリのパス
- 確認する特定のシステム/場所
検索結果の提示
検索結果を提示する際は、必ず ask_followup_question ツールを使用して、選択肢として表示してください。
- ツールの応答を解析する — すべての画像結果(タイトルとソース)を抽出します
ask_followup_questionを使用する — すべての結果を選択可能なオプションとして提示します。画像のタイトルのみを表示し、URL は表示しないでください。- ユーザーの選択を受け取る — ツールの応答から選択内容を取得します
- その後、選択された画像を適用します
I found 4 images. Which one would you like to use?
1. Luxury Apartment Exterior
Source: Salesforce CMS
2. Modern High-Rise Building
Source: Salesforce CMS
3. Waterfront Residence
Source: Salesforce CMS
4. Premium Condominium
Source: Salesforce CMS
画像を自動選択しないでください。 必ずユーザーが選ぶのを待ちます。
選択された画像の適用
ユーザーが選択した後:
- 画像名と URL を示して選択内容を確認します
- ツールが返した完全な URL を、すべてのクエリパラメーターを含めて使用します。CMS および DAM の URL は、認証、サイズ変更、CDN ルーティングにクエリパラメーターを使用しています。これらを削除すると画像が正しく表示されません。たとえば、
https://cms.example.com/media/img.jpg?oid=00D&refid=0EM&v=2のような URL は、完全な形で使用する必要があります。 - ユーザーのコード/コンポーネントに URL を適用します
- 変更箇所(ファイルパスと行番号)を示します
エラー処理
| エラー | 応答 |
|---|---|
| ツールを利用できない | 「[source name] ツールを利用できません。別のソースを試しますか?」 |
| ツールがエラーを返す | エラーメッセージを表示し、別の語句または代替ソースを使った再試行を提案します |
| 結果が見つからない | 「結果が見つかりませんでした。より広いキーワードを試すか、特徴を表す語を削除するか、別のソースをお試しください。」 |
| 無効なユーザー選択 | 選択肢を再表示し、もう一度尋ねます |
エラーを黙って無視しないでください。 必ずユーザーに知らせ、代替案を提示します。
検索動作に関する注意事項
キーワードを使った検索:
- キーワードと分類の両方を指定 → キーワードに一致する結果、または(キーワード+分類)に一致する結果
- キーワードが空 → 分類のみで検索
- 分類が空 → キーワードのみで検索
pageOffsetを使ってページネーションします(searchLimitずつ増やします)
Data 360 ハイブリッド検索:
- 自然言語のクエリに対応します
- 意味的類似性に基づいて照合します
- 複数の接続済みシステムを横断して検索します
主要な原則
- 最初の応答は必ずテキストのみです — ツールを呼び出さずに検索元を提示します
- 設定済みの検索元のみを表示します — 自分のツールリストを確認し(ツール呼び出しではなく、イントロスペクションを使用)、利用可能なツールがある検索元のみを提示します
- ユーザーの選択を待ちます — 検索元や画像を自動選択しません
- すべての結果を表示します — 最適な候補をユーザーに選んでもらいます
- 適用前に確認します — コードを変更する前に選択内容を確認します
- エラーには適切に対処します — 明確なフィードバックと代替案を提示します