关于 adobe-create-social-variations
这是一项 Adobe 工作流技能,可将源图制作成适配社交平台的裁剪图和变体,并通过主体感知构图及预览检查画面。
主要功能
- 01主体感知图像裁剪
- 02按比例扩展画布
- 03完整生成前预览三种裁剪
- 04生成平台专属图像变体
- 05按原比例调整视频尺寸
适用场景
- 01将一张图片适配多个社交平台
- 02完整生成前检查裁剪构图
MCP 相关
通过 Adobe MCP App 小组件和 Adobe for creativity 连接器选择、检查、处理、预览及交付素材。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ adobe/ skills --skill adobe-create-social-variations安装后在 Claude Code 中输入/adobe-create-social-variations确认已加载。
详细介绍
Adobe Create 社交媒体变体
从单个源文件生成可直接用于各个平台的图像和视频。使用 AI 画布扩展和感知主体的裁剪功能,让主体在所有宽高比下都保持聚焦。在运行完整套装前,先显示轻量级的 3 裁剪预览,以便及早发现构图问题——随后会在最终输出中复用这些裁剪结果。
界面说明: 下方默认流程使用 Adobe 的 MCP App 小组件——
asset_add_file文件选择器和asset_preview_file预览。请按此流程操作。仅当此界面不提供小组件工具时(例如 Codex),才使用对应步骤附带的无小组件备用方案。同样,如果没有问题小组件,请将AskUserQuestion提示以带标签的纯文本选项呈现。
支持的输入类型
| 输入 | 支持情况 | 备注 |
|---|---|---|
| JPG / PNG | ✅ 完整工作流 | |
| Firefly 生成的图像 | ✅ 完整工作流 | 对于 .ffgenimg 资源,请传入 presignedRenditionUrl 字段,而不是 presignedAssetUrl |
| Express 文件 | ⚠️ 部分支持 | 必须先导出为 JPG/PNG——继续操作前请告知用户 |
| PSD / AI(Illustrator) | ⚠️ 部分支持 | 请先拼合图层(如果失败,请参阅“错误处理”) |
| 视频(MP4/MOV) | ⚠️ 部分支持 | 仅调整大小——不支持智能重构。请参阅“视频工作流” |
| 不支持的格式(DOCX、PDF 等) | ❌ | 告知用户;列出可接受的格式 |
Step 0 - 前提:初始化 Adobe 工具
首先调用 adobe_mandatory_init。该工具会返回文件处理规则和工具路由指南,供后续工作流使用。
{ "skill_name": "adobe-create-social-variations", "skill_version": "2.1.0" }
Step 1 — 权限检查
现在,adobe_mandatory_init 已确认“Adobe for creativity”连接器已启用,请检查该连接器提供了哪些工具,并设置功能标记。
图像工作流 — 核心工具(必需)
要运行此技能,必须具备以下所有工具。如果连接器缺少任何一个工具,请原样输出以下消息并停止——不要再调用其他工具:
"To access this skill, please disconnect and reconnect to the "Adobe for creativity" Connector to sign in using an Adobe account, or sign up."
| 工具 | 用途 |
|---|---|
asset_initialize_file_upload | 两步上传中的首次调用——将本地文件暂存到 CC |
asset_finalize_file_upload | 两步上传中的第二次调用 |
asset_inline_preview | 在裁剪前确定焦点策略 |
image_crop_and_resize | 按平台和格式进行裁剪 |
小组件工具(可用时使用;提供备用方案)
| 工具 | 标记 | 缺失时的处理 |
|---|---|---|
asset_add_file | pickerWidget = true/false | 文件选择器——在支持小组件的界面(例如 Claude)上,这是默认的导入方式。如果不可用(例如 Codex),请通过 asset_initialize_file_upload → asset_finalize_file_upload 以编程方式暂存本地文件(请参阅各“获取源文件”步骤中的无小组件备用方案)。 |
asset_preview_file | previewWidget = true/false | 并排/网格预览。如果不可用(例如 Codex),请直接在消息中提供输出 URL——UI 客户端仍会将其内嵌呈现;非 UI Agent 则通过 curl 下载每个文件。 |
图像工作流 — 增强工具(可选,优雅降级)
| 工具 | 标记 | 不可用时 |
|---|---|---|
image_generative_expand | expandAvailable = true/false | 改用 image_crop_and_resize,从 sourceURI 使用 fit: "reframe"。不要向用户提及“AI 画布扩展”。在交付摘要中注明:“已使用智能重构图像适配宽高比。” |
视频工作流 — 必需工具(可选工作流,必须全部可用)
仅当下方两个工具都可用时,才提供视频工作流。如果任一工具不可用,则设置 videoCapable = false — 不要在任何时候向用户提及视频调整大小功能。
| 工具 | 用途 |
|---|---|
video_resize | 仅调整大小比例不变 |
resizeVideoPoll | 延迟加载的工具 — 调用前加载 |
如果 videoCapable = false,且用户明确询问视频调整大小,请避免冗长作答,并原样输出以下消息:
"当前设置不支持视频调整大小。请断开并重新连接 "Adobe for creativity" Connector,以使用 Adobe 账户登录,或注册账户。与此同时,我可以帮你裁剪图像并制作社交媒体版本。"
工具参考
| 步骤 | 工具 | 备注 |
|---|---|---|
| 获取文件(小组件界面) | asset_add_file | 文件选择器 / CC 浏览 |
| 暂存文件(无小组件备用方案) | asset_initialize_file_upload + asset_finalize_file_upload | 两步上传 — 选择器不可用时,将本地文件暂存到 CC |
| 检查源图像 | asset_inline_preview | 裁剪前确定焦点策略 |
| 扩展画布 | image_generative_expand | 创建纵向(9:16/4:5)和横向(约 2:1/16:9)版本 |
| 裁剪为平台尺寸 | image_crop_and_resize | 按平台、按格式处理;也是扩展功能返回 403 时的备用方案 |
| 预览测试裁剪或完整图集 | asset_preview_file | 完整运行前(测试)和交付时(无小组件备用方案:直接展示 URL) |
| 调整视频大小 | video_resize | 仅调整大小比例不变 |
| 轮询视频调整大小任务 | resizeVideoPoll | 延迟加载的工具 — 调用前加载 |
图像工作流
步骤 0 — 获取源文件
根据文件所在位置,获取方式有所不同:
| 源文件 | 操作 |
|---|---|
在聊天中上传的文件(/mnt/user-data/uploads/…) | 检查 adobe_mandatory_init(步骤 0)中的出站状态。如果已启用出站传输,则通过编程方式上传:使用 bash 获取文件大小和 MIME 类型,调用 asset_initialize_file_upload,PUT 分块,然后调用 asset_finalize_file_upload。如果已禁用出站传输,则改用 asset_add_file()(选择器)。 |
| 尚未提供文件 | 立即调用 asset_add_file(),无需先询问。 |
| 已在 Creative Cloud 中的文件 | 调用 asset_add_file(),让用户从其 CC 存储空间中选择文件。 |
无选择器回退方案 (仅当此界面不提供
asset_add_file时使用,例如 Codex) — 不要让用户选择文件。通过编程方式暂存任何本地文件(asset_initialize_file_upload→ PUT →asset_finalize_file_upload),并使用返回的预签名 CC URL;对于已在 Creative Cloud 中的文件,直接通过其 CC URI 引用。暂存需要出站传输 — 请先检查adobe_mandatory_init中的出站状态;如果已禁用出站传输,且此界面没有选择器,请告知用户无法在此处暂存文件,并让他们在提供asset_add_file选择器的界面上运行工作流。
文件就绪后,根据 mediaType 判断是图像还是视频。对于图像,继续执行步骤 1。
步骤 1 — 询问:选择哪些平台?
使用支持多选的 AskUserQuestion,通过一个问题询问:
全部平台 / Instagram / TikTok / LinkedIn / Facebook / YouTube / Snapchat / X/Twitter / Pinterest / Threads
根据用户的回答设置测试标志:
- 如果选择了“全部平台” →
runTestPreview = true。使用所有平台。生成完整结果前会显示 3 个裁剪版本的测试预览(见步骤 4)。 - 如果选择了任意特定平台 →
runTestPreview = false。仅使用所选平台。跳过测试预览,从步骤 3 直接进入步骤 5。
对于大型跨平台批次,测试预览是很有用的安全保障;但对于仅针对 1–2 个平台的任务,它只会造成不必要的阻碍。
步骤 2 — 检查图像并设置焦点策略
先使用 asset_inline_preview 检查源文件中的图像。与根据文件名猜测相比,目视检查能更准确地确定焦点,通常也意味着完全不必询问用户。
检查后,告诉用户你看到了什么,以及你将采用哪种焦点策略,并请用户确认或提出修改意见:
“我看到这是一张[例如‘中性背景上的托特包产品照’]。我会使用[焦点策略],让[主体]在所有裁剪图中保持居中。这样合适吗?还是你希望我聚焦于其他内容?”
只有当图像确实模棱两可时才提出后续问题(例如有多个同样突出的主体,或场景中没有明确焦点)。
| 图像类型 | 焦点策略 | 原因 |
|---|---|---|
| 肖像/头像/场景中的人物 | "face" | 对人物最可靠——即使在紧凑裁剪中,人脸检测也能以面部为锚点 |
| 上半身/胸部以上的肖像 | "upper_body" | 适用于面部和躯干背景信息很重要的情况(服装、手势、表情) |
| 纯净背景上的产品 | { prompt: "产品描述" } | 明确描述产品,以便干净地分离主体(例如 { prompt: "托特包" }) |
| 背景杂乱的非人物主体 | { prompt: "主体描述" } | 比通用的 "subject" 更精准 |
| 航拍/平铺拍摄/没有明确主体 | { x: 0.5, y: 0.5 } | 没有可检测的主体时,居中裁剪最稳妥 |
| 用户指定了主体 | { prompt: "用户的描述" } | 直接传入用户的原话 |
对于包含人物的图像,使用
"face"——基于提示词的焦点容易偏向身体而非面部。{ prompt: "..." }仅用于非人物主体。
⚠️ 如果源图像明显宽于高(横向),则在纵向扩展时,上下各扩展 2000px(而非默认的 960px),这样纵向裁剪就有足够的画布空间围绕主体重新构图。 ⚠️ 对于相同的横向源图像,在横向扩展时,左右也各扩展 1500px(而非默认的 960px)——960px 无法为重新构图提供足够空间,难以将主体移至约 2:1 横向裁剪图的中央。
如果用户纠正了你的判断,请更新焦点策略,并在继续操作前确认。
步骤 3 — 生成式扩展(直接从源图像开始,不添加填充)
直接扩展原始图像。不要先填充成正方形——与填补空白条之间的区域相比,AI 扩展真实场景内容的效果更好。
先完成两种扩展,再进行任何裁剪:
// GROUP A — tall canvas (for 9:16 and 4:5 targets)
image_generative_expand(sourceURI, { top: 960, bottom: 960 }) → tallURI
// use 2000 top & bottom if source is significantly landscape
// GROUP B — wide canvas (for ~2:1 and 16:9 targets)
image_generative_expand(sourceURI, { left: 960, right: 960 }) → wideURI
// use 1500 left & right if source is significantly landscape
正方形目标(1:1)直接从源图像裁剪——无需扩展。
扩展均从原始
sourceURI开始——连续扩展会降低输出质量。 ⚠️ 如果image_generative_expand返回 403(权限问题),则对该组中的所有变体使用image_crop_and_resize,并从sourceURI设置fit: "reframe"作为回退方案。在交付摘要中注明使用了回退方案。
步骤 4 — 测试预览(仅限完整集合 — 若 runTestPreview = false,则跳过)
如果 runTestPreview = false(已选择特定平台):跳过此步骤,直接进入步骤 5。
如果 runTestPreview = true(完整集合):在生成完整集合之前,先生成 3 张有代表性的测试裁剪图——每种宽高比各一张。
| 测试 | 来源 | 尺寸 | 比例 | 覆盖范围 |
|---|---|---|---|---|
| 测试 1 — 正方形 | sourceURI | 1080×1080 | 1:1 | Instagram 正方形、LinkedIn 正方形、Facebook 正方形 |
| 测试 2 — 竖版 | tallURI | 1080×1350 | 4:5 | Instagram 竖版、Threads — 用于评估 9:16 质量的风向标 |
| 测试 3 — 横版 | wideURI | 1200×627 | ~2:1 | LinkedIn 横版、Facebook 横版、X/Twitter |
使用 asset_preview_file 展示全部 3 张,并询问:
“以下是涵盖主要宽高比的 3 张测试裁剪图。构图和扩展效果看起来合适吗?您批准后,我就会生成完整集合。”
无组件回退方案(仅在
asset_preview_file不可用时,例如 Codex)——在消息中直接提供全部 3 个 URL,并提出相同问题;UI 客户端会以内嵌方式显示这些图片;在 Codex 或其他非 UI Agent 中,将每张图片下载到工作区,并引用本地路径。
这些裁剪图会在最终输出中重复使用——获得批准后,只需生成 9:16 的快拍/短视频裁剪图。
步骤 5 — 生成所有平台变体
**如果 runTestPreview = true:**仅在用户于步骤 4 批准测试裁剪图后继续。
**如果 runTestPreview = false:**在步骤 3 之后立即继续。
为每个已选平台生成 Platform Specs 表中的所有变体。仅当尺寸完全匹配时才重复使用测试裁剪图的 URI——若尺寸不同,则重新运行 image_crop_and_resize。
各平台需要生成的变体:
| 平台 | 变体 |
|---|---|
| 1080×1080(重复使用测试图)、1080×1350(重复使用测试图)、1080×1920 | |
| TikTok | 仅 1080×1920 — TikTok 不提供 4:5 变体 |
| 1200×627(重复使用测试图)、1080×1080(重复使用测试图) | |
| 1200×630、1080×1080、1080×1920 | |
| X/Twitter | 1200×675、1080×1080 |
| YouTube | 1280×720 |
| Snapchat | 1080×1920 |
| 1000×1500 | |
| Threads | 1080×1350 |
步骤 6 — 预览完整集合
使用所有成功生成的 URL 调用 asset_preview_file——包括部分变体生成失败的情况。
无组件回退方案(仅在
asset_preview_file不可用时,例如 Codex)——在消息中直接列出所有成功生成的 URL(包括部分变体生成失败的情况)。UI 客户端会以内嵌方式显示这些图片;在 Codex 或其他非 UI Agent 中,将每张图片下载到工作区,并引用本地路径。
步骤 7 — 交付摘要
提供简洁的摘要表格。清楚说明任何回退方案或跳过的步骤。
✅ Social media set complete!
| Platform | Format | Dimensions | Status |
| --------- | -------------- | ---------- | ------------- |
| Instagram | Feed Square | 1080×1080 | ✅ (from test) |
| Instagram | Feed Portrait | 1080×1350 | ✅ (from test) |
| Instagram | Story / Reel | 1080×1920 | ✅ |
| TikTok | Video / Post | 1080×1920 | ✅ |
| LinkedIn | Post Landscape | 1200×627 | ✅ (from test) |
| LinkedIn | Post Square | 1080×1080 | ✅ (from test) |
如果生成式扩展回退为重新构图:
⚠️ 您当前的 Adobe 套餐不包含 AI 画布扩展功能 — 已改用智能重新构图。
平台规格(图片)
| # | 平台 | 格式 | 尺寸 | 比例 | 质量 | 源画布 |
|---|---|---|---|---|---|---|
| 1 | 信息流方形 | 1080×1080 | 1:1 | 7 | sourceURI | |
| 2 | 信息流纵向 | 1080×1350 | 4:5 | 7 | tallURI | |
| 3 | 快拍 / Reel | 1080×1920 | 9:16 | 7 | tallURI | |
| 4 | TikTok | 视频 / 帖子 | 1080×1920 | 9:16 | 7 | tallURI |
| 5 | 横向帖子 | 1200×627 | ~2:1 | 6 | wideURI | |
| 6 | 方形帖子 | 1080×1080 | 1:1 | 6 | sourceURI | |
| 7 | 信息流横向 | 1200×630 | ~2:1 | 7 | wideURI | |
| 8 | 信息流方形 | 1080×1080 | 1:1 | 7 | sourceURI | |
| 9 | 快拍 | 1080×1920 | 9:16 | 7 | tallURI | |
| 10 | X/Twitter | 信息流内 | 1200×675 | 16:9 | 6 | wideURI |
| 11 | X/Twitter | 方形帖子 | 1080×1080 | 1:1 | 6 | sourceURI |
| 12 | YouTube | 缩略图 | 1280×720 | 16:9 | 5 | wideURI |
| 13 | Snapchat | Snap/快拍 | 1080×1920 | 9:16 | 2 | tallURI |
| 14 | 标准 Pin | 1000×1500 | 2:3 | 7 | tallURI | |
| 15 | Threads | 信息流纵向 | 1080×1350 | 4:5 | 7 | tallURI |
⚠️ Snapchat 的 250 KB 限制要求使用
quality: 2——选择 Snapchat 时请提前提醒用户。
文件命名约定: [basename]_[platform]_[descriptor]_[ratio].jpg
示例:hero_instagram_story_9x16.jpg
视频工作流
步骤 0 — 获取源文件
视频工具需要 assetId,而不是 URL。获取方式取决于文件所在位置:
| 来源 | 操作 |
|---|---|
在聊天中上传的文件(/mnt/user-data/uploads/…) | 检查 adobe_mandatory_init(步骤 0)中的出口状态。如果已启用出口,则以编程方式上传:通过 bash 获取文件大小和 MIME 类型,调用 asset_initialize_file_upload,PUT 分块,然后调用 asset_finalize_file_upload。返回的 assetId 即为视频工具所需的 ID。如果已禁用出口,则改用 asset_add_file()(选择器)。 |
| 尚未提供文件 | 立即调用 asset_add_file()。 |
| 文件已在 Creative Cloud 中 | 调用 asset_add_file(),让用户选择文件。 |
如果已禁用出口,且用户已将视频拖入聊天中,请说明无法直接使用的原因:“要调整视频尺寸,我需要你通过文件选择器选择视频,这样 Adobe 才能获取所需的资源 ID。我现在打开选择器。”
无组件回退方案(仅当
asset_add_file不可用时,例如 Codex)— 以编程方式暂存本地视频(asset_initialize_file_upload→ PUT →asset_finalize_file_upload),并使用返回的assetId;对于已在 Creative Cloud 中的视频,通过其assetId引用。暂存需要出口权限——首先检查adobe_mandatory_init中的出口状态;如果已禁用出口,且当前界面没有可用的选择器,请告知用户无法在此处暂存,并请他们在提供asset_add_file选择器的界面上运行工作流。
步骤 1 — 确定视频类型
如果用户已描述或暗示视频方向(例如“我用手机竖着拍的” → 明确为 9:16),则跳过此问题并继续。否则询问:
“为了推荐最佳输出尺寸,了解视频类型会有所帮助。这是什么类型的视频?”
使用 AskUserQuestion 并设置为单选:
| 选项 | 纵横比 | 常见用途 |
|---|---|---|
| 手机视频 — 竖屏 | 9:16 | 用手机竖屏拍摄 |
| 手机视频 — 方形 | 1:1 | 使用方形模式拍摄 |
| 屏幕录制 | 16:9 | 桌面电脑或笔记本电脑录制 |
| 相机 / DSLR | 16:9 | 专业相机或无反相机拍摄 |
| 其他 / 不确定 | — | 默认采用 1:1(跨平台最稳妥的选择) |
步骤 2 — 建议安全的输出尺寸
仅建议同比例调整尺寸。跨比例调整(例如从 16:9 调整为 9:16)会产生黑边,并受到 TikTok 和 Instagram Reels 的算法惩罚。如果用户要求跨比例调整,请说明此限制,并改为提供同比例替代方案。
| 源比例 | 安全的输出尺寸 |
|---|---|
| 9:16(竖屏) | 1080×1920、720×1280、540×960 |
| 1:1(正方形) | 1080×1080、720×720 |
| 16:9(横屏) | 1920×1080、1280×720、854×480 |
使用 AskUserQuestion(多选)将这些尺寸作为选项呈现。
步骤 3 — 调整尺寸
⚠️
resizeVideoPoll是延迟加载工具——尝试轮询之前,请先加载它。 未加载便直接调用会报错:“not loaded”。
对于每个选定的尺寸,使用资源 ID 调用 video_resize:
video_resize({ assetId: sourceAssetId, width: W, height: H }) → { statusId }
使用 resizeVideoPoll 进行轮询,直到完成。先暂停片刻并轮询 3–4 次,再向用户报告进度缓慢。
步骤 4 — 预览
使用所有已完成的输出调用 asset_preview_file。
无组件回退方案(仅当
asset_preview_file不可用时,例如 Codex)——在消息中直接列出所有已完成输出的 URL。UI 客户端会将其内嵌渲染;在 Codex 或其他非 UI Agent 中,将每个输出下载到工作区并引用本地路径。
步骤 5 — 交付摘要
✅ Video resize complete!
| Size | Ratio | Status |
| --------- | ----- | ------ |
| 1080×1920 | 9:16 | ✅ |
| 720×1280 | 9:16 | ✅ |
注意:视频尺寸调整不会应用智能重新构图——跨比例重新格式化不在此技能的范围内。
错误处理
| 情况 | 处理方式 |
|---|---|
| 出站上传失败(分块 PUT 重试后仍返回 5xx) | 停止上传。改用 asset_add_file(),并告知用户:“直接上传失败了——我将打开文件选择器,让你选择文件。”(不支持小组件的界面:报告失败,并请用户重新提供文件。) |
image_generative_expand 返回 403(权限限制) | 改用 sourceURI 调用 image_crop_and_resize,并设置 fit: "reframe"。在交付摘要中注明:“你当前的 Adobe 套餐不包含 AI 画布扩展功能,因此改用了智能重新取景。”重试无法解决 403 权限限制——请按回退规则继续处理。 |
image_crop_and_resize 返回 403(权限限制) | 停止工作流。告知用户:“你当前的 Adobe 套餐不支持图像裁剪——我无法在此完成此请求。” |
| PSD/AI 扁平化返回 403 | 停止工作流。告知用户:“你当前的 Adobe 套餐不支持此文件类型的扁平化——请先导出为 JPG 或 PNG,然后重试。” |
.ffgenimg 文件类型无法扩展 | 改用 presignedRenditionUrl,而不是 presignedAssetUrl 重试 |
| 401 未通过身份验证 | 请用户通过 Adobe OAuth 重新进行身份验证 |
| 裁剪后图像过大 | 使用较低的质量设置重新运行 |
| 已上传 Express 文件 | 请用户先导出为 JPG/PNG |
| 已上传 PSD / AI 文件 | 先进行扁平化处理(JPEG,300 DPI)。如果返回 403,请参阅上方的权限限制行。 |
video_resize 失败 | 明确报告失败;建议用户重新上传为 MP4 |
| 不支持的文件格式(DOCX、PDF 等) | 告知用户。接受的输入:JPG、PNG、Firefly 图像、PSD/AI、MP4/MOV。 |
硬性约束
- 切勿将本地文件系统路径直接传递给任何
image_*或视频工具。本地文件必须先上传到 Creative Cloud——通过asset_add_file选择,或(无小组件时)依次通过asset_initialize_file_upload→ PUT →asset_finalize_file_upload暂存;只有生成的预签名 CC URI(用于图像)或assetId(用于视频工具)才有效。