{artist} {title} {genre} {mood}. Leave empty to build the scene from the columns.Two or three clear, well-lit photos of the same face from slightly different angles work far better than one. Avoid sunglasses, heavy shadow and group shots — the model has to be able to tell which face is the subject.
Saving someone once means every cover you ever make for them is built from the same reference bytes and the same identity wording. That is what keeps a face consistent across a whole catalogue — re-uploading photos ad hoc and re-typing the description each time is exactly what makes covers drift apart.
Reference photos work on the GPT Image models (billed per image by OpenAI) and on Nano Banana (free, but that Google account currently reports depleted image credits). The other providers need the photo at a public URL, which this console cannot serve from your PC.
| Model | Provider | Cost | Ratio | Photos | Status | Notes |
|---|
Keys live in .env next to package.json and never reach the browser —
the console only learns whether each key is present. Copy .env.example to
.env, fill in what you have, and restart the server.
1 · Style pack. Picks the photographer persona, the art direction of that genre, and the camera/lighting/colour defaults a professional would reach for.
2 · Dimensions. Every dropdown left on Auto defers to the pack. Override one and it wins — so you can nudge a single thing without rewriting the brief.
3 · AI rewrite (optional). Sends the composed prompt through Gemini wearing a senior-photographer hat, which fills in specifics a template cannot invent. Keeps every decision you made.
4 · Negatives. None of these four providers has a negative-prompt field, so the pack's avoid-list is folded into the prompt as one short trailing clause.
5 · Fallback. If a paid generation fails, the free providers are tried in turn. The reverse never happens — a free model failing will not silently spend credits.