Build a TikTok Ads Creative Brief Generator with Claude Code: The Compliance-First Setup for 2026

Article title in white text on dark teal background with brand-green accents in a hero header.

Share This Post

TL;DR

  • Build a TikTok ads creative brief generator with Claude Code so your editor can shoot the same day without a creative strategist on the loop.
  • The missing layer in every public tutorial is a vertical-keyed restricted-phrases.json config that flags blocked words before the camera rolls.
  • Print the compliance flag report at the TOP of every brief, not the bottom. Editors skim. A buried flag gets read after the shot list is locked.
  • Encode the first 1.3 seconds as three required schema fields: frame_1_visual, frame_1_audio, frame_1_on_screen_text. No populated fields, no brief.
  • Back-test against five historical winners before you trust the generator on live spend. If it misses on three, your CLAUDE.md needs more brand context.

Questions this article answers:

Your TikTok Briefs Don’t Fail at the Hook. They Fail at Policy Review.

Most lead-gen TikTok briefs die at policy review, not at the scroll. The brief reads fine. The hook is sharp. The editor shoots it. Then the upload bounces because the script said guaranteed or free, you owe the creator a reshoot fee, and the flight day the account was supposed to run is gone.

That is the reshoot tax. It is what you are actually trying to design out, not writing speed.

This guide walks through how to build a TikTok ads creative brief generator with Claude Code that bakes in two layers every public tutorial skips: a vertical-keyed restricted-phrase config, and the first 1.3 seconds encoded as required schema fields. The audience is paid media managers and small agencies running TikTok in lead-gen verticals like final expense, ACA, HVAC, mortgage, and solar. By the end you’ll have a working Claude Code project, a CLAUDE.md, a vertical-keyed restricted-phrase JSON file, and a brief schema your editor can shoot against the same day.

What is Claude Code and why use it instead of a custom GPT?

Claude Code is Anthropic’s command-line agent that runs in a folder on your computer, reads and writes files in that folder, and remembers your setup between sessions. It is not a chat window and not a no-code builder. It is a working agent that lives next to a project, which is what a brief generator needs.

Three primitives matter before you install anything:

  • CLAUDE.md is a plain-text file that loads automatically every time you open the project. Think of it as your agency’s brain on disk: tone, verticals, default constraints, client list, what good looks like. Anthropic documents the file in the Claude Code memory docs.
  • Skills are named, reusable workflows the agent can invoke, like generate-tiktok-brief. They beat one-off prompts because they are versioned, testable, and the same every time. See Anthropic’s Skills overview.
  • MCP (Model Context Protocol) is the wire that lets the skill reach external tools: a Notion doc, a Google Drive folder, a TikTok policy page. The MCP spec is open and Anthropic-published.

Cursor is fine if you live in an IDE. Custom GPTs are fine for a single throwaway prompt. Neither lets you put a restricted-phrase JSON file in a Git repo your team can diff, roll back, and update when TikTok quietly edits a policy page. That is why Claude Code wins for this build.

Install takes about five minutes. Run npm install -g @anthropic-ai/claude-code, then claude in any empty folder, sign in, and you are working. No prior terminal experience needed beyond copy-paste. For the broader build-vs-buy question, see our breakdown of Claude Code vs n8n for marketing ops.

What Goes in a CLAUDE.md File for a Paid Media Team

What goes in a CLAUDE.md file for a paid media team?

Your CLAUDE.md is where the brief generator learns who you are before it writes a single hook. Keep it under two pages. Long memory files dilute the signal.

Structure it in five sections:

  1. Who we are. One paragraph: agency name, the verticals you run, the buyer profile of your accounts.
  2. House voice rules. Plain bullets. No em dashes. No “guaranteed.” No medical claims. Use creator-led UGC voice, not announcer voice.
  3. Vertical list. The exact verticals the generator must support. Final expense, ACA, HVAC, solar, mortgage. Each one will have its own restricted-phrase list and its own hook patterns.
  4. Output rules. Markdown only. Compliance flag report at the top. Frame-1 fields required. Spec block at the bottom.
  5. What to never do. Do not invent claims. Do not promise outcomes. Do not write a hook that requires text-on-screen smaller than 40pt.

The generator reads this on every run. If it forgets a rule, the rule belongs here, not in your prompt.

Skills beat long prompts because they don’t drift

A Skill is a named workflow stored as a file in /skills/. Yours will be generate-tiktok-brief.md. Inside, you describe the inputs (vertical, offer, persona, campaign objective), the steps the agent takes (load the restricted-phrase list, draft the brief, run the compliance scan, output markdown), and the exact output shape.

The payoff: a teammate runs the skill with the same inputs you used, and they get the same brief shape you’d get. Prompts drift. Skills don’t. For a wider list of skills worth building, see ten Claude Code skills for marketers.

Portrait process-flow infographic in teal and green outlining steps to build a TikTok ads brief generator.
The build a tiktok ads creative brief generator with claude code process, step by step.

How Do I Structure a Restricted-Phrases JSON Config for TikTok Lead-Gen?

How do I structure a restricted-phrases JSON config for TikTok lead-gen?

A restricted-phrases JSON config is a flat file, keyed by vertical, that lists every word and phrase TikTok’s ad policy commonly rejects for that vertical, plus a reason field the brief generator surfaces in its compliance report. It sits next to CLAUDE.md in the project root.

Operator Note: This is the part every public Claude Code creative tutorial skips. The design-automation guides, the “140 creatives in 11 minutes” posts, the Canva MCP flows. They all optimize for shipping speed and ignore compliance. Lead-gen TikTok ads don’t die at the hook. They die at TikTok’s ad policy review, which screens for absolute claims, financial guarantees, and unsubstantiated health language. Most reshoots in lead-gen verticals trace back to a phrase the brief writer didn’t know was restricted.

Here’s the shape:

“`json { “final_expense”: { “blocked”: [“free”, “no cost”, “government-approved”, “burial insurance giveaway”, “guaranteed acceptance”], “reason”: “TikTok flags absolute claims and government-affiliation language in insurance ads.” }, “hvac”: { “blocked”: [“guaranteed”, “lifetime warranty”, “free system”, “100% satisfaction”], “reason”: “Absolute performance claims and ‘free’ offers without qualification trigger review.” }, “aca”: { “blocked”: [“Obamacare giveaway”, “free healthcare”, “government subsidy you qualify for”, “government plan”], “reason”: “Government-affiliation framing and absolute-eligibility claims are restricted.” }, “mortgage”: { “blocked”: [“guaranteed approval”, “no credit check”, “government loan”, “locked-in rate”], “reason”: “Approval guarantees and credit promises are restricted in financial services.” }, “solar”: { “blocked”: [“free solar”, “government pays”, “$0 down forever”, “no cost to homeowner”], “reason”: “‘Free’ framing and government-affiliation claims are flagged in home-improvement finance.” } } “`

The skill loads the right vertical’s list based on the input, scans the draft brief, and emits a compliance flag report.

Why the compliance flag report must print at the top of the brief, not the bottom

Editors skim. A flag buried at the end of a 600-word brief gets read after the shot list is already locked, which means the editor shoots the offending line, then has to reshoot it.

Make the very first thing in every brief the flag report:

“` ⚠️ COMPLIANCE FLAG REPORT (HVAC vertical)

  • RESTRICTED PHRASE DETECTED: “guaranteed” in hook line 2, rewrite required
  • RESTRICTED PHRASE DETECTED: “free system” in offer line, rewrite required

Do not shoot until both lines are rewritten and the brief is regenerated. “`

If the scan finds nothing, print ✅ NO RESTRICTED PHRASES DETECTED at the top instead. The editor sees a green check or a red flag before they read the hook. That single design choice is what turns the generator from a writing aid into a reshoot-prevention tool.

Key Concept: The single most valuable line of code in this whole build is the one that prints the restricted-phrase warning at the top of the markdown file. Everything else is convenience.

Keeping the blocklist current as TikTok’s 2026 ad policies shift

TikTok updates policy pages quietly. Put one calendar reminder on the first Monday of each month: open the policy page for each vertical you run, diff it against your last review, add any new restricted language to the JSON, and commit it to Git. The commit history is your audit trail. When an account manager leaves, the next person inherits a versioned config, not a tribal-knowledge Slack thread.

How Do I Encode TikTok’s First 1.3 Seconds as a Required Brief Field?

The second missing layer in public tutorials: treating the hook as soft advice instead of schema.

TikTok’s own performance guidance, surfaced in Improvado’s 2026 TikTok media guide, recommends the hook resolve in the first three seconds and the product reveal land between eight and twelve seconds. In practice for lead-gen, the first 1.3 seconds is where the scroll decision happens. If your brief says “strong hook required,” the editor has no schema to shoot against. If your brief gives them three required fields they cannot leave blank, they do.

Encode the first 1.3 seconds as three discrete fields the skill must populate:

  • frame_1_visual is what is on screen at 0:00 to 0:01. “Creator mid-laugh holding a stack of unopened insurance mail.”
  • frame_1_audio is what is said or heard. “Wait, you’re paying HOW much for that?”
  • frame_1_on_screen_text is what overlay text appears. “POV: your mom just opened a $480 bill.”

The skill cannot return a brief without all three populated. If the model leaves one blank, the skill rejects its own output and retries.

The required output fields a creative editor will actually shoot against

The full brief schema:

Field Purpose
compliance_flag_report Top of file. Green check or red flags.
vertical Which restricted-phrase list applied.
offer The product or lead form being promoted.
persona One-line target audience.
frame_1_visual / frame_1_audio / frame_1_on_screen_text The 1.3-second hook, fully shootable.
angle The argument the ad makes.
proof The specific demonstration or testimonial beat.
cta The exact line and on-screen button text.
b_roll_list Shot list the creator can prep before filming.
on_screen_text_overlays Every overlay with timecode and copy.
spec_block 9:16, 1080×1920, 15 to 30 seconds, 100-char display text.

The editor opens the markdown file. The flag report tells them whether to shoot at all. The frame-1 fields tell them what to roll on. The b-roll list tells them what to prep. No phone call required.

How many TikTok brief variants should the generator output per campaign?

TikTok’s own creative testing guidance recommends three to five ad groups per campaign with three to five creatives each, which works out to nine to twenty-five briefs per campaign. This is the volume the generator is sized against, per Social Native’s TikTok creative testing breakdown.

A strategist writing nine to twenty-five briefs by hand for one campaign is a full day. A skill that outputs them in a single run, with compliance flags surfaced for each, is the reason the automation pays for itself even before you count the reshoots avoided.

How Do I Back-Test the Brief Generator Before Trusting It on Live Spend?

How do I back-test the brief generator before trusting it on live spend?

Before the generator touches a live campaign, pull five historical winning ads from the account, the top 10% by cost-per-lead or ROAS over the last 90 days, feed their offer and persona into the skill, and compare the brief it produces to the brief that actually shot. You’re not chasing a word-for-word match. You’re checking three things.

One: would the generated hook have produced a similar scroll-stop? If the live ad opened on a creator’s face at a mailbox and the generator opens on stock B-roll of a house, that’s a brand-context gap and CLAUDE.md needs more detail.

Two: would the compliance flag report have caught anything the live ad slipped through? Sometimes you’ll find that a winning ad ran with restricted language TikTok happened not to catch. That is not a green light. That is borrowed time.

Three: would the frame-1 fields have pointed the editor to a similar opening shot? If the answer is yes on three or more of five, you’re ready. If the answer is no on three or more, your restricted-phrase list is too aggressive, or your memory file is too thin.

When the generator is wrong and a human strategist overrides

Three scenarios need a human on the loop:

  • Novel offers with no historical analog. A new product line, a new geo, a new payout structure. The generator has no winning patterns to triangulate from.
  • Regulatory-shifted verticals. New ACA enrollment language, a Medicare AEP policy change, a state-level insurance update. The restricted-phrase list lags reality by days or weeks.
  • Creator-led campaigns where the creator’s voice is the asset. A famous-on-TikTok creator’s hooks come from their personality, not from your schema. Brief them lighter and let them riff.

The rest of the time, the skill ships briefs your editor shoots against.

What does it cost in API tokens to run 100 briefs a month?

At current Claude pricing, a single brief is a few cents of input and output tokens. A hundred briefs a month is a small recurring cost relative to a single prevented reshoot, which costs a creator day-rate plus editor hours plus the lost flight day on the account.

Quick Win: Frame the build for the person approving it on reshoots avoided, not minutes saved or API spend. One prevented reshoot pays for the month. Check current rates on Anthropic’s pricing page before you forecast it for your team.

Ship It: Folder Structure, Git, and the Handoff to Your Editor

The final repo:

“` /tiktok-brief-generator ├── CLAUDE.md ├── restricted-phrases.json ├── /skills │ └── generate-tiktok-brief.md ├── /briefs │ └── {client}/{campaign}/{date}-{variant}.md └── /back-tests └── {client}-{date}.md “`

Put it in Git. Even if you’ve never used Git, GitHub Desktop gives you a one-click commit button and you’re fine. The reason matters more than the tool: when your account manager leaves, the next person inherits a versioned config, the back-test history, and every brief ever produced. Not a Notion page with three months of stale comments.

Hand the briefs off in whatever folder your editor already watches. Notion via MCP. Google Drive. Dropbox. The editor opens the markdown, sees the compliance flag report at the top, scans the frame-1 fields, reads the b-roll list, checks the spec block, and starts shooting.

The same architecture extends sideways. Meta wants a different schema and a different restricted-phrase list. So do Reels and YouTube Shorts. The folder structure, the skill pattern, the compliance-first design, all of that stays the same. You are not building one tool. You are building a config-driven brief engine that learns one channel at a time.

This is not a one-time build. It is a config you update as TikTok’s 2026 policy shifts and as your account learns what wins.

Frequently Asked Questions

What is Claude Code and why use it instead of a custom GPT?

Claude Code is Anthropic’s command-line agent that runs locally, reads and writes files in a project folder, and persists your setup through CLAUDE.md and Skills. A custom GPT lives in a chat window with no file system and no version control. For a brief generator that depends on a restricted-phrase JSON your team needs to diff and roll back, Claude Code is the right tool because the config lives in a Git repo.

What goes in a CLAUDE.md file for a paid media team?

A CLAUDE.md for a paid media team should fit on two pages and cover five things: who you are, your house voice rules, the verticals you run, your output rules, and what to never do. Keep it short. Long memory files dilute the signal and the agent forgets the rules that matter.

How do I structure a restricted-phrases JSON config for TikTok lead-gen?

Structure it as a flat JSON object keyed by vertical, where each vertical contains a blocked array of phrases and a reason string explaining why TikTok flags them. Load the right vertical based on the brief’s input, scan the draft for blocked language, and surface every hit in a compliance flag report at the top of the brief.

How many TikTok brief variants should the generator output per campaign?

Nine to twenty-five briefs per campaign, sized to TikTok’s recommended three to five ad groups with three to five creatives each. That’s the testing volume TikTok itself recommends and the reason a brief generator pays for itself. A strategist writing that volume by hand is a full day; a skill outputs it in one run.

How do I back-test the brief generator before trusting it on live spend?

Pull five historical winning ads from the account, feed their inputs into the skill, and compare the generated briefs to what actually shot. You’re checking whether the hook would have produced a similar scroll-stop, whether the compliance scan would have caught anything live, and whether the frame-1 fields would have directed a similar opening shot. Three of five passes means you’re ready to use the generator on new campaigns.

What does it cost in API tokens to run 100 briefs a month?

Token cost for one hundred briefs a month is a small recurring expense relative to a single prevented reshoot. A reshoot costs a creator day-rate, editor hours, and the lost flight day on the ad account. The math gets approved on reshoots avoided, not on API spend or minutes saved.

Can the same workflow extend to Meta, Reels, and YouTube Shorts?

Yes. The folder structure, skill pattern, and compliance-first design stay the same across channels. What changes is the schema and the restricted-phrase list for each platform. Build the TikTok version first, get one full quarter of back-test data behind it, then clone the pattern for Meta and Shorts.

If you want a sanity check on the build, or you’d rather have someone stand it up and train your team on it, that is the kind of internal web and dev work we do for paid media operators. Book a free consultation with Elevarus and we’ll talk through what your team actually needs.



Ready to put this into action?

Picture of SHANE MCINTYRE

SHANE MCINTYRE

Founder & Executive with a Background in Marketing and Technology | Director of Growth Marketing.