Daily
Get only the security news that affects your tech stack
Every morning you get one email with the security news items that match the tools and systems you actually use.
- Runs
- Daily
- Apps
- Gmail, Pinecone
- AI
- Yes, uses the built-in AI allowance
- Access
- Pinecone read; gmail.send
Send this to your assistant
Create a ClickRuntime automation: every morning at 7, check these security news feeds, keep only items that match my tech stack stored in Pinecone, and email me the list with a line on why each matters.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Security feeds publish dozens of advisories a day, and most concern software you do not run. Reading them all is impossible, but skimming risks missing the one patch that matters to you.
IT managers, developers and small security teams use it to see only the advisories that touch their own stack, every morning.
What you get out of it
Signal, not noise
Only items that match your stack reach your inbox.
Matching by meaning
An advisory about a library you use is caught even if your stack list names it differently.
Why it matters, in a line
Each item comes with a short note on which part of your stack it affects.
Never the same item twice
Items already sent are remembered.
How it works
What happens, step by step
Every morning, ClickRuntime reads the new items in the security feeds you chose.
Each item is compared with the entries describing your tech stack in Pinecone.
Items that closely match are kept, and AI writes a line on why each matters to you.
You get one email from your Gmail with the matching items and links.
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 Pinecone
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 Gmail and Pinecone steps into one automation
Under the hood
The code that runs this automation
import base64
import feedparser
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, http, state, ai
ME, FEEDS = "me@example.com", ["https://www.cisa.gov/cybersecurity-advisories/all.xml", "https://example.com/security/feed"]
HOST, NS = "https://kb-abc123.svc.aped-1234.pinecone.io", "stack" # your index host and namespace
def send(to, subject, body):
raw = f"To: {to}\r\nSubject: {subject}\r\nContent-Type: text/plain; charset=utf-8\r\n\r\n{body}"
build("gmail", "v1", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False).users() \
.messages().send(userId="me", body={"raw": base64.urlsafe_b64encode(raw.encode()).decode()}).execute()
@on_trigger
def run(event):
seen = set(state.get("seen") or [])
items = [e for url in FEEDS for e in feedparser.parse(http.get(url).content).entries if e.link not in seen][:60]
hits = []
for e in items:
r = http.post(f"{HOST}/records/namespaces/{NS}/search", json={"query": {"inputs": {"text": e.title}, "top_k": 1}}, headers={
"Api-Key": credentials.secret("PINECONE_API_KEY"), "X-Pinecone-API-Version": "2025-04"}).json()["result"]["hits"]
if r and r[0]["_score"] > 0.82:
hits.append(f"{e.title} | matches: {r[0]['fields']['chunk_text']} | {e.link}")
if hits:
notes = ai.generate("For each line, write the title, then one line on why it matters for the matched tool:\n"
+ "\n".join(hits), max_output_tokens=800).text
send(ME, f"{len(hits)} security items for your stack", notes + "\n\nLinks:\n" + "\n".join(h.split(" | ")[-1] for h in hits))
state.set("seen", sorted(seen | {e.link for e in items})[-3000:])
return {"checked": len(items), "matched": len(hits)}FAQ
Common questions
How do I describe my stack?
Which feeds can I use?
What if nothing matches?
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
Index new documents into Pinecone nightly and email what changed
Every night new and changed documents from your folder are indexed into Pinecone, and you get an email listing what was added.
See how it worksDraft email replies from your knowledge base
Customer emails get an accurate draft reply in Gmail, written from the docs you keep in Pinecone.
See how it worksLet visitors ask about your CV, with a daily summary by email
Visitors to your site can ask questions about your experience and get answers from your CV, and you get an email summarising each day's conversations.
See how it worksKeep exploring
Set up “Get only the security news that affects your tech stack” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.