🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Telegram + OpenAI, newsletters that send only real news

Lisa Granqvist Partner Workflow Automation Expert

Your “newsletter” starts as a good idea, then turns into a chore. You skim 30 links, rewrite the same story twice, and still send something that feels… optional. Telegram news automation fixes that by only sending an edition when there’s actually something worth reading.

This hits marketing leads hardest because consistency matters, but agency owners and operators running a niche community feel it too. You want timely updates without blasting your list (or your channel) with noise.

This workflow pulls real news twice a day, deduplicates it against what you’ve already sent, asks OpenAI to make an editorial call, then delivers a clean brief to Telegram. You’ll see how it works, what you need, and what to tweak so it matches your topics and tone.

How This Automation Works

Here’s the complete workflow you’ll be setting up:

n8n Workflow Template: Telegram + OpenAI, newsletters that send only real news

Why This Matters: Newsletters Get Noisy Fast

Fast-moving topics punish you in both directions. If you send daily, you burn time filtering weak stories and your audience learns to ignore you. If you send weekly, you miss the one update that mattered on Tuesday and show up late with a “roundup” nobody asked for. The worst part is the mental load: you’re constantly deciding what’s new, what’s repeated, and what’s genuinely relevant, then formatting it all into something readable. It’s not hard work. It’s relentless work.

The friction compounds. Here’s where it breaks down in real life.

  • You end up covering the same story again because last week’s newsletter isn’t searchable or structured.
  • Manual curation turns into “just send something,” which trains your audience to expect filler.
  • Fresh news gets buried when you only publish on a fixed schedule.
  • Once you add more topics, it becomes impossible to keep quality consistent without adding hours.

What You’ll Build: An AI Editor That Sends Only Worthy Editions

This workflow acts like a small editorial desk that runs on a schedule but doesn’t publish on a schedule. Twice a day, it searches for fresh articles for each topic you care about, then stores them in a simple database so it can recognize repeats later. Next, it checks what you’ve sent before (recent editions) and filters out anything older than your last newsletter. After that, OpenAI gets a clear brief: decide “send” or “don’t send” using your rules, and select the best 3–5 articles when it is worth it. If the decision is yes, a second AI step enriches each selected story using web search, then everything is formatted as a clean Telegram newsletter and archived so future runs can avoid déjà vu.

The workflow starts with a schedule trigger and your topic settings. It then pulls real news from SerpAPI (DuckDuckGo News), compares candidates against your own newsletter history, and asks OpenAI to make the editorial call. Finally, it sends a formatted brief to Telegram and saves the edition for deduplication next time.

What You’re Building

Expected Results

Say you track 3 topics (like AI, automation, and your industry niche) and you check news twice daily. Manually, that’s maybe 10 minutes per topic to scan, decide, and copy links, plus another 20 minutes to format and write, so about an hour per day. With this workflow, you spend a couple minutes setting topics once, then it runs at 9:00 and 17:00 and only posts when the AI says “YES.” Most days you get your time back, and on busy news days you get a clean brief without the scramble.

Before You Start

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • SerpAPI for DuckDuckGo News search results
  • OpenAI to make send decisions and draft briefs
  • Tavily API key (get it from app.tavily.com)
  • SerpAPI key (get it from serpapi.com dashboard)
  • OpenAI API key (get it from your OpenAI platform account)
  • Telegram bot + chat ID (create via BotFather, then copy target chat/channel ID)

Skill level: Intermediate. You’ll connect a few accounts, paste API keys, and adjust a small set of workflow settings like topics, schedule, and send limits.

Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).

Step by Step

A scheduled check runs twice daily. The Schedule Trigger fires at set times (the default is morning and late afternoon). You can keep that cadence, or tighten it if your niche moves faster.

Your topics get split into individual searches. Instead of one messy query, the workflow creates one query per topic (for example: “AI” and “n8n” separately). That tends to produce more relevant results, and it gives the editor (OpenAI) cleaner inputs.

Fresh results are fetched, stored, and filtered. An HTTP Request pulls the last day of news via SerpAPI’s DuckDuckGo News engine. Each article is saved into a News table with an upsert rule, then compared against your last newsletter so only newer items make it forward.

OpenAI decides if you should send, then writes what to include. The “editor” sees candidates and the last few newsletters, checks for duplicates and weak stories, and returns a simple YES/NO plus the top articles. If it’s a YES, a second AI step enriches each story using Tavily web search and produces concise, factual copy.

The newsletter is delivered and remembered. The final edition is formatted in markdown, stored in a Newsletters table, then sent to Telegram. That archive is what prevents repeat coverage next week.

You can easily modify topics and language to match your audience, or switch the delivery destination from Telegram to email later. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Scheduled Trigger

Set the schedule that kicks off the digest building workflow.

  1. Add and open Scheduled Run Trigger.
  2. Set the Cron Expression to 0 0 9,17 * * * (runs at 09:00 and 17:00).
  3. Confirm the node connects to Configure Topics & Language.

Step 2: Connect Topics, Language, and Parallel Inputs

Define your newsletter topics and language, then fan out to topic queries and newsletter history in parallel.

  1. Open Configure Topics & Language and set topics to AI, n8n.
  2. Set language to English.
  3. Set minDaysBetween to 2 and maxDaysBetween to 5.
  4. Verify parallel execution: Configure Topics & Language outputs to both Generate Topic Queries and Retrieve Past Newsletters in parallel.

Step 3: Fetch and Store Fresh News Articles

Generate topic-specific queries, fetch news results, expand them, and upsert to your news database.

  1. In Generate Topic Queries, keep the JavaScript as provided to split topics into separate items.
  2. Open Retrieve SerpAPI News and set the URL to https://serpapi.com/search.html.
  3. Set query parameters: engine = duckduckgo_news, q = {{ $json.topic }}, and df = d.
  4. Credential Required: Connect your httpQueryAuth credentials in Retrieve SerpAPI News.
  5. In Expand News Results, set Field to Split Out to results.
  6. In Upsert Articles to News DB, set Operation to upsert and map fields like {{ $json.url }}, {{ $json.title }}, {{ $json.source }}, {{ $json.excerpt }}, and {{ DateTime.fromSeconds(Number($json.date), {zone: 'utc'}).toISO() }}.
  7. Select your News data table ID in Upsert Articles to News DB (replace [YOUR_ID]).

⚠️ Common Pitfall: If Upsert Articles to News DB doesn’t match on title and url, you may create duplicates. Keep both matching conditions enabled.

Step 4: Load Newsletter History and Filter Candidates

Retrieve past newsletters, sort them, and merge with current articles to filter out content that’s too recent.

  1. In Retrieve Past Newsletters, set Operation to get and Return All to true, then select your Newsletters data table ID (replace [YOUR_ID]).
  2. In Order Newsletters Latest, set Sort Field to createdAt and Order to descending.
  3. Confirm parallel execution: Order Newsletters Latest outputs to both Select Latest Newsletter and Restrict Newsletters to 5 in parallel.
  4. In Restrict Newsletters to 5, set Max Items to 5, then aggregate with Bundle Past Newsletters using Destination Field Name newsletters.
  5. In Merge Articles with Latest Meta, set Mode to combine and Combine By to combineAll.
  6. In Filter Newer Articles, use the date condition {{ $json.date_2 }} is after {{ $json.createdAt_1 ? $json.createdAt_1 : DateTime.fromISO('2024-01-01T00:00:00.000Z') }}.
  7. In Halt If Newsletter Too Recent, keep the createdAt check against {{ $now.minus({ days: $('Configure Topics & Language').item.json.minDaysBetween }) }}.
  8. In Collect Candidate Articles, include fields title_2, excerpt_2, source_2, url_2 and set Destination Field Name to results.

Ensure Halt If Newsletter Too Recent is wired after Filter Newer Articles so the frequency gating applies to filtered candidates only.

Step 5: Set Up AI Decisioning and Article Selection

Use an LLM to decide whether to send a newsletter and choose the top articles.

  1. In Merge Candidates with History, keep Mode as combine and Combine By as combineAll to merge results and newsletters.
  2. Open AI: Decide Send & Pick Articles and keep JSON Output enabled.
  3. Confirm expressions reference: {{ $('Configure Topics & Language').item.json.topics }}, {{ $('Configure Topics & Language').item.json.maxDaysBetween }}, {{ $('Select Latest Newsletter').item.json.createdAt ? Math.floor($now.diff(DateTime.fromISO($('Select Latest Newsletter').item.json.createdAt), 'days').days) : 999 }}, and {{ $('Configure Topics & Language').item.json.language }}.
  4. Credential Required: Connect your openAiApi credentials in AI: Decide Send & Pick Articles.
  5. In Branch on AI Send Decision, keep the condition {{ $json.message.content.decision }} equals YES.
  6. In Split Chosen Articles, set Field to Split Out to message.content.articles.

Step 6: Enrich Articles with Research and Drafting

Use an AI agent with tools and an output parser to enrich each selected article.

  1. Open AI: Enrich and Draft Article and keep Prompt Type as define with the provided prompt text.
  2. Confirm language is injected from Configure Topics & Language using {{ $('Configure Topics & Language').item.json.language }}.
  3. Ensure the AI tool Tavily Search Utility is connected and set its query to {{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Query', ``, 'string') }}.
  4. Credential Required: Connect your tavilyApi credentials in Tavily Search Utility (credentials are used by the parent AI: Enrich and Draft Article agent).
  5. Ensure OpenAI Model GPT-5.1 is connected as the language model for AI: Enrich and Draft Article.
  6. Credential Required: Connect your openAiApi credentials in OpenAI Model GPT-5.1.
  7. Ensure Decode Enriched Article JSON is attached as the output parser for AI: Enrich and Draft Article (credentials are managed on the parent node).
  8. In Aggregate Enriched Drafts, aggregate the output field to prepare the newsletter content.

If the agent returns invalid JSON, review Decode Enriched Article JSON schema to ensure it matches the prompt output structure.

Step 7: Store and Dispatch the Newsletter

Archive the newsletter and send the final digest to Telegram.

  1. In Store Newsletter in Archive, map content to the expression that formats the articles: {{ $json.output.map(article => { const title = JSON.stringify(article.title).slice(1, -1); const content = JSON.stringify(article.content).slice(1, -1); const source = JSON.stringify(article.source).slice(1, -1); const url = JSON.stringify(article.url).slice(1, -1); return `*${title}*\n${content}\nSource: [${source}](${url})`; }).join('\n\n') }}.
  2. Select your Newsletters data table ID in Store Newsletter in Archive (replace [YOUR_ID]).
  3. In Dispatch Newsletter to Telegram, set chatId to [YOUR_ID] and keep the text expression as provided.
  4. Credential Required: Connect your telegramApi credentials in Dispatch Newsletter to Telegram.

Step 8: Test and Activate Your Workflow

Run a manual test to validate each branch and ensure the digest posts correctly.

  1. Click Execute Workflow to run Scheduled Run Trigger manually.
  2. Verify that Retrieve SerpAPI News returns results, and Upsert Articles to News DB stores new entries.
  3. Check that AI: Decide Send & Pick Articles returns decision and a list of articles in JSON format.
  4. Confirm that Aggregate Enriched Drafts produces formatted output and Dispatch Newsletter to Telegram sends a message.
  5. When satisfied, toggle the workflow to Active for scheduled runs.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Troubleshooting Tips

  • SerpAPI credentials can expire or hit usage limits. If results suddenly come back empty, check your SerpAPI dashboard usage and the API key stored in your n8n HTTP Request credentials.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.

Quick Answers

What’s the setup time for this Telegram news automation?

About 45 minutes if you already have the API keys and a Telegram bot.

Is coding required for this news filtering outcome?

No. You’ll connect services, paste keys, and adjust the topics and schedule.

Is n8n free to use for this Telegram news automation workflow?

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 and your SerpAPI/Tavily usage (SerpAPI includes 250 free searches per month on its free tier).

Where can I host n8n to run this automation?

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.

Can I modify this Telegram news automation workflow for different use cases?

Yes, and it’s mostly edits in the “Configure Topics & Language” node. Common changes include adding more topics, switching the output language, tightening the minDaysBetween and maxDaysBetween guardrails, and changing the schedule trigger times. You can also swap the final “Dispatch Newsletter to Telegram” step for an email sender later, while keeping the same decision + dedupe core.

Why is my Telegram connection failing in this workflow?

Most of the time it’s the bot token or the chat ID. Make sure the bot is added to the target channel or chat, confirm the chat ID is correct, then re-save credentials in n8n and test the Telegram send node. If it still fails, check Telegram permissions (channels often block posting unless the bot is an admin) and look for rate limiting if you’re sending multiple messages in a tight loop.

What volume can this Telegram news automation workflow process?

Practically, it’s limited by your API quotas more than n8n. On n8n Cloud, your plan’s monthly executions cap how often you can run it, while self-hosting removes execution limits and shifts the bottleneck to your server. This workflow is designed for a handful of topics checked twice daily; if you scale to dozens of topics, expect higher SerpAPI usage and longer AI processing times.

Is this Telegram news automation better than using Zapier or Make?

Often, yes, because the logic here is not a simple “if X then send Y.” You’ve got state (tables for News and Newsletters), deduplication, branching decisions, and two AI stages, which is where Zapier scenarios can get expensive and awkward. n8n also gives you self-hosting, so you can run twice-daily checks without worrying about per-task pricing spiraling. If you only want a basic daily digest, Zapier or Make can be quicker to set up. If you want “send only when it’s worth it,” n8n is a better fit. Talk to an automation expert if you want help picking the simplest option.

A newsletter that only speaks when it has something to say is easier to run and easier to trust. Set this up once, let it curate, and use the time you get back 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.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal