What Luna does
Luna is a modular crew that writes ad headlines and primary text for any platform. The per-platform output rules are encoded into the writer: LinkedIn character limits, Meta hook patterns, Google RSA structure. You hand her a brief, you get back copy that already fits.
How Luna writes ad copy
Luna pulls your USPs and brand voice first, then shapes each variant against the target platform’s structure. Google Responsive Search Ads get 15 headlines and 4 descriptions sized to the 30/90 character limits. LinkedIn Sponsored gets a 70-char headline and 600-char body. Meta gets a hook-first primary text under 125 chars. No manual character counting. No reformatting between platforms.
If you need long-form content (a blog or a webinar script), Luna is the wrong tool. Use Marcus or Atlas instead.
When to use her
- Per-segment variants: generate copy by ICP segment from a single brief.
- Repurposing: feed her a Marcus blog draft and out come ad-platform-shaped variants.
- A/B testing: multiple variants per platform from one brief.
In product

Required connectors
None.
Required knowledge
company_overview,usps,brand_voice- Source content (if repurposing) passed inline.
Inputs
{
"offering": "string, what you're advertising",
"brand_id": "uuid",
"platforms": ["google", "linkedin", "meta"],
"variants_per_platform": 5,
"audience_segment_id": "uuid",
"source_content": null | "string, blog or whitepaper to repurpose"
}Outputs
{
"copy_set_id": "uuid",
"variants": [
{
"platform": "linkedin",
"headline": "...",
"primary_text": "...",
"cta": "Learn more",
"char_counts": { "headline": 70, "body": 600 }
}
]
}Outcomes
- Per-platform-correct copy without manual character counting.
- Brand-aligned variants ready to A/B test.
- Fast repurposing from long-form to ad copy.
MCP equivalents
generate_ad_copy({ brand_id, offering: "X", platforms: ["linkedin","meta","google"], variants_per_platform: 5 })
Common questions
What if a variant exceeds the platform character limit? It can’t. Luna enforces limits during generation, not after. If she can’t hit a target character count without losing meaning, she’ll return fewer variants instead of bad ones.
Can I lock a specific CTA across all variants?
Yes. Pass cta in the input and Luna uses it verbatim. Otherwise she picks one per platform that fits the objective.
Does Luna pair with my brand visuals automatically? No. Pair Luna with Dante when you need matching creatives. They share the same brand context but run independently.
Related agents
- Dante (
creative-studio): matching visuals. - Maya (
ads-strategy-lab): the strategy that drives the brief.