skills/campaign/SKILL.md
Plan and generate multi-channel campaign content including email sequences, LinkedIn, ads, social, blog, and landing pages. Use when user says "create a campaign", "campaign for launch", "multi-channel outreach", "demand gen", or asks for coordinated content across channels. Do NOT use for single emails or messages — use /octave:generate instead.
npx skillsauth add octavehq/lfgtm campaignInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Plan and generate integrated campaign content across channels — emails, LinkedIn, ads, social, blog, and landing pages — all grounded in your library's personas, Motion ICP narratives, competitive positioning, and proof points.
/octave:campaign [topic] [--channels <list>] [--persona <name>] [--motion <name>]
/octave:campaign # Interactive mode
/octave:campaign "AI feature launch" # Campaign around a topic
/octave:campaign "Q1 pipeline push" --persona "VP Engineering"
/octave:campaign "competitive displacement" --motion "Enterprise Outbound" --channels email,linkedin,ads
/octave:campaign "customer expansion" --channels email,social
| Channel | What's Generated |
|---------|-----------------|
| email | Multi-step email sequence (default: 4 emails) |
| linkedin | Connection request + follow-up messages + post drafts |
| ads | 2-3 ad copy variants (headline, body, CTA) |
| social | 3-5 social posts (LinkedIn, Twitter/X) |
| blog | Full blog post outline with key sections |
| landing-page | Landing page copy (hero, benefits, CTA, proof points) |
Default: email,linkedin if no channels specified.
When the user runs /octave:campaign:
If no topic provided, ask:
What's the campaign about?
GROWTH
1. New product/feature launch
2. Pipeline acceleration (drive meetings)
3. Customer expansion / upsell
4. Event promotion (webinar, conference)
COMPETITIVE
5. Competitive displacement
6. Market positioning / thought leadership
LIFECYCLE
7. Re-engagement (cold leads, churned accounts)
8. Nurture sequence (educate and warm)
9. Something else - describe your campaign goal
Your choice:
Ask targeted questions based on campaign type:
Let's shape this campaign. A few questions:
1. Target audience?
[List personas from library or "new/custom"]
2. Which product/solution?
[List products from library]
3. Key message or angle?
[Suggest based on the matched Motion ICP narrative (Strategic narrative, Benefits and impacts) or "custom"]
4. Which channels?
[email, linkedin, ads, social, blog, landing-page]
Default: email + linkedin
5. Timeframe?
- Sprint (1-2 weeks)
- Standard (3-4 weeks)
- Extended (6-8 weeks)
6. Any competitive context?
[List competitors or "none"]
This is what makes the campaign intelligence-grounded, not just templated:
# Get persona details
get_entity({ oId: "<persona_oId>" })
# Get product details
get_entity({ oId: "<product_oId>" })
# Find the right Motion and Motion ICP cell for this campaign
list_motions()
list_motion_icps({ motionOId: "<motion_oId>" })
find_motion_icp({ motionIcpOId: "<motion_icp_oId>", includeLearnings: true })
# Get proof points for credibility
search_knowledge_base({ query: "<campaign topic>", entityTypes: ["proof_point", "reference"] })
# Get competitive positioning if relevant
get_entity({ oId: "<competitor_oId>" })
# Get brand voice
list_all_entities(entityType: "brand_voice")
# Get writing style
list_writing_styles()
# Search for conversation insights on this topic
search_knowledge_base({ query: "<campaign topic> objections pain points" })
Present the campaign plan before generating content.
See campaign-plan-output.md for the Campaign Plan output template.
Generate content for each selected channel:
Email Sequence:
generate_email({
person: { firstName: "[Persona Name]", jobTitle: "[Persona Title]" },
numEmails: 4,
sequenceType: "COLD_OUTBOUND", // or WARM_OUTBOUND based on campaign type
allEmailsContext: "<campaign angle, persona pain points, competitive positioning, proof points>",
allEmailsInstructions: "Campaign: [name]. Angle: [strategic angle]. Each email should build on the previous. Use proof points progressively."
})
See email-sequence-output.md for the Email Sequence output template.
LinkedIn Messages:
generate_content({
instructions: "Generate LinkedIn outreach for a campaign targeting [persona]. Create:
1. Connection request note (300 char max)
2. Follow-up message after connection (short, value-add)
3. LinkedIn post draft that the sales rep can publish (thought leadership angle)
All grounded in: [value props, pain points, proof points]",
customContext: "<library intelligence gathered>"
})
See linkedin-output.md for the LinkedIn Content output template.
Ad Copy:
generate_content({
instructions: "Generate 3 ad copy variants for a campaign targeting [persona].
Each variant needs: Headline (30 chars), Body (90 chars), CTA (15 chars).
Variant 1: Pain-point led. Variant 2: Social-proof led. Variant 3: Curiosity/insight-led.
All grounded in: [value props, differentiators, proof points]",
customContext: "<library intelligence>"
})
See ad-copy-output.md for the Ad Copy Variants output template.
Social Posts:
generate_content({
instructions: "Generate 5 social media posts for a campaign targeting [persona].
Mix of: 1 stat/insight post, 1 question post, 1 mini case study, 1 hot take, 1 educational tip.
All connect back to: [campaign theme and value props].
Include hashtag suggestions.",
customContext: "<library intelligence>"
})
See social-posts-output.md for the Social Posts output template.
Blog Post:
generate_content({
instructions: "Generate a full blog post for a campaign targeting [persona].
Topic: [campaign theme]. Angle: [strategic angle].
Structure: Title, meta description, intro (hook), 3-4 main sections with subheadings,
conclusion with CTA. Weave in proof points naturally.
Length: 1200-1800 words. Tone: [brand voice].",
customContext: "<library intelligence, proof points, competitive positioning>"
})
See blog-post-output.md for the Blog Post output template.
Landing Page:
generate_content({
instructions: "Generate landing page copy for a campaign targeting [persona].
Sections: Hero (headline, subheadline, CTA), Problem statement, Solution overview,
3 key benefits with descriptions, Social proof section (quotes, logos, metrics),
FAQ (3-4 questions), Final CTA.
Tone: [brand voice]. Focus: [campaign angle].",
customContext: "<library intelligence, proof points, differentiators>"
})
See landing-page-output.md for the Landing Page Copy output template.
After generating all channels, present a unified view:
CAMPAIGN SUMMARY: [Campaign Name]
==================================
Channels Generated:
✓ Email sequence (4 emails)
✓ LinkedIn (connection + follow-up + post)
✓ Ad copy (3 variants)
✓ Social posts (5 posts)
✓ Blog post (1,500 words)
✓ Landing page copy
Library Sources Used:
- Persona: [name]
- Playbook: [name]
- Value Props: [list]
- Proof Points: [list]
- Competitor: [name] (if applicable)
- Brand Voice: [name]
---
What would you like to do?
1. Revise a specific channel's content
2. Re-generate any piece using a saved agent
3. Generate content for additional channels
4. Adapt for a different persona
5. Create a version for a different segment
6. Export all content
7. Done
This skill uses Octave's generate_content and generate_email tools by default. Two alternatives:
list_agents when relevant. See /octave:explore-agents.generate_* calls, gather Octave context, Claude writes directly. Offer when user wants more control.For the full interactive mode selector, use /octave:generate.
list_all_entities - List available personas, productsget_entity - Get full entity detailslist_motions - List all Motions in the workspacelist_motion_icps - List Motion ICP cells (persona × segment intersections) for a Motionfind_motion_icp - Get full Motion ICP cell narrative (Target ICP overview, Strategic narrative, Pains and consequences, Benefits and impacts, Methodology, References) plus Learning Loop learningslist_motion_playbooks - List Default + Custom Motion Playbooks under a Motion (when a Thematic / Milestone / Account / Competitive angle applies)get_motion_playbook - Full details for a Motion Playbooksearch_knowledge_base - Find proof points, references, messaginglist_all_entities (entityType: "brand_voice") - Get brand voice for consistencylist_writing_styles - Get writing style guidelinesgenerate_email - Email sequence generationgenerate_content - All other content types (ads, social, blog, landing page, LinkedIn)No Personas Found:
No personas in your library yet.
Campaigns work best when grounded in persona intelligence. Run
/octave:library create personato add one, or I can generate generic campaign content.
No Matching Motion ICP:
No Motion ICP cell matches this campaign topic and persona.
I'll use your product and persona information to ground the messaging. For better results, create a Motion for this offering, or layer a Custom Motion Playbook (Thematic / Milestone / Account / Competitive) onto an existing Motion that covers this segment.
Single Channel Request:
If the user only wants one channel (e.g., "just emails"), generate that channel but suggest complementary channels at the end.
/octave:brainstorm campaigns - Ideate campaign concepts before building/octave:generate - Quick one-off content generation/octave:pmm - Deep-dive collateral (case studies, one-pagers)/octave:repurpose - Adapt campaign content for new audiences/octave:messaging - Build messaging framework before campaigntools
Capture a brand's visual design system from its website and build a reusable component kit. Walks key pages on a domain (screenshots + HTML via the Octave scrape tool), derives design tokens (colors, type, spacing, radius, shadow), and produces a minimal component library (buttons, cards, headers, stats, tables, badges, hero, footer) as a self-contained HTML reference plus CSS tokens. Use when the user says "get brand components", "capture the brand", "build a component kit for <domain>", "make outputs look like <company>", or wants other skills to generate on-brand HTML for a target company.
tools
Define, run, and manage multi-step GTM workflows with human-in-the-loop execution. Use when user says "run a workflow", "show workflows", "create a workflow", "automate this process", or references workflow-based tasks.
development
Analyze won and lost deals for patterns, insights, and actionable learnings. Use when user says "win/loss analysis", "why did we lose", "deal patterns", "win themes", or asks about deal outcome trends. Do NOT use for visual HTML reports — use /octave:win-loss-report instead.
development
Generate visual win/loss analysis reports as self-contained HTML with CSS-based charts and data visualizations. Use when user says "win/loss report", "deal report", "visual analysis", or wants a formatted HTML version of deal outcome analysis. Do NOT use for text-based deal analysis — use /octave:wins-losses instead.