Generating a changelog image
Changelog illustrations share one visual system: the official pastel gradient background with a flat, softly-3D product illustration painted on top. The image is generated by gpt-image-2 via the OpenAI images/edits endpoint, using the background as the base image so every entry sits on the exact same gradient.
Inputs
- Background:
images/changelog-background.jpg (3246×1800, ratio ≈ 1.80). Never commit a changelog image that isn't derived from it.
- API key:
ARGOS_OPENAI_API_KEY, exported in ~/.zshrc. It is NOT available in non-interactive shells — source ~/.zshrc before calling the API.
- Output size:
1728x960 — same 1.8 ratio as the background, both dimensions divisible by 16 (a gpt-image-2 requirement), and in line with existing assets (~1680×935).
Steps
- Resize the background to the output size (input and output must match so the gradient isn't distorted):
magick images/changelog-background.jpg -resize 1728x960! /tmp/changelog-bg-input.png
- Write the prompt (see style guide below), then call the edits endpoint. Generation takes 1–2 minutes:
source ~/.zshrc
curl -s https://api.openai.com/v1/images/edits \
-H "Authorization: Bearer $ARGOS_OPENAI_API_KEY" \
-F model=gpt-image-2 \
-F image=@/tmp/changelog-bg-input.png \
-F size=1728x960 \
-F quality=high \
-F output_format=jpeg \
-F "prompt=$(cat /tmp/changelog-image-prompt.txt)" \
| python3 -c "import json,sys,base64; open('/tmp/changelog-out.jpg','wb').write(base64.b64decode(json.load(sys.stdin)['data'][0]['b64_json']))"
Review it: downscale a preview (sips -Z 700 …) and Read it. Check: background gradient preserved, style matches existing entries, no garbled text, concept legible at thumbnail size. Iterate on the prompt if not.
Install it:
mkdir -p public/assets/changelogs/<slug>
cp /tmp/changelog-out.jpg public/assets/changelogs/<slug>/<slug>.jpg
Prompt style guide
Look at 1–2 recent images in public/assets/changelogs/ (e.g. vitest-sdk, analytics-revamp) before writing the prompt, then follow this template:
Keep the soft pastel gradient background exactly as provided — do not change its colors or add texture. On top of it, paint a clean flat vector product illustration in the established Argos changelog style: white rounded-corner UI window cards floating with subtle soft drop shadows, abstract grey placeholder bars instead of readable text, accents in purple (#8b5cf6 range), pink and green. [CONCEPT — describe the feature-specific scene here.] Generous margins on all sides, composition centered, no photographic elements, no readable text anywhere.
Concept guidance:
- Depict the feature as an abstract product scene: UI windows, terminals, cards, connecting lines — not metaphors like rockets or lightbulbs.
- Screenshot-diff imagery = side-by-side cards with pink dashed highlighted regions; approvals = green check circles; terminals = dark or white window with a
> prompt and grey bars.
- Flows and integrations read well as a left-to-right composition with a glowing connector between two elements.
- No readable text in the image — gpt-image-2 text is a garbling risk, and the house style uses placeholder bars anyway. Well-known logos are the only exception, and only when essential.
1---2name: changelog-image3description: Generate the illustration for an argos-ci.com changelog entry with OpenAI gpt-image-2, painting on the official pastel background. Use whenever a changelog entry needs its image.4---56# Generating a changelog image78Changelog illustrations share one visual system: the official pastel gradient background with a flat, softly-3D product illustration painted on top. The image is generated by `gpt-image-2` via the OpenAI **images/edits** endpoint, using the background as the base image so every entry sits on the exact same gradient.910## Inputs1112- **Background**: `images/changelog-background.jpg` (3246×1800, ratio ≈ 1.80). Never commit a changelog image that isn't derived from it.13- **API key**: `ARGOS_OPENAI_API_KEY`, exported in `~/.zshrc`. It is NOT available in non-interactive shells — `source ~/.zshrc` before calling the API.14- **Output size**: `1728x960` — same 1.8 ratio as the background, both dimensions divisible by 16 (a gpt-image-2 requirement), and in line with existing assets (~1680×935).1516## Steps17181. Resize the background to the output size (input and output must match so the gradient isn't distorted):1920```bash21magick images/changelog-background.jpg -resize 1728x960! /tmp/changelog-bg-input.png22```23242. Write the prompt (see style guide below), then call the edits endpoint. Generation takes 1–2 minutes:2526```bash27source ~/.zshrc28curl -s https://api.openai.com/v1/images/edits \29 -H "Authorization: Bearer $ARGOS_OPENAI_API_KEY" \30 -F model=gpt-image-2 \31 -F image=@/tmp/changelog-bg-input.png \32 -F size=1728x960 \33 -F quality=high \34 -F output_format=jpeg \35 -F "prompt=$(cat /tmp/changelog-image-prompt.txt)" \36 | python3 -c "import json,sys,base64; open('/tmp/changelog-out.jpg','wb').write(base64.b64decode(json.load(sys.stdin)['data'][0]['b64_json']))"37```38393. Review it: downscale a preview (`sips -Z 700 …`) and Read it. Check: background gradient preserved, style matches existing entries, no garbled text, concept legible at thumbnail size. Iterate on the prompt if not.40414. Install it:4243```bash44mkdir -p public/assets/changelogs/<slug>45cp /tmp/changelog-out.jpg public/assets/changelogs/<slug>/<slug>.jpg46```4748## Prompt style guide4950Look at 1–2 recent images in `public/assets/changelogs/` (e.g. `vitest-sdk`, `analytics-revamp`) before writing the prompt, then follow this template:5152> Keep the soft pastel gradient background exactly as provided — do not change its colors or add texture. On top of it, paint a clean flat vector product illustration in the established Argos changelog style: white rounded-corner UI window cards floating with subtle soft drop shadows, abstract grey placeholder bars instead of readable text, accents in purple (#8b5cf6 range), pink and green. [CONCEPT — describe the feature-specific scene here.] Generous margins on all sides, composition centered, no photographic elements, no readable text anywhere.5354Concept guidance:5556- Depict the feature as an abstract product scene: UI windows, terminals, cards, connecting lines — not metaphors like rockets or lightbulbs.57- Screenshot-diff imagery = side-by-side cards with pink dashed highlighted regions; approvals = green check circles; terminals = dark or white window with a `>` prompt and grey bars.58- Flows and integrations read well as a left-to-right composition with a glowing connector between two elements.59- **No readable text** in the image — gpt-image-2 text is a garbling risk, and the house style uses placeholder bars anyway. Well-known logos are the only exception, and only when essential.