mcpField
E
experience-content-media-search

experience-content-media-search

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

experience-content-media-search について

Salesforce CMS、Data Cloud、接続済みソースから既存メディアを探して取得するルーティングスキルです。検索前にソースを選択し、新しい画像の生成や編集は行いません。

主な機能

  1. 01選択したソースへの検索振り分け
  2. 02キーワードと分類による CMS 検索
  3. 03Data 360 ハイブリッド検索
  4. 04選択用の検索結果表示
  5. 05選んだ画像 URL のコードへの適用

活用シーン

  1. 01アプリ用の既存画像の検索
  2. 02プロジェクト向け素材の閲覧
  3. 03接続済みソースからのメディア取得

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/forcedotcom/sf-skills --skill experience-content-media-search

インストール後、Claude Code で/experience-content-media-searchを入力して読み込まれたか確認します。

詳細

メディア検索

既存の画像やメディアを検索・取得するための汎用ルーティングスキルです。

対象範囲

このスキルは既存のメディアを検索するためのものであり、新しいメディアを作成するためのものではありません。

ユーザーが次のことを希望する場合に、このスキルを使用してください。

  • Salesforce CMS、Data Cloud で画像を検索する
  • アプリで使用する既存のビジュアルアセットを探す
  • 接続済みのソースからメディアを取得する
  • プロジェクトで利用可能な画像を閲覧する
  • 特定の写真やグラフィックを見つける

ユーザーが次のことを希望する場合は、このスキルを使用しないでください。

  • AI で新しい画像を生成する(画像生成ツールを使用してください)
  • グラフィックやデザインを一から作成する
  • 既存の画像を編集または変更する
  • カスタムのビジュアルや図を作成する
  • ストックフォトやロイヤリティフリー画像を検索する(experience-content-media-stock-image-search を使用してください)

検索を開始する前に

重要:これはルーティングスキルであり、直接検索するスキルではありません。

ユーザーが画像を探すよう依頼した場合:

最初に必ず 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",
    "contentAccessScope": "Public",
    "contentTypeFqn": "sfdc_cms__image",
    "pageOffset": 0,
    "searchLimit": 5
  }]
}

フィールドのルール:

  • searchKeyword:キーワードを OR(スペース・OR・スペース)で結合します。キーワードがない場合は空文字列を使用します。
  • taxonomyExpression:JSON オブジェクト {"OR": ["term1", "term2"]} を文字列化します。分類語がない場合は "{}" を使用します。
  • searchLanguage:アンダースコア区切りのロケール(例:en_US)
  • contentAccessScope:常に "Public" を指定します(認証なしの公開チャネルと公開 Experience Cloud サイトのチャネルの両方が対象です)
  • 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",
    "contentAccessScope": "Public",
    "contentTypeFqn": "sfdc_cms__image",
    "pageOffset": 0,
    "searchLimit": 5
  }]
}

クエリ:「明るく広々とした部屋」(具体的な名詞なし)

{
  "inputs": [{
    "searchKeyword": "",
    "taxonomyExpression": "{\"OR\": [\"Bright\", \"Spacious\", \"Open\", \"Airy\"]}",
    "searchLanguage": "en_US",
    "contentAccessScope": "Public",
    "contentTypeFqn": "sfdc_cms__image",
    "pageOffset": 0,
    "searchLimit": 5
  }]
}

クエリ:「車の画像」(描写的な語なし)

{
  "inputs": [{
    "searchKeyword": "car OR automobile OR vehicle OR auto",
    "taxonomyExpression": "{}",
    "searchLanguage": "en_US",
    "contentAccessScope": "Public",
    "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. エラーには適切に対処します — 明確なフィードバックと代替案を提示します

コメント