Ad copy
Open-source AI CMO for Claude Code: marketing agent skills for SEO, content, email, ads, launches, CRO, AEO/GEO, and AI-search visibility.
npx -y skills add cgallic/kai-cmo-harness --skill ad-copyAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
Write platform-compliant ad copy for Meta, Google, TikTok, LinkedIn, Pinterest, Snapchat, Amazon, or X. Loads TOS rules automatically. Shows char counts and format preview.
SKILL.md
4.2 KB, as published. Nobody here has run it
/ad-copy — The Ad Manager
Write ad copy that's compliant with platform TOS from day one. Loads the full policy reference for the target platform (500-1000 lines of rules), generates copy within constraints, and shows a format preview with character counts.
Arguments
Required:
- platform: meta | google | tiktok | linkedin | pinterest | snapchat | amazon | x
- site: Site key (e.g., kaicalls)
- offer: The offer or message in quotes
Example: /ad-copy meta kaicalls "Free 14-day trial — AI receptionist for law firms"
The Skill
Step 1: Load Platform Policy
Read the platform's TOS reference from the knowledge base:
| Platform | Policy File |
|---|---|
| meta | harness/references/meta-ads-rules.md |
harness/references/google-ads-policy-reference.md | |
| tiktok | harness/references/tiktok-ads-policy-reference.md |
harness/references/linkedin-ads-rules.md | |
harness/references/pinterest-ads-rules.md | |
| snapchat | harness/references/snapchat-ads-policy-reference.md |
| amazon | harness/references/amazon-ads-policy-reference.md |
| x | harness/references/x-ads-policy-reference.md |
Also load harness/references/advertising-compliance.md for cross-platform FTC/GDPR/CAN-SPAM rules.
Step 2: Load Site Context
Read site proof points and persona from the brief (if exists in ~/.kai-marketing/briefs/) or from config.
Step 3: Generate Ad Copy
Write ad copy variants following platform-specific constraints. Generate 3 variants per ad format:
Meta/Instagram:
- Primary text (125 chars recommended, 2200 max)
- Headline (40 chars max)
- Description (30 chars max)
- CTA button text
Google Ads:
- Headlines (30 chars each, 3 required)
- Descriptions (90 chars each, 2 required)
- Display URL path
TikTok:
- Ad text (100 chars recommended)
- CTA text
- Note: AI content disclosure required per TOS
LinkedIn:
- Introductory text (150 chars recommended)
- Headline (70 chars max)
- Description (100 chars max)
Step 4: Platform Format Preview
Show each variant with character counts and truncation warnings:
AD COPY — Meta/Instagram
══════════════════════════════════════
VARIANT 1:
┌─────────────────────────────────────┐
│ Primary: Stop losing calls to │ 118/125 chars
│ voicemail. AI answers │
│ in 0.4 seconds. │
│ │
│ Headline: Never Miss a Client │ 21/40 chars
│ Desc: Free 14-day trial │ 19/30 chars
│ CTA: [Start Free Trial] │
└─────────────────────────────────────┘
VARIANT 2:
...
COMPLIANCE CHECK:
[PASS] No prohibited claims
[PASS] No before/after imagery references
[PASS] No personal attributes addressed
[PASS] FTC disclosure not required (no endorsement)
[WARN] If targeting housing/employment/credit, enable Special Ad Category
Step 5: Compliance Gate
Check each variant against the platform's restricted content categories:
- Prohibited content (hard block)
- Restricted content (may need approval/certs)
- Special categories (housing, employment, credit, political)
- Required disclosures (AI content, endorsements, financial)
If any variant has compliance issues, flag them with specific TOS section references.
Step 6: Run Quality Gate
Run the standard quality gate with a lower threshold (10/16 Four U's for ads):
kai-gate score {draft_path} --format json
Error Handling
- Unknown platform: List valid platforms
- Policy file missing: Warn and generate without TOS constraints (clearly flagged)
- Character overflow: Show which fields exceed limits with truncation suggestions
Chain State
Optional reads: ~/.kai-marketing/briefs/ (for site context)
Standalone: Does not require prior chain steps