What this workflow does
- Thursdays at 9am starts the issue run.
- Get unused inbox items queries the Notion inbox for pages with status New.
- Prepare candidates turns each page into a link with the saver’s note and section hint, newest 30 first.
- Fetch article downloads each page and never stops the run on a bad link.
- Extract article text strips navigation and scripts and records the title, publisher and publish date. Pages that fail or have too little text are listed for a manual summary.
- Pick and summarize with Claude applies your newsletter format: purpose, sections, items per section. It returns subject line options, preview text, an intro and two to four sentence summaries written only from each article’s text. Items are referenced by ID, and a strict JSON schema shapes the output.
- Validate and build email maps each pick back to its real URL, rejects unknown or duplicate items, escapes text and renders simple HTML with Mailchimp’s unsubscribe and address merge tags. Refusals, truncated replies and responses with no text block go to the alert channel.
- Create draft campaign, Set campaign content and Send test to editor call the Mailchimp Marketing API.
- Tell editor the draft is ready posts the edit link, subject options, skipped items and unfetched links in Slack.
- List used items and Mark items used in Notion set the used pages to Used so they are not repeated.
The workflow only creates a draft. A person reviews and sends it.
Before you import
- A current n8n version, cloud or self-hosted.
- A Notion database for the inbox with Name, URL, Note, Section and Status properties, shared with your Notion integration.
- A Mailchimp account with an audience and an API key.
- An Anthropic API key and a Slack app that can post.
Setup
- Import the JSON and attach credentials: Notion on the two Notion HTTP nodes, Anthropic on the Claude node, Mailchimp on the three Mailchimp nodes, Slack on both Slack nodes.
- Replace
REPLACE_WITH_NOTION_DATABASE_ID. - Replace
REPLACE_WITH_MAILCHIMP_DC(in four places) with your data center, the suffix of your API key such asus21. - Replace
REPLACE_WITH_AUDIENCE_ID,REPLACE_WITH_FROM_NAME,REPLACE_WITH_REPLY_TO_EMAILandREPLACE_WITH_EDITOR_EMAIL. - Replace
REPLACE_WITH_EDITOR_CHANNELandREPLACE_WITH_ALERTS_CHANNEL. - Rewrite the format block in the Claude system prompt for your newsletter, and swap in your own HTML if you have a template.
Test it
Save five or six links to the Notion inbox, including one broken URL, and run the workflow manually. You should get a Mailchimp draft, a test email and a Slack message listing the broken link. Open the draft and check every summary against its article. Confirm the used pages now show Used in Notion.
Make it production-ready
- Fetch on save. Move fetching into a separate workflow that runs when a link is saved, so failures surface early.
- Avoid repeats. Pass recent issues’ items to the prompt so it skips topics you already covered.
- Error workflow. Add an n8n error workflow for failures in the Mailchimp steps.
- Rate limits. Notion allows a few requests per second; the template’s request volume is small, but add a wait if you grow past 100 items.
- Rendering. Test your HTML in the email clients your readers use before switching to a custom template.
The newsletter generation guide explains format design and ranking. To adapt it to Kit or Klaviyo, reach out.