In partnership with

One prompt you already use, written out as an object, field by field. Where each sentence goes, when to say where something sits, and the four ways it quietly stops matching the picture in your head.

Reading this in another folder? Move it to your inbox so you never miss an issue.

Luxe Prompting ISSUE 141   AUGUST 2026

PROMPT CRAFT

AI Prompting in JSON.

Take one prompt you already use and write it out as an object. Three fields, one entry per thing in the picture, and a position only where the position is the point.

the three fields    where things sit    four ways it breaks

2 Free AI Courses. No Credit Card Needed.

5,000+ professionals use Skill Leap to get ahead with AI. Right now, two of their best courses are completely free - Claude 101 and the 14-Day AI Boot Camp.

Claude 101 covers prompting frameworks, Artifacts, file analysis, and real-world workflows in 19 lessons.

The Boot Camp covers ChatGPT, Gemini, Midjourney, and prompt engineering in 16 lessons. Downloadable workbooks. LinkedIn certificate.

Zero cost, no credit card, no catch.

THE SHORT VERSION

An object holds its shape across runs because writing it forces you to name every part separately.

  Three keys at the top: high_level_description, style_description, compositional_deconstruction. Only the last is required.

  Each element takes type, desc, an optional bbox, and for text elements a text key holding the literal string.

  Colour lives in color_palette, on the whole picture or on a single element. Sixteen hex values for the image, five for any one element, uppercase.

  Honest caveat: a model reads either shape and turns both into the same tokens. The object buys repeatability, and Ideogram's own guide sends you back to plain text for photoreal work.

Most of the prompts I keep are one long sentence, and most of them drift. I rewrote one as an object last month, ran both ten times, and the object held its shape while the sentence wandered.

That is the whole case for it, and it is smaller than people make it sound. A model does not prefer JSON. It reads either shape and turns both into the same tokens. The object holds because writing it forces you to name every part separately, and because you can change one line later without disturbing the rest.

Below: every key with a worked example, how to break a picture into parts, how to pin text and colour, and the four ways this quietly comes apart.

A structured outline on paper beside a photograph, with lines connecting entries in the outline to parts of the picture

ONE  ·  THE WHOLE SHAPE

One picture, every key.

Here is a complete caption with nothing left implicit. style_description is not a sentence, it is its own object, and that is the part most people get half right.

{
 "high_level_description": "A steel kettle on a kitchen counter in late afternoon light.",
 "style_description": {
  "aesthetics": "quiet, domestic, unstyled",
  "lighting": "low side light from a west window, no fill",
  "photo": "50mm, f/2.8, waist height",
  "medium": "photograph",
  "color_palette": ["#E8E2D9", "#8A8578", "#2B2B2B"]
 },
 "compositional_deconstruction": {
  "background": "A plain plaster wall and a wooden counter, nothing on the walls.",
  "elements": [
   {"type": "obj", "desc": "A brushed steel kettle, handle turned left."},
   {"type": "obj", "desc": "A folded linen cloth beside it."}
  ]
 }
}

Say the picture once at the top, say the look once in the middle, then stop describing and start listing. Most first attempts fail by writing the same scene three times in three places and leaving the model to pick which one it believed.

TWO  ·  BREAKING IT INTO PARTS

One entry per thing.

The test I use: anything you might move, remove or swap gets its own entry. Everything else stays inside the desc of whatever it belongs to. A kettle is an entry. The steel it is made of is not, because you would never swap the steel without swapping the kettle.

"elements": [
 {"type": "obj", "desc": "A ceramic mug, half full, closest to camera."},
 {"type": "obj", "desc": "A folded newspaper, edges soft from handling."},
 {"type": "obj", "desc": "A small glass jar of loose tea, lid off."},
 {"type": "person", "desc": "A hand entering frame from the right, reaching for the mug."}
]

Two things that always travel together stay one entry, and a wall does not become wall, paint and shadow. Over-splitting reads as clutter and you lose what you wanted, which was a short list you can still edit a month from now.

THREE  ·  WHERE THINGS SIT

Place only what must be placed.

Any element can carry a bbox, four numbers on a grid running 0 to 1000 in both directions with 0,0 at the top left. The order is top, left, bottom, right. Boxes are optional on every element, which is the part people miss.

"elements": [
 {"type": "obj", "desc": "A steel kettle on the counter.",
  "bbox": [420, 120, 760, 380]},
 {"type": "obj", "desc": "A window, blown out, the light source.",
  "bbox": [80, 620, 520, 980]},
 {"type": "obj", "desc": "A cloth, wherever it falls."}
]

Give a box when the position is the whole point: words over a shoulder, a shape in one corner, two things that must not overlap. Leave it off everywhere else, as the cloth above does, and let the model compose. A frame full of boxes is a layout you drew by hand in the least suitable tool available.

FOUR  ·  TEXT AND COLOUR

The two things worth pinning.

Words that must render exactly get their own element, with type set to text and the string in text, held apart from the desc that says how it should look. Colour sits either on the whole picture or on one element.

"elements": [
 {"type": "text",
  "text": "GOOD MORNING",
  "desc": "Condensed sans, all caps, pressed into the label.",
  "bbox": [300, 240, 380, 760],
  "color_palette": ["#2B2B2B"]},
 {"type": "obj",
  "desc": "A paper label wrapped around the jar, slightly creased.",
  "color_palette": ["#F4EFE6", "#C8BEA8"]}
]

Sixteen hex values for the image and five for any single element, uppercase. Putting the string inside a sentence instead of its own text key is the most common reason exact wording comes back approximated.

Four index cards in a row, the first neat and each one after it more tangled with crossings out

FIVE  ·  HOW IT BREAKS

Four failures, in order of how often.

Invented keys. Anything the documentation does not define is ignored in silence. Every key below does nothing, and the same words inside a desc would have worked.

{"type": "obj",
 "description": "A steel kettle.",
 "bounding_box": [420, 120, 760, 380],
 "camera": "50mm",
 "vibe": "calm",
 "mood": "domestic"}

The keys are desc and bbox. I carried the long forms in my own notes for months before I read the page properly.

Burying things. Elements nested inside elements read as decoration rather than instruction. Keep the list flat and let each desc carry the detail.

Over-building a plain photo. The vendor's own guide sends you back to plain text for photoreal scenes where placement is not critical. A portrait in daylight does not need a structure.

Drift. After five edits the object no longer describes the picture you had in your head. Read the whole thing aloud before you run it, which takes twenty seconds and catches nearly all of it.

WHAT IT CHANGES

When to reach for it.

Reach for the object when words have to render exactly, when a layout matters, or when you are making a run of pictures that have to look like each other. Those are the jobs where a sentence quietly costs you a whole afternoon of regenerating.

Keep the sentence for a one-off, for anything photoreal, and for the part of the work where you actually want the model to surprise you. Structure is for the things you intend to repeat.

PROMPT OF THE DAY

The converter.

Paste a prompt you already use under this and let a text model do the conversion. The key names are the ones Ideogram documents, so the result runs without editing.

Convert the prompt below into one JSON object with exactly three top level keys. high_level_description: one or two sentences about the whole picture. style_description: an object with aesthetics, lighting, photo, medium and color_palette. compositional_deconstruction: an object with background as a string and elements as an array. Each element takes type, desc, an optional bbox written top, left, bottom, right on a 0 to 1000 grid, and for text elements a text key holding the literal string. Use no key outside that list. Give a bbox only where I stated a position. Keep elements flat, add no adjectives I did not write, and list every gap you had to fill in a notes field outside the object.

The last clause is the one that matters. Without it the model fills your gaps silently, and you inherit its taste as though it were your own.

START HERE

Convert one you already use.

Take the prompt you reach for most, the one you have retyped a dozen times, and write it as an object once. Run both versions three times each. The sentence will move more than you expect, and you will see exactly which part of it was never pinned down.

THE NEXT WORKING NOTE

Next I am finishing the format sheet: one prompt written four ways side by side, a sentence, a line of tags, a set of blocks kept constant, and the object, with a note on which one held under repetition.

Want it when it ships? Reply with send me the format sheet and I will get it to you.

A QUESTION FOR YOU

Which of your prompts drifts the most?

Reply with the one that never comes back the same twice. I will convert a few of them in the format sheet and show what the object caught.

If this was useful, forward it to someone who regenerates the same picture six times.

MAKE SURE THIS REACHES YOU

Mailbox providers decide what counts as wanted mail, and they learn from what you do. If this landed anywhere other than your main inbox, three things fix it permanently.

Reply to this email. One word is enough. A reply is the clearest signal you can send that this belongs in your inbox, and it takes three seconds.

Move it to your main tab. If it arrived under Promotions or Updates, drag it across. On a phone, open the menu at the top right and choose Move.

Add the sender to your contacts. Tap the name at the top of this email and choose Add to contacts. That keeps it out of the spam folder for good.

WHAT THIS IS

Luxe Prompting is a working journal about prompting and generative work, written for the people making images, video and music with these tools rather than writing about them. One issue at a time, no announcements, no hype, and nothing I have not run myself first.

Partners cover the cost of writing it. I only take the ones my own readers would plausibly use, and I say so plainly at the top rather than dressing it as an issue. If you ever want to know how something here was checked, reply and ask. I keep the sources for every issue, and I would rather show them than be believed.

A closed notebook and a pencil at the end of a working day

Until next time,

Luxe Prompting

Luxe Prompting

PROMPTING AND GENERATIVE WORK, FOR PEOPLE WHO MAKE THINGS

Was this one useful?

Login or Subscribe to participate

Keep Reading