Build Notes #004: The Daily Brief Agent


BUILD NOTES

Issue #004

Creating Banger Ads with AI
(Part 1 of 2)

For 20 years, I had total control over my ad creative.

I could place a product exactly where I wanted it. I could set the lighting to match the mood of the campaign. I could adjust the color grade until it hit the emotional frequency I was going for.

Adobe Photoshop gave me pixel-level precision and I used every bit of it.

Then AI showed up.

And for a while, it felt like going backwards. Way backwards. Hands had six fingers. Text looked like someone ran English through a Russian typewriter.

I’d ask for “a supplement bottle on a marble countertop” and get something that looked like a fever dream painted by a toddler who’d seen a kitchen once.

Then the models got better. A lot better.

And while the models were improving, a prompting technique emerged that gave us back the precision we lost. Better than Photoshop-level precision.

Because now we get that precision at a fraction of the cost, a fraction of the time, and at a scale that would have required a full creative department just two years ago.

The Reason 90% of AI-Generated Ads Look Like Garbage

Let me tell you a secret that separates the marketers who are crushing it with AI creative from the ones complaining about it on Twitter.

​It’s not the model. It’s the prompt format.

​When most people prompt an AI image generator, they type something like: “Create an ad for my supplement product, make it look professional with nice lighting on a clean background.”

​That’s like walking into a photo studio and telling the photographer, “Make it look good.” You’re going to get whatever interpretation they feel like giving you that day. Maybe it’s great. Probably it’s not what you had in mind.

​Natural language prompting has too much variance. Every word gets interpreted. Every phrase has wiggle room. The AI fills in the gaps with its own assumptions. And those assumptions are different every single time you hit generate.

​This is why people have to create 10 images to get 1 usable ad. It’s not an AI problem. It’s a precision problem. And it’s why professionals aren’t prompting in natural language anymore.

​They’re prompting in JSON and XML.

The Structured Prompting Revolution (And Why It’s a Moat, Not a Trick)

Here’s the macro shift. A/B split testing has always been the key to creating high-converting anything. Every serious media buyer knows this. You don’t guess. You test. You isolate variables. You let the data tell you what wins.

​But how do you A/B test AI-generated creative when your prompts produce unpredictable output?

​You can’t.

​Not with natural language prompting.

​It’s impossible to isolate a single variable when the AI is interpreting your words differently every time.

​JSON and XML change this completely.

​When you feed the machine a structured prompt, every parameter is explicit. The lighting is defined. The camera angle is defined. The composition is defined. The color palette is defined. Nothing is left to interpretation.

​Change one key in the JSON. The lighting goes from “soft window light” to “dramatic side light.” Everything else stays identical.

​Now you have a true A/B test.

​Not two random images that kind of look similar. Two images where the ONLY difference is the variable you’re testing.

​This is what professional ad creative teams are doing right now.

​They’re not typing sentences into Midjourney and hoping for the best. They’re building libraries of JSON and XML templates that give them precision control over every visual parameter.

​They deploy these templates across campaigns the way media buyers deploy targeting parameters across ad sets. Systematically. Measurably. Profitably.

​The lazy marketers will keep typing natural language prompts and wondering why their AI creative looks amateur. The serious marketers will have template libraries that produce professional-grade output on demand.

​And here’s the part that should really get your attention.

The JSON Template Library Is the New Creative Department

Think about what a creative agency actually sells you. It’s not talent. It’s not software licenses. It’s not even the final deliverables.

​What they sell you is a system for producing consistent, on-brand creative at a predictable quality level. That system lives in the heads of their art directors, in their brand guidelines documents, and in their internal processes.

​A JSON/XML template library is that same system. Except it’s portable. It’s scalable. And it doesn’t call in sick or miss your deadline because they took on too many clients.

​Each template encodes a specific type of ad creative: product hero shot, lifestyle scene, UGC-style video, product demo, before/after comparison. Every visual parameter is defined. Lighting. Camera angle. Lens. Composition. Color palette. Mood. Surface textures. Prop placement. Negative space for text overlay.

​When you need a new ad, you don’t start from scratch. You pull the template, swap in your product details, and generate. The output is consistent every time because the instructions are precise every time.

​When you need to A/B test, you change one variable in the template and regenerate. True single-variable testing. The kind of controlled experimentation that used to require a photo studio, a photographer, and a full reshoot.

​I’ve been building my template library for months now. Templates for Midjourney V7 static imagery. Templates for Kling AI product demo videos. Templates for Google VEO spokesperson-style ads with native audio. Templates for Minimax Hailuo camera-controlled product reveals.

​Each model has different syntax, different parameters, different strengths. The templates handle all of that complexity so you don’t have to think about it at the point of creation. You think about the creative strategy. The template handles the technical execution.

​And next week in Issue #005, I’m going to show you the agent I built that deploys these templates automatically. Feed it a product brief. Get back a complete testing matrix of ad creative across platforms. But the agent is only as good as the templates it runs on. The templates are the ammunition. Next week’s agent is the weapon.

​This week, you get the ammunition.

Build Notes+ Section Starts Here

LAUNCH BONUS: You're seeing the FULL issue for free.

Normally, everything below is for Build Notes+ members only. Today is the last day of your 4 issue free trial. If you want to keep getting all the stuff below in future weeks, you will have to upgrade to Build Notes+

The Build Notes+ Complete Template Library for AI Ad Creative (HUGE value)

Build Notes Plus members get the complete template library below: production-ready JSON templates for Midjourney V7 (static ads), Kling AI (product demo video), Google VEO 3.1 (spokesperson video with native audio), and Minimax Hailuo (camera-controlled product reveals).

But you could also just use Manus or MindStudio, they have access to all the models and do video and static images.

Plus the XML campaign brief structure for organizing multi-platform creative, the variant set architecture for systematic A/B testing, and a model-by-model parameter reference so you know exactly what each tool can control.

How These Templates Work

Each template below is a production-ready JSON structure that controls every visual parameter of your ad creative. The ${variable} placeholders are where your specific product data goes. The ${variant} fields are where your A/B testing variables live.

You can use these templates in three ways:

  1. Manual generation. Copy the template, fill in your product details, and use the output as a prompt for the relevant tool. This is the fastest way to start.
  2. LLM-assisted generation. Feed the template to Claude or GPT along with your product brief, and ask it to populate the template and convert it to a natural language prompt optimized for the specific model. This handles the translation layer for tools that don’t accept JSON natively.
  3. Agent-automated generation. Next week in Issue #005, I’ll show you how to build a MindStudio agent that does steps 1 and 2 automatically like your own little agentic ad factory. But you need the templates first.

Template A: Product Hero Shot (Midjourney V7 / Flux / Nano Banana Pro)

This is your workhorse template for static ad imagery. Product shots for Meta feeds, Instagram, Google Display, and anywhere you need a clean product image with space for text overlay.

⚠️ You can just paste JSON directly into Gemini, ChatGPT, or Manus and it'll know what to do with it.

json
{
"template_id": "product_hero_v3",
"tool": "midjourney_v7",
"description": "${product_name} hero shot for ${platform}",
"environment": {
"location": "${surface_variant}",
"surfaces": ["${surface_material}"],
"props": ["${prop_1}", "${prop_2}", "${prop_3}"],
"spatial_arrangement": "product centered, props arranged naturally"
},
"visual_style": {
"aesthetic": "${brand_tone} product photography",
"mood": "${mood_variant}",
"lighting": {
"type": "${lighting_variant}",
"direction": "soft side lighting from left",
"intensity": "bright and airy",
"color_temperature": "neutral to slightly warm"
},
"camera": {
"angle": "slightly above eye level, 25 degrees",
"distance": "medium shot",
"lens": "85mm",
"aperture": "f/2.8",
"depth_of_field": "shallow, product sharp, background softly blurred"
},
"color_palette": ["${brand_color_1}", "${brand_color_2}", "${brand_color_3}"]
},
"composition": {
"product_placement": "center-left third",
"product_scale": "40% of frame",
"negative_space": "upper right for text overlay",
"balance": "asymmetrical"
},
"constraints": {
"preserve_product_accuracy": true,
"humans_in_image": false,
"no_text_in_image": true
},
"output": {
"aspect_ratio": "${ratio_variant}",
"platform": "${platform_variant}"
}
}

Example Output:

I asked Claude to customize this template to my Build Notes product and then Claude gave me the JSON to paste into Gemini.

Here is the result...

Why each parameter matters:

The camera block is where most people lose quality. “85mm” and “f/2.8” aren’t just photography jargon. 85mm compresses the background in a flattering way that makes products look premium. f/2.8 creates that shallow depth of field where the product is razor sharp and everything behind it falls into a creamy blur. This is what separates an amateur product photo from one that looks like it belongs in a magazine.

The composition block solves the “where do I put my headline?” problem. By specifying “negative space: upper right for text overlay” and “product_placement: center-left third,” every generated image leaves room for your ad copy in exactly the same spot. Your designer (or your Canva template) never has to fight the image for space.

The constraints block prevents the AI from doing things you don’t want. “no_text_in_image: true” is critical. AI-generated text in images still looks terrible in 2026. Always add text in post-production. “humans_in_image: false” prevents the six-fingered hand problem entirely for product shots.

Converting to a Midjourney prompt:

Feed this JSON to Claude or GPT with this instruction:

``` Convert the following JSON creative brief into a Midjourney V7 prompt. Follow Midjourney’s prompt formula: [Photography type], [product description], [surface/setting], [lighting], [color grading], [composition], [mood] –ar [ratio] –s [stylize] –v 7 –no [negatives]​Keep stylize between 150-200 for commercial photography. Include –no text, watermark, people ```

The output will be something like:

Commercial photography, premium supplement bottle with forest-green label, clean marble countertop with scattered fresh mint leaves and a glass of green smoothie, soft natural window light from left creating gentle shadows, warm neutral color grade, center-left composition with generous negative space on right for headline, fresh aspirational wellness mood --ar 4:5 --s 180 --v 7
--no text, watermark, people


Midjourney V7 Parameters You Should Know:
| Parameter | Syntax | What It Does for Ads |
|-----------|--------|---------------------|
| Aspect Ratio | `--ar 4:5` | Match platform (4:5 feed, 9:16 story, 16:9 banner) |
| Stylize | `--s 100-250` | Lower = literal accuracy; higher = editorial feel |
| Chaos | `--c 0-50` | 0 for finals; 30+ for concept exploration |
| Quality | `--q 2` | Maximum detail for production assets |
| Seed | `--seed 12345` | Lock composition for controlled A/B tests |
| Negative | `--no text, watermark` | Suppress unwanted elements |
| Draft | `--mode draft` | 10x faster at half cost for rapid iteration |
| Style Ref | `--sref
| Omni Ref | `--oref
| Repeat | `--r 10` | Generate 10 variations in one command |

The batch testing shortcut: Midjourney’s permutation syntax lets you test multiple variables in one command. Wrap variables in curly braces:

```Commercial photography, supplement bottle,{marble countertop, wooden table, white studio surface},{soft window light, studio three-point lighting, golden hour warmth}--ar {4:5, 1:1, 9:16} --s {100, 200} --v 7 --no text```

That single input generates 3 x 3 x 3 x 2 = 54 unique prompts. Combined with --seed to lock base composition, this is true single-variable A/B testing.

Template B: Product Demo Video (Kling AI)

Kling AI is the strongest option for product demonstration videos. Multi-shot sequences up to 15 seconds, 4K HDR, and native audio generation. Its image-to-video mode is especially powerful: start with your actual product photo and animate it.

Text-to-Video Template:

json
{
"template_id": "product_demo_video_v2",
"tool": "kling_ai",
"api_payload": {
"model": "kling-v2.6-pro",
"prompt": "${camera_movement} ${product_action} on ${surface_variant}. ${lighting_description}, shallow depth of field, ${color_grade}. ${style_modifier}, commercial product photography.",
"duration": 5,
"aspect_ratio": "${ratio_variant}",
"mode": "professional",
"negative_prompt": "text, watermark, blurry, distorted hands"
},
"camera_variants": [
"Close-up macro shot, slow push in.",
"Medium shot, slow orbit around product.",
"Low angle hero shot, slight upward tilt."
],
"action_variants": [
"A hand reaches in and picks up the ${product_name}, tilting it toward camera",
"The ${product_name} rotates slowly, light reflections glide across surface",
"${product_name} sits center frame, steam or particles drift past"
],
"style_variants": [
"Cinematic, cool tones",
"Warm and inviting, golden hour feel",
"Clean and clinical, bright whites"
]
}

Image-to-Video Template (the money shot):

This is where Kling really shines for advertisers. Take your best static product image (from Template A or from a real photoshoot) and animate it.

json
{
"template_id": "product_i2v_v1",
"tool": "kling_ai",
"api_payload": {
"type": "pro-image-to-video",
"prompt": "${motion_description}",
"image": "${product_hero_image_url}",
"duration": 5,
"aspect_ratio": "${ratio_variant}"
},
"motion_variants": [
"The bottle rotates slowly on the surface, light reflections glide across the glass, slight camera push-in",
"A hand reaches into frame and picks up the bottle, examining the label, shallow depth of field",
"Camera slowly orbits the product, background shifts from shadow to light, revealing the label"
]
}

Critical I2V (Image2Video) rule: Do NOT redescribe the image. The image IS the scene. Your prompt should ONLY describe what moves and what the camera does. Redescribing the image causes the AI to reinterpret it and you lose product accuracy.

Kling’s Prompt Formula: Subject + Action + Context + Style. Keep prompts under 50 words for best results.

Example Output:

Camera Movements Available: Horizontal pan, vertical movement, zoom, tilt, roll, and tracking. For 360-degree product rotation, type “360-degree rotation” directly in the prompt. Always specify why the camera moves (“camera zooms in on the label” beats “camera zoom in”).

Pricing: API runs $0.07-$0.14 per second. A 5-second Professional-mode clip costs roughly $1.75. Pro subscription at $26-37/month gives you about 85 five-second clips.

⚠️ Manus has Kling and Nano Banana built in, meaning you could use Manus to build all your static image ads and video ads. Also, you could build these templates into an agent with MindStudio.

Template C: UGC Spokesperson Video (Google VEO 3.1)

VEO is the only tool that generates synchronized dialogue, sound effects, and ambient audio alongside the video. For spokesperson-style ads, this means a complete ad from one prompt. No voiceover session. No audio editing. No lip-sync nightmares.

json
{
"template_id": "ugc_spokesperson_v1",
"tool": "google_veo",
"api_payload": {
"instances": [{
"prompt": "${shot_type} on a ${lens}. A ${spokesperson_description}, speaking directly to camera with natural enthusiasm. ${spokesperson_action}. ${environment}. Style: authentic UGC feel, ${color_grade}, fine skin detail. Audio: ${audio_environment}.",
"referenceImages": [{
"image": {
"gcsUri": "${product_image_gcs_url}",
"mimeType": "image/png"
},
"referenceType": "asset"
}]
}],
"parameters": {
"aspectRatio": "${ratio_variant}",
"durationSeconds": 8,
"generateAudio": true,
"negativePrompt": "text overlay, watermark, blurry",
"resolution": "1080p",
"sampleCount": 2,
"seed": "${seed_for_consistency}"
}
},
"shot_variants": [
"Medium close-up",
"Over-the-shoulder with product visible",
"Wide shot showing full environment"
],
"script_variants": [
"She holds up the product and says, 'This changed my morning routine completely.'",
"He sets the product on the counter and says, 'I was skeptical until I tried it for a week.'",
"She gestures toward the product and says, 'My clients keep asking me what I'm using.'"
]
}

VEO’s “Ingredients to Video” feature accepts up to 3 reference images of your product, maintaining packaging accuracy, brand colors, and logo placement throughout the video. This solves the problem of AI tools inventing product details. Use the referenceImages array to pass your actual product photos.

Scene extension chains clips beyond the 8-second limit, enabling 60+ second sequences. Use seed for reproducibility across chained clips.

Pricing: $0.75/second with audio via Vertex AI (an 8-second clip is about $6). VEO 3.1 Fast drops to roughly $0.15/second ($1.20 per clip), which is viable for volume production.

Template D: Camera-Controlled Product Reveal (Minimax Hailuo 2.3)

Hailuo gives you the most explicit camera control of any video model. Its bracket-based camera tokens let you specify exactly how the camera moves, frame by frame.

json
{
"template_id": "product_reveal_hailuo_v1",
"tool": "minimax_hailuo",
"api_payload": {
"model": "MiniMax-Hailuo-2.3",
"prompt": "[${camera_token_1}] ${product_reveal_action} on ${surface_variant}. ${lighting_description}. [${camera_token_2}] ${detail_action}. ${style_modifier}, commercial style, shallow depth of field.",
"duration": 6,
"resolution": "1080P"
},
"camera_token_sets": [
["Push in", "Zoom in"],
["Truck left", "Pan right"],
["Pull out", "Static"],
["Tracking shot", "Zoom in"]
]
}

All Available Camera Tokens:

[Pan left], [Pan right], [Tilt up], [Tilt down], [Truck left], [Truck right], [Push in], [Pull out], [Pedestal up], [Pedestal down], [Zoom in], [Zoom out], [Shake] (handheld feel), [Tracking shot], [Static]

You can combine up to three: [Truck left, Pan right, Zoom in]

Why Hailuo for high-volume production: At roughly $0.27 per 6-second clip at 768p, Hailuo is the cheapest model for social video. Generate 100 clips for under $30. The tradeoff: no native audio. All Hailuo videos are silent. You add voiceover, music, and sound effects in post. For social ads where you’re adding a music track and text overlay anyway, this isn’t a limitation.

Subject Reference (S2V-01 model) maintains face/character consistency across multiple clips, essential for spokesperson campaigns. First-and-last-frame conditioning lets you specify exact start and end states for precise product reveal timing.

The XML Campaign Brief: Organizing Multi-Platform Creative

JSON handles individual assets. XML handles campaign-level organization. When you need coordinated creative across platforms with consistent messaging and systematic testing, XML gives you the hierarchy.

```xml
<option id="A">natural window light from left</option>
<option id="B">warm golden hour studio</option>
<option id="C">dramatic side light with deep shadows</option>
<option id="A">pain point lead: frustration with current solution</option>
<option id="B">aspiration lead: vision of desired outcome</option>
<option id="C">proof lead: specific result or statistic</option>
<option id="A">close-up macro, slow push in</option>
<option id="B">medium shot, slow orbit</option>
<option id="C">low angle hero, slight upward tilt</option>
```

This XML brief is your campaign blueprint. It defines what gets tested, where it runs, and which templates produce each asset. One brief. Eleven coordinated, on-brand, systematically varied assets across four platforms.

In next week's Issue #005, I'll show you how to build the agent that reads this brief and executes the entire thing automatically.

But it can be as simple as giving these templates to Claude or the enemy (ChatGPT) and they'll know what to do with them.

The Variant Architecture: How to Run Real A/B Tests with AI Creative

The variant sets are where the testing discipline lives.

Here’s how to think about them.

Start with 3 variables, 3 options each. That gives you 27 possible combinations. You don’t run all 27. You pick the highest-impact subset based on your campaign objective.

For conversion campaigns: Test copy angle first (pain vs. aspiration vs. proof), lighting second (it affects emotional response more than most people realize), CTA treatment third.

For awareness campaigns: Test visual style first, then mood, then composition.

For retargeting: Test urgency framing first, then social proof elements, then offer presentation.

The seed trick for true A/B testing: In Midjourney, use --seed to lock the base composition. Change only one variable. The output will differ only in the variable you changed. This is real experimental design, not “let’s generate a bunch of stuff and see what looks good.”

Example variant set for a supplement brand:

json
{
"variant_matrix": {
"lighting": {
"A": "soft natural window light from left",
"B": "warm golden hour studio lighting",
"C": "cool clinical overhead, bright and clean"
},
"surface": {
"A": "white marble countertop with grey veining",
"B": "natural oak wood table",
"C": "clean white studio surface, no texture"
},
"mood": {
"A": "fresh, clean, aspirational wellness",
"B": "premium, sophisticated, luxury",
"C": "warm, approachable, everyday health"
}
},
"test_plan": {
"round_1": {
"test": "lighting",
"hold_constant": {"surface": "A", "mood": "A"},
"generate": ["lighting_A", "lighting_B", "lighting_C"],
"seed": 88421
},
"round_2": {
"test": "surface",
"hold_constant": {"lighting": "winner_from_round_1", "mood": "A"},
"generate": ["surface_A", "surface_B", "surface_C"],
"seed": 88421
},
"round_3": {
"test": "mood",
"hold_constant": {"lighting": "winner_from_round_1", "surface": "winner_from_round_2"},
"generate": ["mood_A", "mood_B", "mood_C"],
"seed": 88421
}
}
}

Three rounds. Nine total generations. You’ve isolated the winning lighting, the winning surface, and the winning mood. Your final creative combines all three winners. That’s a data-driven creative decision made for under $5 in generation costs.

Quick Reference: Which Model for Which Ad Type

| Ad Type | Best Model | Why | Cost per Asset |
|---------|-----------|-----|----------------|
| Product hero shot | Midjourney V7 | Highest image quality, best text-free rendering | ~$0.15 |
| Lifestyle product scene | Midjourney V7 or Flux | Consistent environment generation | ~$0.15-0.25 |
| Product demo video (5s) | Kling AI V3 Pro | Multi-shot, native audio, strong I2V | ~$1.75 |
| UGC spokesperson video | Google VEO 3.1 | Only model with native dialogue + audio | ~$1.20-6.00 |
| Camera-controlled reveal | Minimax Hailuo 2.3 | 15 camera tokens, cheapest per clip | ~$0.27 |
| High-volume social clips | Minimax Hailuo 2.3 | Best cost efficiency at scale | ~$0.27 |
| Product rotation / 360 | Kling AI V3 Pro | Best motion quality for rotating objects | ~$1.75 |

Your Action List for This Week

Here’s what to do before next week’s agent build drops:

[ ] Pick one template above that matches your most common ad format
[ ] Fill in the
${variables} with your actual product data
[ ] Feed the completed JSON to Claude and ask it to convert it
[ ] Generate 3 variants changing only one variable (use the variant sets above)
[ ] Compare the output quality against your last manually-prompted generation
[ ] Build variant sets for the 3 variables that matter most in your campaigns
[ ] Create an XML campaign brief for your next product launch using the structure above
[ ] Start a template library folder (you’ll need this for the agent build next week)
[ ] Bookmark the model reference table so you know which tool to reach for
[ ] Set up a free MindStudio workspace (you’ll need it for Issue #005)


That’s the full template library.

Next week in Build Notes #005: “The Ad Agency Agent:”

I’ll show you how MindStudio makes these templates work at scale, why it beats n8n, Make, and Zapier for AI creative workflows, and you’ll get the complete step-by-step agent build.

If you haven't upgraded to Build Notes+ yet, make sure you do so you don't miss part 2 of this series.

If you want the pre-build MindStudio agent ready to deploy without doing any of this yourself, that’s what Build Club is for. Every template and agent featured in Build Notes is available in the Build Club library.

Build Club

Install our pre-built AI agents & monthly live calls

Build Partner

Let our team custom build AI agents for you.

Adskills is a Florida based LLC | 5753 HWY 85 N, Crestview, FL 32536
Owned by Justin Brooke, through his parent company bYouPublishing LLC
If you hate us --> Unsubscribe 🥺

adskills

Subscribe to get a free 7 day "start your first Google ads" challenge.

Read more from adskills

BUILD NOTES Issue #003 The Daily Brief Agent I have a confession. 4 months ago, I was drowning. Not in work. In content. Every morning I'd wake up and there was fourteen YouTube videos I hadn't watched, but felt the FOMO if I didn't. Then there was three newsletters I hadn't read. Plus a Twitter feed full of people sharing insights I was missing. And every day the pile got bigger. I felt like I was slipping behind in the AI rat race. I'm in a business where knowing things is literally how I...

BUILD NOTES Issue #002 The Customer Support Agent I just replaced a $2,000/mo customer support role for $60/mo. We've been answering support tickets or paying someone to for 20 years and now we never have too again! But wait... This in NO WAY means that the quality of our support is gone. Majority of our support tickets are "I forgot my password" or "Where do I login for..." or "can you cancel my subscription." 80 - 90% of our customer support is things that take our time, but don't need too....

BUILD NOTES Issue #001 The Sales Prediction Agent I stopped guessing if my ads would work. Here's the agent I built instead... I've spent over $10 million on ads in my career. And I can tell you with certainty that I wasted at least $2 million of that. Not because I'm bad at my job. Because I was guessing. We all are. Every marketer, every media buyer, every business owner running ads is doing the same thing. We write some copy. We pick some images. We cross our fingers. We hit publish. Then...