Skip to content

The moment it happens

Weekly reading list by email from links sent to Telegram

Links you send or forward to your bot during the week arrive every Friday at 17:00 as one email with titles and a one-line summary each.

Runs
The moment it happens
Apps
Telegram
AI
Optional
Access
bot token

Send this to your assistant

Create a ClickRuntime automation: collect every link I send or forward to my Telegram bot, and every Friday at 17:00 email me a reading list with each page's title, a one-line summary and the link.

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

You see a good article in a Telegram channel or a friend sends you a link, and you mean to read it later. Saved Messages fills up with links next to photos and notes, and most of them are never opened again.

This automation gives those links a home. Forward or send them to your bot as you go, and on Friday afternoon you get one email with each page's title, a one-line summary and the link, ready for the weekend.

It suits people who read a lot on their phone and want a simple read-later list without another app.

What you get out of it

  • Save with one forward

    Forwarding to the bot takes a second and works from any chat or channel.

  • Titles instead of bare URLs

    The email shows what each link is, so you can pick what to read.

  • Short summaries

    A one-line summary helps you skip pages that are not worth your time.

  • A fresh list each week

    The list resets after every email, so it never turns into a backlog.

  • Reads well on any device

    Plain email works on your laptop, phone or e-reader browser.

How it works

What happens, step by step

  1. You send or forward any message with a link to your bot. It replies with a short "saved".

  2. ClickRuntime keeps each link with the time you sent it.

  3. On Friday at 17:00 it opens each page to get its title and, optionally, writes a one-line summary with ClickRuntime's built-in AI.

  4. You get one email with the week's links, and the list starts over.

Before it runs live

  • Connect Telegram
  • Paste your automation's link into the other app's webhook settings

What you get

RunsThe moment it happens
Weekly reading list by email from links sent to Telegramjust nowSucceeded
Email · Your reading list: 9 links1. How Stripe handles idempotency keys Explains retry-safe API calls with real request examples. https://stripe.com/blog/idempotency 2. The case for boring technology An argument for picking well-known tools over new ones. https://mcfunley.com/choose-boring-technology …

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

  • Act only on the items that match your own rules, and skip the rest
  • 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 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.
weekly_reading_list_by_email_from_links_sent_to_telegram.pyexample
import re
from clickruntime import on_trigger, credentials, http, state, notify, ai

OWNER = 123456789

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

def urls(msg):
    text = msg.get("text") or msg.get("caption") or ""
    ents = msg.get("entities") or msg.get("caption_entities") or []
    found = [e["url"] for e in ents if e["type"] == "text_link"]
    found += [text[e["offset"]:e["offset"] + e["length"]] for e in ents if e["type"] == "url"]
    return found

@on_trigger
def run(event):
    links = state.get("links") or []
    msg = (event.get("json") or {}).get("message")
    if msg:
        if msg["chat"]["id"] != OWNER:
            return {"skipped": True}
        new = urls(msg)
        links += [u for u in new if u not in links]
        state.set("links", links)
        if new:
            tg("sendMessage", chat_id=OWNER, text=f"Saved ({len(links)} this week)", reply_to_message_id=msg["message_id"])
        return {"saved": len(new)}
    if not links:
        return {"sent": False}
    items = []
    for i, u in enumerate(links, 1):
        try:
            html = http.get(u, timeout=15).text[:200000]
            title = (re.search(r"<title[^>]*>(.*?)</title>", html, re.S | re.I) or [None, u])[1].strip()
            line = ai.generate(f"In one plain sentence, what is this page about? Title: {title}\n{re.sub('<[^>]+>', ' ', html)[:4000]}",
                               max_output_tokens=60).text.strip()
        except Exception:
            title, line = u, ""
        items.append(f"{i}. {title}\n   {line}\n   {u}")
    notify.email_me(subject=f"Your reading list: {len(links)} links", body="\n".join(items))
    state.set("links", [])
    return {"sent": len(links)}

FAQ

Common questions

Can I forward posts from channels?
Yes. Forward any post that contains a link and the bot picks up the link, including links hidden behind text.
What if a page blocks automated requests?
The email still lists the link, just without a title or summary, so nothing you saved is dropped.
Do I need AI for this?
No. Without AI the email lists titles and links. The one-line summaries use ClickRuntime's built-in AI, which needs a paid plan.
What permissions does it need?
bot token. 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 for each event the app sends.
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 “Weekly reading list by email from links sent to Telegram” from your assistant

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