A Simple Framework for Writing Ad Scripts That Don't Suck
A repeatable four-block ad script architecture (problem, agitate, mechanism, CTA) with annotated examples you can copy and adapt for paid social today.
You write a new ad. It gets a 0.6% click rate and a $14 CPM that quietly drains your budget for three days before you notice. You write another one. Same shape, same fade.
The script was the problem, not the targeting. Most ads die in the first three seconds because the writer started with the product instead of the viewer's situation. The fix is structural, not creative — you can ship a workable script with a formula and edit your way to a good one. This is the formula.
Why most ad scripts fail before the second line
On TikTok, Reels, and Shorts, the feed is the competitor. Your ad is interrupting something the viewer already chose to watch. You have roughly one breath to answer the only question they're asking: is this about me?
Two common failure modes:
- The brand-first open. "At Acme, we believe…" Nobody believes anything about you yet. You haven't earned the sentence.
- The feature dump. Listing what the product does before the viewer has a reason to care. Features are answers to a question you skipped.
The viewer doesn't care that your tool has 12 integrations. They care that they spend Sunday nights dreading the Monday report. Start where they already are.
The four-block architecture
Every ad script that holds attention does roughly the same four jobs in roughly this order. Name the blocks and you can write one in fifteen minutes instead of staring at a blank doc.
- Problem — the situation the viewer is already living in, named precisely enough that they think "that's me."
- Agitate — the cost of that problem staying unsolved. Not fear-mongering; just honest stakes.
- Mechanism — the specific reason your thing works differently. This is where the product finally shows up, framed as a "how," not a "what."
- CTA — one action, stated plainly, with a reason to do it now.
The order matters because each block earns the right to the next one. Skip Problem and Agitate has nothing to grip. Skip Mechanism and the CTA is just a demand. People sometimes call this PAS (problem-agitate-solution); adding the explicit Mechanism block is what separates an ad that converts from one that just sounds confident.
Block 1: Problem (0–3 seconds)
State the viewer's situation in their words, not yours. The test: could the viewer have said this sentence to a friend last week? If it sounds like marketing, rewrite it as a complaint.
Weak: "Managing social media is hard." Strong: "You have nine tabs open and you still don't know what to post today."
Block 2: Agitate (3–8 seconds)
Make the cost concrete. Time, money, or the quiet dread. One specific consequence beats three vague ones. The goal is recognition, not anxiety — you're confirming the problem is real and worth solving, then handing over the relief.
Block 3: Mechanism (8–20 seconds)
This is the block most people get wrong. Don't list features — explain the one thing that makes the result possible. "It writes your captions" is a feature. "It reads your last 30 posts and only suggests formats that already worked for you" is a mechanism. Mechanism is what makes a claim believable.
Block 4: CTA (final 5 seconds)
One action. "Tap the link, paste your URL, see the first version free." Not "check us out." Give a reason the action is low-risk or time-bound — a guarantee, a free first result, a trial — so "later" stops being the easy choice.
A copy-pasteable script skeleton
Fill the brackets. Keep each line short enough to say out loud without running out of breath — that's your read-aloud test for spoken VO.
- Hook / Problem: "If you [specific recurring task], you already know [the annoying part]."
- Agitate: "So you [the workaround], it takes [time/money], and [the outcome that still isn't good]."
- Turn: "Here's the part nobody tells you: [the reframe — the problem isn't effort, it's X]."
- Mechanism: "[Product] does [the one specific thing] — so instead of [old way], you [new way] in [timeframe]."
- Proof beat (optional): "[concrete, defensible detail — a format, a number you can stand behind, a before/after]."
- CTA: "[Single action]. [Reason it's safe or urgent]."
An annotated example, start to finish
Pretend we're writing for a project-management tool aimed at agency owners. Here's the script with the block labels in brackets so you can see the seams.
- [Problem] "If you run an agency, you've sent the 'just checking in on this' Slack message about your own project."
- [Agitate] "Three tools, four spreadsheets, and you still find out a deadline slipped from the client, not your team."
- [Turn] "The problem isn't your team. It's that status lives in five places and none of them update each other."
- [Mechanism] "This pulls every task, comment, and deadline into one view that updates itself — so the status report writes itself the moment something changes."
- [Proof] "You stop asking 'where are we on this' because the answer is already on the screen."
- [CTA] "Start free. Import one project in two minutes and see your real status today."
Notice what the example does not do: it never says "powerful," "seamless," or "all-in-one." Every claim is a thing you could screen-record. That's the bar — if you can't show it, cut it.
How to test scripts without burning your budget
One script is a guess. The point of a framework is that it makes variants cheap, and variants are how you actually find a winner.
- Hold the offer and product constant; vary one block. Most often the hook (Problem). Write three Problem openers for the same body. The hook does the heavy lifting; isolate it.
- Ship 3–5 variants per round, not one. You're not predicting the winner — you're letting the platform tell you. Creators usually find that the variant they were least confident about beats the "safe" one often enough to be worth testing.
- Read retention, not just clicks. A high click-through with a cliff in the first three seconds means the hook over-promised. The retention graph is your script's report card, block by block.
- Kill on data, not feelings. Set a spend threshold before launch. If a variant hasn't moved past it, cut it. Don't rescue a script because you liked writing it.
The reason this works is volume. A good script process produces ten testable angles a week, not one precious one. Your best ad is almost never your first idea; it's the third variant of an angle you nearly didn't try.
Common mistakes the framework prevents
- Front-loading the brand. The logo and name can wait until the Mechanism block. The hook is for the viewer, not your CMO.
- One script, infinite polish. Spending two days perfecting a single ad instead of shipping five rough ones. The market is a better editor than you are.
- A CTA with two asks. "Follow us and check the link and use code…" pick one. Every extra ask halves compliance.
- Mechanism that's actually a feature list. If your "how it works" is bullet points of capabilities, you skipped the part where you explain why it produces the result.
- Captions as an afterthought. A large share of paid social plays muted. If the script doesn't read as well on-screen as it sounds, half your audience never got the message.
FAQ
How long should an ad script be?
For paid social, write to time, not word count. Aim for a 15–30 second read for most platforms; the hook has to land inside the first three seconds regardless of total length. A useful check: read it aloud at a natural pace and time it. If you're rushing to fit, cut a line.
What's the difference between a hook and a CTA?
The hook (your Problem block) earns the next three seconds; the CTA earns the click. A hook fails by being about the product instead of the viewer. A CTA fails by being vague ("learn more") or by stacking multiple asks. Strong ads spend most of their effort on the hook because no CTA can save an ad nobody watched.
Do I need a different script for TikTok versus LinkedIn?
The four-block architecture holds across all of them — the calibration changes. TikTok and Reels reward a faster, more native hook and looser tone; LinkedIn tolerates a slightly slower setup and more explicit stakes. The fastest path is to write one strong script, then adapt the Problem block's tone and re-cut the same body for each placement.
Once you've got the four blocks down, the bottleneck stops being writing and becomes production — turning five scripts into five finished, captioned videos before the angle goes cold. That's the part Aitachyon is built for: paste your URL, get three script variants and a rendered, captioned ad in about two minutes, exported in 9:16, 16:9, or 1:1 for whichever feed you're testing. Plans start at $29/mo with a 14-day money-back guarantee, so testing a round of variants costs you a weekend at most. Start free and run your first three against each other.
Related articles
Video ad hooks that survive the first second: 18 patterns
18 video ad hook patterns grouped by mechanism, with examples, and why TikTok ad hooks belong in the spoken first words, not the text overlay.
GuidesHow much does a video ad really cost in 2026?
Agency, freelancer, UGC creator, DIY, or AI pipeline: the real video ad cost per tier in 2026, what each buys, and what a 48-hour feed ad deserves.
GuidesThe Founder Story Ad: How to Make It Work Without Being Cringe
Why a founder talking to camera outperforms polished video on cold audiences, and the three narrative moves that make a founder story video ad credible.