Solo creators, PMs, and content teams who queue LinkedIn ideas in Google Sheets and want them posted on a fixed schedule with AI-generated copy.
The workflow runs on a schedule (Mon/Wed/Fri at 09:30). It pulls the first Google Sheet row with Status = Pending, generates a LinkedIn-ready post from Post title using an OpenAI prompt, publishes to your LinkedIn profile, then updates the same row to Done and writes the final post back to the sheet.
Minimum required columns
id
— unique integer/string used to update the same row laterStatus
— allowed values: Pending
or Done
Post title
— short prompt/topic for the AI modelRecommended columns
Output post
— where the workflow writes the final text (use this header, or keep your existing Column 5
)Hashtags
(optional) — comma-separated list (the prompt can append these)Image URL
(optional) — public URL; add an extra LinkedIn “Create Post” input if you post with media laterNotes
(optional) — extra hints for tone, audience, or CTAExample header row
id | Status | Post title | Hashtags | Image URL | Output post | Notes
Example rows (inputs → outputs)
1 | Pending | Why I moved from Zapier to n8n | #automation,#nocode | | | Focus on cost + flexibility
2 | Done | 5 lessons from building a rules engine | #product,#backend | | This is the final posted text... |
Resulting Output post
(for row 1 after publish)
I switched from Zapier to n8n for three reasons: control, flexibility, and cost.
Here’s what changed in my stack and what I’d repeat if I had to do it again.
#automation #nocode
If your sheet already has a column named Column 5, either rename it to Output post and update the mapping in the final Google Sheets Update node, or keep Column 5 as is and leave the node mapping untouched.
Notes
/Hashtags
) as input. The agent returns JSON with a post
field. Model set to gpt-4o-mini by default.{{$json.output.post}}
to the configured person (your profile URN).id
, sets Status = Done, and writes the generated text into Output post (or your existing output column).Hashtags
column in the prompt so the model appends them cleanly.Image URL
(requires LinkedIn media upload endpoints).No post created
Status = Pending
?Sheet not updating
id
. If you changed field names, remap them.id
values are unique.LinkedIn errors (403/401/404)
Rate limit (429) or model errors
Post too long or broken formatting
Timezone mismatch
Need to post at a different cadence, or push two posts per day? Tweak the Schedule and Limit nodes and you’re set.