Why 'Write Me a Facebook Ad Script' Always Fails: The Prompt Structure That Doesn't

I see the same thing nearly every week. A founder or a strategist opens Claude or ChatGPT, pastes in a pile of customer reviews, types "now write me a Facebook ad script", reads what comes back, pulls a face, and decides AI can't write ads.
The tool isn't the problem. The prompt is.
Prompt engineering has quietly become the second creative skill, right behind copywriting. You can have access to every model going, and it won't matter if you can't reverse-engineer a good output out of it. So here's the structure I use, the one that actually works, and the editing method that turns an 80%-there draft into something you'd run.
Why the one-line prompt fails
The models are genuinely smart. They are not creative strategists. Out of the box they know nothing about your brand, your buyer, or what a good direct-response ad even looks like.
So when you type "write me a script", the model fills the gaps with the most generic, average-of-the-internet version of an ad it can produce. It doesn't know your customer says "itchy and irritated" not "scalp discomfort". It doesn't know your ad has to land on someone who's never heard of you. It writes a competent, forgettable script, because that's all you gave it the means to write.
The fix isn't a magic sentence. It's giving the model enough context and direction that the average output it lands on is actually a good one.
The structure: context, task, parameters, examples
Every prompt I write for ad copy has four parts. In order.
1. Context. Before you ask for anything, teach it the brand and the buyer. I keep a default research prompt for each brand, a quick rundown of benefits, objections, the painful problem it solves, who buys and why, and the failed solutions they've tried. I paste that in first, every time, so the model isn't guessing.
Two things worth adding here. Personas, built properly, with demographics, the awareness level you're writing for, and the specific trigger event that made someone buy. That last one is underused. If you know the actual moment in someone's life that pushed them to purchase, that's gold for a hook. And tone: half the time people hate the output because it doesn't sound like their brand, but they never told it what their brand sounds like.
2. The task. Now say plainly what you want. Not "write a script", but "look through these customer reviews and find first-person testimonials that would work as a Facebook ad headline". Specific and narrow beats broad and vague every time.
3. The parameters. Spell out the rules. Keep it short. Use the customer's own language. It has to be relevant to someone who's never heard of the brand and has zero context. The more boundaries you give, the less room there is for it to drift generic. And when something genuinely matters, put it in capitals. The models do weight it. If "MUST be relevant to a cold audience" is the thing you can't compromise on, shout it.
4. Good and bad examples, with reasons. This is the part most people skip, and it's the one that does the heavy lifting. Don't just describe what you want, show it. One example of a good output, one of a bad one, and the why behind each.
For an anti-dandruff shampoo, a good headline would be "the only shampoo that ended my dandruff battle", because it lands whether or not you know the brand, as long as you have the problem. A bad one would be "I'm so picky and these guys nailed it from A to Z", because if you don't already know the brand, it tells you nothing about why it's relevant to you. Spelling out the reasoning teaches the model the principle, not just the format, so it can apply it to the next twenty headlines.
Bad prompt vs good prompt
To make it concrete, here's the difference.
The bad version:
Here are my customer reviews. Write me a Facebook ad script.
The good version:
For context, here's the brand and customer research: [paste]. Here are the reviews: [paste]. Task: write a 30-second video script for a cold Facebook audience using a problem-solution structure. Parameters: open on the problem in the customer's own words. Keep the tone casual and a bit funny, matching the brand. It MUST make sense to someone who has never heard of us. Good hook example: "watch me try to squat in regular jeans" - because it dramatises the problem visually and needs no brand knowledge. Bad hook example: "the perfect jean is finally here" - because it assumes I already care about the brand.
Same model, same reviews. The second one gives it a fighting chance to land on something you'd actually use, because you've removed the guesswork.
Treat the first draft as 80%, then edit line by line
Here's the mindset shift that matters most: you are not trying to one-shot a finished script. Even with a great prompt, that's rare. You're trying to get to 80%, then bringing it home with your own judgement.
The way I do that last stretch is line by line. Once I've got a draft, I go down it one line at a time and make a single decision on each: keep it, kill it, or tweak it. When a line's close but not right, I tell the model exactly that. "Keep the first line. The second one's clunky, give me three alternatives that flow more naturally into the third." Then I move on.
You do that the whole way down and you end up with a script that's genuinely yours, fast. If the model gives me seven lines I'm happy with and five I have to rework, and my writing time drops from an hour to half an hour, that's a clear win. The point isn't to remove the craft. It's to remove the blank page.
Context dumping, and saving what works
Two habits that compound.
The first is context dumping. When the model needs to understand something it wasn't trained on, like how a good static ad in your category actually reads, just hand it the material. Take an internal doc on writing headlines, or the transcript of a good video on the topic, paste it in, and say "for context, this is how we approach static ads, follow this thinking". You're doing a bit of mini-training inside the prompt. In-context learning like this matters more than people realise, because the model has no native sense of the performance-marketing world unless you give it one.
The second is a prompt library. The moment a prompt works, save it. Don't rewrite it from scratch next time. Build yourself a library of the ones that earn their keep, your headline finder, your persona builder, your script editor, and copy-paste from there. It's mundane and it saves an absurd amount of time. You stop solving the same problem twice.
And keep iterating on them. When a prompt gives you weak output, treat that as a bug to fix, not a dead end. Tighten the parameters, add a sharper example, and the next version gets better. A good prompt is something you refine over weeks, not something you nail on the first go.
Try this on your next batch
If the "AI can't write ads" verdict has been sitting in the back of your head, I'd run one honest test before you accept it. Take your best-performing ad. Reverse it into the four-part structure: the context that made it work, the task, the parameters, and that ad itself as your good example. Then point the model at a fresh set of reviews and see what comes back.
Most of the time, the gap was never the model. It was everything we forgot to tell it. Give the structure a go on your next round of scripts and see how much of the blank page it clears for you.
.webp)





