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.
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
Every 5 minutes, ClickRuntime reads the latest items from your feed.
It checks your Supabase posts table and skips items already stored.
New items are saved to the table.
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
Build your own
Need it to work differently?
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
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?
How does the bot post to a channel?
What if many posts arrive at once?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Remind customers on Telegram before their subscription ends
Every morning, customers whose subscription ends in 3 days get a Telegram reminder, and each one is marked so it's only sent once.
See how it worksAnswer questions in Telegram from your own documents
People ask your Telegram bot a question and get an answer drawn from the documents stored in your Supabase table.
See how it worksRun a Telegram assistant that remembers each user
Your Telegram bot replies with AI and remembers each user's recent messages, stored in your Supabase tables, so conversations stay in context.
See how it worksKeep exploring
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.