OpenAI + Gmail: a cleaner marketing news digest
Your “marketing news” routine starts with good intentions. Then it turns into 20 tabs, half-read headlines, and a Slack thread full of links nobody opens.
This OpenAI Gmail digest automation hits marketing managers first, but agency leads and founders feel it too. You get one daily email with only the stories that actually matter, instead of a messy pile of RSS noise.
Below, you’ll see exactly how the workflow pulls stories, filters them with AI, and sends a clean newsletter through Gmail at a set time each day.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: OpenAI + Gmail: a cleaner marketing news digest
flowchart LR
subgraph sg0["Schedule Flow"]
direction LR
n0@{ icon: "mdi:message-outline", form: "rounded", label: "Send Email", pos: "b", h: 48 }
n1@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Merge"]
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n5@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n6["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Code"]
n7@{ icon: "mdi:cog", form: "rounded", label: "EconomicTimes Top Stories1", pos: "b", h: 48 }
n8@{ icon: "mdi:cog", form: "rounded", label: "EconomicTimes Business of Br..", pos: "b", h: 48 }
n9@{ icon: "mdi:cog", form: "rounded", label: "EconomicTimes Digital Market..", pos: "b", h: 48 }
n10@{ icon: "mdi:cog", form: "rounded", label: "Campaign India", pos: "b", h: 48 }
n11@{ icon: "mdi:message-outline", form: "rounded", label: "Send a message", pos: "b", h: 48 }
n12@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n13@{ icon: "mdi:cog", form: "rounded", label: "Insert row", pos: "b", h: 48 }
n14@{ icon: "mdi:cog", form: "rounded", label: "Get row(s)", pos: "b", h: 48 }
n15@{ icon: "mdi:cog", form: "rounded", label: "Delete row(s)", pos: "b", h: 48 }
n16@{ icon: "mdi:cog", form: "rounded", label: "Limit", pos: "b", h: 48 }
n17["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Merge Feeds-1"]
n18["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Merge Feeds-2"]
n19["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Merge Feeds-All"]
n4 --> n13
n4 --> n2
n6 --> n11
n16 --> n14
n3 --> n4
n1 --> n3
n14 --> n6
n13 --> n2
n0 --> n15
n17 --> n19
n18 --> n19
n10 --> n17
n11 --> n15
n11 --> n0
n2 --> n16
n2 --> n1
n2 --> n3
n19 --> n2
n5 --> n7
n5 --> n8
n5 --> n9
n5 --> n10
n12 -.-> n1
n7 --> n17
n9 --> n18
n8 --> n18
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n5 trigger
class n1 ai
class n12 aiModel
class n4 decision
class n6 code
classDef customIcon fill:none,stroke:none
class n3,n6,n17,n18,n19 customIcon
Why This Matters: Daily “News” Becomes Daily Distraction
Marketing and advertising news is useful, but the way you consume it is usually broken. RSS feeds dump everything into your lap: agency announcements, opinion pieces, event promos, recycled press releases, and the one real story you needed… buried somewhere in the middle. You end up skimming on your phone between meetings, saving links you never revisit, and missing the signal (brand launches, campaign moves, platform changes) because it looks identical to the noise. It’s not just time. It’s mental clutter that quietly steals focus from actual work.
It adds up fast. Here’s where it breaks down in the real world.
- You re-check the same sites and feeds multiple times because there’s no trusted “daily wrap-up.”
- Important updates get missed since the headline isn’t always the story, and you don’t have time to open everything.
- When you do share news internally, it’s inconsistent, which means teammates stop relying on it.
- Manual curation becomes a recurring task that nobody owns, so it’s always “later.”
What You’ll Build: A Daily AI-Filtered Newsletter Sent via Gmail
This workflow creates a daily Indian marketing and advertising digest that reads like a curated newsletter, not an RSS dump. It starts on a schedule, pulls top stories from multiple sources (Campaign India plus several Economic Times BrandEquity feeds), and merges them into one stream. Then an OpenAI-powered relevance filter reviews each item and keeps only meaningful updates, like brand launches, marketing campaigns, and changes in digital media. Relevant stories are stored in an n8n Data Table so they’re ready when it’s time to send. At 7:30 PM IST, the workflow composes a clean HTML email, delivers it through Gmail, and then clears out processed entries so tomorrow’s digest is fresh.
The workflow begins with a scheduled run and feed collection. Next, AI acts like your editor, scoring each item and approving only what’s worth reading. Finally, n8n builds the HTML newsletter and sends it via Gmail (with an optional SMTP fallback if Gmail fails).
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say you pull from 4 feeds and scan about 10 headlines per feed each day. Manually, opening, skimming, and deciding what matters is maybe 3 minutes per story, so you’re at about 2 hours daily when you include context-switching and sharing. With this workflow, you spend about 5 minutes total: glance at the email, forward it, or drop a few key items into your team channel. The AI and the schedule do the rest.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Gmail account for sending the newsletter email.
- OpenAI API access to filter stories by relevance.
- OpenAI API key (get it from the OpenAI dashboard API keys page).
Skill level: Beginner. You’ll connect accounts, paste an API key, and edit a few fields like the recipient email and schedule time.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
Scheduled daily trigger. The workflow starts at a set time (the default is 7:30 PM IST) using n8n’s Schedule Trigger, so the digest arrives when you expect it.
Feed collection and merge. n8n reads multiple RSS feeds (Campaign India plus several Economic Times BrandEquity feeds), merges them into one list, and iterates through items in batches so it can handle a busy news day without choking.
AI relevance filtering. Each story is evaluated by an AI Agent using the OpenAI chat model. The workflow combines the AI results, makes a keep-or-drop decision, and stores only relevant stories in an n8n Data Table.
Email composition and dispatch. When it’s time to send, the workflow pulls stored rows, composes clean HTML, and sends the newsletter via Gmail. After a successful send, it purges processed rows so the next run starts fresh.
You can easily modify the feeds you pull from and the filtering criteria to match your niche (for example, only performance marketing or only brand campaigns). See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Scheduled Run Trigger
Set the automation schedule that kicks off the feed collection in parallel.
- Add and open Scheduled Run Trigger.
- Set the Rule interval to the cron expression
30 19 * * *. - Confirm the execution fan-out: Scheduled Run Trigger outputs to ET Top Stories Feed, ET Brand Business Feed, ET Digital Marketing Feed, and Campaign India Feed in parallel.
Tip: The cron 30 19 * * * runs at 19:30 server time. Align your server timezone with your desired newsletter send time.
Step 2: Connect RSS Feeds and Merge Results
Pull articles from multiple sources and merge them into a single stream.
- Configure ET Top Stories Feed with URL
https://brandequity.economictimes.indiatimes.com/rss/topstories. - Configure ET Brand Business Feed with URL
https://brandequity.economictimes.indiatimes.com/rss/business-of-brands. - Configure ET Digital Marketing Feed with URL
https://brandequity.economictimes.indiatimes.com/rss/digital. - Configure Campaign India Feed with URL
https://www.campaignindia.in/rss/rss.ashx. - Connect feeds into merges: ET Top Stories Feed → Merge Feeds A; Campaign India Feed → Merge Feeds A; ET Brand Business Feed and ET Digital Marketing Feed → Merge Feeds B.
- Combine them into Merge All Feeds so the full feed list is consolidated for processing.
Step 3: Set Up AI Relevance Filtering
Score each article for relevance and decide whether to keep it.
- Send merged items into Iterate News Items to process articles one by one.
- Configure Relevance AI Filter with the provided Text prompt (leave as-is to enforce strict true/false output).
- Ensure OpenAI Chat Engine is connected as the language model for Relevance AI Filter and set Model to
gpt-5-mini. - Set Combine AI Results to Mode
combineand Combine BycombineByPosition. - In Relevance Decision, use the condition Left Value
{{ $json.output }}contains Right Valuetrue.
Credential Required: Connect your openAiApi credentials in OpenAI Chat Engine. This credential is used by Relevance AI Filter, so add it to the parent model node, not the agent node.
Step 4: Store, Cap, and Build the Newsletter Content
Save relevant items, limit the output size, and build the HTML newsletter.
- In Append Table Row, map columns using expressions like Guid
{{ $json.guid }}, Title{{ $json.title }}, and ContentSnippet{{ $json.contentSnippet }}. - Set Append Table Row Data Table to
[YOUR_ID](Newsletter table). - After Iterate News Items, send results through Cap Results to constrain the dataset.
- Configure Retrieve Table Rows with Operation
getand Limit30, using the same[YOUR_ID]data table. - In Compose Newsletter HTML, keep the provided JavaScript that outputs
subjectandhtmlBodyfor email dispatch.
⚠️ Common Pitfall: If [YOUR_ID] is not set consistently across Append Table Row, Retrieve Table Rows, and Purge Table Rows, the workflow will write and read from different tables.
Step 5: Configure Email Delivery and Cleanup
Send the compiled newsletter and purge processed rows.
- In Gmail Dispatch, set Send To to
[YOUR_EMAIL], Subject to{{ $json.subject }}, and Message to{{ $json.htmlBody }}. - In Dispatch Email Notice, set To Email and From Email to
[YOUR_EMAIL], and map Subject and HTML to{{ $json["subject"] }}and{{ $json["htmlBody"] }}. - Configure Purge Table Rows with Operation
deleteRowsand the filter Output equalstrue. - Verify flow: Compose Newsletter HTML → Gmail Dispatch, then Gmail Dispatch → Purge Table Rows and Dispatch Email Notice → Purge Table Rows.
Credential Required: Connect your gmailOAuth2 credentials in Gmail Dispatch.
Credential Required: Connect your smtp credentials in Dispatch Email Notice.
Step 6: Test and Activate Your Workflow
Run a manual test to validate the newsletter generation and delivery.
- Click Execute Workflow to trigger Scheduled Run Trigger manually.
- Confirm that the four RSS nodes run in parallel and merge through Merge Feeds A, Merge Feeds B, and Merge All Feeds.
- Verify that Relevance AI Filter returns
true/false, and onlytruearticles reach Append Table Row. - Check that Compose Newsletter HTML outputs
subjectandhtmlBody, and that Gmail Dispatch sends the email. - Once verified, toggle the workflow to Active for scheduled production runs.
Troubleshooting Tips
- Gmail credentials can expire or require the right Google permissions. If sending fails, check the Gmail node’s authentication status in n8n first, then re-authorize the account.
- If you’re processing a lot of stories, the AI step may take longer than you expect. When downstream nodes complain about missing data, reduce batch size or cap results more aggressively.
- The default AI relevance prompt is rarely “your” definition of important. Tweak it early (campaign types, industries, competitors), or frankly you will end up editing the digest every day anyway.
Quick Answers
About 30 minutes if your Gmail and OpenAI credentials are ready.
No. You’ll mostly connect accounts and change a few fields like the recipient email and schedule time.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API costs, which are usually a few cents per day for a small digest.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and you should. Most people start by swapping RSS sources inside the RSS fetching block, then adjust the Relevance AI Filter instructions to match what “important” means for their brand. You can also change the schedule trigger time, limit the number of stories with the Cap Results node, and edit the Compose Newsletter HTML step to match your formatting. If Gmail isn’t your preferred sender, keep Gmail as primary and add SMTP as a fallback like the workflow already supports.
Usually it’s expired authorization or the wrong Google account connected. Reconnect Gmail in n8n, confirm the Gmail node is using the intended credential, and then send a test email. If it fails only sometimes, you may be hitting sending limits on the account, so the SMTP fallback is worth enabling.
For a typical 4-feed setup, it can comfortably process dozens of stories per run, and the limit node helps keep it predictable.
Often, yes. This workflow relies on batching, merging multiple feeds, and running an AI “editor” step that benefits from branching logic and more control over data shaping. n8n also gives you the option to self-host, which can matter once you’re running daily automations at higher volume. Zapier or Make can still work if you’re doing a simple one-feed-to-email summary, but the moment you want “keep only meaningful updates” with consistent formatting, things get fiddly. If you want a quick recommendation for your setup, Talk to an automation expert.
Once this is running, the daily scan stops being a chore. You get a clear, readable digest and keep your attention for work that actually moves the needle.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.