UseToolAI
MonetizationBy Max Jia · 2026-07-17

How to Build an AI Newsletter That Writes Itself (2026 Guide)

RSS feeds go in. AI filters, summarizes, and formats. A newsletter comes out. Set it up once, it runs forever. Here's the exact n8n workflow with code.

A weekly AI newsletter used to require a human curator: scan 50+ sources, pick the 10 best stories, write summaries, format the email, hit send. Four hours every Sunday.

An AI newsletter requires you to build a workflow once. It runs every week while you sleep.

Here is the exact setup: the tools, the automation pipeline, the code, and the cost.

---

The Pipeline

```

RSS sources → deduplicate → AI filter (keep only good stories)

→ AI summarize + categorize → HTML email → send on schedule

```

Six steps. All automated.

---

The Stack

RoleToolCost
Automation enginen8n (self-hosted)Free (open source)
AI processingOpenAI API or Claude API~$5-10/month
Email sendingResendFree (3,000 emails/month)
RSS sourcesFree$0
Total monthly cost$5-10

---

Step 1: Set Up n8n

n8n is like Zapier but open source. Visual drag-and-drop automation. You can self-host it on a $5/month VPS or use n8n.cloud.

Quick start:

```bash

docker run -d --name n8n -p 5678:5678 n8nio/n8n

```

Open `localhost:5678`. Create an account. You're looking at a blank canvas.

---

Step 2: Add RSS Sources

Collect 5-10 RSS feeds in your niche. Quality over quantity. Ten good sources beat 50 mediocre ones.

Example AI news sources:

```

TechCrunch AI: https://techcrunch.com/category/artificial-intelligence/feed/

The Verge AI: https://www.theverge.com/ai-artificial-intelligence/rss/index.xml

VentureBeat AI: https://venturebeat.com/category/ai/feed/

ArXiv AI: https://rss.arxiv.org/rss/cs.AI

HuggingFace Blog: https://huggingface.co/blog/feed.xml

```

In n8n: add an RSS Feed Read node for each source. Connect them all to a Merge node. You now have a unified feed of everything published in your niche today.

---

Step 3: Deduplicate

The same story appears across multiple sources. Fix that.

Add a Code node after Merge. Paste this:

```javascript

const seen = new Set();

const items = $input.all();

const deduped = [];

for (const item of items) {

const url = item.json.url || item.json.link;

if (url && !seen.has(url)) {

seen.add(url);

deduped.push(item);

}

}

return deduped;

```

30 articles in. 15 unique out. The duplicates are gone.

---

Step 4: AI Filter — Keep Only the Good Stories

Not every article belongs in a newsletter. AI decides what to keep.

Add an OpenAI node (or Anthropic Claude). Use this system prompt:

```

You are a professional newsletter editor. Decide whether

each article below deserves inclusion.

Include if: major product launch, funding announcement,

breakthrough research, useful tool release, policy change.

Exclude if: PR fluff, rehashed news, no substance.

Return ONLY JSON (no markdown):

{"include": true/false, "reason": "one sentence", "importance": 1-5}

```

Wrap this in an n8n Loop Over Items node so each article gets its own AI check. The loop processes one article at a time, avoiding API rate limits.

After the loop, add a filter: only pass through items where `include === true` and `importance >= 3`.

---

Step 5: AI Summarize and Categorize

The surviving articles need summaries. Second AI node:

```

Rewrite this article as a newsletter blurb. Return ONLY JSON:

{

"title": "compelling headline (under 12 words)",

"summary": "one paragraph explaining what happened and why it matters (under 80 words)",

"category": "Tool Launch / Funding / Research / Policy / Tutorial"

}

```

Each article now has: a punchy headline, a one-paragraph summary, and a category label.

---

Step 6: Generate the Email

Add a Code node to build the HTML. Here is a clean template:

```javascript

const items = $input.all();

const date = new Date().toLocaleDateString('en-US', {

weekday: 'long', year: 'numeric', month: 'long', day: 'numeric'

});

let html = `

<div style="max-width:600px;margin:0 auto;font-family:Arial,sans-serif">

<h1 style="color:#1a1a2e;border-bottom:3px solid #6366F1;padding-bottom:12px">

AI Weekly Brief — ${date}

</h1>

<p style="color:#666">${items.length} stories worth your time</p>

`;

// Group by category

const cats = {};

for (const item of items) {

const cat = item.json.category || 'Other';

if (!cats[cat]) cats[cat] = [];

cats[cat].push(item);

}

for (const [cat, stories] of Object.entries(cats)) {

html += `<h2 style="color:#6366F1;margin-top:24px">${cat}</h2>`;

for (const s of stories) {

html += `

<div style="margin:12px 0;padding:12px;background:#F5F3FF;border-radius:8px">

<a href="${s.json.url}" style="color:#1a1a2e;font-weight:600;text-decoration:none;font-size:15px">

${s.json.title}

</a>

<p style="color:#555;font-size:13px;margin:6px 0 0">${s.json.summary}</p>

</div>`;

}

}

html += `

<hr style="border:none;border-top:1px solid #eee;margin:24px 0">

<p style="color:#999;font-size:12px;text-align:center">

This newsletter is AI-curated. Reply anytime with feedback.

</p></div>`;

return [{ json: { html, subject: `AI Weekly Brief — ${date}` } }];

```

---

Step 7: Send on Schedule

Add a Resend node (or Gmail, SendGrid). Configure:

  • To: your subscriber list (or a Google Sheet for dynamic lists)
  • Subject: `{{ $json.subject }}`
  • HTML Body: `{{ $json.html }}`

Add a Schedule Trigger at the start of the workflow:

FrequencyCron
Daily at 8 AM`0 8 * * *`
Every Monday 8 AM`0 8 * * 1`

Click Activate. Done. Your newsletter now writes itself.

---

The Monetization

SubscribersRevenue SourceMonthly Income
0-500Free (building audience)$0
500-2,000Single sponsorship slot$100-300/issue
2,000-10,000Sponsorships + affiliate links$500-2,000/month
10,000+Primary sponsorship + classifieds$2,000-10,000/month

Weekly newsletter × 1 sponsor per issue × $200 sponsor rate at 2,000 subscribers = $800/month, from a workflow you built once.

---

FAQ

Q: Do I need coding skills?

A: Basic JavaScript helps for the dedup and HTML nodes, but the templates above are copy-paste ready. The rest is drag-and-drop.

Q: How is this different from just using an AI to write?

A: A prompt in ChatGPT gives you one newsletter. This workflow gives you a newsletter every week, automatically, forever. The upfront build time is higher. The ongoing time is zero.

Q: Does this violate CAN-SPAM or GDPR?

A: Only if you add people without consent. Only send to people who explicitly subscribed. Resend and other email APIs handle unsubscribe links automatically.

---

Read Next

---

*One monetization workflow, every week. No fluff. Subscribe →*

#monetization#newsletter#automation#n8n#ai#no-code

More Comparisons