mcpField
S
searching-media

searching-media

github.com/forcedotcomクリエイティブ・メディア1.1k3.6k 回インストール1 日前に更新
リポジトリ

searching-media について

設定済みのソースから既存の画像やメディアを検索・取得するためのルーティングスキルです。検索元と結果をユーザーが選択する必要があり、メディアの生成や編集は行いません。

主な機能

  1. 01利用可能なメディアソースへの検索振り分け
  2. 02キーワードと分類語による検索
  3. 03Data 360 ハイブリッド検索への対応
  4. 04検索元と結果の選択を必須化
  5. 05ユーザー指定 URL やパスの受付

活用シーン

  1. 01アプリで使う既存画像の検索
  2. 02接続済みメディアライブラリからの素材検索
  3. 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 ツールを使用して、検索元を提示してください。

  1. ask_followup_question を使用して、利用可能な検索元を選択肢として提示します
  2. ツールの応答からユーザーの選択を受け取ります
  3. その後で、選択に応じた適切な検索ツールを呼び出します

してはいけないことの例:

  • ❌ ユーザーが検索元を選ぶ前にいずれかのツールを呼び出すこと(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

手順:

  1. クエリを分析する — ユーザーが何を検索しているのか(対象、属性、ドメイン)を理解します

  2. キーワードを抽出する — 画像のメタデータに含まれていそうな具体的な名詞

    • ドメイン固有の同義語を使用します
    • 最大10語
    • 例:
      • 「高級アパート」→ apartment、villa、penthouse、residence、condo
      • 「会社のロゴ」→ logo、emblem、corporate logo
      • 「明るい部屋」→ (具体的な名詞がない場合は空)
  3. タクソノミーを抽出する — 特徴的な性質、スタイル、雰囲気、カテゴリー

    • 形容詞と属性のみ
    • 例:
      • 「川の眺めがある高級アパート」→ Luxury、Premium、Waterfront、Riverside、Panoramic
      • 「明るく広々とした部屋」→ Bright、Spacious、Open、Airy、Light
      • 「車」→ (特徴を表す語がない場合は空)
  4. ロケールを決定する — en_US、es_MX、fr_FR の形式を使用します(デフォルト:en_US)

  5. 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
  }]
}
  1. 正確な JSON ペイロードを使用してツールを呼び出します
Data 360 ハイブリッド検索を使用した検索

ツール: search_electronic_media

手順:

  1. ユーザーのクエリをそのまま使用します — キーワードの抽出や変換は不要です
  2. search_electronic_media を呼び出します
  3. クエリをツールの searchQuery パラメーターに渡します

例:

  • ユーザーのクエリ:「自然光が入るモダンで高級なアパート」
  • ツール呼び出し:search_electronic_media(searchQuery="modern luxury apartment with natural lighting")
その他(ユーザー提供の URL)

ユーザーに以下の情報を尋ねます:

  • 画像への直接 URL
  • アセットライブラリのパス
  • 確認する特定のシステム/場所

検索結果の提示

検索結果を提示する際は、必ず ask_followup_question ツールを使用して、選択肢として表示してください。

  1. ツールの応答を解析する — すべての画像結果(タイトルとソース)を抽出します
  2. ask_followup_question を使用する — すべての結果を選択可能なオプションとして提示します。画像のタイトルのみを表示し、URL は表示しないでください。
  3. ユーザーの選択を受け取る — ツールの応答から選択内容を取得します
  4. その後、選択された画像を適用します
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

画像を自動選択しないでください。 必ずユーザーが選ぶのを待ちます。

選択された画像の適用

ユーザーが選択した後:

  1. 画像名と URL を示して選択内容を確認します
  2. ツールが返した完全な URL を、すべてのクエリパラメーターを含めて使用します。CMS および DAM の URL は、認証、サイズ変更、CDN ルーティングにクエリパラメーターを使用しています。これらを削除すると画像が正しく表示されません。たとえば、https://cms.example.com/media/img.jpg?oid=00D&refid=0EM&v=2 のような URL は、完全な形で使用する必要があります。
  3. ユーザーのコード/コンポーネントに URL を適用します
  4. 変更箇所(ファイルパスと行番号)を示します

エラー処理

エラー応答
ツールを利用できない「[source name] ツールを利用できません。別のソースを試しますか?」
ツールがエラーを返すエラーメッセージを表示し、別の語句または代替ソースを使った再試行を提案します
結果が見つからない「結果が見つかりませんでした。より広いキーワードを試すか、特徴を表す語を削除するか、別のソースをお試しください。」
無効なユーザー選択選択肢を再表示し、もう一度尋ねます

エラーを黙って無視しないでください。 必ずユーザーに知らせ、代替案を提示します。

検索動作に関する注意事項

キーワードを使った検索:

  • キーワードと分類の両方を指定 → キーワードに一致する結果、または(キーワード+分類)に一致する結果
  • キーワードが空 → 分類のみで検索
  • 分類が空 → キーワードのみで検索
  • pageOffset を使ってページネーションします(searchLimit ずつ増やします)

Data 360 ハイブリッド検索:

  • 自然言語のクエリに対応します
  • 意味的類似性に基づいて照合します
  • 複数の接続済みシステムを横断して検索します

主要な原則

  1. 最初の応答は必ずテキストのみです — ツールを呼び出さずに検索元を提示します
  2. 設定済みの検索元のみを表示します — 自分のツールリストを確認し(ツール呼び出しではなく、イントロスペクションを使用)、利用可能なツールがある検索元のみを提示します
  3. ユーザーの選択を待ちます — 検索元や画像を自動選択しません
  4. すべての結果を表示します — 最適な候補をユーザーに選んでもらいます
  5. 適用前に確認します — コードを変更する前に選択内容を確認します
  6. エラーには適切に対処します — 明確なフィードバックと代替案を提示します

コメント