Every 30 minutes
Announce new feed items in Teams and by email
When a new article or product appears in your RSS feed, it is posted to your Teams channel and emailed to your subscriber list.
- Runs
- Every 30 minutes
- Apps
- Gmail, Microsoft Teams
- AI
- Optional
- Access
- ChannelMessage.Send; gmail.send
Send this to your assistant
Create a ClickRuntime automation: every 30 minutes, when a new item appears in my RSS feed, post it to our Teams channel and email it to my subscribers list from Gmail.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A small company publishes articles and product updates on its site, then someone has to remember to tell the sales team and send a note to the customers who asked to hear about it. On busy weeks the announcement goes out days late or not at all.
Watching the feed means every new item is shared the same way, as soon as it is live. The team can talk about it in Teams and subscribers hear about it while it is news.
What you get out of it
Every release is announced
Nothing depends on someone remembering. Each new item reaches the team and subscribers.
Your team hears first
Sales and support see the post in Teams as it goes live. They can answer customer questions about it straight away.
Timely emails to subscribers
Readers get the link while the content is new. Early traffic helps articles and launches get noticed.
Optional short blurb
AI can write a one-line summary for each item. The announcement reads well even when the feed only has a title.
How it works
What happens, step by step
Every 30 minutes, ClickRuntime checks your RSS feed for items it has not seen yet.
If nothing is new, it stops there.
If you turned it on, AI writes a one-line summary for each new item.
Each new item is posted in your Teams channel and emailed from your Gmail to your subscriber list.
Before it runs live
- Connect Google through your own Google app (a one-time, 10-minute setup), so it works with your own Gmail
- Connect Microsoft Teams
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
- 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 Gmail and Microsoft Teams steps into one automation
Under the hood
The code that runs this automation
import base64, feedparser
from email.mime.text import MIMEText
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, http, state, ai, report_fetched
FEED, TEAM_ID, CHANNEL_ID = "https://www.example.com/feed.xml", "your-team-id", "your-channel-id"
SUBSCRIBERS = ["reader@example.com"]
@on_trigger
def run(event):
seen = state.get("seen") or []
items = [e for e in feedparser.parse(http.get(FEED).text).entries if e.link not in seen]
report_fetched(len(items))
if not items:
return {"new": 0}
gmail = build("gmail", "v1", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False)
for e in items:
try:
blurb = ai.generate(f"One sentence summary of: {e.title}. {e.get('summary', '')[:1500]}", max_output_tokens=60).text.strip()
except ai.AIError:
blurb = e.get("summary", "")[:200]
http.post(f"https://graph.microsoft.com/v1.0/teams/{TEAM_ID}/channels/{CHANNEL_ID}/messages",
headers={"Authorization": f"Bearer {credentials.connection('microsoft', 'work')}"},
json={"body": {"contentType": "html", "content": f"<b>New:</b> <a href='{e.link}'>{e.title}</a><br>{blurb}"}})
msg = MIMEText(f"{blurb}\n\n{e.link}")
msg["Bcc"], msg["Subject"] = ", ".join(SUBSCRIBERS), e.title
gmail.users().messages().send(userId="me", body={"raw": base64.urlsafe_b64encode(msg.as_bytes()).decode()}).execute()
seen.append(e.link)
state.set("seen", seen[-500:])
return {"new": len(items)}FAQ
Common questions
How many subscribers can it email?
Can I review the announcement before it goes out?
Which feeds work?
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
Confirm bookings by Gmail and tell your team in Teams
When a client books through your web form, they get a confirmation email from your Gmail and your team gets a message in Teams.
See how it worksPost new articles to your Telegram channel
New posts from the sites you follow land in your channel with a one-line summary.
See how it worksGet new comments by email with spam marked
You hear about each new comment, and the obvious spam is flagged so you can deal with it in one go.
See how it worksKeep exploring
Set up “Announce new feed items in Teams and by email” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.