Using AI Agents for Newsletter Automation

How to use AI agents like Claude, GPT, and custom LLM workflows to automate internal newsletter creation, content drafting, and distribution.

AI agents can handle most of the newsletter creation workflow — drafting content, pulling from existing sources, assembling issues, and sending previews. Here's how to set up effective agent workflows.

Why agents for internal newsletters

Internal comms managers spend 4-6 hours per newsletter issue. Most of that time is:

  1. Collecting content — chasing updates from teams
  2. Writing and editing — turning raw updates into polished prose
  3. Assembling — arranging blocks in a template
  4. Reviewing — checking it looks right before sending

Agents can handle steps 1-3 automatically. The human reviews and clicks send.

Workflow patterns

Pattern 1: Scheduled weekly assembly

Run an agent every Monday morning that:

  1. Checks the content library for ready blocks
  2. Pulls upcoming events for the week
  3. Drafts any missing standard sections (CEO update, wins, events)
  4. Creates a newsletter and adds all blocks
  5. Sends a preview to the comms lead

The comms lead reviews in the UI, makes any tweaks, and marks it as ready.

Pattern 2: Continuous content ingestion

Set up webhooks from your tools (Slack, HRIS, GitHub), and let an agent periodically:

  1. Review new webhook-ingested content
  2. Edit and polish the raw content
  3. Set appropriate block types
  4. Mark polished blocks as ready

When newsletter day arrives, the content library is already full.

Pattern 3: Event-driven content creation

When an event approaches:

  1. Agent checks upcoming events via the API
  2. Gets suggested content from each event
  3. Drafts relevant blocks (announcements, resources, activities)
  4. Links them to the event

Your awareness day and cultural event content writes itself.

Building with the API

Use the REST API endpoints to build any agent workflow:

import requests

API_KEY = "inl_your_key"
BASE = "https://your-app.com/api/v1"
headers = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}

# 1. Get upcoming events
events = requests.get(f"{BASE}/events?upcoming=true&days_ahead=7", headers=headers).json()

# 2. Get available content
blocks = requests.get(f"{BASE}/content_blocks?status=ready", headers=headers).json()

# 3. Draft a CEO update
draft = requests.post(f"{BASE}/content_blocks/ai_draft", headers=headers,
    json={"context": "Weekly CEO update covering the product launch and hiring progress"}).json()

# 4. Create newsletter
newsletter = requests.post(f"{BASE}/newsletters", headers=headers,
    json={"title": "Weekly Update", "subject_line": "Your weekly roundup", "template_slug": "clean"}).json()

# 5. Add blocks
newsletter_id = newsletter["newsletter"]["id"]
for block in blocks["content_blocks"]:
    requests.post(f"{BASE}/newsletters/{newsletter_id}/blocks", headers=headers,
        json={"content_block_id": block["id"]})

Building with MCP

For Claude-based workflows, use the MCP server. The agent gets natural language access to all 21 tools and 5 context resources.

Best practices

  • Always send a preview before distributing — agent-generated content should be reviewed by a human
  • Use source filtering to identify agent-created content: GET /content_blocks?source=agent
  • Check plan limits via GET /team before generating AI drafts
  • Keep the human in the loop — agents draft and assemble, humans approve and send