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 和已连接来源查找并获取现有媒体的路由 Skill。搜索前会要求用户选择来源,不负责生成或编辑图像。

主要功能

  1. 01将搜索转至用户选择的来源
  2. 02按关键词和分类搜索 CMS
  3. 03使用 Data 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. 显示所做的更改(文件路径和行号)

错误处理

错误响应
工具不可用“[源名称]工具不可用。要尝试其他来源吗?”
工具返回错误显示错误消息,并提供使用其他词语重试或改用其他来源的选项
未找到结果“未找到结果。请尝试使用更宽泛的关键词、移除描述性词语,或改用其他来源。”
用户选择无效重新显示选项并再次询问

绝不要静默失败。 始终告知用户并提供替代方案。

搜索行为说明

使用关键词搜索:

  • 关键词和分类体系均不为空 → 返回匹配关键词或(关键词 + 分类体系)的结果
  • 关键词为空 → 仅按分类体系搜索
  • 分类体系为空 → 仅按关键词搜索
  • 使用 pageOffset 进行分页(每次递增 searchLimit)

使用 Data 360 混合搜索:

  • 处理自然语言查询
  • 按语义相似度匹配
  • 搜索多个已连接系统中的内容

核心原则

  1. 首次响应始终仅包含文本 — 展示搜索来源,不调用任何工具
  2. 仅展示已配置的来源 — 检查自己的工具列表(通过内省,而非调用工具),仅展示你拥有相应工具的来源
  3. 等待用户选择 — 绝不自动选择来源或图片
  4. 展示所有结果 — 让用户选择最合适的结果
  5. 应用前先确认 — 修改代码前核实选择
  6. 妥善处理错误 — 提供清晰的反馈和替代方案

评论

支持 Markdown