Every 30 minutes
Turn new Drive docs into LinkedIn posts
Add book notes or an article draft to a Drive folder and AI turns it into a LinkedIn post.
- Runs
- Every 30 minutes
- Apps
- Google Drive, LinkedIn
- AI
- Yes, uses the built-in AI allowance
- Access
- Drive read; LinkedIn w_member_social
Send this to your assistant
Create a ClickRuntime automation: every 30 minutes, check my LinkedIn Notes folder in Drive for new Google Docs. Write a LinkedIn post from each one in my voice and publish it.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
People who read and write a lot already have plenty to say on LinkedIn: book notes, talk outlines, half-finished articles. The material sits in Google Drive, and turning a three-page doc into a 150-word post is a job that keeps getting pushed to next week.
Dropping a doc into a folder is enough to have it summarised into a post with your angle. The writing you already did gets a second life in front of your network.
What you get out of it
Notes become posts
Book notes and talk outlines that would otherwise stay private turn into posts your network can learn from.
Nothing new to learn
You keep writing in Google Docs as before. Moving a doc into one folder is the only extra step.
The post keeps your angle
The AI pulls out the main idea from your own notes, so the post reflects what you found important, not a generic summary.
Each doc is used once
Docs that have already been posted are remembered, so nothing is published twice even if you edit them later.
How it works
What happens, step by step
Every 30 minutes ClickRuntime checks your Drive folder for documents it has not seen before.
It reads the text of each new document.
AI writes a short LinkedIn post about its main idea in your voice.
The post is published on LinkedIn and the document is remembered, so it is not posted again.
Before it runs live
- Connect Google Drive
- Connect LinkedIn
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 Google Drive and LinkedIn steps into one automation
Under the hood
The code that runs this automation
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, report_fetched, credentials, http, state, ai
FOLDER_ID = "your-drive-folder-id"
@on_trigger
def run(event):
drive = build("drive", "v3", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False)
done = set(state.get("done") or [])
files = drive.files().list(q=f"'{FOLDER_ID}' in parents and mimeType = 'application/vnd.google-apps.document' and trashed = false",
fields="files(id,name)", pageSize=20).execute()["files"]
new = [f for f in files if f["id"] not in done]
report_fetched(len(new))
if not new:
return {"posted": 0}
headers = {"Authorization": "Bearer " + credentials.connection("linkedin", "main"), "LinkedIn-Version": "202405"}
me = http.get("https://api.linkedin.com/v2/userinfo", headers=headers).json()["sub"]
for f in new:
text = drive.files().export(fileId=f["id"], mimeType="text/plain").execute().decode(errors="ignore")
post = ai.generate(f"Notes titled '{f['name']}':\n{text[:6000]}", max_output_tokens=400,
system="Write a 150-word first-person LinkedIn post about the single most useful idea in these notes.").text
http.post("https://api.linkedin.com/rest/posts", headers=headers, json={
"author": f"urn:li:person:{me}", "commentary": post, "visibility": "PUBLIC", "lifecycleState": "PUBLISHED",
"distribution": {"feedDistribution": "MAIN_FEED", "targetEntities": [], "thirdPartyDistributionChannels": []}}).raise_for_status()
done.add(f["id"])
state.set("done", list(done))
return {"posted": len(new)}FAQ
Common questions
Which file types does it read?
What if I edit a doc after it was posted?
Can I review the post first?
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
Turn one idea into posts for every network
Send one idea and get a LinkedIn post published plus versions for other networks saved in Drive.
See how it worksPublish a LinkedIn post with an image each day
Each day the next topic on your list becomes a LinkedIn post with a matching image, saved in Drive and published.
See how it worksPost videos and images from Drive to LinkedIn
Drop a video or image in a Drive folder and it is posted to LinkedIn on your schedule, then moved to a Posted folder.
See how it worksKeep exploring
Set up “Turn new Drive docs into LinkedIn posts” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.