Skip to main content

adobe-create-social-variations

Resize, crop, or export any image or video into platform-ready social media assets using Adobe Creative Cloud tools. Use this skill when a user wants to prepare a photo, image, or video for one or more social platforms — Instagram, TikTok, LinkedIn, Facebook, YouTube, Snapchat, Pinterest, Threads, or X/Twitter. Triggers on: "prepare my image for Instagram", "resize for TikTok", "get this ready to post", "make versions for all platforms", "social media sizes", "crop for stories", "export for LinkedIn", "resize my video for social", "make social media assets", or any request to adapt a photo or video for specific platforms. Handles subject-aware cropping, AI canvas expansion, test previews before full runs, and same-ratio video resizing.

소스 정보

저장소
openai/plugins
최근 소스 활동
2026년 8월 27일 20:29
감지된 SKILL.md 언어
영어
스타
7,454
포크
970

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
4 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
adobe-create-social-variations
description
Resize, crop, or export any image or video into platform-ready social media assets using Adobe Creative Cloud tools. Use this skill when a user wants to prepare a photo, image, or video for one or more social platforms — Instagram, TikTok, LinkedIn, Facebook, YouTube, Snapchat, Pinterest, Threads, or X/Twitter. Triggers on: "prepare my image for Instagram", "resize for TikTok", "get this ready to post", "make versions for all platforms", "social media sizes", "crop for stories", "export for LinkedIn", "resize my video for social", "make social media assets", or any request to adapt a photo or video for specific platforms. Handles subject-aware cropping, AI canvas expansion, test previews before full runs, and same-ratio video resizing.
license
Apache-2.0
compatibility
Runs on both widget-capable surfaces (e.g. Claude Cowork, which supports the asset_add_file picker and asset_preview_file preview widgets) and non-UI agents (e.g. Codex, where those widgets are unavailable). The default flow uses the widgets; each widget step has a text-only fallback. Raw local paths are never passed to image or video tools.
allowed-tools
adobe_mandatory_init asset_initialize_file_upload asset_finalize_file_upload asset_add_file asset_inline_preview asset_preview_file image_crop_and_resize image_generative_expand video_resize resizeVideoPoll
metadata
{"version":"2.1.0","visibility":"public","surface":["claude","codex"]}
# 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. > **Surface note:** The default flow below uses Adobe's MCP App widgets — the `asset_add_file` file picker and the `asset_preview_file` preview. Follow it as written. Only if a widget tool is **not available on this surface** (e.g. Codex) use the *No-widget fallback* attached to that step. Likewise, present `AskUserQuestion` prompts as plain-text labeled options wherever no question widget exists. --- ## Supported Input Types | Input | Supported | Notes | | ----------------------------- | --------------- | ----------------------------------------------------------------------------------- | | JPG / PNG | ✅ Full workflow | | | Firefly-generated image | ✅ Full workflow | For `.ffgenimg` assets, pass the `presignedRenditionUrl` field, not `presignedAssetUrl` | | Express file | ⚠️ Partial | Must be exported to JPG/PNG first — tell user before proceeding | | PSD / AI (Illustrator) | ⚠️ Partial | Flatten first (see Error Handling if this fails) | | Video (MP4/MOV) | ⚠️ Partial | Resize only — no smart reframe. See VIDEO WORKFLOW | | Unsupported (DOCX, PDF, etc.) | ❌ | Inform user; list accepted formats | --- ## Step 0 - prereq: Initialize Adobe Tools 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": "2.1.0" } ``` --- ## Step 1 — Entitlement Check 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. ### 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." | Tool | Purpose | |------|---------| | `asset_initialize_file_upload` | First call in two-step upload — stages a local file to CC | | `asset_finalize_file_upload` | Second call in two-step upload | | `asset_inline_preview` | Determines focus strategy before cropping | | `image_crop_and_resize` | Per-platform, per-format cropping | ### Widget Tools (used when available; graceful fallback) | Tool | Flag | If missing | |------|------|------------| | `asset_add_file` | `pickerWidget = true/false` | File picker — the default ingest on widget surfaces (e.g. Claude). If unavailable (e.g. Codex), stage local files programmatically via `asset_initialize_file_upload` → `asset_finalize_file_upload` (see the *No-widget fallback* in each Get-the-Source-File step). | | `asset_preview_file` | `previewWidget = true/false` | Side-by-side/grid preview. If unavailable (e.g. Codex), present output URLs directly in the message instead — UI clients still render them inline; non-UI agents download each via curl. | ### Image Workflow — Enhanced Tools (optional, graceful fallback) | Tool | Flag | If 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." | ### 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. | Tool | Purpose | |------|---------| | `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." --- ## Tool Reference | Step | Tool | Notes | |------|------|-------| | Get file (widget surfaces) | `asset_add_file` | File picker / CC browse | | Stage file (no-widget fallback) | `asset_initialize_file_upload` + `asset_finalize_file_upload` | Two-step upload — stage a local file to CC when the picker is unavailable | | 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 *(no-widget fallback: present the URLs directly)* | | Resize video | `video_resize` | Same-ratio resize only | | Poll video resize job | `resizeVideoPoll` | Deferred tool — load before calling | --- ## IMAGE WORKFLOW ### Step 0 — Get the Source File How you get the file depends on where it is: | Source | Action | | -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | File uploaded in chat (`/mnt/user-data/uploads/…`) | Check egress status from `adobe_mandatory_init` (Step 0). If egress is enabled, 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, use `asset_add_file()` (the picker) instead. | | No file provided yet | Call `asset_add_file()` immediately — no need to ask first. | | File already in Creative Cloud | Call `asset_add_file()` so the user can select it from their CC storage. | > **No-widget fallback** *(only if `asset_add_file` is unavailable on this surface, e.g. Codex)* — don't ask the user to pick. Stage any local file programmatically (`asset_initialize_file_upload` → PUT → `asset_finalize_file_upload`) and use the returned presigned CC URL; for a file already in Creative Cloud, reference it directly by its CC URI. Staging requires egress — check egress status from `adobe_mandatory_init` first; if egress is disabled and no picker is available on this surface, tell the user staging isn't possible here and ask them to run the workflow on a surface with the `asset_add_file` picker. After the file is available, detect image vs. video from `mediaType`. For images, proceed to Step 1. --- ### Step 1 — Ask: Which Platforms? 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. --- ### Step 2 — Inspect Image & Set Focus Strategy **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 type | Focus strategy | Rationale | | -------------------------------------- | -------------------------------------- | ----------------------------------------------------------------------------------- | | 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. --- ### Step 3 — Generative Expand (directly from source — no padding) 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. --- ### Step 4 — Test Preview *(Full set only — skip if `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. | Test | Source | Dimensions | Ratio | Covers |
GitHub에서 보기
이 SKILL.md는 매우 커서 SkillsMP가 여기에는 첫 섹션만 미리 보여줍니다. GitHub에서 보기