adobe-create-social-variations

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Adobe Create Social Variations

Adobe Create Social Variations

Produces platform-ready images and videos from a single source file. Uses AI canvas expansion and subject-aware cropping to keep the subject in focus across all aspect ratios. Shows a lightweight 3-crop preview before a full-set run so framing issues are caught early — those crops are then reused in the final output.

从单个源文件生成适配各平台的图片和视频。借助AI画布扩展和主体识别裁剪功能,确保主体在所有宽高比下都处于视觉焦点。在全量生成素材前,会展示一组轻量化的3张裁剪预览图,以便提前发现构图问题——这些预览图会被复用至最终输出结果中。

Supported Input Types

支持的输入类型

InputSupportedNotes
JPG / PNG✅ Full workflow
Firefly-generated image✅ Full workflowFor
.ffgenimg
assets, pass the
presignedRenditionUrl
field, not
presignedAssetUrl
Express file⚠️ PartialMust be exported to JPG/PNG first — tell user before proceeding
PSD / AI (Illustrator)⚠️ PartialFlatten first (see Error Handling if this fails)
Video (MP4/MOV)⚠️ PartialResize only — no smart reframe. See VIDEO WORKFLOW
Unsupported (DOCX, PDF, etc.)Inform user; list accepted formats

输入类型支持状态说明
JPG / PNG✅ 完整流程
Firefly生成的图像✅ 完整流程对于
.ffgenimg
格式资源,请传入
presignedRenditionUrl
字段,而非
presignedAssetUrl
Express文件⚠️ 部分支持必须先导出为JPG/PNG格式——执行前告知用户
PSD / AI (Illustrator)⚠️ 部分支持需先扁平化处理(若失败,请查看错误处理章节)
视频(MP4/MOV)⚠️ 部分支持仅支持调整尺寸——无智能重构图功能。请查看视频工作流
不支持格式(DOCX、PDF等)❌ 不支持告知用户;列出可接受的格式

Step 0 - prereq: Initialize Adobe Tools

步骤0 - 前置要求:初始化Adobe工具

Call
adobe_mandatory_init
first. This returns file handling rules and tool routing guidance required for the rest of the workflow.
json
{ "skill_name": "adobe-create-social-variations", "skill_version": "1.0.1" }

首先调用
adobe_mandatory_init
。该接口会返回文件处理规则和工具路由指引,为后续工作流提供必要支持。
json
{ "skill_name": "adobe-create-social-variations", "skill_version": "1.0.1" }

Step 1 — Entitlement Check

步骤1 — 权限检查

Now that
adobe_mandatory_init
confirmed that the "Adobe for creativity" connector is live, check which tools are available through the connector and set capability flags.
adobe_mandatory_init
确认"Adobe for creativity"连接器已激活后,检查该连接器可用的工具并设置功能标识。

Image Workflow — Core Tools (required)

图片工作流 — 核心工具(必填)

All of these must be present for the skill to run at all. If any are missing from the connector, output this message exactly and stop — make no further tool calls:
"To access this skill, please disconnect and reconnect to the "Adobe for creativity" Connector to sign in using an Adobe account, or sign up."
ToolPurpose
asset_add_file
File picker / CC browse / upload
asset_initialize_file_upload
First call in two-step egress upload
asset_finalize_file_upload
Second call in two-step egress upload
asset_inline_preview
Determines focus strategy before cropping
image_crop_and_resize
Per-platform, per-format cropping
asset_preview_file
Test previews and final delivery
必须全部具备这些工具,技能才能运行。如果连接器中缺少任意一个工具,需输出以下内容并终止流程——不得再调用其他工具:
"要使用此技能,请断开并重新连接"Adobe for creativity"连接器,使用Adobe账号登录或注册。"
工具用途
asset_add_file
文件选择器/CC浏览/上传
asset_initialize_file_upload
两步式出口上传的第一步调用
asset_finalize_file_upload
两步式出口上传的第二步调用
asset_inline_preview
裁剪前确定主体聚焦策略
image_crop_and_resize
按平台、按格式裁剪
asset_preview_file
测试预览与最终交付

Image Workflow — Enhanced Tools (optional, graceful fallback)

图片工作流 — 增强工具(可选,优雅降级)

ToolFlagIf missing
image_generative_expand
expandAvailable = true/false
Use
image_crop_and_resize
with
fit: "reframe"
from
sourceURI
instead. Do NOT mention "AI canvas expansion" to the user. Note in delivery summary: "Smart reframe was used for aspect ratio adaptation."
工具标识缺失时处理方式
image_generative_expand
expandAvailable = true/false
使用
image_crop_and_resize
并设置
fit: "reframe"
,基于
sourceURI
处理。不得向用户提及"AI画布扩展"。在交付总结中注明:"使用智能重构图进行宽高比适配。"

Video Workflow — Required Tools (optional workflow, all-or-nothing)

视频工作流 — 必备工具(可选工作流,全部具备才可使用)

Only offer the video workflow if both tools below are available. If either is missing, set
videoCapable = false
— do NOT mention video resizing capabilities to the user at any point.
ToolPurpose
video_resize
Same-ratio resize only
resizeVideoPoll
Deferred tool — load before calling
If
videoCapable = false
and the user explicitly asks about video resizing, avoid verbosity and output this message exactly:
"Video resizing isn't available with your current setup. Please disconnect and reconnect to the "Adobe for creativity" Connector to sign in using an Adobe account, or sign up. In the meantime, I can help with image crops and social media variants though."

仅当以下两个工具都可用时,才可提供视频工作流。若缺少任意一个,设置
videoCapable = false
——任何时候都不得向用户提及视频调整尺寸功能。
工具用途
video_resize
仅支持等比例调整尺寸
resizeVideoPoll
延迟加载工具——调用前需先加载
如果
videoCapable = false
且用户明确询问视频调整尺寸,需简洁输出以下内容:
"当前配置下无法使用视频调整尺寸功能。请断开并重新连接"Adobe for creativity"连接器,使用Adobe账号登录或注册。目前我可以帮您处理图片裁剪和社交媒体素材变体制作。"

Tool Reference

工具参考

StepToolNotes
Upload chat-dropped file
asset_initialize_file_upload
First call in two-step egress upload
Complete the upload
asset_finalize_file_upload
Second call in two-step egress upload
Get file from CC or as egress fallback
asset_add_file
File picker / CC browse / upload
Inspect source image
asset_inline_preview
Determines focus strategy before cropping
Expand canvas
image_generative_expand
Creates tall (9:16/4:5) and wide (~2:1/16:9) variants
Crop to platform dimensions
image_crop_and_resize
Per-platform, per-format; also 403 fallback for expand
Preview test crops or full set
asset_preview_file
Before full run (test) and at delivery
Resize video
video_resize
Same-ratio resize only
Poll video resize job
resizeVideoPoll
Deferred tool — load before calling

步骤工具说明
上传聊天中拖放的文件
asset_initialize_file_upload
两步式出口上传的第一步调用
完成上传
asset_finalize_file_upload
两步式出口上传的第二步调用
从CC获取文件或作为出口上传的备选方案
asset_add_file
文件选择器/CC浏览/上传
检查源图像
asset_inline_preview
裁剪前确定主体聚焦策略
扩展画布
image_generative_expand
创建纵向(9:16/4:5)和横向(~2:1/16:9)变体
裁剪至平台尺寸
image_crop_and_resize
按平台、按格式处理;同时作为扩展功能的403降级方案
预览测试裁剪图或全量素材
asset_preview_file
全量生成前(测试阶段)和交付阶段使用
调整视频尺寸
video_resize
仅支持等比例调整尺寸
轮询视频调整尺寸任务
resizeVideoPoll
延迟加载工具——调用前需先加载

IMAGE WORKFLOW

图片工作流

Step 0 — Get the Source File

步骤0 — 获取源文件

How you get the file depends on where it is:
SourceAction
File uploaded in chat (
/mnt/user-data/uploads/…
)
Check
<network_configuration>
. If egress is enabled (
Enabled: true
), upload programmatically: get file size and MIME type via bash, call
asset_initialize_file_upload
, PUT the chunk(s), then
asset_finalize_file_upload
. If egress is disabled, fall back to
asset_add_file()
.
No file provided yetCall
asset_add_file()
immediately — no need to ask first.
File already in Creative CloudCall
asset_add_file()
so the user can select it from their CC storage.
After the file is available, detect image vs. video from
mediaType
. For images, proceed to Step 1.

获取文件的方式取决于文件位置:
文件来源操作
聊天中上传的文件(
/mnt/user-data/uploads/…
检查
<network_configuration>
。若出口上传已启用(
Enabled: true
),则自动上传:通过bash获取文件大小和MIME类型,调用
asset_initialize_file_upload
,上传文件分片,再调用
asset_finalize_file_upload
。若出口上传未启用,则降级使用
asset_add_file()
尚未提供文件立即调用
asset_add_file()
——无需提前询问用户。
文件已在Creative Cloud中调用
asset_add_file()
,让用户从其CC存储中选择文件。
文件可用后,通过
mediaType
判断是图片还是视频。若是图片,进入步骤1。

Step 1 — Ask: Which Platforms?

步骤1 — 询问:适配哪些平台?

Ask in a single question using
AskUserQuestion
with multi-select:
Full set / Instagram / TikTok / LinkedIn / Facebook / YouTube / Snapchat / X/Twitter / Pinterest / Threads
Set the test flag based on the user's answer:
  • If "Full set" is selected
    runTestPreview = true
    . Use all platforms. A 3-crop test preview will be shown before the full set is generated (see Step 4).
  • If any specific platform(s) are selected
    runTestPreview = false
    . Use only the selected platforms. Skip the test preview and go directly from Step 3 to Step 5.
The test preview is a useful safety net for large cross-platform batches, but unnecessary friction for a targeted 1–2 platform run.

使用
AskUserQuestion
以多选形式一次性询问:
全平台 / Instagram / TikTok / LinkedIn / Facebook / YouTube / Snapchat / X/Twitter / Pinterest / Threads
根据用户回答设置测试标识:
  • 若选择"全平台"
    runTestPreview = true
    。适配所有平台。全量生成前会展示3张裁剪测试预览图(见步骤4)。
  • 若选择特定平台
    runTestPreview = false
    。仅适配所选平台。跳过测试预览,直接从步骤3进入步骤5。
测试预览是跨平台批量处理时的有效安全机制,但对于仅适配1-2个平台的场景,会增加不必要的操作步骤。

Step 2 — Inspect Image & Set Focus Strategy

步骤2 — 检查图像并设置聚焦策略

Inspect the image first using
asset_inline_preview
on the source file. Visual inspection produces far better focus decisions than guessing from the filename — and usually means you won't need to ask the user anything at all.
After inspecting, tell the user what you see and what focus strategy you're using, and invite a correction:
"I can see this is a [e.g. 'product shot of a tote bag on a neutral background']. I'll use [focus strategy] to keep [subject] centred across all crops. Does that sound right, or would you like me to focus on something else?"
Only ask a follow-up question if the image is genuinely ambiguous (multiple equally prominent subjects, or a scene with no clear focal point).
Image typeFocus strategyRationale
Portrait / headshot / person in scene
"face"
Most reliable for people — facial detection anchors to the face even in tight crops
Upper body / chest-up portrait
"upper_body"
Use when face + torso context matters (outfit, gesture, expression)
Product on clean background
{ prompt: "description of product" }
Name the product explicitly for clean isolation (e.g.
{ prompt: "tote bag" }
)
Non-human subject with busy background
{ prompt: "description of subject" }
More precise than generic
"subject"
Aerial / flat lay / no clear subject
{ x: 0.5, y: 0.5 }
Centre crop is safest when nothing to detect
User specifies a subject
{ prompt: "user's description" }
Pass their words directly
For images containing people, use
"face"
— prompt-based focus drifts to bodies rather than faces. Reserve
{ prompt: "..." }
for non-human subjects.
⚠️ If the source image is significantly wider than it is tall (landscape), use 2000px top & bottom for the tall expand (not the default 960px) — this gives the portrait crop enough canvas to reframe around the subject. ⚠️ For the same landscape sources, also use 1500px left & right for the wide expand (not the default 960px) — 960px doesn't give the reframe enough room to pull the subject into centre for the ~2:1 landscape crop.
If the user corrects your assessment, update the focus strategy and confirm before proceeding.

先检查图像:对源文件调用
asset_inline_preview
。视觉检查比通过文件名猜测更能做出准确的聚焦决策——通常无需询问用户任何问题。
检查完成后,告知用户观察结果和将使用的聚焦策略,并邀请用户修正:
"我看到这是一张[例如:'纯色背景下的托特包产品图']。我将使用[聚焦策略]确保[主体]在所有裁剪图中保持居中。这样可以吗?或者您希望我聚焦其他内容?"
仅当图像确实存在歧义(多个同等突出的主体,或场景无明确焦点)时,才需要跟进询问。
图像类型聚焦策略理由
肖像/头像/场景中的人物
"face"
针对人物最可靠——面部检测可确保在紧凑裁剪图中仍以面部为锚点
上半身/胸部以上肖像
"upper_body"
当面部+躯干背景信息重要时使用(如服装、手势、表情)
纯色背景下的产品
{ prompt: "产品描述" }
明确指定产品名称以实现精准隔离(例如:
{ prompt: "tote bag" }
)
背景复杂的非人物主体
{ prompt: "主体描述" }
比通用的
"subject"
更精准
航拍/俯拍/无明确主体
{ x: 0.5, y: 0.5 }
无检测对象时,居中裁剪是最安全的选择
用户指定主体
{ prompt: "用户描述" }
直接使用用户提供的描述
若图像包含人物,使用
"face"
——基于提示词的聚焦策略会偏移至身体而非面部。仅对非人物主体使用
{ prompt: "..." }
⚠️ 若源图像明显宽大于高(横向),纵向扩展时上下各留2000px(而非默认的960px)——这能为肖像裁剪提供足够画布,围绕主体重新构图。 ⚠️ 对于相同的横向源图像,横向扩展时左右各留1500px(而非默认的960px)——960px的空间不足以将主体拉至中心以适配~2:1的横向裁剪。
若用户修正了你的判断,更新聚焦策略并确认后再继续。

Step 3 — Generative Expand (directly from source — no padding)

步骤3 — 生成式扩展(直接基于源文件——无需填充)

Expand the original image directly. Do not pad to square first — the AI produces better results extending real scene content than bridging across blank bars.
Run both expands before any crops:
// 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
Square targets (1:1) crop directly from the source — no expand needed.
Expands originate from the original
sourceURI
— chained expands degrade output. ⚠️ If
image_generative_expand
returns 403 (entitlement), fall back to
image_crop_and_resize
with
fit: "reframe"
from
sourceURI
for all variants in that group. Note the fallback in the delivery summary.

直接扩展原始图像。无需先填充为正方形——AI扩展真实场景内容的效果优于填充空白区域。
在裁剪前完成两次扩展:
// A组 — 纵向画布(适配9:16和4:5目标尺寸)
image_generative_expand(sourceURI, { top: 960, bottom: 960 }) → tallURI
// 若源图像为明显横向,上下各留2000px

// B组 — 横向画布(适配~2:1和16:9目标尺寸)
image_generative_expand(sourceURI, { left: 960, right: 960 }) → wideURI
// 若源图像为明显横向,左右各留1500px
正方形目标尺寸(1:1)直接从源文件裁剪——无需扩展。
扩展基于原始
sourceURI
——链式扩展会降低输出质量。 ⚠️ 若
image_generative_expand
返回403(权限不足),则降级使用
image_crop_and_resize
并设置
fit: "reframe"
,基于
sourceURI
处理该组所有变体。在交付总结中注明降级处理。

Step 4 — Test Preview (Full set only — skip if
runTestPreview = false
)

步骤4 — 测试预览 (仅全平台模式需要——若
runTestPreview = false
则跳过)

If
runTestPreview = false
(specific platforms selected): skip this step and go directly to Step 5.
If
runTestPreview = true
(Full set): produce 3 representative test crops — one per aspect ratio family — before generating the full set.
TestSourceDimensionsRatioCovers
Test 1 — SquaresourceURI1080×10801:1Instagram square, LinkedIn square, Facebook square
Test 2 — PortraittallURI1080×13504:5Instagram portrait, Threads — bellwether for 9:16 quality
Test 3 — LandscapewideURI1200×627~2:1LinkedIn landscape, Facebook landscape, X/Twitter
Show all 3 via
asset_preview_file
and ask:
"Here are 3 test crops covering the main aspect ratios. Do the framing and expansion look good? I'll generate the full set once you approve."
These crops are reused in the final output — only the 9:16 story/reel crop needs to be generated after approval.

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张覆盖主要宽高比的测试裁剪图。构图和扩展效果是否符合预期?您确认后我将生成全量素材。"
这些裁剪图会被复用至最终输出中——仅9:16的故事/短视频裁剪图需要在确认后重新生成。

Step 5 — Generate All Platform Variants

步骤5 — 生成所有平台变体

If
runTestPreview = true
:
proceed only after user approves test crops in Step 4. If
runTestPreview = false
:
proceed immediately after Step 3.
Generate every variant in the Platform Specs table for each selected platform. Reuse test crop URIs only when dimensions are an exact match — for any different dimensions, run a fresh
image_crop_and_resize
.
Per-platform variants to generate:
PlatformVariants
Instagram1080×1080 (reuse test), 1080×1350 (reuse test), 1080×1920
TikTok1080×1920 only — no 4:5 variant for TikTok
LinkedIn1200×627 (reuse test), 1080×1080 (reuse test)
Facebook1200×630, 1080×1080, 1080×1920
X/Twitter1200×675, 1080×1080
YouTube1280×720
Snapchat1080×1920
Pinterest1000×1500
Threads1080×1350

runTestPreview = true
仅在用户确认步骤4的测试裁剪图后继续。
runTestPreview = false
步骤3完成后立即继续。
为每个所选平台生成平台规格表中的所有变体。仅当尺寸完全匹配时复用测试裁剪图的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

Step 6 — Preview Full Set

步骤6 — 预览全量素材

Call
asset_preview_file
with all successfully generated URLs — including partial sets when some variants failed.

调用
asset_preview_file
,传入所有生成成功的URL——即使部分变体生成失败,也需展示已完成的部分。

Step 7 — Delivery Summary

步骤7 — 交付总结

Present a clean summary table. Note any fallbacks or skipped steps clearly.
✅ 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) |
If generative expand fell back to reframe:
⚠️ AI canvas expansion is not included in your current Adobe plan — smart reframe was used instead.

展示清晰的总结表格。明确注明任何降级处理或跳过的步骤。
✅ 社交媒体素材集已生成完成!

| 平台  | 格式         | 尺寸 | 状态        |
| --------- | -------------- | ---------- | ------------- |
| Instagram | Feed Square    | 1080×1080  | ✅(来自测试图) |
| Instagram | Feed Portrait  | 1080×1350  | ✅(来自测试图) |
| Instagram | Story / Reel   | 1080×1920  | ✅             |
| TikTok    | Video / Post   | 1080×1920  | ✅             |
| LinkedIn  | Post Landscape | 1200×627   | ✅(来自测试图) |
| LinkedIn  | Post Square    | 1080×1080  | ✅(来自测试图) |
若生成式扩展降级为智能重构图:
⚠️ 当前Adobe套餐不包含AI画布扩展功能——已使用智能重构图替代。

Platform Specs (Image)

图片平台规格

#PlatformFormatDimensionsRatioQualitySource Canvas
1InstagramFeed Square1080×10801:17sourceURI
2InstagramFeed Portrait1080×13504:57tallURI
3InstagramStory / Reel1080×19209:167tallURI
4TikTokVideo / Post1080×19209:167tallURI
5LinkedInPost Landscape1200×627~2:16wideURI
6LinkedInPost Square1080×10801:16sourceURI
7FacebookFeed Landscape1200×630~2:17wideURI
8FacebookFeed Square1080×10801:17sourceURI
9FacebookStory1080×19209:167tallURI
10X/TwitterIn-stream1200×67516:96wideURI
11X/TwitterSquare post1080×10801:16sourceURI
12YouTubeThumbnail1280×72016:95wideURI
13SnapchatSnap/Story1080×19209:162tallURI
14PinterestStandard Pin1000×15002:37tallURI
15ThreadsFeed Portrait1080×13504:57tallURI
⚠️ Snapchat's 250 KB limit requires
quality: 2
— warn the user upfront when Snapchat is selected.
File naming convention:
[basename]_[platform]_[descriptor]_[ratio].jpg
Example:
hero_instagram_story_9x16.jpg

#平台格式尺寸宽高比质量源画布
1InstagramFeed Square1080×10801:17sourceURI
2InstagramFeed Portrait1080×13504:57tallURI
3InstagramStory / Reel1080×19209:167tallURI
4TikTokVideo / Post1080×19209:167tallURI
5LinkedInPost Landscape1200×627~2:16wideURI
6LinkedInPost Square1080×10801:16sourceURI
7FacebookFeed Landscape1200×630~2:17wideURI
8FacebookFeed Square1080×10801:17sourceURI
9FacebookStory1080×19209:167tallURI
10X/TwitterIn-stream1200×67516:96wideURI
11X/TwitterSquare post1080×10801:16sourceURI
12YouTubeThumbnail1280×72016:95wideURI
13SnapchatSnap/Story1080×19209:162tallURI
14PinterestStandard Pin1000×15002:37tallURI
15ThreadsFeed Portrait1080×13504:57tallURI
⚠️ Snapchat限制文件大小为250KB,需设置
quality: 2
——用户选择Snapchat时需提前告知。
文件命名规则:
[basename]_[platform]_[descriptor]_[ratio].jpg
示例:
hero_instagram_story_9x16.jpg

VIDEO WORKFLOW

视频工作流

Step 0 — Get the Source File

步骤0 — 获取源文件

Video tools require an
assetId
— not a URL. How you get it depends on where the file is:
SourceAction
File uploaded in chat (
/mnt/user-data/uploads/…
)
Check
<network_configuration>
. If egress is enabled (
Enabled: true
), upload programmatically: get file size and MIME type via bash, call
asset_initialize_file_upload
, PUT the chunk(s), then
asset_finalize_file_upload
. The returned
assetId
is what video tools need. If egress is disabled, fall back to
asset_add_file()
.
No file provided yetCall
asset_add_file()
immediately.
File already in Creative CloudCall
asset_add_file()
so the user can select it.
If egress is disabled and the user has already dropped a video into chat, explain why it can't be used directly: "To resize your video I'll need you to select it via the file picker — this gives Adobe the asset ID it needs. I'll open it now."

视频工具需要
assetId
——而非URL。获取方式取决于文件位置:
文件来源操作
聊天中上传的文件(
/mnt/user-data/uploads/…
检查
<network_configuration>
。若出口上传已启用(
Enabled: true
),则自动上传:通过bash获取文件大小和MIME类型,调用
asset_initialize_file_upload
,上传文件分片,再调用
asset_finalize_file_upload
。返回的
assetId
即为视频工具所需。若出口上传未启用,则降级使用
asset_add_file()
尚未提供文件立即调用
asset_add_file()
文件已在Creative Cloud中调用
asset_add_file()
,让用户选择文件。
若出口上传未启用且用户已将视频拖入聊天,需解释无法直接使用的原因:"要调整您的视频尺寸,需要您通过文件选择器选择该文件——这能为Adobe提供所需的asset ID。我现在打开文件选择器。"

Step 1 — Determine Video Type

步骤1 — 判断视频类型

If the user has already described or implied the video orientation (e.g. "I shot this on my phone in portrait" → clearly 9:16), skip this question and proceed. Otherwise ask:
"To suggest the best output sizes, it helps to know what kind of video this is. What type is it?"
Use
AskUserQuestion
with single-select:
OptionAspect RatioCommon use
Phone video — portrait9:16Shot on phone, vertical
Phone video — square1:1Shot in square mode
Screen recording16:9Desktop or laptop capture
Camera / DSLR16:9Professional or mirrorless camera
Other / not sureDefault to 1:1 (safest cross-platform)

若用户已描述或暗示视频方向(例如:"我用手机竖屏拍摄的" → 显然是9:16),跳过此问题直接继续。否则询问:
"为了推荐最佳输出尺寸,我需要了解视频类型。这是什么类型的视频?"
使用
AskUserQuestion
以单选形式提供选项:
选项宽高比常见用途
手机视频——竖屏9:16手机拍摄,纵向
手机视频——正方形1:1使用正方形模式拍摄
屏幕录制16:9桌面或笔记本电脑录制
相机/DSLR16:9专业或无反相机拍摄
其他/不确定默认使用1:1(跨平台最安全)

Step 2 — Suggest Safe Output Sizes

步骤2 — 推荐安全输出尺寸

Only suggest same-ratio resizes. Cross-ratio resizes (e.g. 16:9 → 9:16) produce black bars and are algorithmically penalised on TikTok and Instagram Reels. If a user asks for a cross-ratio resize, explain the limitation and offer same-ratio alternatives instead.
Source ratioSafe output sizes
9:16 (portrait)1080×1920, 720×1280, 540×960
1:1 (square)1080×1080, 720×720
16:9 (landscape)1920×1080, 1280×720, 854×480
Present these as options with
AskUserQuestion
(multi-select).

仅推荐等比例调整尺寸。跨比例调整(例如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
以多选形式展示这些选项。

Step 3 — Resize

步骤3 — 调整尺寸

⚠️
resizeVideoPoll
is a deferred tool — load it first before attempting to poll. Direct calls without loading will fail with "not loaded" error.
For each selected size, call
video_resize
with the asset ID:
javascript
video_resize({ assetId: sourceAssetId, width: W, height: H }){ statusId }
Poll with
resizeVideoPoll
until complete. Poll 3–4 times with brief pauses before reporting slow progress to the user.

⚠️
resizeVideoPoll
延迟加载工具——调用前需先加载。 未加载直接调用会返回"not loaded"错误。
对每个选中的尺寸,使用asset ID调用
video_resize
javascript
video_resize({ assetId: sourceAssetId, width: W, height: H }){ statusId }
调用
resizeVideoPoll
轮询直至任务完成。轮询3-4次并短暂停顿后,再向用户报告进度缓慢。

Step 4 — Preview

步骤4 — 预览

Call
asset_preview_file
with all completed outputs.

调用
asset_preview_file
,传入所有已完成的输出文件。

Step 5 — Delivery Summary

步骤5 — 交付总结

✅ Video resize complete!

| Size      | Ratio | Status |
| --------- | ----- | ------ |
| 1080×1920 | 9:16  | ✅      |
| 720×1280  | 9:16  | ✅      |
Note: Video resizing does not apply intelligent reframing — cross-ratio reformatting is out of scope for this skill.

✅ 视频尺寸调整完成!

| 尺寸      | 宽高比 | 状态 |
| --------- | ----- | ------ |
| 1080×1920 | 9:16  | ✅      |
| 720×1280  | 9:16  | ✅      |
注意:视频尺寸调整不支持智能重构图——跨比例格式转换不在此技能范围内。

Error Handling

错误处理

SituationAction
Egress upload fails (chunk PUT 5xx after retry)Stop upload. Fall back to
asset_add_file()
and tell the user: "Direct upload didn't work — I'll open the picker so you can select the file."
image_generative_expand
returns 403 (entitlement)
Fall back to
image_crop_and_resize
with
fit: "reframe"
from
sourceURI
. Note in delivery summary: "AI canvas expansion is not included in your current Adobe plan — smart reframe was used instead." Retrying does not resolve a 403 entitlement — continue per the fallback rule.
image_crop_and_resize
returns 403 (entitlement)
Stop workflow. Tell the user: "Image cropping isn't available on your current Adobe plan — I can't complete this request here."
PSD/AI flattening returns 403Stop workflow. Tell the user: "Flattening this file type isn't available on your current Adobe plan — export as JPG or PNG first, then try again."
.ffgenimg
file type fails expand
Retry using
presignedRenditionUrl
instead of
presignedAssetUrl
401 not authenticatedAsk user to re-authenticate via Adobe OAuth
Image too large after cropRe-run with lower quality setting
Express file uploadedAsk user to export as JPG/PNG first
PSD / AI file uploadedFlatten first (JPEG, 300 DPI). On 403, see entitlement row above.
video_resize
fails
Report clearly; suggest user re-upload as MP4
Unsupported file format (DOCX, PDF, etc.)Inform user. Accepted inputs: JPG, PNG, Firefly images, PSD/AI, MP4/MOV.
场景操作
出口上传失败(重试后分片PUT仍返回5xx错误)停止上传。降级使用
asset_add_file()
并告知用户:"直接上传失败——我将打开文件选择器,您可以选择文件。"
image_generative_expand
返回403(权限不足)
降级使用
image_crop_and_resize
并设置
fit: "reframe"
,基于
sourceURI
处理。在交付总结中注明:"当前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。