AUTOMATION · N8N
Automated newsletter every days
Receive every day your newsletter personalized in your inbox before you wake up, from any personalized sources.
RSS FEEDS
GMAIL SOURCES
TRIGGER TIME
00 · THE BASICS
What is a
workflow?
A workflow is a sequence of automated steps that run without you doing anything. Think of it as a recipe: each
step takes some data, does something with it (fetch, filter, transform, send), and passes the result to the next
step. When the last step finishes, the job is done.
In n8n, each step is a node. Nodes are connected visually on a canvas. You can see data flowing from one node
to the next in real time when you test the workflow. There is no code required for most tasks, though you can
write JavaScript in a Code node when you need custom logic.
A workflow needs a trigger to start. A trigger can be a schedule (run every day at 07:00), a webhook (run when
something calls a URL), a new email, a new row in a spreadsheet, or hundreds of other events. Once the trigger
fires, the rest of the workflow runs automatically.
IN THIS WORKFLOW
The trigger is a schedule set to 07:30 every morning. From there, the workflow collects emails, fetches RSS feeds, calls an
AI API to summarise the content, assembles an HTML email, and sends it. All of that happens while you sleep, without
any manual action.
01 · GETTING STARTED
How Running
n8n
n8n is open-source and can run in two ways: on the cloud (managed, nothing to install) or on your own machine
(fully local, fully free). Both options work for this workflow.
WHICH OPTION TO CHOOSE
Start with n8n Cloud if you want to get the workflow running today without thinking about infrastructure. Switch to a
local or self-hosted setup later if you want to avoid monthly costs or keep everything on your own server. The workflow
JSON is identical in both environments.
02 · HOW IT WORKS
The full picture
before diving in
This workflow has two parallel branches that merge before the final output. One branch handles email
newsletters. The other handles RSS feeds. Both produce structured content, which is then assembled into a
single HTML email and sent automatically.

Each branch runs independently. If one source has nothing to collect on a given day, the other branch continues
without error. The merge node waits for both to complete before assembling the final email.
03 · STARTING THE WORKFLOW
Scheduling a task
to run automatically
A Schedule Trigger fires your workflow at a fixed time without any manual action. You set an hour and a minute,
activate the workflow, and it runs every day at that time as long as n8n is running.
In this workflow the trigger is set to 07:30. The reason: the newsletters from Fry AI and Superhuman AI publish in
the American evening, which lands around midnight in France. By 01:30, all editions have arrived and the digest is
ready in the inbox at wake-up time.
CODE
// Schedule Trigger configuration in the workflow JSON
"rule": {
"interval": [{
"triggerAtHour": 7,
"triggerAtMinute": 30
}]
}
// To change the time: edit these two numbers only
// 09:30 morning · Hour: 9, Minute: 30
// 12:00 noon · Hour: 12, Minute: 0
// 18:00 evening · Hour: 18, Minute: 0
04 · COLLECTING DATA
Pulling content
from multiple sources
A workflow can pull data from almost anywhere: email inboxes, RSS feeds, APIs, spreadsheets, databases, web
pages. In this workflow two types of sources run in parallel.
Email newsletters via Gmail
Two Gmail nodes fetch unread emails filtered by sender domain. Using simple: false retrieves the full raw MIME
payload (base64-encoded HTML, nested parts), which is necessary to extract the actual newsletter content
before sending it to the AI.
NODE
SENDER FILTER
KEY SETTINGS
Get many messages2
=@mail.fry-ai.com
simple: false · full MIME payload
Get many messages6
=@mail.joinsuperhuman.ai
returnAll: true · no result cap
ADDING A NEW EMAIL SOURCE
Duplicate any Gmail node and change the sender filter to the domain of the newsletter you want to add, for example
=@beehiiv.com. Connect the new node to the Merge node. That is it.
RSS feeds for news articles
RSS is a standard format that most news sites publish automatically. Each RSS node in this workflow sends a
simple GET request to a feed URL and receives an XML list of recent articles. The workflow then parses that XML,
keeps only articles from the last 7 days, and passes them along to the AI for translation and summarisation.
VIA
rss.app
Native feed
rss.app
Native feed
rss.app
SOURCES
CATEGORY
Les Echos Entreprises
Economy & Business
rss.app
Les Echos Tech
Tech & Media
rss.app
Les Echos Startups
Startups & Innovation
rss.app
Les Echos Economie
Economy & Finance
CafeTech
Tech & AI
Usine Digitale
Industry & Digital
Maddyness
Startups & Innovation
Tech Actu
Tech News
Four of these feeds go through rss.app, a service that generates clean RSS feeds for sites that do not publish
one natively. CafeTech and Maddyness have native feeds that are fetched directly.
05 · THE AI LAYER
Summarising with AI
and what Bytez actually is
Once content is collected and cleaned, it needs to be summarised before it can be assembled into a readable
digest. This is where an AI model comes in.
What is Bytez?
Bytez is a unified AI API gateway. Instead of signing up separately for OpenAI, Anthropic, Mistral, and every other
provider, Bytez gives you a single API key and a single endpoint format that works with all of them. You call one
URL, you specify the model you want, and Bytez routes the request to the right provider. In this workflow, it
points to GPT-5.1 via OpenAI.
CODE
// Bytez endpoint format
https://api.bytez.com/models/v2/{provider}/{model}
// Current setup: GPT-5.1 via OpenAI
https://api.bytez.com/models/v2/openai/gpt-5.1
// The request body is the same regardless of the model
// Bytez translates it to whatever format the provider expects
Replacing Bytez with another AI
You do not have to use Bytez. If you already have a key for Claude, ChatGPT, or Mistral, you can swap the HTTP
Request nodes to call those APIs directly. The workflow logic stays exactly the same. You only need to update
the URL, the headers, and the request body format.
ANTHROPIC
Replace the URL with api.anthropic.com/v1/messages Add the x-api-key and anthropic-version headers. The response lives in claude-sonnet-4-6 quality and cost.
Claude
OPENAI
Use api.openai.com/v1/chat/completions with a Bearer token. The response is in choices[0].message.content like gpt-4o-mini summarisation tasks.
ChatGPT
MISTRAL AI
Use api.mistral.ai/v1/chat/completions
with a Bearer token. Same response format as OpenAI. mistral-small is a very cost-effective option for newsletter summarisation with good French languagesupport.
Mistral
THE MAP BYTEZ NODE
Each AI returns its response in a slightly different format. The Map Bytez Code node normalises all of them into a single
consistent structure before passing data to the next step. This is what makes swapping providers simple: you only
update the HTTP Request node, not everything downstream.
CODE
// Map Bytez · normalises the response regardless of provider
function parseAiText(aiJson) {
const out = aiJson.output || aiJson.text || aiJson.content || '';
let text = typeof out === 'string' ? out
: Array.isArray(out) ? out.map(m => m.content || m.text).join('\n')
: out?.content || JSON.stringify(out);
// Strip reasoning tags some models add
text = String(text).replace(/<think>[\s\S]*?<\/think>/gi, '').trim();
// Our prompt asks for a response starting with "Media:"
// Anything before that marker is discarded
const idx = Math.max(
text.lastIndexOf('Media :'), text.lastIndexOf('Média :')
);
if (idx >= 0) text = text.slice(idx).trim();
return text;
}
06 · CLEANING THE OUTPUT
Filtering noise
before it reaches the inbox
AI summaries of newsletters often contain junk: unsubscribe lines, "view in browser" prompts, whitelist
instructions. A dedicated Code node strips these out line by line before the content is assembled into the final
email.
CODE
// Level 1: skip entire articles by category
const SKIP_CAT = [
'skip', 'fantastique', 'fantasy', 'fiction',
'thriller', 'roman', 'livre', 'film', 'serie', 'jeu'
];
// Level 2: strip specific lines from summaries
const junkPatterns = [
/adresse.*e-mail.*ajout/i, /recevoir.*newsletter/i,
/desabonner|unsubscribe/i, /voir dans.*navigateur/i,
/whitelist/i
];
// Only lines longer than 10 characters pass through
07 · SENDING THE RESULT
Assembling and
delivering the email
Once all content is filtered and ready, a final Code node builds the complete HTML email. It combines the AI-
written text, the RSS article recap, the structured newsletter links, and the date. Then three things happen in
sequence.
SEND THE EMAIL VIA GMAIL
The Send a message node delivers the HTML email. For multiple recipients, separate addresses with commas in the To field. For a mailing list, read the addresses from a Google Sheet at the start of the workflow.
LOG TO GOOGLE SHEETS
The Append row in sheet node adds a row with four columns: date, media, category, summary . A permanent log of everything processed, useful for auditing or searching past digests.
MARK SOURCE EMAILS AS READ
Two Mark as read nodes mark the Fry AI and Superhuman emails as read in Gmail. Without this step, the same emails would be collected and processed again the following night.
A
B
C