Install
openclaw skills install newsletter-launchPlug-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.
openclaw skills install newsletter-launchBefore 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 folder | ClawHub slug | What it does |
|---|---|---|---|
| 1 | newsletter-seo-pipeline | newsletter-seo-pipeline | Core production workflow — SEO validation, AI scoring, paste doc generation (quality gates built-in) |
| 2 | serp-analysis | serp-analysis | Analyzes Google search results for your keyword so we know what we're competing with |
| 3 | seo-content-engine | seo-content-engine | Builds a keyword-optimized article outline with H2/H3 structure |
| 4 | article-writing | article-writing | Writes long-form content in a consistent, human voice |
| 5 | de-ai-ify | de-ai-ify | Strips AI-sounding language and restores human tone (required if AI score < 8/10) |
| 6 | markdown-formatter | markdown-formatter | Cleans 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:
openclaw skills install <clawhub-slug> (use the ClawHub slug column from the table above)openclaw skills install <slug> or skip it for now. The workflow will still run but [specific step] won't work without it."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.
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?"
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."
auto_post: true. Note: full API write access enabled.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.
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.
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.
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).
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 cronssessionTarget: main + payload.kind: systemEvent — Write and Evergreen cronsCreate all fields from the JSON: name, schedule, sessionTarget, payload, delivery, failureAlert. Confirm each cron was created successfully before moving to the next.
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
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/python3 itself errors: Python 3 is not installed or not on PATHClean up: rm -f /tmp/nsp-test.md
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).
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.
references/config-schema.md — full config JSON schema and field notesreferences/beehiiv-setup.md — step-by-step Beehiiv account setup