关于 searching-media
用于从已配置来源查找和获取现有图像及媒体的路由技能。它要求用户先选择搜索来源,再选择结果;不负责生成或编辑媒体。
主要功能
- 01将搜索路由到可用媒体来源
- 02按关键词和分类词搜索
- 03支持 Data 360 混合搜索
- 04要求用户选择来源和结果
- 05处理用户提供的网址或路径
适用场景
- 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开始分页,每次递增searchLimitsearchLimit:默认值为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 应用到用户的代码/组件中
- 显示所做的更改(文件路径和行号)
错误处理
| 错误 | 响应 |
|---|---|
| 工具不可用 | “[来源名称]工具不可用。你想尝试其他来源吗?” |
| 工具返回错误 | 显示错误消息,并提供使用不同词语重试或选择其他来源的选项 |
| 未找到结果 | “未找到结果。请尝试使用更宽泛的关键词、删除描述性词语,或改用其他来源。” |
| 用户选择无效 | 重新显示选项并再次询问 |
绝不要悄无声息地失败。 始终告知用户并提供替代方案。
搜索行为说明
使用关键词搜索:
- 关键词和分类体系均不为空 → 返回匹配关键词或(关键词 + 分类体系)的结果
- 关键词为空 → 仅按分类体系搜索
- 分类体系为空 → 仅按关键词搜索
- 使用
pageOffset进行分页(每次递增searchLimit)
使用 Data 360 混合搜索:
- 处理自然语言查询
- 按语义相似度匹配
- 搜索多个已连接系统中的内容
核心原则
- 首次响应始终仅包含文本 — 展示搜索来源,不调用任何工具
- 仅展示已配置的来源 — 检查自己的工具列表(通过内省,而非调用工具),仅展示你拥有相应工具的来源
- 等待用户选择 — 绝不自动选择来源或图片
- 展示所有结果 — 让用户选择最合适的结果
- 应用前先确认 — 修改代码前核实选择
- 妥善处理错误 — 提供清晰的反馈和替代方案