关于 experience-content-media-stock-image-search
用于查找授权图库照片的技能,适用于用户提出图片或照片需求时。它通过 media-management MCP 服务搜索素材并展示结果供选择,也支持将选中的素材下载到本地客户端。
主要功能
- 01通过自然语言搜索图库照片
- 02选择创意类或新闻编辑类素材
- 03按方向和排序方式筛选
- 04展示图片预览及许可信息
- 05将选中图片下载到客户端
适用场景
- 01为设计或页面查找图库照片
- 02搜索与事件相关的新闻图片
- 03下载选中的素材以便本地使用
MCP 相关
使用 media-management MCP 服务的 search_stock_images 和 download_stock_image 工具搜索并获取图库图片。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ forcedotcom/ sf-skills --skill experience-content-media-stock-image-search安装后在 Claude Code 中输入/experience-content-media-stock-image-search确认已加载。
附带文件scripts/download-stock-image.py
详细介绍
图片素材搜索
何时触发此技能
只要用户想要图片、照片或图像,就立即触发,无需询问用户选择搜索方式。适用于以下两种情况:
- 查找现有图片素材:“找一张图库图片”“搜索一张 X 的照片”“找一张免版税图片”“找一张符合伦理规范的图片”、编辑类或新闻摄影作品
- 以创建或生成的方式提出的模糊请求:“创建一张日落图片”“生成一张团队会议的照片”“给我做一张山景图”——将这些请求视为图库搜索请求;此技能会搜索图库,而不是生成图片。
在所有这些情况下,都要搜索图库——这是获取图片的工具。不要提供其他搜索方式(混合搜索、用户提供 URL/路径等),也不要让用户选择搜索方式。
不适用于:
- 搜索内部 CMS / Data Cloud 媒体(使用
experience-search-coordinate) - 明确要求 AI 生成、合成或计算机生成图片的请求——此技能只搜索已授权的图库摄影作品,不具备图片生成功能
步骤 1 — 搜索
MCP 工具: search_stock_images(服务:media-management)
超时: 30 秒
| 参数 | 必填 | 默认值 | 备注 |
|---|---|---|---|
query | ✅ 是 | — | 自然语言搜索词组(例如,“海上日落”“商务会议”),最多 500 个字符 |
searchType | 否 | Creative | Creative(免版税图库),Editorial(权利管理的新闻/活动图像) |
orientation | 否 | (none) | Horizontal、Vertical、Square、PanoramicHorizontal、PanoramicVertical |
sortOrder | 否 | BestMatch | BestMatch、MostPopular、Newest |
pageSize | 否 | 5 | 1–100 |
page | 否 | 1 | 从 1 开始计数,必须 >= 1 |
智能关键词提取: 如果查询超过 20 个词,或没有返回结果,该工具会自动通过 LLM 提取简短关键词词组并重试。响应中的 effectiveQuery 字段会显示实际发送到搜索服务的内容(如果使用原始查询且未作更改,则为 null)。
响应字段:
| 字段 | 备注 |
|---|---|
images[] | 结果列表(见下方各项字段) |
totalCount | 所有页面的匹配总数 |
page | 当前页码(从 1 开始计数) |
pageSize | 每页结果数 |
searchRequestId | 内部关联 ID。由服务端管理;不会通过 MCP 下载工具传回。若有用,可安全地显示在调试输出中。 |
effectiveQuery | 实际发送到搜索服务的关键词。如果使用原始查询且未作更改,则为 Null。 |
errorMessage | 如果搜索失败,则为非 null |
每个 images[] 项:
| 字段 | 备注 |
|---|---|
assetId | 图库素材 ID — 下载所需。如有用,可与结果一同安全显示。 |
title | 图片标题 |
caption | 图片描述 |
thumbnailUrl | 小尺寸预览 URL — 用于网格显示 |
previewUrl | 较大的合成图/预览 URL — 用于平铺显示 |
width | 最大宽度(像素) |
height | 最大高度(像素) |
licenseModel | 例如,royaltyfree、rightsmanaged |
artist | 贡献者/艺术家姓名 |
collection | 合集名称 |
步骤 2 — 展示结果,然后停止
使用带内联缩略图的编号列表呈现每个结果,图片使用 thumbnailUrl,点击后跳转的链接使用 previewUrl(点击缩略图可在浏览器中打开完整预览):
1. [](<previewUrl>)
**<title>** — <artist>, <width>×<height>, <licenseModel>
2. ...
这是标准的 Markdown 图片链接语法([](previewUrl))——它会呈现实际的缩略图,而不只是文本链接;点击缩略图会跳转到 previewUrl。如果客户端无法呈现 Markdown 图片,则会以链接标题的形式正常显示。
仅当 effectiveQuery 不为 null 且与用户的原始查询不同时,才在列表前添加 Searched for: <effectiveQuery>。
在此处结束本轮。不要自动下载,不要写入文件,也不要提出后续问题。 Agentforce 会注入自己的选择界面——提出问题或自动选择会导致重复的“二次询问”。不要代替用户选择结果。
非交互模式(定时/无头运行,没有用户在场):从结果中选择 images[0],并在报告中注明已自动选择。然后直接继续步骤 3。
步骤 3 — 下载(计费)
⚠️ 每次调用都会授权使用该图片,并消耗一次图库图片下载额度。只有在用户明确选择图片后(或如上所述处于非交互模式时),才能调用。
调用 download_stock_image 前,请确认:
- 用户已明确说出或指出想要的图片(或已确认处于非交互模式)
- 这不是对先前下载的自动重试
MCP 工具: download_stock_image(服务:media-management)
超时: 60 秒
| 参数 | 必填 | 默认值 | 说明 |
|---|---|---|---|
assetId | ✅ 是 | — | 来自先前 search_stock_images 结果的图库资源 ID,最多 50 个字符 |
size | 否 | comp | comp(适合 Web 的合成图,默认值)、medium_jpg、largest(完整分辨率,可能超过 100 MB),最多 50 个字符 |
仅在用户明确要求完整/原始分辨率时使用 largest。
响应字段:
| 字段 | 说明 |
|---|---|
assetId | 已下载的图库资源 ID |
managedContentBodyId | 存储图片字节的 Salesforce 记录 ID |
parentContentGenAiOutputId | 跟踪下载请求的记录 |
childContentGenAiOutputId | 将请求与已保存主体关联的记录 |
byteCount | 已保存图片的大小(字节) |
format | 解析后的图片格式(例如 jpg、png、eps、tiff、svg) |
url | 已保存图片的 URL — 使用此 URL 下载或预览图片 |
步骤 4 — 下载到客户端并预览
成功调用 download_stock_image 后,在本地下载图片并在 VS Code 中打开。
必须使用 download-stock-image.py 完成此操作。不要使用 curl、wget 或任何其他工具。
python3 scripts/download-stock-image.py \
--url "<url from download response>" \
--id "<assetId>" \
--format "<format from download response>" \
--preview
该脚本通过 sf CLI 获取组织凭据(sf config get target-org 和 sf org auth show-access-token),使用 Authorization: Bearer <accessToken> 将图片下载到 stockimages/<assetId>.<format>,并在传入 --preview 时于 VS Code 中打开图片。
传入 --output-dir <path> 可覆盖默认的 stockimages/ 目录。
绝不要调整图片大小或进行后期处理。 使用 CSS(width、height、object-fit)控制显示尺寸。
矢量/二进制格式(eps、tiff): 始终传入下载响应返回的确切 format,绝不要为了绕过验证错误而替换成 jpg 等格式;文件字节与扩展名将不匹配,文件会显示为损坏。VS Code 无法渲染 eps/tiff 预览,因此脚本会自动跳过这些格式的 --preview,但仍会报告保存路径。
步骤 5 — 反馈结果
成功下载后,告知用户:
- 图片标题和艺术家
- 已保存图片的本地路径(脚本打印的路径)
managedContentBodyId- 署名:
{artist} · {collection}(如果下载响应中包含署名字符串,则使用该字符串)
回退方案与错误
| 情况 | 操作 |
|---|---|
搜索结果中的 errorMessage 不为 null | 显示该错误;建议使用更简单的查询或更换 searchType/orientation |
images 为空 | 建议使用更宽泛的关键词;尝试在 Editorial 和 Creative 之间切换 |
effectiveQuery 不同 | 告知用户搜索服务实际收到的内容 |
| MCP 工具不可用 | 使用下方的占位 URL——不要下载或保存 |
| 下载失败 | 显示错误;不要自动重试——先征得用户同意(每次重试都会收费) |
占位内容
如果 search_stock_images 和 download_stock_image 均不可用,请直接将此 URL 用作 src 或 CSS url():
https://cdn.scs.static.lightning.force.com/content/assets/d5222d4a11e6c2b735152d7eea824ce4/placeholder.svg
占位内容政策: 占位 URL 只有一个。不要下载、修改它,也不要使用 Python、ImageMagick 或任何其他工具生成替代占位内容。如果用户要求特定尺寸或格式的占位内容,请告知用户只有此 URL 可用,并让他们在使用时通过 CSS 缩放。