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:
- Collecting content — chasing updates from teams
- Writing and editing — turning raw updates into polished prose
- Assembling — arranging blocks in a template
- 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:
- Checks the content library for ready blocks
- Pulls upcoming events for the week
- Drafts any missing standard sections (CEO update, wins, events)
- Creates a newsletter and adds all blocks
- 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:
- Review new webhook-ingested content
- Edit and polish the raw content
- Set appropriate block types
- 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:
- Agent checks upcoming events via the API
- Gets suggested content from each event
- Drafts relevant blocks (announcements, resources, activities)
- 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
sourcefiltering to identify agent-created content:GET /content_blocks?source=agent - Check plan limits via
GET /teambefore generating AI drafts - Keep the human in the loop — agents draft and assemble, humans approve and send