On a schedule
Post one researched LinkedIn post a day from your topic list
Keep a list of topics and each weekday the next one is researched and published as a LinkedIn post, working down the list in order.
- Runs
- On a schedule
- Apps
- LinkedIn, SerpApi
- AI
- Yes, uses the built-in AI allowance
- Access
- SerpApi key; LinkedIn w_member_social
Send this to your assistant
Create a ClickRuntime automation: every weekday at 8am, take the next topic from my list, research it with SerpApi and post a LinkedIn post about it, then mark it done.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A founder of a bookkeeping startup has a long list of customer pain points they want to write about: late invoices, messy receipts, year-end panic. Each one would make a good LinkedIn post, but the list just sits in a notes app because writing a researched post every day is more than they can manage alongside running the company.
This automation works through the list for them. Each weekday it takes the next topic, searches Google through SerpApi for current facts, and AI writes a post that ties the pain point to something specific. It goes out on LinkedIn and the topic is marked done, so the queue always moves forward.
What you get out of it
Plan once, post for weeks
An hour spent writing a list of topics turns into a month of daily posts. Planning and posting are separated, so neither gets in the way of the other.
Your topics, your priorities
The posts follow the order of your list. You decide what to talk about and when, and the automation handles the rest.
Backed by current facts
Each topic is researched on the day it is posted. Posts can mention a recent figure or story instead of a general point.
Always know what is next
Topics move from the queue to done as they are posted. You can see at a glance what is coming up and add more when the list runs low.
How it works
What happens, step by step
Every weekday morning, ClickRuntime takes the next topic from your list.
It searches Google for that topic through SerpApi to find current facts and examples.
AI writes a LinkedIn post about the topic using those facts.
The post is published on your LinkedIn profile and the topic is marked done, so tomorrow's run takes the next one.
Before it runs live
- Connect LinkedIn
- Connect SerpApi
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 LinkedIn and SerpApi steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_trigger, credentials, http, state, ai, notify
TOPICS = ["Chasing late invoices", "Lost receipts at year end", "Mixing personal and business spending"]
def post_to_linkedin(text):
token = credentials.connection("linkedin", "work")
me = http.get("https://api.linkedin.com/v2/userinfo", headers={"Authorization": f"Bearer {token}"}).json()["sub"]
r = http.post("https://api.linkedin.com/rest/posts", headers={"Authorization": f"Bearer {token}", "LinkedIn-Version": "202409", "X-Restli-Protocol-Version": "2.0.0"},
json={"author": f"urn:li:person:{me}", "commentary": text, "visibility": "PUBLIC", "lifecycleState": "PUBLISHED",
"distribution": {"feedDistribution": "MAIN_FEED", "targetEntities": [], "thirdPartyDistributionChannels": []}})
r.raise_for_status()
return r.headers.get("x-restli-id", "")
@on_trigger
def run(event):
done = state.get("done") or 0
if done >= len(TOPICS):
notify.email_me("LinkedIn topic queue is empty", "Add more topics to keep posting.")
return {"posted": False}
topic = TOPICS[done]
results = http.get("https://serpapi.com/search", params={"engine": "google", "q": topic + " small business", "api_key": credentials.secret("SERPAPI_API_KEY")}).json()
facts = "\n".join(f"- {r['title']}: {r.get('snippet', '')}" for r in results.get("organic_results", [])[:6])
text = ai.generate(f"Topic: {topic}\nFacts:\n{facts}\nWrite a LinkedIn post under 180 words for small business owners.", max_output_tokens=350).text.strip()
post_to_linkedin(text)
state.set("done", done + 1)
return {"posted": topic, "left": len(TOPICS) - done - 1}FAQ
Common questions
Where do I keep the topic list?
What happens when the list runs out?
Can I skip a 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
Post about the day's news in your niche on LinkedIn
Each day the best new article on your topic becomes a LinkedIn post with your take and the link, and the same article is never posted twice.
See how it worksTurn a topic into a researched LinkedIn post
Send a topic to your trigger link and a LinkedIn post built from fresh Google results is published on your profile, with the link emailed to you.
See how it worksGet a daily news digest in Slack
Each morning your team gets a short summary of what's new on the sites and blogs you follow.
See how it worksKeep exploring
Set up “Post one researched LinkedIn post a day from your topic list” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.
