🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Pilot Newsletter Automation Setup

by @teoslayer

Deploy an automated newsletter pipeline with 3 agents. Use this skill when: 1. User wants to set up a newsletter or email automation pipeline 2. User is conf...

TERMINAL
clawhub install pilot-newsletter-automation-setup

πŸ“– About This Skill


name: pilot-newsletter-automation-setup description: > Deploy an automated newsletter pipeline with 3 agents.

Use this skill when: 1. User wants to set up a newsletter or email automation pipeline 2. User is configuring an agent as part of a newsletter production workflow 3. User asks about content curation, newsletter writing, or email dispatch across agents

Do NOT use this skill when: - User wants to send a single announcement (use pilot-announce instead) - User wants to stream data once (use pilot-stream-data instead) tags: - pilot-protocol - setup - newsletter - email license: AGPL-3.0 metadata: author: vulture-labs version: "1.0" openclaw: requires: bins: - pilotctl - clawhub homepage: https://pilotprotocol.network allowed-tools: - Bash


Newsletter Automation Setup

Deploy 3 agents that curate content, write newsletters, and dispatch emails.

Roles

| Role | Hostname | Skills | Purpose | |------|----------|--------|---------| | curator | -curator | pilot-discover, pilot-stream-data, pilot-archive | Aggregates trending content into curated digests | | writer | -writer | pilot-task-router, pilot-share, pilot-receipt | Transforms content into newsletter copy | | mailer | -mailer | pilot-webhook-bridge, pilot-announce, pilot-metrics | Dispatches emails, tracks delivery metrics |

Setup Procedure

Step 1: Ask the user which role this agent should play and what prefix to use.

Step 2: Install the skills for the chosen role:

# For curator:
clawhub install pilot-discover pilot-stream-data pilot-archive

For writer:

clawhub install pilot-task-router pilot-share pilot-receipt

For mailer:

clawhub install pilot-webhook-bridge pilot-announce pilot-metrics

Step 3: Set the hostname:

pilotctl --json set-hostname -

Step 4: Write the setup manifest:

mkdir -p ~/.pilot/setups
cat > ~/.pilot/setups/newsletter-automation.json << 'MANIFEST'
{
  "setup": "newsletter-automation",
  "setup_name": "Newsletter Automation",
  "role": "",
  "role_name": "",
  "hostname": "-",
  "description": "",
  "skills": { "": "" },
  "peers": [ { "role": "...", "hostname": "...", "description": "..." } ],
  "data_flows": [ { "direction": "send|receive", "peer": "...", "port": 1002, "topic": "...", "description": "..." } ],
  "handshakes_needed": [ "" ]
}
MANIFEST

Step 5: Tell the user to initiate handshakes with direct communication peers.

Manifest Templates Per Role

curator

{
  "setup": "newsletter-automation", "setup_name": "Newsletter Automation",
  "role": "curator", "role_name": "Content Curator",
  "hostname": "-curator",
  "description": "Aggregates trending articles, RSS feeds, and industry news into curated content digests.",
  "skills": {
    "pilot-discover": "Find trending articles and industry news from configured sources.",
    "pilot-stream-data": "Stream RSS feeds and content APIs into structured digests.",
    "pilot-archive": "Archive curated content for historical reference and deduplication."
  },
  "peers": [
    { "role": "writer", "hostname": "-writer", "description": "Receives curated content for newsletter writing" },
    { "role": "mailer", "hostname": "-mailer", "description": "Final stage β€” does not communicate directly" }
  ],
  "data_flows": [
    { "direction": "send", "peer": "-writer", "port": 1002, "topic": "content-digest", "description": "Curated content digest with sources and summaries" }
  ],
  "handshakes_needed": ["-writer"]
}

writer

{
  "setup": "newsletter-automation", "setup_name": "Newsletter Automation",
  "role": "writer", "role_name": "Newsletter Writer",
  "hostname": "-writer",
  "description": "Transforms curated content into engaging newsletter copy with subject lines and sections.",
  "skills": {
    "pilot-task-router": "Route writing tasks across content sections and templates.",
    "pilot-share": "Share draft previews with other agents for review.",
    "pilot-receipt": "Confirm receipt of curated content from curator."
  },
  "peers": [
    { "role": "curator", "hostname": "-curator", "description": "Sends curated content digests" },
    { "role": "mailer", "hostname": "-mailer", "description": "Receives newsletter drafts for delivery" }
  ],
  "data_flows": [
    { "direction": "receive", "peer": "-curator", "port": 1002, "topic": "content-digest", "description": "Curated content digest with sources and summaries" },
    { "direction": "send", "peer": "-mailer", "port": 1002, "topic": "newsletter-draft", "description": "Newsletter draft with subject line and HTML body" }
  ],
  "handshakes_needed": ["-curator", "-mailer"]
}

mailer

{
  "setup": "newsletter-automation", "setup_name": "Newsletter Automation",
  "role": "mailer", "role_name": "Email Dispatcher",
  "hostname": "-mailer",
  "description": "Formats newsletters for email delivery, manages subscriber segments, tracks open rates.",
  "skills": {
    "pilot-webhook-bridge": "Send formatted emails via email service provider webhooks.",
    "pilot-announce": "Broadcast delivery confirmations and schedule notifications.",
    "pilot-metrics": "Track open rates, click rates, and delivery success per segment."
  },
  "peers": [
    { "role": "curator", "hostname": "-curator", "description": "First stage β€” does not communicate directly" },
    { "role": "writer", "hostname": "-writer", "description": "Sends newsletter drafts for delivery" }
  ],
  "data_flows": [
    { "direction": "receive", "peer": "-writer", "port": 1002, "topic": "newsletter-draft", "description": "Newsletter draft with subject line and HTML body" },
    { "direction": "send", "peer": "external", "port": 443, "topic": "email-dispatch", "description": "Email dispatch to subscriber segments" }
  ],
  "handshakes_needed": ["-writer"]
}

Data Flows

  • curator -> writer : content-digest events (port 1002)
  • writer -> mailer : newsletter-draft events (port 1002)
  • mailer -> external : email-dispatch via webhook (port 443)
  • Handshakes

    # curator and writer handshake with each other:
    pilotctl --json handshake -writer "setup: newsletter-automation"
    pilotctl --json handshake -curator "setup: newsletter-automation"

    writer and mailer handshake with each other:

    pilotctl --json handshake -mailer "setup: newsletter-automation" pilotctl --json handshake -writer "setup: newsletter-automation"

    Workflow Example

    # On writer β€” subscribe to content digests:
    pilotctl --json subscribe -curator content-digest

    On mailer β€” subscribe to newsletter drafts:

    pilotctl --json subscribe -writer newsletter-draft

    On curator β€” publish a content digest:

    pilotctl --json publish -writer content-digest '{"date":"2026-04-10","articles":[{"title":"AI Agents in Production","url":"https://example.com/ai-agents"}],"topic":"AI & DevOps"}'

    On writer β€” publish a newsletter draft:

    pilotctl --json publish -mailer newsletter-draft '{"subject":"This Week in AI","sections":[{"heading":"Top Story","body":"AI agents are going mainstream..."}]}'

    Dependencies

    Requires pilot-protocol skill, pilotctl binary, clawhub binary, and a running daemon.