$npx -y skills add prime-skills/runcomfy-agent-skills --skill gpt-image-2Generate and edit images with OpenAI GPT Image 2 (ChatGPT Images 2.0) on RunComfy. Documents GPT Image 2's strengths (embedded text, logos, multilingual typography, instruction precision), its 3 fixed sizes, edit-with-preservation language, and when to route to a sibling (Flux 2
| 1 | # GPT Image 2 — Pro Pack on RunComfy |
| 2 | |
| 3 | [runcomfy.com](https://www.runcomfy.com/?utm_source=skills.sh&utm_medium=skill&utm_campaign=gpt-image-2) · [Text-to-image](https://www.runcomfy.com/models/openai/gpt-image-2/text-to-image?utm_source=skills.sh&utm_medium=skill&utm_campaign=gpt-image-2) · [Edit](https://www.runcomfy.com/models/openai/gpt-image-2/edit?utm_source=skills.sh&utm_medium=skill&utm_campaign=gpt-image-2) · [GitHub](https://github.com/agentspace-so/runcomfy-skills/tree/main/gpt-image-2) |
| 4 | |
| 5 | OpenAI **GPT Image 2** (ChatGPT Images 2.0) hosted on the **RunComfy Model API** — no OpenAI key, async REST. |
| 6 | |
| 7 | ```bash |
| 8 | npx skills add agentspace-so/runcomfy-skills --skill gpt-image-2 -g |
| 9 | ``` |
| 10 | |
| 11 | ## When to pick this model (vs siblings) |
| 12 | |
| 13 | GPT Image 2's distinct strength is **directive precision**: it follows multi-element prompts, layout cues, and embedded-text instructions more reliably than its peers. Pick it when **what's on the canvas matters more than how stylized it looks**. |
| 14 | |
| 15 | | You want | Use | |
| 16 | |---|---| |
| 17 | | Embedded text, logos, signage, multilingual typography | **GPT Image 2** | |
| 18 | | Brand-safe, e-commerce / ad / UI mockup imagery | **GPT Image 2** | |
| 19 | | Iterative refinement that holds composition stable | **GPT Image 2** | |
| 20 | | Heavy stylization, painterly look | Flux 2 | |
| 21 | | Hyperrealistic portrait | Nano Banana Pro | |
| 22 | | Cinematic / aesthetic-first hero shots | Seedream 5 | |
| 23 | |
| 24 | If the user explicitly asked for GPT Image 2 / ChatGPT Image 2 / Image 2, route here regardless — don't second-guess the model choice. |
| 25 | |
| 26 | ## Prerequisites |
| 27 | |
| 28 | 1. **RunComfy CLI** — `npm i -g @runcomfy/cli` |
| 29 | 2. **RunComfy account** — `runcomfy login` opens a browser device-code flow. |
| 30 | 3. **CI / containers** — set `RUNCOMFY_TOKEN=<token>` instead of `runcomfy login`. |
| 31 | |
| 32 | ## Endpoints + input schema |
| 33 | |
| 34 | Two endpoints, same model. |
| 35 | |
| 36 | ### `openai/gpt-image-2/text-to-image` |
| 37 | |
| 38 | | Field | Type | Required | Default | Notes | |
| 39 | |---|---|---|---|---| |
| 40 | | `prompt` | string | yes | — | The positive prompt | |
| 41 | | `size` | enum | no | `1024_1024` | `1024_1024` (1:1), `1024_1536` (2:3 portrait), `1536_1024` (3:2 landscape) — **only these three** | |
| 42 | |
| 43 | ### `openai/gpt-image-2/edit` |
| 44 | |
| 45 | | Field | Type | Required | Default | Notes | |
| 46 | |---|---|---|---|---| |
| 47 | | `prompt` | string | yes | — | Natural-language **edit instruction** | |
| 48 | | `images` | string[] | yes | — | **Up to 10** reference image URLs (publicly fetchable HTTPS) | |
| 49 | | `size` | enum | no | `auto` | `auto` (preserve input ratio), or one of the three fixed sizes above | |
| 50 | |
| 51 | `size=auto` on edit preserves the input aspect ratio — strongly recommended unless the edit explicitly changes framing. |
| 52 | |
| 53 | ## How to invoke |
| 54 | |
| 55 | **Text-to-image:** |
| 56 | |
| 57 | ```bash |
| 58 | runcomfy run openai/gpt-image-2/text-to-image \ |
| 59 | --input '{"prompt": "<user prompt>", "size": "1024_1536"}' \ |
| 60 | --output-dir <absolute/path> |
| 61 | ``` |
| 62 | |
| 63 | **Edit (single ref):** |
| 64 | |
| 65 | ```bash |
| 66 | runcomfy run openai/gpt-image-2/edit \ |
| 67 | --input '{ |
| 68 | "prompt": "<edit instruction>", |
| 69 | "images": ["https://..."] |
| 70 | }' \ |
| 71 | --output-dir <absolute/path> |
| 72 | ``` |
| 73 | |
| 74 | **Edit (multi-ref, up to 10):** |
| 75 | |
| 76 | ```bash |
| 77 | runcomfy run openai/gpt-image-2/edit \ |
| 78 | --input '{ |
| 79 | "prompt": "compose subject from image 1 into the room from image 2; match the lighting of image 2", |
| 80 | "images": ["https://...subject.jpg", "https://...room.jpg"] |
| 81 | }' \ |
| 82 | --output-dir <absolute/path> |
| 83 | ``` |
| 84 | |
| 85 | The CLI submits, polls every 2s until terminal, then downloads any `*.runcomfy.net` / `*.runcomfy.com` URL from the result into `--output-dir`. Stdout is the result JSON. Stderr is progress. |
| 86 | |
| 87 | For pipe-friendly usage: |
| 88 | |
| 89 | ```bash |
| 90 | runcomfy --output json run openai/gpt-image-2/text-to-image \ |
| 91 | --input '{"prompt":"..."}' --no-wait | jq -r .request_id |
| 92 | ``` |
| 93 | |
| 94 | ## Prompting — what actually works |
| 95 | |
| 96 | These are model-specific patterns that empirically improve output quality. Apply to text-to-image and edit alike. |
| 97 | |
| 98 | **Be explicit on subject + setting + mood.** "A close-up of a matte ceramic water bottle on warm linen, soft window light, neutral background" — three concrete directives — beats "nice product photo of a bottle". |
| 99 | |
| 100 | **Quote embedded text exactly. Keep it short.** GPT Image 2 is the strongest text-rendering model in this class, but only when you **put the literal characters in quotes**. Long blocks of text degrade. For multilingual text, name the script: "Japanese kana", "Cyrillic", "Arabic right-to-left" |