Newsletter Launch

Automation

Plug-and-play newsletter launcher. Runs a short setup wizard, then scaffolds all project files and wires up all automation crons for a fully operational newsletter in one conversation. Use when starting a new newsletter from scratch or setting up a second newsletter on a new topic. Triggers on: 'launch a newsletter', 'new newsletter', 'start a newsletter', 'set up a newsletter', 'create a newsletter', 'second newsletter', 'newsletter on [topic]'. NOT for: editing an existing newsletter, writing issues, or keyword research. Requires: newsletter-seo-pipeline skill must be installed.

Install

openclaw skills install newsletter-launch

Newsletter Launch

Phase 1 — Dependency Check

Before the wizard starts, run this check silently. Do not narrate it.

Check whether each of these 7 skill folders exists under ~/.openclaw/workspace/skills/:

#Skill folderClawHub slugWhat it does
1newsletter-seo-pipelinenewsletter-seo-pipelineCore production workflow — SEO validation, AI scoring, paste doc generation (quality gates built-in)
2serp-analysisserp-analysisAnalyzes Google search results for your keyword so we know what we're competing with
3seo-content-engineseo-content-engineBuilds a keyword-optimized article outline with H2/H3 structure
4article-writingarticle-writingWrites long-form content in a consistent, human voice
5de-ai-ifyde-ai-ifyStrips AI-sounding language and restores human tone (required if AI score < 8/10)
6markdown-formattermarkdown-formatterCleans up formatting so the final article pastes cleanly into beehiiv

If all 6 are present: proceed silently to Phase 2 (wizard).

If any are missing: show the user this message, listing only the missing ones by number:

"Before setting up your newsletter, I need to install [N] tool(s). Here's what's needed:

[list only missing skills with their number and one-liner from the table above]

Reply with the numbers you want to install (e.g. "1 2 3"), "all" to install everything, or "skip [number]" to leave one out. I'll explain any you're unsure about."

For each approved skill:

  • Run: openclaw skills install <clawhub-slug> (use the ClawHub slug column from the table above)
  • Confirm install succeeded before moving to the next
  • If install fails, tell the user: "[Skill name] failed to install — you can try manually with openclaw skills install <slug> or skip it for now. The workflow will still run but [specific step] won't work without it."
  • Note: quality gates are built into newsletter-seo-pipeline — no separate QVP install needed.

Only proceed to Phase 2 once all approved installs are complete (or skipped with the user's consent).

Also verify python3 is available: run python3 --version. If missing, stop and tell the user Python 3 is required.

Phase 2 — Setup Wizard

On first run (no config file at skills/newsletter-launch/.skill-config/<slug>.json):

Tell the user: "I'll ask you 11 quick questions — takes about 2 minutes. I'll handle everything after that: project files, writing style guide, automation, crons. Let's go."

Ask these questions one at a time, in order. Do not batch them.


Q1 — Newsletter name "What's the name of your newsletter?"


Q2 — Audience "Who is it for? One sentence — who reads it and what do they do?"


Q3 — Topic / niche "What's the core topic? (e.g. HVAC contractor business tips, personal finance for nurses, SaaS growth tactics)"


Q4 — Writing style

"A few quick questions to set your newsletter's voice. Answer in plain words — there's no wrong answer:"

Ask all three sub-questions together (this is the one exception to one-at-a-time):

a) Who is your reader, really? (e.g. busy solo operators who skim on mobile, corporate managers who expect data, hobbyists who love detail)

b) What tone fits your brand? (e.g. direct and no-fluff, warm and encouraging, dry and witty, authoritative and formal)

c) Any words or phrases your audience uses that you definitely want included? Any they'd hate? (e.g. 'our readers say ROI not revenue, and hate the word leverage')

Store answers as style_reader, style_tone, style_vocab in config. These feed directly into the generated writing-style.md.


Q5 — Monetization "How do you plan to make money from it? (e.g. sponsorships, affiliate links, paid tier, or not sure yet)"


Q6 — Seed keywords "Give me 3–5 keywords your audience would search for. These seed your SEO research. (e.g. 'hvac contractor pricing guide, flat rate plumbing pricing, home service business tips')"


Q7 — Beehiiv setup "Is your Beehiiv account already created?"

  • Yes → proceed to Q7
  • No → say: "No problem. Here's what to do: go to beehiiv.com, click Get Started, create your publication. Takes 5 minutes. Come back when it's done and we'll continue." Then pause and wait.
  • Need instructions → show contents of references/beehiiv-setup.md, then wait.

Q8 — Beehiiv credentials "Two things from your Beehiiv settings: 1. Publication ID — Settings → Publication → scroll to Publication ID (looks like pub_xxxx...) 2. API Key — Settings → Integrations → API → New API Key → copy it immediately."

Accept both values. If user can't find them, reference references/beehiiv-setup.md.


Q9 — Auto-publishing "Are you on Beehiiv's Scale or Enterprise plan? ($39+/month) If yes, I can configure auto-publishing — issues go live automatically, no copy-pasting. If no (free plan), I'll generate a paste-ready doc each issue instead."

  • Yes (Scale/Enterprise) → set auto_post: true. Note: full API write access enabled.
  • No / Not sure → set auto_post: false. Paste-ready docs will be generated.

Q10 — Affiliate tag (optional) "Do you have an affiliate tag to include in recommendations? (e.g. Amazon Associates tag like 'mynewsletter-20') — skip if not applicable."


Q11 — Timezone

"What timezone should your newsletter run on? This controls when crons fire (e.g. Monday 9AM will be 9AM in your timezone). Examples: America/New_York, America/Chicago, America/Los_Angeles, Europe/London, Australia/Sydney. Skip to default to America/Chicago (US Central)."

Store as timezone in config. Pass to build_crons.py for all cron schedules.


Confirmation

Summarize all answers clearly, then ask: "Does this look right? I'll build everything once you confirm."

Wait for explicit confirmation before proceeding.


Phase 3 — Build

Step 1: Write config

Assemble the config JSON matching the schema in references/config-schema.md. Generate the slug from the newsletter name: lowercase, hyphens, no special chars. Write config to the newsletter project folder (not the skill): projects/<slug>/<slug>-config.json This keeps each newsletter's configuration isolated and prevents collisions when multiple newsletters are created. After writing, verify the file exists and contains the config. If verified, remove any config file from the skill's .skill-config/ directory to prevent stale config from interfering with future newsletter setups.

Step 2: Generate writing style guide

Using the style_reader, style_tone, and style_vocab answers from Q4, write a custom writing-style.md to: projects/<slug>/writing-style.md

This file lives in the newsletter's project folder — each newsletter has its own. The scaffold script (Step 3) generates a base version from the config; the agent should also generate it directly here using the full wizard answers for richer output.

Use this structure:

# Writing Style Guide — [Newsletter Name]

## Reader Profile
[Expand style_reader into 2-3 sentences describing who is reading, their context, how they consume content]

## Tone
[Expand style_tone into 4-6 concrete tone rules, e.g. "Active voice always", "Lead with the dollar figure or business impact"]

## Language Rules
**Use:**
[3-5 words/phrases from style_vocab the audience uses or expects]

**Never use:**
[3-5 words/phrases the audience dislikes or that sound generic/AI]

## Structure
- Short paragraphs: 2-3 sentences max
- One actionable takeaway per section
- Single CTA at close
- [Add 1-2 structure rules specific to the tone/reader]

## The Skim Test
[Write a one-sentence skim test tailored to this audience — e.g. "If a contractor can skim in 90 seconds and know what to do, it passes."]

After writing the file, confirm its path to the user.

Step 3: Scaffold project files

Use the absolute path to the script (resolved from this skill's directory) and point it to the config in the newsletter project folder:

python3 <skill_dir>/scripts/scaffold_newsletter.py projects/<slug>/<slug>-config.json

Verify all files were created (check output).

Step 4: Build and create crons

Generate the cron definitions, pointing to the config in the newsletter project folder:

python3 <skill_dir>/scripts/build_crons.py projects/<slug>/<slug>-config.json

Read the JSON output. Create each of the 4 crons using the OpenClaw cron tool.

Cron type rules (critical — wrong type will break the cron):

  • sessionTarget: isolated + payload.kind: agentTurn — Research and Quarterly Keywords crons
  • sessionTarget: main + payload.kind: systemEvent — Write and Evergreen crons

Create all fields from the JSON: name, schedule, sessionTarget, payload, delivery, failureAlert. Confirm each cron was created successfully before moving to the next.

Step 5: Test scripts

Resolve the newsletter-seo-pipeline skill directory. Create a minimal test file and run the validator:

echo 'Meta Title: Test\nMeta Description: Test description here for validation purposes only.\nURL Slug: test\nPrimary Keyword: test\n# Test' > /tmp/nsp-test.md
python3 <newsletter_seo_pipeline_skill_dir>/scripts/validate_seo.py /tmp/nsp-test.md test
  • If output contains 'SEO Validation Report': scripts are working correctly
  • If output is python3: can't open file or No such file or directory: the script path is wrong — check that newsletter-seo-pipeline installed correctly with ls <skill_dir>/scripts/
  • If python3 itself errors: Python 3 is not installed or not on PATH

Clean up: rm -f /tmp/nsp-test.md

Step 6: Confirm to user

Send a summary:

✅ [Newsletter Name] is live and automated.

📁 Project files (all in projects/<slug>/):
  • project.md — project memory
  • writing-style.md — your custom voice guide
  • issue-log.md
  • issue-template.md
  • seo-research-brief.md (seeded with your keywords)
  • issue-001-collection.json (ready for research)

⚙️ Crons active (all times CT):
  • Research: Tue/Thu/Sat 9AM — collects items for next issue
  • Write: Monday 9AM — full skill stack, alerts you when ready
  • Evergreen: 1st of month 9AM — monthly SEO guide
  • Keyword refresh: Jan/Apr/Jul/Oct 1st — replenishes keyword bank

📋 Next steps for you:
  [ ] Submit sitemap to Google Search Console:
      https://<slug>.beehiiv.com/sitemap.xml
      (Settings in Google Search Console → Sitemaps)
  [ ] Add welcome email sequence in Beehiiv
      (Settings → Automations → New subscriber)
  [ ] Confirm Beehiiv posts are set to publish as Web + Email

First issue will be written next Monday at 9AM.
Research collection starts today (next Tue/Thu/Sat pass).

Resuming an Existing Newsletter (skip Phase 1 & 2)

If config already exists at projects/<slug>/<slug>-config.json: Load it silently and proceed directly to whatever the user needs (update config, re-scaffold, add crons). Do not re-run the full wizard.

⚠️ Migration: If you find an old config in skills/newsletter-launch/.skill-config/, copy it to projects/<slug>/<slug>-config.json and remove the old file to prevent conflicts.

Reference Files

  • references/config-schema.md — full config JSON schema and field notes
  • references/beehiiv-setup.md — step-by-step Beehiiv account setup