Skip to content

On a schedule

Approve article posts for X in Telegram

New articles from your feeds become X post drafts in Telegram, and one tap publishes the ones worth sharing.

Runs
On a schedule
Apps
Telegram, X
AI
Yes, uses the built-in AI allowance
Access
bot token; tweet.write

Send this to your assistant

Create a ClickRuntime automation: every hour, check my feeds for new articles, write an X post for each, send it to me on Telegram with Post and Skip buttons, and only publish what I approve.

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

Sharing good articles keeps an X account useful, but not every article in a feed is worth putting your name to. Posting everything automatically risks sharing something off-topic or wrong, and checking every item by hand on a laptop is slow.

Turning each new article into a ready draft on your phone, with a Post button, gives you the speed of automation and the judgement of a person. Good articles go out in seconds; the rest are skipped.

What you get out of it

  • Your judgement, without the typing

    You decide what goes out, but the post is already written. Approving takes one tap.

  • Review on the move

    Drafts arrive in Telegram, so you can approve them from your phone wherever you are.

  • Fewer off-topic posts

    Nothing posts on its own, so an odd article in a feed never reaches your followers by accident.

  • Each article handled once

    Articles are remembered once drafted, so you are never asked about the same one twice.

How it works

What happens, step by step

  1. Every hour ClickRuntime checks your feeds for articles it has not seen before.

  2. AI writes a short X post for each new article with its link.

  3. Each draft is sent to you in Telegram with Post and Skip buttons.

  4. Tapping Post publishes it on X; each draft can only be posted once.

Before it runs live

  • Connect Telegram
  • Connect X

What you get

RunsOn a schedule
Approve article posts for X in Telegramtoday, 9:00Succeeded
Telegram · Your bot"Acme's guide to pricing pages is the clearest I've read this year." blog.example.com/pricing-pages [Post] [Skip]

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 and X 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.
rss_and_newsletter_items_to_tweets_with_telegram_approval.pyexample
import uuid
import feedparser
from clickruntime import on_trigger, on_event, report_fetched, credentials, http, state, ai

FEEDS = ["https://blog.example.com/feed"]
MY_CHAT = 123456789

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 check(event):
    seen = set(state.get("seen") or [])
    new = [e for url in FEEDS for e in feedparser.parse(url).entries[:10] if e.link not in seen]
    report_fetched(len(new))
    if not new:
        return {"drafts": 0}
    for e in new:
        text = ai.generate(f"Write an X post under 230 characters sharing: {e.title}", max_output_tokens=90).text.strip() + f"\n{e.link}"
        key = uuid.uuid4().hex[:12]
        state.set(f"draft:{key}", text)
        tg("sendMessage", chat_id=MY_CHAT, text=text, reply_markup={"inline_keyboard": [[
            {"text": "Post", "callback_data": f"post:{key}"}, {"text": "Skip", "callback_data": f"skip:{key}"}]]})
    state.set("seen", (list(seen) + [e.link for e in new])[-500:])
    return {"drafts": len(new)}

@on_event
def tap(event):
    cb = (event.json or {}).get("callback_query") or {}
    if cb.get("from", {}).get("id") != MY_CHAT:
        return {"ignored": True}
    action, key = cb.get("data", ":").split(":", 1)
    text = state.get(f"draft:{key}")
    state.delete(f"draft:{key}")
    if action == "post" and text:
        http.post("https://api.x.com/2/tweets", headers={"Authorization": "Bearer " + credentials.connection("x", "main")},
                  json={"text": text[:280]}).raise_for_status()
    tg("answerCallbackQuery", callback_query_id=cb["id"], text="Posted" if action == "post" and text else "Skipped")
    return {"action": action}

FAQ

Common questions

Can I add newsletters as sources?
Yes, if the newsletter has a web archive with an RSS feed, which most newsletter platforms provide.
What happens to drafts I ignore?
Nothing is posted. They stay as messages in Telegram until you tap a button or delete them.
Can someone else approve?
Yes. Send drafts to a Telegram group and allow the people who should be able to approve.
What permissions does it need?
bot token; tweet.write. Nothing else in your accounts is used.
Does it need AI?
Yes. It uses ClickRuntime's built-in AI, so you don't need an OpenAI or Anthropic key. Every plan includes a monthly AI allowance.
How many runs does it use?
One run each time it checks. Checks that find nothing new 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 “Approve article posts for X in Telegram” from your assistant

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