---
title: Make key art and every format from one master
display: 'Make *key art* and every format from one master'
nav_title: Key art and every format
summary:
  - "One master cut into every launch format: game key art into store capsules, banner and icon, and an approved ad visual into feed, story, banner and link-preview sizes."
  - "Crop when the target fits, extend only as much as you need and only where a crop cannot reach, and inspect every join."
  - "Check the master's count and margins before extending, and never let a model generate the title: set it in code."
  - "Every generative reframe redrew a small wordmark; pasting the master's own pixels back over the extension put the real one back."
description: Compose one master with room for a title, crop it where you can, extend it to wide and tall ratios where you must, paste the master back to keep the product exact, and cut every store, feed and banner format from it.
section: playbooks
order: 23
type: playbook
topic: Brand and marketing
level: Build
roles: [marketer, artist, team-lead]
time: { read: 18, do: 65, wait: 10 }
needs: ["Any plan with credits", "Approved character references (see Character reference sheet)", "Your title logo, or a font for the title", "A short image script or a layout tool for crops and text", "For Part 2: one approved master image", "ImageMagick or a layer editor for crops and the paste-back"]
last_verified: 2026-10-16
models_checked: ["GPT Image 2.5 Sunburst", "Reframe", "Smart Reframe"]
hero: playbooks/key-art-and-store-assets/all-formats-overview-voltaris.webp
related: [character-reference-sheet, text-and-typography-in-images, ad-variations-family, product-lifestyle-scenes]
run_in: [model_openai-gpt-image-2-5-sunburst, model_scenario-gemini-reframe, model_scenario-smart-reframe]
thumb: playbooks/key-art-and-store-assets/thumb.webp
steps:
  - title: "Generate the master"
    text: "Create › Images › GPT Image 2.5 Sunburst, Reference Images in a fixed order: Zuri's hero, her turnaround, Marlow's hero, then the game's key art for the world. Dimensions 16:9 (2048x1152), Quality high, Image Count 2; this paragraph follows the cast block from the two-character scene in Character reference sheet."
    prompt: |-
      Reference 4 is for the WORLD ONLY: floating salvage islands above a sea of clouds, its palette and its light. Ignore its characters and its logo. Key art for a stylized hero shooter. Zuri skates down a steep twisted hull-plate ramp toward the camera, low and fast, her two pulse blasters drawn, one in each hand, so both thigh holsters are empty, sparks flying from her wheels, big grin; Marlow stands on a rusted girder behind her, rail rifle raised to his shoulder, aiming past her, his coat flaring in the wind. Floating salvage islands above a sea of clouds at golden hour behind them. Composition for a game cover: both characters in the right half of the frame, the left third is calm open sky with soft clouds and no important detail, so a title can sit there. Keep 10 percent of empty margin at every edge so the image can be cropped to other formats. No text, no logo, no letters.
  - title: "Check the composition"
    text: "Count what each character holds, then check the cast in the right half, the open left third and the margins. The first master failed the count; the second held the count and the open third, not the margins."
  - title: "Extend the key art to 21:9"
    text: "Open the master, \"...\" menu › Expand (model Reframe): 21:9 at 2K, the image placed center-right so the new space goes mostly left. It returned 3168x1344."
    prompt: |-
      Extend the scene to the left and right in the same stylized 3D game art style: more open golden sky and soft clouds with distant floating salvage islands on the left, more of the rusted girders and hull-plate ramp on the right. Do not change the two characters.
  - title: "Extend to 2:3"
    text: "Crop the master to the characters first (from x = 640 to the right edge), then extend that crop to 2:3, with the no-text rule in full and the joins named. It returned 1696x2528, after three runs."
    prompt: |-
      Extend the scene above and below in the same stylized 3D game art style: open golden sky with soft clouds above, continuing smoothly from the existing sky with no visible line, and below, the same rusted hull-plate ramp continuing down at the same scale, perspective and softness, with no visible line. Do not change the two characters. Absolutely no text, no title, no letters, no logo, no labels, no signs, no writing on banners or crates.
  - title: "Extend again for the banner"
    text: "A 3.1:1 strip of the 21:9 cuts the cast, so reframe the 21:9 once more at 21:9, scaled to about three quarters of the canvas in the center, asking for more sky, islands and girders on every side."
  - title: "Cut every format in code"
    text: "16:9 with title (1920x1080), header capsule (460x215), vertical capsule (600x900), wide banner (3840x1240, art only) and a 1024x1024 icon cropped from the master. Titles are set in code, never generated."
  - title: "Check every format at display size"
    text: "The header capsule at 460 px, the icon at 64 px: the title must read and the face be recognizable."
  - title: "Part 2: crop what you can"
    text: "The 1200x628 link preview fits inside the ad master: crop 2048x1072 from the top left and resize. A plain 1:1 crop cut the toe spray and the floodlight, so the 1:1 is extended instead."
  - title: "Extend to 4:5 and 1:1, with crop bounds"
    text: "Create › Expand (model Reframe), Resolution 2K, Position center. Crop the master to x 250 to 1700, full height, and expand the crop, so the model only adds sky above and track below."
    prompt: |-
      Extend the dark blue-hour sky above and the wet running track with its reflections below. Keep the runner, her shoes, the floodlight and the water spray exactly as they are. No new people, no reflections of the runner, no text.
  - title: "Extend the ad to 21:9"
    text: "Same tool, the full master, aspect ratio 21:9. It returned 3168x1344, so crop to exact 21:9 (3136x1344) after the paste-back, then resize to 2000x857."
    prompt: |-
      Extend the wet running track and the dark stadium with its floodlights to the left and to the right. Keep the runner, her shoes and the water spray exactly as they are. No new people, no text.
  - title: "Extend to 9:16 from the 4:5, upward only"
    text: "From the full master, 9:16 mirrored the runner into the track. Start from the finished 4:5 with Position bottom, so the model only adds sky; of two seeds, keep the one that holds the master's blue."
    prompt: |-
      Continue only the dark blue stormy night sky upward with soft clouds and light rain. No new floodlights, no stadium structures, no people, no reflections, no text.
  - title: "Paste the master back"
    text: "Scale the master's crop to the output width, feather its top and bottom by about 40 px and lay it over the reframe, then check the alignment with a difference image. Crop each paste-back to its exact ratio and delivery size."
  - title: "Skip generative reframes for exact sizes that fit"
    text: "Smart Reframe at 1200x628 redrew the shoe's toe, laces and sole stripe; keep the plain crop."
  - title: "Check, grade, then add copy"
    text: "Check every final's wordmark at 1:1 and confirm its pixel size. Grade, then set copy per final size in code, so it is never stretched."
agent_steps:
  - title: "Connect the Scenario MCP"
    text: "Connect your agent and sign in once at [mcp.scenario.com](https://mcp.scenario.com). Then tell it which Scenario team and project to use, so every file lands there."
  - title: "Give the agent the files"
    text: "For the key art: Zuri's hero, her turnaround, Marlow's hero and the game's key art as the world reference, in that order, since the prompt calls them by number. For the ad: the approved master. Upload them with upload_asset or give their asset IDs."
  - title: "Brief the agent: the key art master"
    text: "Compose the master for its crops: the cast in the right half, the left third open for a title set in code, a margin at every edge."
    prompt: |-
      Make the key art master with GPT Image 2.5 Sunburst (model_openai-gpt-image-2-5-sunburst): referenceImages [Zuri's hero, Zuri's turnaround, Marlow's hero, the world key art] in that order, width 2048, height 1152, quality "high", numOutputs 2. Quote the cost with a dry run first and wait for my go.

      Prompt, word for word, the cast block first:
      Two characters in one scene. References 1 and 2 are ZURI (identity and turnaround): 22, slim, warm brown skin, long box braids tied high with glowing cyan tips, silver hoop earrings, cropped magenta bomber jacket with cyan piping and a white chevron on her right sleeve, black athletic top, fingerless black gloves, charcoal tech leggings, white knee guards, two white pulse blasters holstered on her thighs, roller blades with glowing cyan wheels. Reference 3 is MARLOW: 50, tall and lean, a head taller than Zuri, weathered tanned skin, short grey stubble beard, wide-brimmed sand hat with brass goggles on the brim, faded red bandana, long patched sand duster over a dark brown vest and cream shirt, leather bandolier and belts, olive cargo trousers, brown lace-up boots, a rail rifle with a cyan coil slung on his back. Do not mix their features or clothes. Render both in the stylized 3D game art style of reference 1.

      Reference 4 is for the WORLD ONLY: floating salvage islands above a sea of clouds, its palette and its light. Ignore its characters and its logo. Key art for a stylized hero shooter. Zuri skates down a steep twisted hull-plate ramp toward the camera, low and fast, her two pulse blasters drawn, one in each hand, so both thigh holsters are empty, sparks flying from her wheels, big grin; Marlow stands on a rusted girder behind her, rail rifle raised to his shoulder, aiming past her, his coat flaring in the wind. Floating salvage islands above a sea of clouds at golden hour behind them. Composition for a game cover: both characters in the right half of the frame, the left third is calm open sky with soft clouds and no important detail, so a title can sit there. Keep 10 percent of empty margin at every edge so the image can be cropped to other formats. No text, no logo, no letters.

      Check each take before you show it: what each character holds, both characters in the right half, the left third open sky, 10 percent margin at every edge.
  - title: "Extend the master for the store formats"
    text: "Always extend from the master, never from a derivative. The 2:3 took three runs in this one."
    prompt: |-
      Extend the approved master with Reframe (model_scenario-gemini-reframe). Quote the cost with a dry run first and wait for my go.

      21:9: image the master, aspectRatio "21:9", resolution "2K", position "center-right". Prompt, word for word:
      Extend the scene to the left and right in the same stylized 3D game art style: more open golden sky and soft clouds with distant floating salvage islands on the left, more of the rusted girders and hull-plate ramp on the right. Do not change the two characters.

      2:3: image the master, aspectRatio "2:3", crop box xStart 640, yStart 0, xEnd 2048, yEnd 1152. Prompt, word for word:
      Extend the scene above and below in the same stylized 3D game art style: open golden sky with soft clouds above, continuing smoothly from the existing sky with no visible line, and below, the same rusted hull-plate ramp continuing down at the same scale, perspective and softness, with no visible line. Do not change the two characters. Absolutely no text, no title, no letters, no logo, no labels, no signs, no writing on banners or crates.

      Banner: on the 21:9 result, aspectRatio "21:9", resizedWidth 2409, resizedHeight 1022, position "center", with a prompt asking for more sky, islands and girders on every side and the same no-text rule.
  - title: "The ad master in every format"
    text: "Crop bounds let the model invent only the margins, and tell you where the master sits in the output for the paste-back."
    prompt: |-
      Now the approved ad master, with Reframe (model_scenario-gemini-reframe). Quote the cost with a dry run first and wait for my go.

      4:5 and 1:1: resolution "2K", crop bounds xStart 250, yStart 0, xEnd 1700, yEnd 1152, position "center". Prompt, word for word:
      Extend the dark blue-hour sky above and the wet running track with its reflections below. Keep the runner, her shoes, the floodlight and the water spray exactly as they are. No new people, no reflections of the runner, no text.

      21:9: the full master, aspectRatio "21:9". Prompt, word for word:
      Extend the wet running track and the dark stadium with its floodlights to the left and to the right. Keep the runner, her shoes and the water spray exactly as they are. No new people, no text.

      9:16: from the finished 4:5, positioned at the bottom (read model_schema_get for the value), so the model only adds sky. Two runs. Prompt, word for word:
      Continue only the dark blue stormy night sky upward with soft clouds and light rain. No new floodlights, no stadium structures, no people, no reflections, no text.
  - title: "Paste back, cut and check"
    text: "Accept when every final is at its exact size and reads at display size, both characters keep their keep-lists, no face, hand or skate is cut, and the wordmark reads exactly at 1:1. Reject an extra held item, invented text, a seam, a changed character or redrawn product, repeated people or floodlights, or a ratio that is close but not exact."
    prompt: |-
      Download every result. In code, paste the ad master's own pixels back over each extension, feathered about 40 px at the joins, and check the alignment with a difference image. Then crop and resize every format to its exact delivery size, the link preview as a plain crop of the master. Set no title or copy in any generated image. Check the wordmark at 1:1 and each format at its display size, and tell me what fails.
  - title: "File and report"
    prompt: |-
      Create a collection for the key art and one for the ad formats, with every final in its own. Report the models, every asset ID with its format, and the total cost spent.
updated: 2026-10-16
canonical: https://learn.scenario.com/playbooks/key-art-and-store-assets
---

Last updated: 2026-10-16

# Make key art and every format from one master

> Compose one master with room for a title, crop it where you can, extend it to wide and tall ratios where you must, paste the master back to keep the product exact, and cut every store, feed and banner format from it.

In short:

- One master cut into every launch format: game key art into store capsules, banner and icon, and an approved ad visual into feed, story, banner and link-preview sizes.
- Crop when the target fits, extend only as much as you need and only where a crop cannot reach, and inspect every join.
- Check the master's count and margins before extending, and never let a model generate the title: set it in code.
- Every generative reframe redrew a small wordmark; pasting the master's own pixels back over the extension put the real one back.


One master, composed for cropping, extended where crops cannot reach and cut into every format it has to ship in, with the title and copy set in code on each. Part 1 builds game key art from scratch and cuts it into store capsules, a banner and an icon. Part 2 takes one approved ad visual into five feed, story, banner and link-preview placements, and pastes the master's own pixels back so the product's wordmark stays exact. For marketers, designers and artists shipping one key visual everywhere the same day.

:::note As of October 2026
The models, settings and screens in this article are the ones Scenario offered in October 2026. New models and updates arrive often, so check the app for newer options before you choose.
:::

![The VOLTARIS key art in five formats: 16:9 with title, vertical capsule, header capsule, square icon and a wide banner](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/b2264e4dba32f3530aaad326ebe30915ac25fc234e1aa0308e602dc04ccab9b3.webp "One master, three extensions, five deliverables. Every title was set in code.")

## The brief

| Field | Part 1: key art and store assets | Part 2: one ad visual in every format |
|---|---|---|
| Goal | Key art and store assets for the launch of a stylized hero shooter, VOLTARIS | One approved visual delivered in five placements, the product's wordmark exact in all |
| Master | 2048x1152 (16:9), both characters in the right half, left third open sky for the title, 10 percent margin at every edge | A runner on a wet track at blue hour, 2048x1152 (16:9), approved |
| Deliver | 16:9 with title (1920x1080), header capsule (460x215), vertical capsule (600x900), wide banner (3840x1240, art only), square icon (1024x1024) | 1080x1080 (1:1), 1080x1350 (4:5), 1080x1920 (9:16), 2000x857 (21:9), 1200x628 (link preview) |
| Fixed | Character identities, the world's palette and light | The runner, the Vireo Apex shoe and its VIREO wordmark, the spray, the light, the moment |
| May vary | | How much sky, track and stadium show around the runner |
| Rule | No text in any generated image; the title is set in code | Copy is set per final size in code |
| Accept when | Each format reads at its display size; no face, hand or skate is cut; no seam or invented text anywhere | Wordmark exact at 1:1, no seams, no repeated people or floodlights, exact pixel sizes |

In Part 1 the cast comes from [Character reference sheet](https://learn.scenario.com/playbooks/character-reference-sheet.md): Zuri, a roller-blade sprinter, and Marlow, a desert sniper. The world reference is the game's existing key art, used for its islands, palette and light only. In Part 2 the shoe is the Vireo Apex from [Clean packshots](https://learn.scenario.com/playbooks/product-packshots.md); the same master is the look reference in [Ad variations](https://learn.scenario.com/playbooks/ad-variations-family.md).

## Approach

:::flow
Master | Sunburst, 4 references, 16:9 | image
Check | Count, right half, open third, margins |
Extend | Reframe: 21:9, 2:3, banner | image
Cut formats | Five crops, titles in code | image
Display check | Capsule at 460 px, icon at 64 |
:::

:::flow
Crop | Code, for the link preview | image
Extend | Reframe at 2K, with crop bounds | image
Paste back | The master's own pixels over the extension | image
Check | Exact pixel size, wordmark at 1:1 |
Copy | Set per final size in code |
:::

Use the cheapest operation that reaches each ratio, always from the master: a derivative of a derivative stacks both sets of artifacts.

| Ratio from 16:9 | Operation | Model, as of October 2026 |
|---|---|---|
| The target fits inside the master (1200x628) | **Crop** in code: free, exact, no new pixels | None |
| Anything taller (4:5, 1:1, 9:16) or wider (21:9) | **Extend**: crop the master to what the new frame needs, let the model invent only the margins | **Reframe**, run by the **Expand** tool (**Create**, under EDIT) |
| After every extension | **Paste back**: lay the master's own pixels over the area it covers | Code |

- **Compose the master for its crops.** Subjects where every crop keeps them, one calm area for the title, an empty margin at every edge. In Part 1 the header capsule (about 2.1:1) and the banner (3.1:1) are wider than the master and the 2:3 capsule much taller, so only those are extended.
- **Never generate the title** ([Typeset text, never generate it](https://learn.scenario.com/browse)). Image models misspell and restyle titles, and each store needs it at another size and position. Set it in code or a layout tool from your logo file ([Text and typography in images](https://learn.scenario.com/images/text-and-typography-in-images.md)).
- **Paste the master back when something small must stay exact.** Reframe re-renders the whole frame, including the master area. In Part 2 every Reframe output, at every ratio, redrew the small VIREO wordmark on the heel into other letters. The paste-back is what keeps the product exact; it works because, with crop bounds and a fixed **Position**, you know where the master sits in the output.

Models, as of October 2026: GPT Image 2.5 Sunburst with four references for the key art master, Reframe for the extensions. **Smart Reframe** takes exact pixel sizes instead of presets and is worth testing for fixed store sizes, but it costs about twice a Reframe run, and in Part 2 it redrew the shoe. Recomposing with GPT Image 2.5 Sunburst (master and packshot as references) gave a strong 9:16 image with a garbled wordmark that no paste-back can fix, since the shoe is drawn anew.

## Steps

### Part 1: key art and store assets

:::steps
1. **Generate the master.** Open **Create**, choose **Images**, pick **GPT Image 2.5 Sunburst**. Under **Reference Images**, attach the cast and world in a fixed order (here: Zuri's hero, her turnaround, Marlow's hero, then the game's key art as the world reference). Set **Dimensions** to 16:9 (2048x1152), **Quality** to `high`, **Image Count** 2. After the cast block from the two-character scene in [Character reference sheet](https://learn.scenario.com/playbooks/character-reference-sheet.md), the prompt was:

   ```text
   Reference 4 is for the WORLD ONLY: floating salvage islands above a sea
   of clouds, its palette and its light. Ignore its characters and its logo.
   Key art for a stylized hero shooter. Zuri skates down a steep twisted
   hull-plate ramp toward the camera, low and fast, her two pulse blasters
   drawn, one in each hand, so both thigh holsters are empty, sparks flying
   from her wheels, big grin; Marlow stands on a rusted girder behind her,
   rail rifle raised to his shoulder, aiming past her, his coat flaring in
   the wind. Floating salvage islands above a sea of clouds at golden hour
   behind them. Composition for a game cover: both characters in the right
   half of the frame, the left third is calm open sky with soft clouds and
   no important detail, so a title can sit there. Keep 10 percent of empty
   margin at every edge so the image can be cropped to other formats. No
   text, no logo, no letters.
   ```

   Click **Generate**. The price shows on the button before you run.

2. **Check the composition against the brief:** count, cast in the right half, open left third, margins. The first master failed the count (see below); the second held the count and the open third, not the margins.

3. **Extend to 21:9.** Open the master and choose **Expand** from the **"..."** menu (the model is Reframe). Pick 21:9 at 2K and place the image center-right, so the new space goes mostly to the left. Prompt:

   ```text
   Extend the scene to the left and right in the same stylized 3D game art
   style: more open golden sky and soft clouds with distant floating salvage
   islands on the left, more of the rusted girders and hull-plate ramp on the
   right. Do not change the two characters.
   ```

   The result was 3168x1344.

4. **Extend to 2:3.** Crop the master to the characters first, then extend that crop to 2:3. The kept run cropped from x = 640 to the right edge, with the no-text rule in full and the joins named:

   ```text
   Extend the scene above and below in the same stylized 3D game art style:
   open golden sky with soft clouds above, continuing smoothly from the
   existing sky with no visible line, and below, the same rusted hull-plate
   ramp continuing down at the same scale, perspective and softness, with no
   visible line. Do not change the two characters. Absolutely no text, no
   title, no letters, no logo, no labels, no signs, no writing on banners or
   crates.
   ```

   The result was 1696x2528. It took three runs (see below).

5. **Extend again for the banner.** A 3.1:1 strip cut from the 21:9 extension cannot hold the cast: Marlow's hat sits near the top edge and Zuri's wheels near the bottom. So the 21:9 image went through Reframe once more at 21:9, scaled down to about three quarters of the canvas in the center, with a prompt asking for more sky, islands and girders on every side and the same no-text rule. The 3.1:1 strip through the middle then holds both characters whole.

6. **Cut every format in code** ([Reframe for every format](https://learn.scenario.com/browse)).
   - **16:9 with title:** the master resized to 1920x1080, title in the open left third.
   - **Header capsule, 460x215:** a 2.14:1 crop of the 21:9 extension, cast on the right, title on the left sized to read at 460 px.
   - **Vertical capsule, 600x900:** the 2:3 extension resized, title on a dark band at the bottom.
   - **Wide banner, 3840x1240:** the strip from step 5, art only, because those slots usually place the logo separately.
   - **Square icon, 1024x1024:** an upper-body crop of Zuri from the master.

7. **Check every format at display size:** the header capsule at 460 px, the icon at 64 px. The title must read and the face be recognizable.
:::

**With the Scenario MCP:** run `model_openai-gpt-image-2-5-sunburst` with the four references at `width: 2048`, `height: 1152`. Then `model_scenario-gemini-reframe` with `image`, `aspectRatio: "21:9"`, `resolution: "2K"`, `position: "center-right"`; a 2:3 run with the crop box `xStart: 640`, `yStart: 0`, `xEnd: 2048`, `yEnd: 1152`; and the banner run on the 21:9 result with `aspectRatio: "21:9"`, `resizedWidth: 2409`, `resizedHeight: 1022`, `position: "center"`.

Crops and titles are plain Python with Pillow.

:::compare
![The 16:9 master without title: Zuri skating down a rusted ramp with two blasters drawn, Marlow aiming a rifle behind her, open golden sky on the left](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/67e0a1e7e3644ca4b8cac3e61b1d5d9b7522370fed304d338e63b82c719ec1b2.webp "The master: open sky on the left, cast to the right of center.")
![The 21:9 extension with more sky and floating islands on the left](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/9a38d0c361108f6e0a6f19e116254f0635346d8cba60f3e7f48b8d104f4601f3.webp "21:9 extension: more sky and islands on the left; the cast unchanged.")
:::

### Part 2: one ad visual in every format

The second master is already approved; the job is five placements with the product exact in every one.

:::steps
8. **Crop what you can, for free** ([Reframe for every format](https://learn.scenario.com/browse)). The link preview fits inside the master: crop 2048x1072 from the top left and resize to 1200x628, in any image editor or one ImageMagick line. A plain 1:1 crop (1152x1152 from x 390) cut the toe spray and the floodlight, so the 1:1 is extended instead.

9. **Extend to 4:5 and 1:1, with crop bounds.** Choose **Expand** from the master's **...** menu, or **Create** > **Expand** (model **Reframe**). The panel shows **Position** (a 3 x 3 grid that places the original), **Aspect Ratio**, **Resolution** (1K, 2K or 4K) and **New Dimensions**. This run sent crop bounds through the Scenario MCP: x 250 to 1700, the full height, so the model only adds sky above and track below. In the app, crop the master to that box first and expand the crop. **Resolution** `2K`, **Position** center, prompt:

   ```prompt
   Extend the dark blue-hour sky above and the wet running track with its
   reflections below. Keep the runner, her shoes, the floodlight and the
   water spray exactly as they are. No new people, no reflections of the
   runner, no text.
   ```

   It returned 1856x2304 for 4:5 and 2048x2048 for 1:1. The wet track below still shows a soft reflection of the runner's legs and shoe: plausible on a wet surface, kept. The first 4:5 try with tighter bounds (x 390 to 1542) put the rear foot and the floodlight on the frame edge; the first 1:1 try from the full master added a mirrored, upside-down runner in the track.

10. **Extend to 21:9.** Same tool, the full master, aspect ratio `21:9`:

    ```prompt
    Extend the wet running track and the dark stadium with its floodlights to
    the left and to the right. Keep the runner, her shoes and the water spray
    exactly as they are. No new people, no text.
    ```

    It returned 3168x1344: ratio presets are approximate, so crop to exact 21:9 (3136x1344, centered) in code after the paste-back, then resize to 2000x857.

11. **Extend to 9:16 from the 4:5, upward only.** From the full master, 9:16 returned 1536x2752 with a full upside-down copy of the runner and a second floodlight in the wet track. Rejected. Crop bounds that kept her whole body (x 300 to 1760) stacked a second stadium in the new sky. Rejected. What worked: start from the finished 4:5 (it already holds the whole runner and the floodlight), **Position** bottom, so the model only adds sky:

    ```prompt
    Continue only the dark blue stormy night sky upward with soft clouds and
    light rain. No new floodlights, no stadium structures, no people, no
    reflections, no text.
    ```

    Two seeds: one drifted to purple, the other kept the master's blue. Paste the 4:5 back over the lower part the same way as in step 12.

12. **Paste the master back** ([Do the exact part in code](https://learn.scenario.com/browse)). With crop bounds, the crop fills the output width, so the scale is the output width divided by the crop width, and **Position** sets the vertical offset (centered, or at the bottom). For the 4:5: 1856 / 1450 = 1.28, so the crop becomes 1856x1475 at y 414. Feather its top and bottom edges by about 40 px and lay it over the reframe:

    ```text
    magick master.png -crop 1450x1152+250+0 +repage -resize 1856x1475! inner.png
    magick -size 1856x1475 xc:black -fill white \
      -draw "rectangle 0,40 1855,1434" -blur 0x16 inner-mask.png
    magick inner.png inner-mask.png -alpha off \
      -compose CopyOpacity -composite inner-soft.png
    magick reframe-4x5.png inner-soft.png -geometry +0+414 \
      -compose over -composite pasted-4x5.png
    ```

    Check the alignment with a difference image: the master area should go almost black. Then crop each paste-back to the exact ratio and resize to its delivery size.

13. **Skip generative reframes for exact sizes that fit.** Smart Reframe at 1200x628 re-rendered the shoe (toe, laces and the sole stripe changed); keep the step 8 crop.

14. **Check, grade, then add copy.** Check every final's wordmark at 1:1 and confirm its pixel size ([Check by measurement](https://learn.scenario.com/browse)). Grade, then set copy per final size in code, so it is never stretched.
:::

**With the Scenario MCP:** `model_run` on `model_scenario-gemini-reframe` with `image`, `aspectRatio`, `resolution`, the crop bounds `xStart`, `yStart`, `xEnd`, `yEnd` and `position`, or on `model_scenario-smart-reframe` with exact `width` and `height`. Ask for a dry-run quote first ([Quote before you run](https://learn.scenario.com/browse)): a reframe costs more than a fast-model still.

:::compare
![Heel of the shoe in the raw 1:1 reframe: the small wordmark redrawn into other letters](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/1298b274b856f8df6cfc1a1c8be7b993a0251a338204ad185b1c26a8e985c26a.webp "Raw Reframe output: the wordmark was redrawn.")
![Heel of the shoe in the same 1:1 after the paste-back: VIREO as in the master](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/67e3dd595c7b847bdd72632031423eed4948c256c897489da57e18efd59bf4c5.webp "After the paste-back: the master's own pixels, VIREO exact.")
:::

## Check the result

:::check
**Accept when:** each final is at its exact delivery size and reads at its display size; both characters keep their keep-lists in every format and the count of held items is right; no face, hand or skate is cut by a crop; the title reads at display size; a product wordmark reads exactly at 1:1; extensions continue the sky, track and ramp with the same light and perspective, with no line and no new objects that compete with the subject; one of each person, floodlight and horizon; no generated text anywhere.
**Reject when:** a character holds or carries an extra item; an extension invents text or logos; a band, line or color shift marks where the extension starts; the extension changes a character or redraws the product (letters, laces, sole); people or floodlights repeat, mirrored or not; a crop puts the title over a face; the ratio is close but not exact.
:::

### What the key art run showed

**The first master: rejected.** Zuri held two blasters and a third still sat in her thigh holster. The prompt said "both pulse blasters drawn", but the keep-list also said "two blasters holstered on her thighs", and the model honored both. The second prompt resolved the conflict in words: "one in each hand, so both thigh holsters are empty".

:::compare
![First master: Zuri with a blaster in each hand and another in her thigh holster](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/37e5c3cbd37c57669a4bc2ebb4d0e452507a2f438277fae8f220d4ce5337a0ac.webp "Rejected: three blasters.")
![Close-up of Zuri's hands and thigh: two drawn blasters and a third in the holster](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/9c13603e9fe71751fc33e2d2e90b8cd4d294f73a5e30e7b4448cfc9f7fd0e5a4.webp "The count, zoomed. Count held items on every hero shot.")
:::

**The second master: kept.** The left third stayed open and the holsters were empty. The cast sits right of center, though Zuri's leading blaster reaches about 43 percent across. The 10 percent margin did not hold: Marlow's hat is about 3 percent from the top edge and his rifle muzzle about 6 percent from the right. That cost a separate extension for the banner later. Check the margin before extending: re-running the master is cheaper than fixing every format.

**The 2:3 extension, three runs.** No run invented text this time, but two failed on the crop and the join:

- **Crop at x = 820, short prompt: rejected.** The crop box cut Zuri's leading skate at the left edge, and an extension cannot restore what the crop removed.
- **Same crop, full no-text rule: rejected.** No text, but a hard horizontal seam crossed the lower extension where the focus and scale jumped, and the skate was still cut.
- **Wider crop at x = 640, joins named in the prompt: kept.** The whole cast, no text, joins smooth; the ramp below is slightly softer than the original.

:::compare
![Tall extension where the left edge cuts off Zuri's leading skate](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/5dd67ff407428d1b7cf06df497ab4e6c67ddf9462d1c6f467356da98c295abe9.webp "Rejected: the crop box cut the skate before the extension ran.")
![Tall extension with a horizontal line across the ramp in the lower part](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/9d8a938ebce05fa747518f08fc27b88a5feea02b4152fef6caf9bc73a667aebb.webp "Rejected: a seam in the lower extension.")
:::

![Zoom on the seam where the extension meets the original ramp](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/f0daca1e272242f1c38fce1a01d7b4fa2f7036057b6bc61447a211afd7a21f53.webp "The seam, zoomed. Always inspect the join, not only the whole image.")

:::compare
![The vertical capsule, 600x900, with the title VOLTARIS on a dark band at the bottom](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/fcd422c8c2f7bbf54d2c22ed7382c570cd9362267dd3119293db3c69cc46915a.webp "Vertical capsule: from the third 2:3 run, title set in code.")
![The square icon, an upper-body crop of Zuri](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/ec3855251ac33c87f183a5243e1453c5e5771c440662849a8730184999bf7e51.webp "Square icon: a crop of the master.")
:::

**The square icon** is a 560-pixel upper-body crop scaled to 1024: soft at full size, fine at the sizes stores display. For a sharper icon, generate a head-and-shoulders image with the same references.

**The banner** comes from the second extension of the 21:9 image. The cast is smaller in the frame and the joins did not show at 100 percent zoom.

:::gallery The key art formats, one by one
![The 16:9 key art with the title VOLTARIS in the open sky on the left](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/b2f63683977a6caf86e0532d8ce37d0d6b4283b55db979af6f3ca154aab03022.webp "16:9 with title, 1920x1080.")
![The header capsule, 460x215, title on the left and the cast on the right](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/75451cb46dba9ca4758442910294305a21c0cace1a980f6b9df3a50fd1711961.webp "Header capsule, 460x215, actual size.")
![The wide banner: a long golden sky with floating islands on the left and the cast on a rusted ramp to the right](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/ee68becedc4308f27f0e0bc5a1cda603b1a2331c64063beaef42635eb258c7db.webp "Wide banner, 3840x1240, shown reduced. Art only.")
:::

### What the ad visual run showed

:::gallery The five ad finals
![The 1:1 feed version: the runner mid-stride, sky above and wet track below](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/78ab202a3a7cb5596c10859007be4339a46f9ac64b926c5059e6510f7d5c1a18.webp "1:1, 1080x1080: extended, master pasted back.")
![The 4:5 feed version: the runner with more sky and track](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/0d84f175c053c1aa3b3ef7d97ddb51c198453933bdc5c7ba46950f34b86db193.webp "4:5, 1080x1350: extended, master pasted back.")
![The 9:16 story with the whole runner, a tall stormy sky and one floodlight](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/cda70530dba397c07a69fc22cdaab24cfdb5465c46a0cb4412d61527a0e5db41.webp "9:16, 1080x1920: extended upward from the 4:5 final, its pixels pasted back.")
![The 21:9 banner with the stadium extended to both sides](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/8f639f311648210d7aed97d663544690946a33cfdd6dfe3f13d7fbab420ab0e1.webp "21:9, 2000x857: extended, master pasted back, exact ratio.")
![The 1200x628 link preview cut from the master](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/937dc9d465aa4ef2db12f4aacceeb13036b7ccb33a86f0266fb8b8ce4c5bb961.webp "1200x628: a crop. Free and exact.")
:::

:::compare
![9:16 extension from the full master with an upside-down copy of the runner and a second floodlight in the wet track](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/3e1b0a95670ff2578bcd1f69bd4ee6bbb2f190bbb954cd11b3514e755915ee12.webp "Rejected: 9:16 from the full master. A mirrored runner and a second floodlight.")
![9:16 extension with wide crop bounds: a second stadium and floodlight stacked in the sky above the first](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/a657d2ab3824b6aba06517b76a0c12fbbe5a9e85f212ebf1b0e807a7ca3b12c9.webp "Rejected: wide crop bounds. A second stadium stacked above the first.")
:::

Big extensions invented a reflection of the runner or a second stadium every time. Extend only as much as the new frame needs, and point the new pixels at something simple, here sky.

:::compare
![9:16 recompose: the runner whole in the lower two thirds, a floodlight in the sky above](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/81a49207dd5881fb7c0ed9432058229e67fe0c5f923999a69c687102ca52e842.webp "Rejected: recomposed by GPT Image 2.5 Sunburst. Strong frame, but the shoe was redrawn and the wordmark garbled.")
![Smart Reframe 1200x628 of the runner, the shoe slightly reshaped](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/9ff149aca0a44f69d21ffe0ec47dd7f10b9311b7fd062bce9531507d961c75a6.webp "Rejected: Smart Reframe re-rendered the shoe.")
:::

:::quiz Check yourself
? Two 2:3 extensions of the key art master for the vertical capsule. Which one do you build the capsule from?
![Tall extension of the key art: the cast on a rusted ramp under a golden sky, Zuri's skate at the left edge of the frame](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/5dd67ff407428d1b7cf06df497ab4e6c67ddf9462d1c6f467356da98c295abe9.webp "Take A")
![Tall extension of the key art: the cast on a rusted ramp under a golden sky, with girders below](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/550aa491fd5fe5cd1b3dda0a027e30cec303cb5e53241250bf041dcf1bb220e8.webp "Take B")
- [ ] Take A: more of the ramp below gives the title band room
- [x] Take B: the whole cast is in frame, with no text and no visible join
- [ ] Neither: both show a problem, so rerun the master
> Take A's crop box cut Zuri's leading skate before the extension ran, which fails "no face, hand or skate is cut". Widen the crop and extend again.

? For the 3.1:1 banner, every strip cut from the 21:9 image cuts either Marlow's hat or Zuri's wheels, because the master ignored the margin. What do you do?
- [ ] Upscale the 21:9 image so the strip has more pixels to work with
- [ ] Accept the cut hat: the face is still in frame
- [x] Extend the image again with the art scaled down, then cut the strip
> A cut skate or hat fails the brief. Extend first, then crop; next time, check the margin on the master before extending, since re-running the master is cheaper than fixing every format.

? Two 9:16 story versions of the track master. Both look right at thumbnail size. Which one ships?
![9:16 story: the runner whole in the lower two thirds of the frame, a floodlight in the dark sky above](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/81a49207dd5881fb7c0ed9432058229e67fe0c5f923999a69c687102ca52e842.webp "Take A")
![9:16 story: the whole runner low in the frame, the shoe in a splash, a tall stormy sky and one floodlight](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/cda70530dba397c07a69fc22cdaab24cfdb5465c46a0cb4412d61527a0e5db41.webp "Take B")
- [ ] Take A: the whole runner is in frame, so it is the better story
- [x] Take B: the runner and shoe are the master's own pixels, so the wordmark is exact
- [ ] Either one: both are 9:16 and show the same moment
> Take A was recomposed by an image model: the shoe was redrawn and its wordmark reads as other letters at 1:1. Take B extends a finished format upward and pastes its pixels back.

? Two 1200x628 link previews of the same master. Which one ships?
![Link preview of the runner mid-stride on the wet track, floodlight behind](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/9ff149aca0a44f69d21ffe0ec47dd7f10b9311b7fd062bce9531507d961c75a6.webp "Take A")
![Link preview of the runner mid-stride on the wet track, floodlight behind](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/937dc9d465aa4ef2db12f4aacceeb13036b7ccb33a86f0266fb8b8ce4c5bb961.webp "Take B")
- [ ] Take A: it was made at exactly 1200x628 by a tool built for exact sizes
- [x] Take B: the target fits inside the master, so a crop keeps the real shoe and an exact size
- [ ] Either one: both are exactly 1200x628
> Take A came from Smart Reframe, which re-rendered the shoe. When the target fits inside the master, crop in code.
:::

## Make it repeatable

- **One layout script per title** ([Do the exact part in code](https://learn.scenario.com/browse)): title position, width and band per format. A new master then produces every format in one run.
- **Write a format sheet** ([Keep sources as data](https://learn.scenario.com/browse)): per placement, target size, operation, crop bounds, **Position**, prompt, and where the copy goes. A small script reads it, makes every crop and every paste-back ([Let code own what must be exact](https://learn.scenario.com/browse)).
- **Build a workflow for the extensions** ([Package it as a workflow or skill](https://learn.scenario.com/browse)). In the **Node Editor**: an **Image** input (`Approved master`), one **Image Generator** on Reframe per ratio with a fixed prompt that includes the no-text rule, and an **Approval** node per output ([Approval and review steps](https://learn.scenario.com/workflows/approval-and-review-steps.md)), asking for "no text, no seam, characters unchanged, nothing cut", or for the ad visual `Approve only if there is one runner, no repeated floodlight and no seam.` Run the paste-back and the exact crops outside the workflow, in code.
- **Share it as an App** (**Project** tab, **Workflows** > **Apps**), with the master as the only input. First check the **Branding** and **E-Commerce** filters of the **Platform** tab for a ready-made App ([Run and share Apps](https://learn.scenario.com/workflows/run-and-share-apps.md)).
- **Platform Apps to compare.** Under **Workflows**, **Apps**: the Multi-Format Ad Generator App adapts one creative to 10 ad formats, Splash Screen Composer and Event Promo Generator build event art from game assets, and Game Scene Builder composes marketing scenes from characters and props.

## Runs and time

Part 1, key art and store assets:

| Step | Model | Runs | Wait |
|---|---|---|---|
| Key art master, 4 references (first rejected: three blasters) | GPT Image 2.5 Sunburst | 2 | about 55 to 65 s each |
| 21:9 extension, 2K | Reframe | 1 | about 30 s |
| 2:3 extension (two rejected: cut skate, seam) | Reframe | 3 | about 30 s each |
| Banner extension from the 21:9 | Reframe | 1 | about 30 s |
| Crops, titles, five formats | local script | 0 | seconds |

Seven runs, about 5 minutes of wait run one after another. Each extension costs more than the master and crops cost nothing: extend only where a crop cannot reach, and check the master before extending.

Part 2, one ad visual in every format:

| Step | Model | Runs or takes | Kept | Wait |
|---|---|---|---|---|
| Link preview crop | code | 1 | 1 | seconds |
| 4:5 extend | Reframe, 2K, crop bounds | 2 | 1 (first bounds too tight) | about 25 to 30 s each |
| 1:1 extend | Reframe, 2K | 2 | 1 (full master mirrored the runner) | about 25 to 30 s each |
| 21:9 extend | Reframe, 2K | 1 | 1 | about 30 s |
| 9:16 extend | Reframe, 2K | 5 | 1 (full master, wide bounds, tight crop and a purple sky rejected) | about 30 s each |
| 9:16 recompose | GPT Image 2.5 Sunburst, high | 1 | 0 (wordmark garbled) | about 40 s |
| 1200x628 | Smart Reframe | 1 | 0 (shoe re-rendered) | about 80 s |
| Paste-backs and exact crops | ImageMagick, local | 4 | 4 | seconds |

Ten generative runs, four kept, about 6 minutes of wait if run one by one. The six rejected runs were most of the cost; extending only as much as needed, from the start, would have saved most of them. The price shows on the **Generate** button before you run.

## Variations

- **Seasonal and event art:** edit only the season (snow on the ramp, event banners) with **Edit with Prompts**, then re-run the layout script.
- **Localized titles:** the title is code, so each language is a script run, not a new image.
- **Social and ad formats for key art:** 1:1, 4:5 and 9:16 from the same master, as in [Part 2](#part-2-one-ad-visual-in-every-format); for video ads, see [Mobile UA video ads](https://learn.scenario.com/playbooks/mobile-ua-video-ads.md).
- **Film posters and book covers:** the same "subject on one side, calm area for the title" brief applies; a tall poster usually needs its own composition.
- **Animated key art and video:** reframe the master still before animating it, then use it as the first frame of a short loop ([Animate a still](https://learn.scenario.com/playbooks/animate-a-still.md)).
- **Out-of-home and print:** extend at the highest resolution, paste the master back, then upscale; check the wordmark at print size.
- **Email headers:** a wide crop plus a solid color band in code often beats an extension.
- **Many products, one layout:** keep the format sheet, swap the master.

## If it breaks

- **A character holds an extra item.** Look for two instructions that disagree (a keep-list that says "holstered" and an action that says "drawn") and resolve them in words: "one in each hand, so both holsters are empty".
- **The extension writes a title or labels.** Write the no-text rule in full ("no text, no title, no letters, no labels, no signs, no writing on banners or crates") in the extension prompt; the master's own no-text line does not carry over.
- **The product's lettering changes in the extended version.** The tool re-rendered the frame: paste the master's own pixels back over the area it covers.
- **A band, line or seam marks the join.** Name the join in the prompt ("continuing at the same scale, perspective and softness, with no visible line") and re-run. Where the master was pasted back, feather the paste-back edge over more pixels, or move the edge to a calm area such as sky; a seam in the sky can also be cropped away or covered by a title band.
- **Duplicated people, floodlights or stadiums.** The extension is too large: tighten the crop bounds, extend toward one simple area with **Position**, and name the object as single ("one stadium floodlight").
- **The crop box cuts a subject.** Widen the crop before extending: an extension never restores what the crop removed.
- **The margin was ignored and a crop cuts a skate or a hat.** Extend in that direction first, with the art scaled down if needed, then crop.
- **The output is close to the ratio but not exact.** Crop to the exact ratio in code; do not stretch.
- **The title is unreadable on the small capsule.** Make it relatively larger than on the master, with a band or gradient behind it.
- **Copy collides with the subject in one size.** Place copy per size after reshaping, not once on the master.

Source: https://learn.scenario.com/playbooks/key-art-and-store-assets
