Daily
Draft social posts into Airtable and approve them on Telegram
New articles from your feeds become draft posts in Airtable, you get them on Telegram, and approved ones are tracked through to posted.
- Runs
- Daily
- Apps
- Airtable, Telegram
- AI
- Yes, uses the built-in AI allowance
- Access
- Airtable read+write; bot token
Send this to your assistant
Create a ClickRuntime automation: every morning, take new articles from my feeds, draft a short social post for each into my Airtable 'Posts' table and send them to me on Telegram. When I mark one Approved in Airtable, send me the final text and set it to Ready to post.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A founder wants to share useful industry news on LinkedIn a few times a week but never finds the time to read the feeds and write something. When they do sit down, they cannot remember which articles they already shared.
Having drafts written from the morning's articles and delivered to Telegram means the founder can skim them on the way to work. Approving in Airtable keeps a record of what was chosen and what has gone out, so nothing is shared twice.
What you get out of it
Drafts arrive before the day starts
Each morning's new articles come with a ready draft, so writing a post means editing a few lines.
Review from your phone
Drafts land in your Telegram chat, so you can read them anywhere.
A record of what went out
Each draft has a status in Airtable, from Draft to Approved to Ready to post, so you always know what was shared.
Articles are never drafted twice
Article links already in the table are skipped on later runs.
How it works
What happens, step by step
Every morning, ClickRuntime reads the newest articles from your feeds and skips any already in Airtable.
AI writes a short social post for each new article.
Each draft is added to your Airtable Posts table and sent to you on Telegram.
On the same run, posts you have marked Approved are sent back to you as final text and set to Ready to post.
Before it runs live
- Connect Airtable
- 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 Airtable 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, state
BASE_ID, CHAT_ID = "appXXXXXXXXXXXXXX", "123456789"
FEEDS = ["https://example.com/industry-news/rss"]
@on_trigger
def run(event):
api = f"https://api.airtable.com/v0/{BASE_ID}/Posts"
headers = {"Authorization": f"Bearer {credentials.connection('airtable', 'work')}"}
tg = f"https://api.telegram.org/bot{credentials.secret('TELEGRAM_BOT_TOKEN')}/sendMessage"
seen = set(state.get("seen_links") or [])
entries = [e for feed in FEEDS for e in feedparser.parse(feed).entries if e.link not in seen][:5]
for e in entries:
draft = ai.generate(f"Title: {e.title}\nSummary: {e.get('summary', '')[:1500]}",
system="Write a LinkedIn post under 80 words sharing this article with one practical takeaway.",
max_output_tokens=200).text
http.post(api, headers=headers, json={"records": [{"fields": {"Article": e.link, "Draft": draft, "Status": "Draft"}}]}).raise_for_status()
http.post(tg, json={"chat_id": CHAT_ID, "text": f"New draft:\n\n{draft}\n\n{e.link}"})
seen.add(e.link)
state.set("seen_links", sorted(seen)[-500:])
approved = http.get(api, headers=headers, params={"filterByFormula": "{Status}='Approved'"}).json()["records"]
for rec in approved:
http.post(tg, json={"chat_id": CHAT_ID, "text": f"Ready to post:\n\n{rec['fields'].get('Draft', '')}"})
http.patch(api, headers=headers, json={"records": [{"id": rec["id"], "fields": {"Status": "Ready to post"}}]}).raise_for_status()
return {"drafted": len(entries), "approved": len(approved)}FAQ
Common questions
Which feeds can it read?
Does it post to LinkedIn or X for me?
How many drafts will I get each day?
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
Get a random recipe from Airtable on Telegram each day
Each morning your Telegram gets one random record from Airtable, such as a recipe, quote or tip, without repeats from recent days.
See how it worksCollect new job listings in Airtable and post them to Telegram
New remote job listings are saved to Airtable every few hours, and only the new ones are posted to your Telegram channel.
See how it worksLook up and update Airtable records from a Telegram bot
You message your Telegram bot in plain words and it finds, adds or updates records in Airtable, then replies.
See how it worksKeep exploring
Set up “Draft social posts into Airtable and approve them on Telegram” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.