Prompt structure
How to Write a Good JSON Prompt
JSON does not make an image model more creative by itself. Its value is operational: it separates decisions that are otherwise buried in one paragraph, makes revisions traceable, and helps you test one variable at a time. A useful JSON prompt is readable by a person first and adaptable to a model second.
01
Start with the visual decision, not the schema
Before writing keys, define the image in one sentence: who or what is present, where the scene happens, what the camera should emphasize, and what emotional result you want. If that sentence is vague, adding twenty fields will only make the ambiguity harder to see.
Treat the schema as a map of decisions. A portrait prompt usually needs identity, scene, lighting, camera, wardrobe, composition, quality constraints, and output intent. A product image may replace identity with material, geometry, branding, and packaging constraints. Do not force every prompt into the same shape.
- Use concrete nouns and observable visual properties.
- Keep instructions in the field where they logically belong.
- Remove fields that do not change the intended result.
- State priorities explicitly when two instructions could conflict.
02
A compact structure that remains editable
The following example is intentionally small. It is easier to diagnose than a long prompt because each block has one job. Add detail only after the basic composition works.
{
"prompt": {
"subject": "A ceramic coffee cup on a walnut table",
"scene": {
"location": "quiet cafe beside a window",
"time": "early morning",
"mood": "calm and tactile"
},
"style": {
"photography": "editorial still life",
"lighting": "soft side light with natural shadow falloff",
"camera": "close framing, natural perspective"
},
"composition": {
"focus": "steam and glazed ceramic texture",
"background": "subtle, uncluttered, secondary"
},
"negative_prompt": [
"warped cup geometry",
"floating objects",
"unreadable text",
"plastic texture"
]
}
}03
Write constraints as diagnostics
A negative prompt is most useful when it names a failure you can recognize. Generic phrases such as “bad quality” communicate less than “duplicated handles,” “warped rim,” or “flat shadow with no contact point.” Specific constraints help you compare generations and decide whether a revision worked.
Do not use the negative list as a second prompt. A long list can introduce contradictions and dilute the main request. Start with the three to six failures that would make the output unusable, then add a constraint only after you observe a recurring problem.
04
Revise one layer at a time
Lock the subject and basic framing first. Then tune lighting and environment. Style references, texture detail, and finishing language come last. This order prevents a styling change from hiding a composition problem.
Keep a short test log: prompt version, model, visible settings, reference images, what changed, and what improved or regressed. A prompt becomes reusable when another person can reproduce the reasoning, not merely copy the final text.
- Version A: establish subject count and framing.
- Version B: adjust scene and light without changing the subject.
- Version C: add style and material detail.
- Version D: remove redundant or contradictory instructions.
05
Final quality check
Read the JSON as if you were briefing a photographer. Check whether the subject, environment, camera, and exclusions can all be true at the same time. If a field cannot be judged in the resulting image, it may not belong in the prompt.
- The intended subject and number of people are unambiguous.
- Lighting direction does not conflict with time or location.
- Framing and aspect-ratio expectations agree.
- Identity or product constraints are separated from pose and styling.
- The negative list describes observable failures.
- The output can be adapted without rewriting the whole prompt.

