Your AI brand photos look fake because you're generating, not directing. Here's the CLAUDE.md brief and one master prompt that lock your character and world for six consistent shots.
This guide is reviewed for clarity, service accuracy, and AI-search readability. The next quarterly content review is tracked internally before unsupported metrics or client proof are added.
Stop Generating, Start Directing: The CLAUDE.md Brand-Photo System
Your AI brand photos look fake for one reason: you're generating, not directing.
Anyone can type a prompt and get a face. Type six prompts and you get six different people, six outfits, six moods. That mismatch is the tell. It reads as cheap, and no amount of "make it cinematic" fixes it.
The fix is a creative-director brief that sits behind every shot. You write down the character, the wardrobe, the world, the lighting, and the camera once. Then your image model isn't guessing each time. It's building inside a world you already locked.
This playbook hands you the whole system: a copy-paste CLAUDE.md brief, the steps to drop in your character, the single master prompt that fans out into six consistent shots, a filled-in worked example, and a QA checklist to catch drift before it ships. Set it up once and reuse it for every campaign.
Generating vs. Directing: The Before/After
Same tools. Completely different result. The difference is whether a brief exists.
Generating (the cheap loop):
- You write a fresh prompt every time.
- Each run rolls a new face, a new outfit, a new vibe.
- Six prompts produce six different people.
- You cherry-pick survivors and still can't match them.
- It looks like AI stock.
Directing (the system):
- You write the brief once in
CLAUDE.md. - That brief is loaded behind every shot automatically.
- One prompt fans out into six framings of the same person and world.
- The set already matches, so you just pick favorites.
- It looks like a real photoshoot.
You are no longer asking for a photo. You are running a shoot with a fixed cast, wardrobe, set, and camera.
What You Need to Set This Up
Three pieces. Plain English, no code.
- Claude Code. This is where the brief lives. Claude Code automatically loads a
CLAUDE.mdfile from your project folder into context for every request. That auto-load is the whole trick: your locks ride along on every shot without you re-pasting them. - An image model wired into Claude Code. Claude Code calls an image-generation tool through an MCP connection. The recommended engine is Nano Banana Pro (Google's Gemini 3 image model). It holds up to 5 identifiable subjects consistent across frames, supports multi-reference editing, re-lighting and re-angling, renders native 9:16, and outputs 2K/4K. It's reachable through Google's official API or aggregators like Kie.ai (~$0.09 per 2K image vs. ~$0.134 on Google's list price). On the CuriousRefuge 29-prompt benchmark it scored 9.50 against Midjourney v7's 8.62, and its text rendering lands near 95% vs. roughly 40–60%, so on-image labels survive.
- Midjourney (optional alternative). Its
--cref/ v7 Omni Reference lock characters well and its color science is gorgeous, but it has no API, so you can't drive it programmatically from Claude Code. Use it when you'd rather hand-pick by eye than run a set.
Folder setup:
promptmy-campaign/ CLAUDE.md # the locked brief (auto-loaded by Claude Code) refs/ character.png # the anchor face wardrobe.png # outfit reference set.png # world / location reference out/ # generated shots land here
The CLAUDE.md Creative-Director Brief (Copy-Paste)
This is the core asset. Drop it in your project root as CLAUDE.md and fill every blank. The five locks (CHARACTER, WARDROBE, WORLD/SET, LIGHTING, CAMERA) are what hold a campaign together. The BRAND block governs voice and usage.
prompt# CLAUDE.md — Brand Photo Creative Director You are my creative director for a brand-photo campaign. Every image you generate MUST obey the locks below. Never invent a new person, outfit, location, lighting, or lens between shots. When a shot is requested, change ONLY framing, angle, distance, and action. Keep everything else identical. Treat /refs/character.png as the exact face. Pass it on every single shot. ## CHARACTER (locked) - Identity / name: - Age range: - Build / height: - Ethnicity / skin tone: - Hair (color, length, style, part): - Face (eye color, eyebrows, facial hair, notable features): - Distinguishing marks (freckles, moles, scars, tattoos): - Default expression / energy: - Anchor reference: /refs/character.png — match this face exactly ## WARDROBE (locked) - Top: - Bottom: - Footwear: - Outerwear / layers: - Fabric + texture: - Colorway (hex if known): - Accessories (glasses, jewelry, watch, bag): - Grooming (nails, makeup): ## WORLD / SET (locked) - Location / setting: - Key props: - Background depth + clutter level: - Mood / atmosphere: - Brand color palette (hex): - Surfaces + materials: - Era / time period: ## LIGHTING (locked) - Key light (source, direction, intensity): - Fill light (ratio, softness): - Time of day: - Quality (hard / soft / diffused): - Color temperature: - Practicals / rim / accents: ## CAMERA (locked) - Camera body / system: - Lens + focal length: - Aperture (depth of field): - Default angle / height: - Film stock / color grade: - Aspect ratio: 9:16 (portrait, 1080×1920) - Output resolution: 2K ## BRAND (rules) - Brand name: - Voice / personality (one line): - What every shot must communicate: - Usage: organic social (IG, TikTok), paid ads, website hero - Never include: warped logos, on-image text, watermarks, extra people, a different face, a changed outfit
Step 1: Drop In Your Character + References
Reference images are what stop the face from morphing. Descriptions alone drift. Pair them.
- Pick one clean anchor photo of your character: front-facing, even lighting, neutral expression, no heavy filters. Save it as
refs/character.png. This is the face the model matches every time. - Add a wardrobe shot (
refs/wardrobe.png) showing the exact outfit, and a set shot (refs/set.png) showing the location and palette. Two to three references is the sweet spot. Stacking too many fights itself. - Write the CHARACTER block like a casting sheet, not a vibe. Drift lives in vague words. "Nice hair" can become anything. "Dark brown, shoulder-length, natural waves, center part" can't. Pin the things that visually anchor identity: hair, eye color, brows, skin tone, and one or two unmistakable marks (freckles, a mole, a tattoo).
- Repeat the marks in two places — in CHARACTER and in your mental QA. If the freckles vanish in shot 3, that's your fastest tell.
The rule: the brief says who and where, the references say exactly what they look like. Together they pin identity. One without the other drifts.
Step 2: The Master Prompt (One Run, Six Shots)
This is the only prompt you run. It does not re-describe the world. It points at the locked CLAUDE.md and asks for six framings.
promptRead the locks in CLAUDE.md. Using /refs/character.png as the exact face and /refs/wardrobe.png and /refs/set.png as anchors, generate the following 6 shots as ONE campaign set. Keep CHARACTER, WARDROBE, WORLD/SET, LIGHTING, and CAMERA identical across all six. Change only framing, angle, distance, and action per shot. Output each at 9:16, 2K. 1. HERO PORTRAIT — chest-up, subject facing camera, default expression, eye contact, centered. 2. ENVIRONMENTAL WIDE — full body inside the set, generous negative space, subject smaller in frame to show the world. 3. DETAIL / PRODUCT — tight on hands + the key prop; product is the hero, face partly in or just out of frame. 4. CANDID ACTION — subject mid-motion doing the core activity, not looking at camera, natural energy. 5. OVER-THE-SHOULDER — camera behind the subject looking at what they see; shoulder and head frame the foreground. 6. TIGHT CLOSE-UP — face only, same expression family, shallow depth, skin texture and emotion. Then lay all six out together and flag any shot where the face, outfit, or lighting drifted from the locks. Regenerate only the drifted shots. Negative — do NOT include: a different face, altered facial structure, changed hair color or length, a new outfit, extra people, warped logos, on-image text, watermarks, distorted hands, plastic skin, oversaturation.
Because the locks live in CLAUDE.md, this prompt stays short and the world stays fixed. You can rerun it for a new campaign by swapping only the references and the BRAND block.
The 6-Shot Variation Matrix
Six shots cover a full content week from one identity. Only the right column changes. Everything else stays locked.
- Shot 1 — Hero Portrait: chest-up, eye contact, centered. (framing: medium)
- Shot 2 — Environmental Wide: full body, subject small, world visible. (framing: wide)
- Shot 3 — Detail / Product: hands + key prop, product hero. (framing: macro)
- Shot 4 — Candid Action: mid-motion, no eye contact, natural. (framing: medium-wide)
- Shot 5 — Over-the-Shoulder: camera behind, foreground framing. (framing: medium)
- Shot 6 — Tight Close-Up: face only, shallow depth, emotion. (framing: close)
What stays locked in all six: the face, the outfit and accessories, the set and props, the brand palette, the light direction and warmth, the lens look, and the aspect ratio. What moves: distance, angle, and what the subject is doing.
The Exact Claude Code Workflow
- Create the project. Make a folder, add the
CLAUDE.mdbrief at its root, fill every lock. - Add references. Drop
character.png,wardrobe.png, andset.pngintorefs/. - Confirm the image model is wired in. Make sure your Nano Banana Pro MCP tool is connected so Claude Code can actually render.
- Run the master prompt. Claude reads
CLAUDE.md, passes the anchor on each shot, and generates all six intoout/. - Review the set as a grid. Look at the six together, not one at a time. Drift is obvious side by side.
- Regenerate only the misses. Re-run the one or two shots that slipped, passing the anchor again. Leave the good ones alone.
- Pick and ship. Choose your favorites. You now have a coherent campaign from a single session.
Worked Example: One Brand Persona, End to End
Brand: Fathom Coffee, a small-batch roaster. The founder is the face. Here is the filled-in brief.
prompt# CLAUDE.md — Fathom Coffee Creative Director You are my creative director. Obey every lock. Change only framing, angle, distance, and action between shots. /refs/character.png is the exact face. ## CHARACTER (locked) - Identity / name: Mara Ellis, founder of Fathom Coffee - Age range: early 30s - Build / height: 5'7", slim athletic - Ethnicity / skin tone: warm olive - Hair: dark brown, shoulder-length, natural waves, center part - Face: brown eyes, full natural brows, no facial hair - Distinguishing marks: light freckles across the nose - Default expression: calm, warm half-smile, grounded confidence - Anchor reference: /refs/character.png — match this face exactly ## WARDROBE (locked) - Top: oversized cream linen button-down, sleeves rolled to forearm - Bottom: high-waisted tobacco-brown wide-leg trousers - Footwear: tan leather loafers - Outerwear: none - Fabric + texture: textured linen, soft drape - Colorway: cream #F4EFE6, tobacco #8A5A2B - Accessories: thin gold watch, small gold stud earrings - Grooming: natural makeup, short clean nails ## WORLD / SET (locked) - Location: sunlit minimalist coffee roastery, concrete + warm oak - Key props: matte-black Fathom coffee bag, hand-thrown ceramic cup, brass scale - Background: shallow clutter, burlap bean sacks softly blurred - Mood: calm, warm, artisanal, early-morning quiet - Brand color palette: cream #F4EFE6, espresso #3B2A20, brass #B08D57 - Surfaces + materials: raw concrete counter, oak shelving - Era: contemporary ## LIGHTING (locked) - Key light: large window, soft directional daylight from camera-left - Fill light: bounced off concrete, gentle, ~2:1 ratio - Time of day: early morning, soft golden - Quality: soft, diffused - Color temperature: warm, ~5000K - Practicals / rim: subtle rim from the window edge ## CAMERA (locked) - Camera body / system: full-frame mirrorless - Lens + focal length: 50mm prime - Aperture: f/2.0, shallow depth of field - Default angle / height: eye level, slight 3/4 turn - Film stock / color grade: warm editorial, fine film grain, Portra-style - Aspect ratio: 9:16 (1080×1920) - Output resolution: 2K ## BRAND (rules) - Brand name: Fathom Coffee - Voice: calm, crafted, unhurried - Every shot must communicate: small-batch craft and warmth - Usage: IG, paid ads, website hero - Never include: warped logos, on-image text, watermarks, extra people, a different face, a changed outfit
Run the master prompt against that brief and you get this set, all the same Mara, same outfit, same roastery, same morning light, same 50mm look:
- Hero Portrait — Mara chest-up at the concrete counter, warm half-smile, eye contact, brass scale soft behind her.
- Environmental Wide — full body across the roastery, blurred bean sacks, lots of air around her.
- Detail / Product — her hands cradling the ceramic cup beside the matte-black bag, face just out of frame.
- Candid Action — mid-pour into the cup, looking down at the coffee, steam catching the window light.
- Over-the-Shoulder — camera behind her shoulder as she weighs beans on the brass scale.
- Tight Close-Up — face only, same half-smile, freckles and skin texture sharp, background melted to cream.
One session, six on-brand frames, zero stock-photo tell.
Guardrails Against Drift + QA Checklist
Drift has a small number of causes. Pin these and it mostly disappears.
- Re-describing the character differently each time. Fix: describe once in
CLAUDE.md, never in the per-shot prompt. - Skipping the anchor reference on a shot. Fix: pass
/refs/character.pngon every generation, including regenerations. - Vague descriptors. "Nice hair," "stylish outfit," "good lighting" each invite a reroll. Fix: exact nouns, colors, hex, focal lengths.
- Changing lighting or lens language between shots. Fix: those words live only in the locks, never the shot list.
- Letting the model add people or props. Fix: keep the negative-prompt block in the master prompt.
- Switching aspect ratio mid-set. Fix: lock 9:16 in CAMERA and restate it in the prompt.
Run this checklist on the six-up grid before you ship:
promptCONSISTENCY / ON-BRAND QA [ ] Same face across all 6 (eyes, nose, jaw, freckles)? [ ] Same hair (color, length, part)? [ ] Identical outfit + accessories in every frame? [ ] Same set, props, and surfaces? [ ] Same light direction and warmth? [ ] Same lens look and depth of field? [ ] Brand palette present in every shot? [ ] No stray text, warped logos, or extra people? [ ] All 9:16 at 2K? [ ] Do all six read as one campaign, one day, one person?
Any box fails on one shot, regenerate that shot only. Don't burn the whole set.
This is the exact system we run at Hypd to pull a month of on-brand campaign shots out of a single session instead of rerolling prompts until something looks passable.
FAQ
Do I need to be technical to use this?
No. You write plain-English descriptions in CLAUDE.md, drop in two or three reference images, and run one prompt. The only setup step is connecting an image model to Claude Code once.
Which image model should I use? Nano Banana Pro is the default for this workflow: strong multi-subject consistency, multi-reference editing, native 9:16, an official API, and roughly $0.09–$0.134 per 2K image. Choose Midjourney instead only if you want its color science and don't mind hand-picking, since it has no API to drive from Claude Code.
What if one shot still drifts after all this? Regenerate just that frame, pass the anchor reference again, and tighten the one descriptor that slipped (usually hair or face). Leave the shots that worked untouched. Fixing one shot is faster and safer than re-running the set.