Automation always felt like magic to me — you set up a workflow once, and things just… happen. No manual steps, no wasted time. Recently, I decided to test this magic with n8n, an open-source automation tool.
My mission?
👉 Take tasks from Notion, turn them into polished LinkedIn posts with GPT, and publish them automatically.
Sounds simple, right? Spoiler: it wasn’t. Here’s the behind-the-scenes of how I built it, the questions I asked along the way, and the fixes that finally made it work.
🔹 The Starting Point: n8n + Notion + LinkedIn
I already had the idea mapped out:
Trigger → When a Notion card is marked as Done.
Generate Post → Use GPT to turn the title/description into a LinkedIn-ready draft.
Quality Check → Run it through a second GPT node for polish.
Publish → Send it directly to LinkedIn.
Simple workflow on paper, but in practice? That’s where the learning began.
❓ Question 1: “How do I trigger from Notion?”
This was my first roadblock. I wanted posts to publish only when a Notion task was complete.
Fix:
I set up the Notion Trigger Node in n8n.
Configured it to watch my task database and fire when the Status field changed to Done.
✅ This part worked beautifully.
❓ Question 2: “How do I get GPT to write LinkedIn posts?”
I didn’t just want raw text; I wanted posts that sounded natural, professional, and engaging.
Fix:
Used an HTTP Request Node to call GPT API (for more control).
Wrote a structured prompt:
Take this task title and description and turn it into a LinkedIn post:
Title: {{$json["title"]}}
Description: {{$json["description"]}}
Output: A neatly formatted LinkedIn draft.
But I wasn’t satisfied. Some outputs were clunky, so I asked another question.
❓ Question 3: “How do I make sure the quality is good?”
The first drafts needed work. Some posts were too robotic.
Fix:
I added a second GPT node — a QA check. Its job: refine the draft, fix grammar, and keep it under LinkedIn’s 1300-character limit.
Now the workflow had a built-in editor.
❓ Question 4: “Why won’t the LinkedIn node work?”
This was the biggest frustration. n8n has a LinkedIn “Create a Post” node, but I hit authentication errors over and over. The node simply wouldn’t push posts live.
Fix:
After trial and error, I abandoned the node and built a workaround with the HTTP Request Node:
Manually set up OAuth credentials from my LinkedIn developer app.
Sent a POST request with this payload:
{
"author": "urn:li:person:YOUR_PERSON_ID",
"lifecycleState": "PUBLISHED",
"specificContent": {
"com.linkedin.ugc.ShareContent": {
"shareCommentary": {
"text": "{{$json['qa_text']}}"
},
"shareMediaCategory": "NONE"
}
},
"visibility": {
"com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC"
}
}
🎉 Finally, my test posts started appearing on LinkedIn.
❓ Question 5: “What’s next after the first success?”
With the basic pipeline working, my next set of questions became about improvement:
How can I track engagement automatically?
Can I schedule posts for later instead of publishing immediately?
Can I expand this workflow to Twitter or Medium too?
Future fixes & upgrades I’m planning:
Use LinkedIn’s API to fetch likes, comments, and shares.
Add a Cron Node to schedule posts.
Duplicate the workflow for multiple platforms.
Looking back, here’s what this project taught me:
Start small. A single Notion trigger was enough to learn the ropes.
APIs aren’t always plug-and-play. The LinkedIn node looked easy, but the HTTP Request method was more reliable.
GPT works best with structure. A carefully crafted prompt plus a QA step made the posts sound authentic.
Automation = iteration. It’s not “done” after the first success. You build, test, fix, and repeat.
Here’s what I ended up with:
Notion → GPT Draft → GPT QA → LinkedIn Post (via HTTP Request)
Every time I check off a task in Notion, a new LinkedIn update is born. No manual writing, no copy-pasting — just automation doing its job.
n8n Documentation → https://docs.n8n.io
Notion API Docs → https://developers.notion.com
LinkedIn API Docs → https://learn.microsoft.com/en-us/linkedin/
OpenAI API Docs → https://platform.openai.com/docs
This wasn’t just about building a workflow — it was about asking the right questions and finding fixes step by step. The errors were frustrating at first, but each one forced me to dig deeper into APIs, nodes, and automation logic.
Now I have a workflow that turns productivity into visibility: every completed task is instantly transformed into a polished LinkedIn post. And this is only the beginning — next up, I’ll be refining prompts, adding analytics, and scaling to other platforms.