--- name: facebook-ad-sizes description: "Fan an approved master creative out to every placement a campaign actually serves into, composed per ratio rather than centre-cropped. Use when adding placements or refreshing creative mid-flight on Meta or Google." license: MIT compatibility: "Works with any Agent-Skills-compatible AI (Claude, ChatGPT, Cursor, Codex, and more). Ad-account actions run through Adspirer." metadata: author: "Adspirer" version: "1.0.0" adspirer_category: "creative-production" adspirer_source: "https://www.adspirer.com/skills/facebook-ad-sizes" adspirer_trigger: "resize my ad creative for every placement it will run in" adspirer_connection_url: "https://adspirer.ai/sign-up" adspirer_primary_keyword: "facebook ad sizes" adspirer_secondary_keywords: "social media ad dimensions, facebook ad dimensions" adspirer_launch_wave: "2" adspirer_kind: "skill" adspirer_level: "operator" adspirer_platforms: "meta,google" adspirer_supported_clients: "claude,claude-code,claude-cowork,chatgpt,codex,cursor,gemini,windsurf" adspirer_summary: "Read the placements a campaign really serves, then compose the master into each required ratio with safe areas and file limits checked." adspirer_connections_required: "adspirer" adspirer_connections_optional: "adobe,canva" --- # Creative Resize Matrix ## Use this when The hero asset is approved and everyone is happy with it, and now it has to exist in six shapes by Thursday. The last time this happened, an automatic crop cut the logo off the vertical version and nobody noticed until the ads had been serving for two days. Use this skill to fan an approved master out across every placement the campaign will genuinely serve into. It works out: - which placements are actually enabled, rather than which ones are theoretically possible; - which ratios and pixel specs those placements really require right now; - where the platform's own interface will sit over the frame, so nothing important hides behind it; - whether text coverage is heavy enough to hurt delivery; and - whether each export meets the file limits that cause upload failures. This starts from an approved master and fans it out. It is not for generating new creative concepts, and it is unnecessary if the campaign serves a single placement. ## What you need - Adspirer connected to the ad account, so the placement list comes from the campaign itself rather than a guess. - The master creative at the highest resolution available — layered source is ideal, a flattened export is workable, and the difference shows most on aggressive ratio changes. - The target campaign or ad set already identified. This matters more than it sounds: a campaign with automatic placements enabled serves a very different matrix than one set to specific placements. - Brand fonts available wherever headline text will be re-set per ratio; otherwise text is treated as baked into the image and cannot reflow. - Optional Adobe access to prepare the source, so the subject, logo, and CTA can be composed separately per ratio instead of moved as one flat picture. - Optional Canva access to produce and lay out the variants. Without either connector, the skill still produces the specification and the checks, and the resizing is handed to a designer. ## Procedure **Connect Adspirer before any live ad-account step.** Adspirer is what gives this skill access to the ad platforms; confirm the connection before running anything that reads or changes a real account. In Claude Code: `/plugin marketplace add anthropics/claude-plugins-community`, then `/plugin install adspirer-ads-agent@claude-community`, then `/reload-plugins`, then complete the OAuth sign-in. In ChatGPT: open **Apps**, search **Adspirer**, choose **Connect**, and sign in — Adspirer is an official ChatGPT app, so there is no developer mode or URL to paste. In claude.ai or Claude Desktop: Settings → Connectors → Add custom connector → `https://mcp.adspirer.com/mcp`. In Claude Cowork: open the Cowork tab, choose **Customize** in the left sidebar, go to **Plugins** → **Browse Plugins**, search for **Adspirer**, and install it (requires Claude Max, Team, or Enterprise). Any other client: https://www.adspirer.com/docs/ai-clients. Sign-in link for the user: https://adspirer.ai/sign-up. Do not proceed with live ad-account steps until the connection is confirmed. 1. **Read the placements the campaign actually serves.** Pull the enabled placement list from the live ad set or asset group rather than working from a standard list. Automatic placements fan out across feed, stories, reels, in-stream and more simultaneously; a manually restricted ad set may need only one shape. Build the ratio requirement list from what came back, and confirm current pixel specifications against platform documentation rather than remembered numbers, because these get revised. 2. **Prepare the source so it can be composed, not just cropped.** Separate the subject, logo, and any CTA text so each ratio can be arranged deliberately. For video, identify the frames that must stay visible across every ratio — usually the product moment and the end card. This is the step that decides whether the vertical version looks designed or looks salvaged. 3. **Produce each ratio with a deliberate re-anchor.** Generate the required variants, then correct every automatic crop by hand. Automatic resizing clips faces, logos, and CTA buttons routinely on large aspect changes, and the further the ratio moves from the master the more certain that becomes. Treat the automatic result as a starting point, never as the output. 4. **Check each variant against the interface and against text density.** Overlay the areas the platform's own chrome occupies — the top and bottom bands on vertical placements carry profile information, captions, and action buttons — and confirm no subject, logo, or text sits underneath. Then check how much of the frame is text. Heavy text overlay is no longer a hard rejection on Meta but still suppresses delivery in practice, so treat a modest coverage limit as a working default rather than a rule, and tighten it if this account has a history of throttled delivery on text-heavy creative. 5. **Export to spec and hand over a labelled set.** Produce each variant at the file type, dimensions, and size limits the placement requires, and name files so the placement is obvious from the filename — mis-slotted uploads are the most common way this work gets wasted. Deliver the set with the matrix showing which placement each asset serves and anything that could not be produced. This skill prepares assets; it does not upload them to live ads or change what is running. ## Fixed checks - Pull the enabled placement list from the live campaign, never from a generic list of what the platform supports. - Confirm current pixel and file specifications against platform documentation, and state when they were checked. - Verify every automatic crop by eye against the subject, logo, and CTA before the variant is accepted. - Check each variant against the platform's interface safe areas rather than assuming a centred subject is safe. - Confirm each export is within the file type and size limits for its placement, since these fail at upload rather than at review. - Confirm filenames identify the placement, so assets cannot be loaded into the wrong slot. - Where the master resolution is too low for a required ratio, say so plainly rather than upscaling and shipping something soft. ## Stop conditions - **Success:** every required placement has a composed, checked, correctly named asset, delivered as a set. - **No change needed:** the existing asset set already covers every enabled placement at spec. - **Blocked — source:** the master is too low-resolution for the required ratios and no better source exists. Report which ratios cannot be produced properly rather than shipping upscaled assets. - **Blocked — access:** Adspirer cannot read the campaign, so the placement list cannot be established and any ratio list would be guesswork. - **Needs approval:** the variant set is ready for review before anything is uploaded. - **Needs a handoff:** brand fonts, legal sign-off, or net-new creative belongs to someone else. - **Still uncertain:** the campaign uses automatic placements that may expand over time; note that the matrix reflects what is enabled today. ## Approval boundaries This skill reads campaign configuration and produces creative files. It does not upload assets to live ads, create or edit campaigns, change budgets, or pause anything — the delivered set is a working artifact that a person decides what to do with. Where Adobe or Canva are connected they are used to prepare and produce files, not to publish. It cannot design new creative concepts, license fonts or imagery, obtain brand or legal approval, or improve a master that is too low-resolution to work with. When one of those is the blocker it is named, with the owner, instead of being worked around. ## What you get A complete, labelled asset set matched to the placements the campaign genuinely serves — built from the live configuration rather than an assumed list, so you are not producing shapes nothing will use or missing one that is already running. Each variant is composed per ratio with the subject re-anchored deliberately, which is the difference between a vertical asset that looks intended and one with the logo clipped off. Every variant is checked against the interface areas the platform overlays and against text density that quietly suppresses delivery. Exports meet the file limits that otherwise fail at upload, and filenames make the destination obvious. You also get the honest gaps: any ratio the master could not support at quality, stated rather than filled with an upscale. Nothing is uploaded and nothing live changes — that decision stays with you.