Generate a complete marketing campaign brief from a launch goal, ICP, and product context. Pure reasoning skill. Outputs channel plan, messaging angles, content types, timeline, and success metrics. Designed for seed/Series A founders and small GTM teams who aren't professional marketers but need to run focused campaigns. No scripts — pure reasoning.
npx gooseworks install --all # then, in Claude Code, Cursor, or Codex: /gooseworks use the campaign-brief-generator skill
Pure reasoning skill. Takes a campaign goal, ICP, and product context — and produces a complete, actionable campaign brief a small team can actually execute.
Built for: Founders doing their own marketing. First marketing hires. GTM teams without a dedicated strategist. The output should be opinionated and specific, not a generic template.
Ask all questions in one go, grouped cleanly. This is a fast skill — don't make it feel like a form.
Based on intake answers, recommend 2-4 primary channels. For seed/Series A, resist suggesting more than 4 — execution quality beats channel breadth.
| Channel | Best For | Minimum Resource |
|---|---|---|
| Founder LinkedIn | Thought leadership, top-of-funnel awareness | 3 posts/week, 30 min/day |
| Cold email (outbound) | Direct pipeline from ICP list | SDR or founder time + Smartlead |
| LinkedIn ads | Targeted awareness with limited list | $1,000+/month budget |
| Community engagement | Slack/Discord communities where ICP is active | 1 hour/day, no budget |
| Content SEO | Long-term inbound, compounding | 2 posts/week, 2-3 month horizon |
| Newsletter sponsorship | Reaching existing engaged audiences | $500-5,000/newsletter |
| Product Hunt | Developer/startup audience, launch moment | 2 weeks prep, launch day hustle |
| Event/conference | High-intent networking, deal acceleration | Attendance + budget |
| Partner co-marketing | Shared audiences, low-cost reach | Partnership agreement |
For each recommended channel, specify:
Define 3 core messages for the campaign — the angles you'll repeat across channels.
For each core message:
Message: [1-sentence core claim]
Evidence: [proof point — metric, case study, quote]
For: [which ICP segment this resonates with most]
Channel fit: [best channel(s) to deploy this message]| Level | Message | Example |
|---|---|---|
| Primary (use everywhere) | Core positioning statement | "The only [category] built for [ICP]" |
| Secondary A (proof-driven) | Customer outcome story | "[Customer] 3x'd pipeline in 30 days" |
| Secondary B (contrast) | Differentiation from status quo | "Unlike [category], we [differentiator]" |
Map specific content pieces to the channel plan. Be concrete — give working titles, not just "write some blog posts."
| Week | Channel | Content Piece | Format | Owner | Goal |
|---|---|---|---|---|---|
| Week 1 | "[Working Title]" | Insight post | Founder | 500 impressions | |
| Week 1 | Cold email | Launch sequence (Touch 1) | SDR | 20 demos booked | |
| Week 2 | "[Working Title]" | Case study post | Marketing | 200+ reactions | |
| Week 2 | Blog | "[Working Title]" | How-to post | Marketing | 50 organic visits |
| ... |
Content types for seed/Series A (in order of leverage):
Define KPIs before the campaign starts. Split by phase:
| Metric | Target | How to Measure |
|---|---|---|
| Awareness | [N] LinkedIn impressions | LinkedIn Analytics |
| Consideration | [N] profile visits / email opens | LinkedIn, Smartlead |
| Conversion | [N] signups / demos / replies | CRM / product analytics |
| Quality | [N%] ICP match on conversions | Manual tagging |
North star for this campaign: [single most important metric]
# Campaign Brief — [Campaign Name]
Created: [DATE] | Owner: [Name]
## Goal
[1-sentence goal with number and timeline]
## ICP Target
[2-3 sentences: who, what pain, why now]
## Timeline
Start: [date] | End: [date] | Review: [midpoint date]
---
## Channel Strategy
### Channel 1: [Name]
- Role: [Awareness/Consideration/Conversion]
- Effort: [hours/week + budget]
- Owner: [person]
- Success metric: [what good looks like]
### Channel 2: [Name]
...
---
## Core Messages
### Primary
> "[message]"
Evidence: [proof]
### Secondary A
> "[message]"
Evidence: [proof]
### Secondary B
> "[message]"
Evidence: [proof]
---
## Content Calendar (Weeks 1-4)
| Week | Channel | Content | Format | Owner |
|------|---------|---------|--------|-------|
...
---
## Success Metrics
| Metric | Target | Owner |
|--------|--------|-------|
...
**North star:** [metric]
---
## What We're NOT Doing
(Scope constraints to prevent scope creep)
- Not running [channel] — not enough budget/time
- Not targeting [segment] — outside ICP for this campaign
- Not launching [content type] — need [prerequisite] first
---
## Assets Needed Before Launch
- [ ] [Asset 1] — Owner: [name] — Due: [date]
- [ ] [Asset 2] — ...Save to the current working directory or wherever the user prefers.
None. Pure reasoning. Works with any LLM agent.
Assemble an expert/educator motion-graphic LISTICLE video ad from a config — a spoken authoritative voiceover carries a numbered listicle while N web-animated hyperframe beats (HTML plus the Web Animations API, one branded design system of alternating tiles, big hero numerals, and glass-pill callouts) are rendered frame-by-frame via Playwright and anchored to the VO's word-level timestamps, periodic color-graded B-roll windows give visual breath, and captions burn ONLY inside those B-roll windows (2-word chunks, ASS Format header carrying a Name field so none drop) with the VO mixed under a low music bed. This is the FREE deterministic assembly stage (Playwright beat render plus ffmpeg concat plus window-masked caption burn plus VO-and-music mix plus final composite) — the VO, the music bed, and the stock B-roll come from create-vo-elevenlabs, create-music-elevenlabs, and media-proxy. Use for the vo-anchored-motion-listicle format.
Assemble a stop-motion hand-swatch-cycle product-demo ad from a config — a sequence of still PLATES (one hand swiping a single-barrel cosmetic across a cream skin-patch, the barrel + swatch changing per plate while the hand, background, crop, and lighting stay locked) is PNG→mp4 loop-encoded at each plate's own stop-motion hold (fast motion frames 150–250ms, per-shade ~380ms, hero beats 1100–1800ms), concat-demuxed with HARD cuts into a silent master, closed on a Playwright HTML-rendered branded end card (serif tagline + sans subtitle + real logo SVG over a hero BG, never AI-rendered text), and muxed with a pre-sourced music track playing under the end card with a fade tail (no VO). This is the FREE deterministic assembly stage (loop-encode + concat-demux + end-card render + music mux); the master-anchor plate, shade plates, and end-card BG come from create-image-gpt-image-fal and the track from create-music-elevenlabs. Use for the stopmotion-hand-swatch-cycle format.
Assemble a split-screen creator ad from a config — a two-zone vertical composite where a supplied AI-creator lip-sync take fills the BOTTOM ~48% while real 16:9 product/demo clips run uncropped in the TOP ~52%, each top clip contain-fit with a darkened blurred cover-scale fill of the same clip (never black bars), a 3px brand-color divider between the zones, the creator slice cover-fit per the per-scene VO timing, scenes hard-concatenated with the body audio being the concatenated creator VO slices, an end card held on the last sharp frame ~3s, then the ASSEMBLED cut transcribed with local Whisper (not the raw VO — concat drops inter-scene silence) and word-level captions burned in the chosen style. This is the FREE deterministic assembly + caption stage (two-zone composite + blurred fill + divider + hard-concat + end card + captions); the VO comes from create-vo-elevenlabs, the anchor from create-image-gpt-image-fal, and the whole-VO lip-sync from a paid VEED Fabric 1.0 take (a no-atom upstream input). Use for the split-screen-creator format.