Skip to content

Every 5–15 minutes

Send new feed posts to Telegram, never twice

Every new post from a feed you follow is saved in Supabase and sent to your Telegram channel exactly once.

Runs
Every 5–15 minutes
Apps
Supabase, Telegram
AI
Optional
Access
Supabase read+write; bot admin in channel

Send this to your assistant

Create a ClickRuntime automation: every 5 minutes, fetch new posts from this RSS feed, skip ones already stored in my Supabase posts table, save the new ones and send each to my Telegram channel.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A community admin shares new listings, job posts or blog articles into a Telegram channel. Doing it by hand means checking the source all day, and simple feed bots repost the same item after a restart or when the feed reorders.

Storing every post's ID in Supabase before sending means each item is shared exactly once, and you keep a full record of what was posted.

What you get out of it

  • Never a duplicate

    Posts already in your table are skipped, even if the feed changes order or the bot restarts.

  • Your channel stays current

    New posts appear within minutes of being published.

  • A full history

    Supabase keeps every post sent, useful for search or a weekly roundup.

  • Optional short summaries

    If AI is available, each alert can include a one-line summary.

How it works

What happens, step by step

  1. Every 5 minutes, ClickRuntime reads the latest items from your feed.

  2. It checks your Supabase posts table and skips items already stored.

  3. New items are saved to the table.

  4. Each new item is sent to your Telegram channel with its title and link.

Before it runs live

  • Connect Supabase
  • Connect Telegram

What you get

RunsEvery 5–15 minutes
Send new feed posts to Telegram, never twicetoday, 9:00Succeeded
Telegram · @northwind_updatesNew: Spring pricing for teams – blog.northwind.example/spring-pricing

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • Your own rules

    Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.

  • Any number of apps

    One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.

  • AI where it helps

    Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.

  • On a schedule or on each event

    Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.

Changes you can ask for

  • Run it at a different time, more or less often, or only on weekdays
  • Change what the AI looks for, or how it writes the result
  • Add another app, for example also send it to Slack
  • Combine it with other Supabase and Telegram steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
new_post_alerts_deduplicated_in_supabase.pyexample
import feedparser
from clickruntime import on_trigger, credentials, http, ai, report_fetched

FEED = "https://blog.northwind.example/feed"
CHANNEL = "@northwind_updates"
SUPABASE = "https://your-project.supabase.co/rest/v1"

def sb(method, path, **kw):
    key = credentials.secret("SUPABASE_KEY")
    r = http.request(method, f"{SUPABASE}/{path}", **kw, headers={"apikey": key, "Authorization": f"Bearer {key}", "Prefer": "return=representation,resolution=merge-duplicates"})
    return r.raise_for_status() or (r.json() if r.content else None)

def tg(method, **params):
    return http.post(f"https://api.telegram.org/bot{credentials.secret('TELEGRAM_BOT_TOKEN')}/{method}", json=params).json()

@on_trigger
def run(event):
    items = feedparser.parse(http.get(FEED).content).entries[:30]
    ids = [e.get("id") or e.link for e in items]
    known = {r["id"] for r in sb("GET", "posts", params={"select": "id", "id": f"in.({','.join(chr(34) + i + chr(34) for i in ids)})"})} if ids else set()
    new = [e for e, i in zip(items, ids) if i not in known][::-1]
    report_fetched(len(new))
    if not new:
        return {"summary": "Nothing new"}
    sb("POST", "posts", json=[{"id": e.get("id") or e.link, "title": e.title, "url": e.link} for e in new])
    for e in new:
        text = f"<b>{e.title}</b>\n{e.link}"
        try:
            text += "\n" + ai.generate(f"One-line summary: {e.get('summary', '')[:1500]}", max_output_tokens=40).text
        except ai.AIError:
            pass
        tg("sendMessage", chat_id=CHANNEL, text=text, parse_mode="HTML")
    return {"sent": len(new)}

FAQ

Common questions

Which sources work?
Any RSS or Atom feed, and most JSON feeds with a little adjustment.
How does the bot post to a channel?
Add your bot as an admin of the channel and use the channel's username or ID.
What if many posts arrive at once?
They're sent oldest first, a few seconds apart, to stay within Telegram's limits.
What permissions does it need?
Supabase read+write; bot admin in channel. Nothing else in your accounts is used.
Does it need AI?
No, but you can ask for an AI step (for example a summary). It then uses ClickRuntime's built-in AI allowance.
How many runs does it use?
One run each time it runs (every 5–15 minutes). Checks that find nothing to do and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Send new feed posts to Telegram, never twice” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.