mcpField
A
adobe-create-social-variations

adobe-create-social-variations

github.com/adobe创意与媒体316287 次安装今天更新
代码仓库

关于 adobe-create-social-variations

这是一项 Adobe 工作流技能,可将源图制作成适配社交平台的裁剪图和变体,并通过主体感知构图及预览检查画面。

主要功能

  1. 01主体感知图像裁剪
  2. 02按比例扩展画布
  3. 03完整生成前预览三种裁剪
  4. 04生成平台专属图像变体
  5. 05按原比例调整视频尺寸

适用场景

  1. 01将一张图片适配多个社交平台
  2. 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_filepickerWidget = true/false文件选择器——在支持小组件的界面(例如 Claude)上,这是默认的导入方式。如果不可用(例如 Codex),请通过 asset_initialize_file_upload → asset_finalize_file_upload 以编程方式暂存本地文件(请参阅各“获取源文件”步骤中的无小组件备用方案)。
asset_preview_filepreviewWidget = true/false并排/网格预览。如果不可用(例如 Codex),请直接在消息中提供输出 URL——UI 客户端仍会将其内嵌呈现;非 UI Agent 则通过 curl 下载每个文件。
图像工作流 — 增强工具(可选,优雅降级)
工具标记不可用时
image_generative_expandexpandAvailable = 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 — 正方形sourceURI1080×10801:1Instagram 正方形、LinkedIn 正方形、Facebook 正方形
测试 2 — 竖版tallURI1080×13504:5Instagram 竖版、Threads — 用于评估 9:16 质量的风向标
测试 3 — 横版wideURI1200×627~2:1LinkedIn 横版、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。

各平台需要生成的变体:

平台变体
Instagram1080×1080(重复使用测试图)、1080×1350(重复使用测试图)、1080×1920
TikTok仅 1080×1920 — TikTok 不提供 4:5 变体
LinkedIn1200×627(重复使用测试图)、1080×1080(重复使用测试图)
Facebook1200×630、1080×1080、1080×1920
X/Twitter1200×675、1080×1080
YouTube1280×720
Snapchat1080×1920
Pinterest1000×1500
Threads1080×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 画布扩展功能 — 已改用智能重新构图。


平台规格(图片)

#平台格式尺寸比例质量源画布
1Instagram信息流方形1080×10801:17sourceURI
2Instagram信息流纵向1080×13504:57tallURI
3Instagram快拍 / Reel1080×19209:167tallURI
4TikTok视频 / 帖子1080×19209:167tallURI
5LinkedIn横向帖子1200×627~2:16wideURI
6LinkedIn方形帖子1080×10801:16sourceURI
7Facebook信息流横向1200×630~2:17wideURI
8Facebook信息流方形1080×10801:17sourceURI
9Facebook快拍1080×19209:167tallURI
10X/Twitter信息流内1200×67516:96wideURI
11X/Twitter方形帖子1080×10801:16sourceURI
12YouTube缩略图1280×72016:95wideURI
13SnapchatSnap/快拍1080×19209:162tallURI
14Pinterest标准 Pin1000×15002:37tallURI
15Threads信息流纵向1080×13504:57tallURI

⚠️ 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桌面电脑或笔记本电脑录制
相机 / DSLR16: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(用于视频工具)才有效。

评论

支持 Markdown