Google Calendar + Google Docs, LinkedIn drafts ready
You finish a great call, you know there were 2 or 3 quotable moments… and then the transcript disappears into a folder, your notes are messy, and LinkedIn stays quiet for another week.
LinkedIn draft automation is a relief for coaches who run back-to-back sessions, for consultants trying to stay visible between projects, and for marketing leads who need consistent thought leadership without begging for “just one more post.”
This workflow turns scheduled meetings into polished LinkedIn drafts in Google Docs, then emails you review links so publishing becomes a quick decision, not an afternoon project.
How This Automation Works
See how this solves the problem:
n8n Workflow Template: Google Calendar + Google Docs, LinkedIn drafts ready
flowchart LR
subgraph sg0["New Event Started Flow"]
direction LR
n0@{ icon: "mdi:memory", form: "rounded", label: "Simple Memory", pos: "b", h: 48 }
n1@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter Unwanted Event Type", pos: "b", h: 48 }
n3@{ icon: "mdi:cog", form: "rounded", label: "Wait till Even End", pos: "b", h: 48 }
n4@{ icon: "mdi:message-outline", form: "rounded", label: "Need Transcript to be Provided", pos: "b", h: 48 }
n5@{ icon: "mdi:robot", form: "rounded", label: "Personal LinkedIn Generator", pos: "b", h: 48 }
n6@{ icon: "mdi:memory", form: "rounded", label: "Simple Memory1", pos: "b", h: 48 }
n7@{ icon: "mdi:robot", form: "rounded", label: "Company LinkedIn Generator", pos: "b", h: 48 }
n8@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser1", pos: "b", h: 48 }
n9@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Fields", pos: "b", h: 48 }
n10@{ icon: "mdi:cog", form: "rounded", label: "Create New Folder", pos: "b", h: 48 }
n11@{ icon: "mdi:cog", form: "rounded", label: "Create Transcript Doc", pos: "b", h: 48 }
n12@{ icon: "mdi:cog", form: "rounded", label: "Create Content Doc", pos: "b", h: 48 }
n13@{ icon: "mdi:cog", form: "rounded", label: "Update Transcript Doc", pos: "b", h: 48 }
n14@{ icon: "mdi:cog", form: "rounded", label: "Update Content Doc", pos: "b", h: 48 }
n15@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Matching Post Type", pos: "b", h: 48 }
n16@{ icon: "mdi:message-outline", form: "rounded", label: "Content Results", pos: "b", h: 48 }
n17@{ icon: "mdi:play-circle", form: "rounded", label: "New Event Started", pos: "b", h: 48 }
n9 --> n10
n0 -.-> n5
n6 -.-> n7
n10 --> n12
n17 --> n2
n12 --> n14
n15 --> n5
n15 --> n7
n14 --> n11
n3 --> n4
n11 --> n13
n13 --> n16
n1 -.-> n5
n8 -.-> n7
n7 --> n9
n2 --> n3
n5 --> n9
n4 --> n15
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n17 trigger
class n1,n5,n7,n8 ai
class n0,n6 ai
class n2,n15 decision
The Challenge: Turning calls into posts (without losing the good parts)
Meeting transcripts are full of real language, real objections, and real lessons. That’s exactly what performs on LinkedIn. But the moment a call ends, you’re back in delivery mode: follow-ups, admin, another meeting. So the “I’ll write that later” promise turns into a graveyard of half-saved transcripts, scattered notes, and drafts that never get finished. Honestly, it’s not a motivation problem. It’s a workflow problem.
The friction compounds. Here’s where it breaks down most teams.
- You spend about an hour hunting for the right transcript, then still second-guess what mattered most.
- Drafts start from a blank page, which means you rewrite what you already said on the call.
- Brand voice gets inconsistent because every post is “made from scratch” in a rush.
- Review and approval turns into a thread of links and screenshots that nobody wants to search later.
The Fix: Calendar-triggered transcripts to LinkedIn drafts in Google Docs
This n8n workflow watches your Google Calendar for the meetings you care about (like coaching calls, sales debriefs, client check-ins). When a matching event ends, it waits for completion and then emails you a simple request to paste in the transcript and choose what kind of post you want. From there, AI analyzes the transcript using your saved brand guidelines, pulls out the strongest insights, and generates a LinkedIn-ready draft. Finally, it creates a neatly organized Google Drive folder and two Google Docs: one with the transcript for reference, and one with the finished post you can edit and publish.
The workflow begins with a calendar event trigger and a keyword filter. After you provide the transcript, it routes to the right generator (personal post or company post), maps the fields, builds the docs, then sends Gmail review links so you can approve fast.
What Changes: Before vs. After
| What This Eliminates | Impact You’ll See |
|---|---|
|
|
Real-World Impact
Say you do 4 client calls a week and you want 2 LinkedIn posts from them. Manually, it’s easy to burn about 45 minutes per post: finding the transcript, pulling highlights, drafting, and formatting (so roughly 1.5 hours a week). With this workflow, the calendar trigger handles timing, you paste the transcript when prompted (about 5 minutes), and you get Google Docs links back for quick edits. For most people, that’s about an hour back every week, plus far fewer “missed idea” moments.
Requirements
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Calendar for detecting when meetings end
- Gmail to request transcripts and send review links
- Google Drive + Google Docs for organized draft storage
- LangChain provider API key (get it from your LLM provider dashboard)
Skill level: Intermediate. You’ll be editing filters, prompts, and Google connections, but you won’t be writing code.
Need help implementing this? Talk to an automation expert (free 15-minute consultation).
The Workflow Flow
Your calendar ends a matching meeting. Google Calendar triggers the workflow, then a keyword filter keeps it focused on the calls that should become content (not every internal sync).
A short delay makes timing reliable. The workflow waits until the event is truly finished, then sends a Gmail message asking for the transcript and a post type preference.
AI turns raw language into a usable draft. Based on your selection, n8n routes to the personal or company generator. Your stored brand guidelines (memory buffer) shape the tone so the output sounds like you wrote it.
Docs are created, filled, and sent to you. n8n generates a Drive folder, builds two Google Docs (transcript + content), writes the text into each, then emails you the review links.
You can easily modify the calendar keyword filter to target different meeting types based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Calendar Event Trigger
Set the workflow to watch for meeting starts, filter relevant events, and wait until the meeting ends before requesting a transcript.
- Add and open Calendar Event Trigger, then set Trigger On to
eventStartedand confirm the calendar selection. - In Filter Event Keywords, set the condition to check Summary with
={{ $('Calendar Event Trigger').item.json.summary }}containskey words. - In Delay Until Event Ends, set Resume to
specificTimeand Date Time to={{ $('Filter Event Keywords').item.json.end.dateTime }}. - Confirm the flow from Calendar Event Trigger → Filter Event Keywords → Delay Until Event Ends.
Tip: If events are skipped, double-check the keyword filter in Filter Event Keywords and your calendar selection in Calendar Event Trigger.
Step 2: Connect Google Workspace
Provide the required Google credentials for Calendar, Gmail, Drive, and Docs so the workflow can send emails and create documents.
- Credential Required: Connect your Google Calendar OAuth2 credentials in Calendar Event Trigger.
- Credential Required: Connect your Gmail OAuth2 credentials in Request Transcript Email and Send Content Links.
- Credential Required: Connect your Google Drive OAuth2 credentials in Generate Drive Folder.
- Credential Required: Connect your Google Docs OAuth2 credentials in Build Content Doc, Write Content Doc, Build Transcript Doc, and Write Transcript Doc.
⚠️ Common Pitfall: The Google Docs nodes require access to the same Drive as Generate Drive Folder. Mismatched accounts can cause document creation failures.
Step 3: Set Up AI Post Generation
Configure the AI agents, memory buffers, and structured parsers to generate LinkedIn posts based on the transcript response.
- In Request Transcript Email, keep Operation as
sendAndWaitand Response Type ascustomForm, then verify the form fields (Meeting Transcript, Post Type, Tone of Voice, Additional Instructions). - In Route by Post Type, keep the two rules that compare
={{ $json.data['Post Type'] }}toPersonal LinkedIn PostandCompany LinkedIn Post. - Configure Personal Post Generator with the provided prompt and ensure it uses the input expressions like
{{ $json.data['Meeting Transcript'] }}and{{ $json.data['Tone of Voice'] }}. - Configure Company Post Generator with the provided prompt and ensure it uses the same input expressions for transcript, post type, and tone.
- Keep Context Memory Buffer connected to Personal Post Generator, and Company Memory Buffer connected to Company Post Generator.
- Keep Structured Result Parser connected to Personal Post Generator and Company Result Parser connected to Company Post Generator as output parsers.
Credential Required: Connect your AI model credentials in Personal Post Generator and Company Post Generator. The memory and parser sub-nodes (Context Memory Buffer, Structured Result Parser, Company Memory Buffer, Company Result Parser) inherit credentials from the parent agent, so add credentials to the agent nodes, not the sub-nodes.
Step 4: Configure Output and Document Actions
Map AI outputs to fields, create a Drive folder, build the documents, write content, and send the final links.
- In Map Post Fields, set post_title to
={{ $json.output.post_title }}and post_content to={{ $json.output.post_content }}. - In Generate Drive Folder, keep Resource as
folderand set Name to=(or replace with a meaningful name). - In Build Content Doc, set Title to
={{ $('Map Post Fields').item.json.post_title }}and Folder ID to={{ $('Generate Drive Folder').item.json.id }}. - In Write Content Doc, set Operation to
update, Document URL to={{ $('Build Content Doc').item.json.id }}, and insert content with={{ $('Map Post Fields').item.json.post_content }}. - In Build Transcript Doc, set Title to
=Coaching's Transcriptand Folder ID to={{ $('Generate Drive Folder').item.json.id }}. - In Write Transcript Doc, set Operation to
update, Document URL to={{ $('Build Transcript Doc').item.json.id }}, and insert transcript text with={{ $('Request Transcript Email').item.json.data['Meeting Transcript'] }}. - In Send Content Links, keep the message template and verify the document links use
{{ $('Build Content Doc').item.json.id }}and{{ $('Build Transcript Doc').item.json.id }}. - Confirm the sequence Map Post Fields → Generate Drive Folder → Build Content Doc → Write Content Doc → Build Transcript Doc → Write Transcript Doc → Send Content Links.
Tip: The Flowpast Branding sticky note is informational only and can be left as-is or removed without affecting the workflow.
Step 5: Test and Activate Your Workflow
Run an end-to-end test to ensure the trigger, email reply, AI generation, and document creation work together.
- Click Execute Workflow and create a calendar event whose summary contains
key wordsto trigger Calendar Event Trigger. - Wait for Delay Until Event Ends to resume, then confirm the transcript request email is sent from Request Transcript Email.
- Reply to the email with the form data, then verify Route by Post Type sends data to either Personal Post Generator or Company Post Generator.
- Confirm Send Content Links emails links to the two Google Docs and that both documents contain the generated post and the transcript.
- When satisfied, toggle the workflow to Active so it runs automatically for new meetings.
Watch Out For
- Google Calendar or Gmail credentials can expire or need specific permissions. If things break, check the connected account status inside n8n’s Credentials tab first.
- If you’re using Wait nodes or external processing, timing varies. Bump up the wait duration if downstream nodes fail because the meeting isn’t fully “ended” yet.
- Default prompts in AI nodes are generic. Add your brand voice early (in the memory buffer and the generator prompts) or you’ll be editing outputs forever.
Common Questions
About an hour if your Google accounts are already connected.
Yes. No coding required, but someone should be comfortable editing prompts and testing with a sample transcript.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in LangChain/LLM API costs, which vary based on provider and transcript length.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Start with “Filter Event Keywords” so only the right meetings trigger drafts. Then adjust the prompts in the Personal Post Generator or Company Post Generator to match your format (story post, framework post, punchy take, softer educational tone). You can also swap the “Send Content Links” email copy to match your internal review process, especially if multiple people approve posts.
Usually it’s expired Google credentials or missing permissions on the connected account. Reconnect Google Calendar in n8n, confirm it can read events, then double-check the calendar filter so it’s pointing at the right calendar. If it works sometimes and fails other times, rate limits or shared-team calendars can also be the culprit.
Plenty for most small teams: dozens of meetings a week is typical, with the main bottleneck being your AI provider and how long transcripts are.
Often, yes, because this workflow isn’t just “move text from A to B.” You’re routing by post type, storing brand context, parsing structured outputs, and creating multiple docs in one run, which is where n8n tends to feel more flexible and less paywalled. Zapier or Make can still work if you want a simpler version, like “form submission → draft doc,” and you don’t care about memory-based brand consistency. If you’re posting from both personal and company perspectives, n8n’s branching is a big deal. And if you want to keep costs predictable, self-hosting can help. Talk to an automation expert if you’re not sure which fits.
You already have the raw material for great LinkedIn posts. This workflow just makes sure it doesn’t get lost, and that your next draft shows up while the call is still fresh.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.