Newsletter copy

01What is it?
Generate newsletter sponsorship copy with 2-3 ready-to-paste variants, tracking URLs via link-creator, and placement-spec compliance. Pulls approved angles from an upstream ICP campaign when applicable. It brings Wispr Flow's specific operating context into email marketing, so the agent is guided by a sharper source than a generic prompt.
02Inputs
Context for email marketing: your goals, audience, constraints, and any source material the skill asks for.
03Output
A ready-to-use result for email marketing: the analysis, copy, or recommendations the agent produces.
Install-only

Install as a package

Installs this one skill package for your coding agent, including any supporting files that skill ships with — not every skill in the repository. Read the tutorial.

Terminal
$ npx skills add retieedra-profound/skills-marketing-library --skill newsletter-copy

Skill instructions

The instruction file for this skill. The skill also includes other files you need to install to use it.

SKILL.md

Newsletter Copy Generator

Generate newsletter sponsorship copy briefs with ready-to-paste variants optimized for conversion. This skill produces complete copy briefs including multiple variants, tracking URLs, and placement specs.

Adapt the paths, domains, and IDs below to your own setup. This is the anchor of a sponsorship waterfall: it ingests a deal, researches the audience and prior performance, writes copy on proven best practices, then hands off to link-creator for tracked links and to copy-editing / writing for the final voice pass.

Pre-flight reminders

Before generating copy, check the per-user state file for reminders whose surface_when matches today AND whose surface_trigger includes newsletter-copy invocation. If one matches, surface it at the top of the output and list the pending placements whose submit-by dates are within 7 days.

Integration with an upstream ICP campaign

When a newsletter placement targets an ICP that already has a campaign package, read the campaign's messaging/approved-angles.md before writing. The newsletter copy becomes a short-form render of the anchor angle for the most relevant subgroup.

Handoff flow:

  • An ICP campaign produces angle cards
  • /newsletter-copy pulls the subgroup-relevant card and writes 2-3 newsletter-length variants
  • /link-creator provides the Dub tracking URL for each variant
  • /copy-editing polishes before send to partner
  • /writing final voice pass

When NOT to use

  • Paid ad copy → generated within the ICP campaign
  • General copy review → /copy-editing

Process

  1. Gather inputs: newsletter name, placement date(s), placement type, campaign goal
  2. Pull partner performance from Dub (see Phase 0.5 below), required when the partner has ≥1 shipped placement. Drives angle selection.
  3. Load messaging: pull ICP messaging from your product context
  4. Check specs: verify character limits and placement constraints
  5. Generate variants: write 2-3 copy variants per placement, leaning into proven winners and avoiding recently-shipped angles
  6. Create a unique Dub link per placement (see Tracking Standards below), one short link per date, tagged with the partner, in the Sponsorships folder
  7. Deliver brief: complete brief using assets/copy-brief-template.md, with the performance-analysis table at the top so rationale is transparent
  8. Save the brief to sponsorships/copy/{partner-slug}/YYYY-MM-DD-{publication}-{placement}.md (one file per send date, see File Organization below)

File Organization

Every sponsorship brief lives under sponsorships/copy/.

Rules

  • One folder per partner. Folder name is the lowercase-hyphenated partner slug.
  • One file per placement. File name is YYYY-MM-DD-{publication}-{placement}.md.
    • YYYY-MM-DD = send date
    • {publication} = specific show/newsletter (for example, flagship, ai, tech, dev, founders, pm)
    • {placement} = ad unit (for example, primary, secondary, quicklinks, takeover, midroll)
  • Never merge multiple send dates into one file. If you're drafting two placements on the same day, write two separate files so each has its own Dub link, compliance check, and sign-off trail.
  • _library/ inside a partner folder = multi-placement planning docs (quarterly plans, master briefs). Overviews, not the final copy that ships.
  • _archive/ inside a partner folder = superseded drafts, deprecated messaging. Keep for reference, never ship from here.
  • New partner? Create the folder using the partner slug and note any quirks in a partner-specific README (for example, a partner with multiple publications under one brand).

Required Inputs

FieldRequiredDescription
Newsletter NameYesThe specific newsletter and publication
Placement TypeYesPrimary, Secondary, Subject Line
Campaign GoalOptionalAwareness, Trial Signups, Upgrades
ICPOptionalWill infer from newsletter audience

Placement Specs

PlacementChar LimitPurpose
Subject Line≤45 charsInbox hook (rarely available)
Preheader50-90 charsPreview text
Primary150-250 wordsMain ad unit (most common)
Secondary100-125 wordsShorter placement

Phase 0: Silent Context Load

Before generating any copy, silently read your shared product context. Extract:

  • company.icps, use for audience matching per newsletter
  • company.messaging.value_props, use as proof points and angle sources
  • company.messaging.differentiators, use when claims need backing

If these fields are still unpopulated, proceed and infer the ICP from the newsletter audience. Flag at the end.

Phase 0.5: Performance Pre-Flight (REQUIRED)

Before drafting any copy, pull performance data for prior placements with this partner. Past performance is the single best signal for what angle to write next. This step is required when the partner has ≥1 shipped placement (skip only for net-new partners with no history).

Step 1: Pull placement-level data from Dub

Use the Dub REST API directly (the workspace-ID MCP lookup can 404):

source .env && curl -s -H "Authorization: Bearer $DUB_API_KEY" \
  "https://api.dub.co/links?tagIds={PARTNER_TAG_ID}&pageSize=50&sort=createdAt"

Substitute the partner's tag ID from your private lookup. Each link object returns clicks, leads, sales, saleAmount, createdAt, and key (the slug, which encodes the send date).

Step 2: Cross-reference angles with the brief files

For each link with traffic, open the matching brief in sponsorships/copy/{partner}/YYYY-MM-DD-{publication}-{placement}.md and pull the Angle line. Performance is meaningless without knowing what angle ran.

Step 3: Build the analysis table

Render a table at the top of the new brief:

| Date | Placement | Angle | Clicks | Leads | Sales | $ | Lead CVR |

Order by send date. Compute lead CVR = leads / clicks.

Step 4: Identify winners, losers, and recent angles

Write 3-5 bullets under the table covering:

  • Top performer by clicks / sales / $. The structural pattern to lean into.
  • Top performer by lead CVR. The hook pattern to lean into.
  • Anomalies (a placement with near-zero clicks usually means it didn't ship, not that the angle failed, flag, don't penalize).
  • Recently-shipped angles (last 30 days). Avoid these to prevent fatigue on overlapping subscriber bases.
  • Implication for this placement. State the angle choice and why.

Step 5: Drive angle selection from the read

The copy you write should clearly inherit from the analysis. If you pick a different angle than the data supports, justify it.

When to skip Phase 0.5

  • Net-new partner with no shipped placements
  • Partner tag does not exist yet (create via POST /tags first)
  • Same-week reshoot of a placement already drafted (use the existing draft's analysis)

ICP Messaging

Pull ICP messaging from your shared product context. If not yet populated, use defaults like these until the context is refreshed:

  • Knowledge Worker: Speed (type faster by speaking), ease, works everywhere
  • Leaders/Executives: ROI, team productivity, premium positioning
  • Developers: IDE integration, syntax awareness, prompt power

Critical Copy Rules

  1. No em dashes (—) and no double hyphens (--), both signal AI-generated copy. Restructure with periods, commas, or parentheses instead.
  2. Match ICP voice to newsletter audience, tech newsletters get developer messaging.
  3. Include 2+ variants per placement, for testing and flexibility.
  4. Use verified proof points only, keep an approved-claims reference and pull from it.
  5. Stay under character limits, newsletters enforce strict limits.
  6. Unique link per placement, never reuse a short link across multiple send dates.

Tracking Standards (Dub.co)

Every newsletter placement gets its own Dub short link so click attribution lands on the specific send date.

Link pattern

FieldValue
Domainref.wisprflow.ai
Slug{partner}-{mmm}{dd} (readable, year-implicit, for example partnername-apr17)
Destinationhttps://wisprflow.ai/ (or ICP-specific page if targeted)
FolderSponsorships ({FOLDER_ID})
TagThe partner's own tag (one tag per main sponsor)
Track conversiontrue
TitleWispr Flow x {Partner} {Publication} — {Placement} {Date}

UTM shape

ParamValueExample
utm_source{partner-slug} — one source per partner, groups all publicationspartnername
utm_mediumnewsletternewsletter
utm_campaign{partner}-{publication}-{yyyy}-{mm} (monthly rollup per publication)partnername-flagship-2026-04
utm_content{placement-type}-{yyyy-mm-dd} (unique per placement)primary-2026-04-17

Partner tags

Keep one tag per main sponsor in a private lookup. New partner? Create the tag first via POST https://api.dub.co/tags (the Dub MCP cannot create tags), then add the ID to your lookup and to your /link-creator configuration.

How to create the link

Call your Dub create-link tool with the fields above, or hand off to /link-creator. The link returned is what you paste into the copy; Dub appends the UTMs server-side on redirect.

Output Format

Deliver a complete copy brief using assets/copy-brief-template.md with:

  • Campaign context and goals
  • 2-3 copy variants per placement
  • Character counts and compliance checks
  • UTM tracking URLs
  • Proof point sources
  • Approval checklist

Cross-References

  • copywriting: for general marketing copy
  • copy-editing: for copy review and improvement
  • brand-voice: for brand voice consistency checks
  • writing: final humanize pass before send

References


Supporting file: assets/copy-brief-template.md

Newsletter Copy Brief: [Newsletter Name] - [Campaign Name]

Date: [YYYY-MM-DD] Newsletter: [Newsletter Name] Placement Type: [Primary / Secondary / Subject Line] ICP: [Audience segment] Campaign Goal: [Awareness / Trial Signups / Upgrades]


Campaign Context

Why this placement? [Brief rationale for targeting this newsletter]

Key message: [One-sentence positioning]

CTA goal: [What action do we want readers to take?]


Copy Variants

Variant A

[Paste copy here]

Character count: [X] Compliance: [✓ / ✗] (em dashes removed, char limit met)

Variant B

[Paste copy here]

Character count: [X] Compliance: [✓ / ✗]


Tracking & UTMs

Landing page: [URL] UTM parameters:

  • utm_source=[partner-slug]
  • utm_medium=newsletter
  • utm_campaign=[partner]-[publication]-[yyyy]-[mm]
  • utm_content=[placement-type]-[yyyy-mm-dd]

Full tracking URL:

[short link from link-creator]

Proof Points Used

[List any stats, testimonials, or claims referenced in copy with sources. Verified claims only.]


Approval Status

  • Copy approved by [Name]
  • Tracking URLs generated
  • Newsletter specs confirmed (char limits, placement details)
  • Submitted to newsletter team

Supporting file: references/framework.md

Newsletter Copy Framework

Reference for /newsletter-copy. Placement specs, funnel-stage hook mapping, copy patterns, and the validation checklist. Swap the example product framing (Wispr Flow, a voice-to-text tool) for your own, and replace every proof point with a verified claim from your own approved-claims list.

Placement Specs

PlacementCharacter LimitPurpose
Subject Line≤45 charsInbox hook, drives open
Preheader50-90 charsPreview text, supports subject
Primary150-250 wordsMain ad unit, full pitch
Secondary100-125 wordsShorter placement, key points
Tertiary≤50 wordsBrief mention, one hook
Link ModuleTitle + 10-15 wordsClickable link with description

Match the funnel stage to the audience

Pick the hook and CTA register from where the newsletter's audience sits relative to your product.

StageHook strategyCTA register
TOF (indifferent)Curiosity, identity, "did you know"Soft: "See how", "Learn more"
MOF (frustrated)Pain point, "tired of X?", comparisonMedium: "Try it", "See the difference"
MOF (open)Demo, proof, "watch this"Medium: "Watch demo", "See it work"
BOF (ready)Social proof, pricing, urgencyHard: "Start free", "Get started"

Concept selection

Choose 1-2 angles that best match the audience. Each angle is a one-line world the copy lives in. Examples for a voice-to-text product:

ConceptBest forOne-line world
Understands youFrustrated typists"Talk messy. It cleans it up."
Works everywhereMulti-app users"One mic for every app."
Time backBusy professionals"Move faster, log off sooner."
Prompt powerDevelopers, AI users"Better input, better AI output."

Hook patterns

Categories that travel well across audiences. Write fresh lines, don't reuse stale ones.

  • Playful: lightly anthropomorphize the old way of doing things.
  • Historical: frame the status quo as overdue for change.
  • Personal discovery: "a tool that changed how I work."
  • Tutorial / how-to: lead with a concrete, repeatable win.
  • Pain point: name the exact friction the reader feels.

Bullet structure

Use a bold lead plus a supporting detail. Two to four bullets, never a forced trio.

- **Faster than typing.** Dictate emails, docs, and messages in real time.
- **Cleans up as you go.** Filler words and grammar handled automatically.
- **Works in every app with no setup.** Same shortcut everywhere you type.

Social proof

Use verified, attributable proof only. Never ship a quote you cannot source, and never reuse a retired endorsement. Placeholders:

"{VERIFIED_CUSTOMER_TESTIMONIAL}" — {Name, Title, Company}

Keep a short library of approved quotes with a status column, and pull only from the approved set.

CTA patterns

ToneCTA
Casual"Give your hands a break, start free today"
Direct"Try it free right now"
Benefit"Start turning your voice into clean text, free"
Urgency"Start free →"

Image direction

When the placement allows an image, brief the designer to:

  • Show the transformation (messy input → clean output)
  • Include one piece of social proof if there's room
  • Keep on-image text minimal (headline + CTA)
  • Use the brand palette and platform badges where relevant

Formatting rules: avoid AI tells

PatternRuleAlternative
Em dashes (—)Never usePeriods, commas, colons, or "and"
"Delve into"Avoid"Explore", "look at", "check out"
"Leverage"Avoid"Use", "with", "through"
"Seamlessly"AvoidRemove or use "smoothly"

Examples:

  • Bad: "This tool, the voice typing app, works everywhere"
  • Good: "This is a voice typing tool that works everywhere"
  • Bad: "Get clean text, instantly" (when written with an em dash)
  • Good: "Get clean text, instantly" or "Get clean text. Instantly."

Proof points: keep a verified list

Maintain a table like this and pull only from rows marked Verified. Fill it with your own claims and sources.

ClaimStatusSource
{speed claim, e.g. faster than typing}VerifiedInternal testing
{language coverage}VerifiedProduct spec
{works across apps}VerifiedSystem-level integration
{auto-edit feature}VerifiedCore feature
{compliance certifications}VerifiedSecurity/compliance docs
{customer testimonial}VerifiedPublic endorsement

Validation checklist

Before delivering the brief:

  • No em dashes anywhere in copy (critical: signals AI-generated)
  • Character limits respected for all placements
  • Copy matches the selected ICP voice
  • At least 2 variants per placement
  • Proof points are verified, attributable claims (no retired quotes)
  • CTAs are clear and actionable
  • UTM structure is correct, unique link per send date
  • Image direction aligns with brand

How do I install Newsletter copy in Cursor, Claude Code, or Codex?

Run npx skills add retieedra-profound/skills-marketing-library --skill newsletter-copy in the project where you want it, then ask your agent for the skill by name. The --skill flag installs only Newsletter copy, not every skill in the repository.

Where does Newsletter copy come from and what license is it under?

Newsletter copy comes from the retieedra-profound/skills-marketing-library repository on GitHub. The skill is published under the MIT license.

Prefer plain text? Read the Newsletter copy guide as markdown.