🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Notion + LinkedIn: posts drafted and queued for you

Lisa Granqvist Partner Workflow Automation Expert

You open Notion to capture an idea, then it sits there. Days pass. When you finally try to turn it into a LinkedIn post, you’re rewriting from scratch, hunting for a good hook, and thinking, “Why is this so hard?”

Content managers feel this pain weekly. A solo founder feels it at night after client work. And marketing leads get it from the pressure to ship consistently. This Notion LinkedIn automation takes rough ideas and turns them into drafted posts (with images) without you babysitting the process.

You’ll learn what the workflow does, what you need to connect, and how to run it safely so drafts get reviewed or posts go live automatically.

How This Automation Works

Here’s the complete workflow you’ll be setting up:

n8n Workflow Template: Notion + LinkedIn: posts drafted and queued for you

Why This Matters: Notion Ideas Don’t Publish Themselves

Most teams already have a system for capturing ideas. The problem is everything after capture. Turning a messy Notion note into a clean LinkedIn draft means context switching, rewriting, trimming to the right length, and then remembering to add an image that doesn’t look like stock-photo filler. Then comes the worst part: tracking what’s still a draft, what’s approved, and what actually went out. You lose time twice. Once while writing, and again while trying to remember what happened last week.

It adds up fast. Here’s where it usually breaks down in real life.

  • Ideas pile up in Notion because “I’ll write it later” turns into “maybe next month.”
  • Drafts get copied into LinkedIn manually, which invites formatting mistakes and last-minute edits.
  • Without a clear status, someone ends up asking, “Did we post this already?”
  • Creating a decent image for each post takes long enough that you start skipping images altogether.

What You’ll Build: Notion-to-LinkedIn Drafting With AI + Status Tracking

This workflow runs on a daily schedule and checks your Notion “Ideas” database for items that are still unpublished. For each eligible idea, it normalizes the fields (so messy tags, topics, and notes don’t break the process), then asks OpenAI to generate a structured content draft you can actually use. Next, it creates a custom image by generating an image prompt (OpenAI again) and sending it to Replicate’s Flux-Schnell model, then fetching the finished image file. At that point you decide how hands-off you want to be: publish directly to LinkedIn with the image, or email yourself the draft for review. Either way, Notion gets updated so your pipeline stays truthful instead of aspirational.

The workflow starts with a Cron trigger and pulls candidates from Notion. AI writes the post and prepares an image prompt, Replicate generates the image, and then the workflow either publishes to LinkedIn or sends a Gmail review email. Finally, it marks the right status back in Notion and can email a publish notice so you’re never guessing.

What You’re Building

Expected Results

Let’s say you want 5 LinkedIn posts per week and you start from rough Notion bullets. Manually, drafting plus polishing plus making a simple image is often about 40 minutes per post, so roughly 3+ hours a week. With this workflow, you drop ideas into Notion as usual, then spend about 5 minutes per post reviewing what the AI produced (and only edit if needed). That’s around 2 hours back most weeks, with better consistency.

Before You Start

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Notion to store Ideas and publish status.
  • OpenAI to generate LinkedIn drafts and image prompts.
  • Replicate to generate Flux-Schnell post images.
  • LinkedIn to publish posts with an image.
  • Gmail for draft review emails and notifications.
  • Notion API access (create an integration in Notion and copy the token).

Skill level: Beginner. You’ll connect accounts, paste a few IDs, and run one test idea before turning on the daily schedule.

Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).

Step by Step

A daily check runs automatically. The Cron trigger starts the workflow once per day, so your idea database gets processed even if you forget.

Notion ideas are pulled and filtered. n8n retrieves entries from your Notion Ideas database, then code steps filter for unpublished items and make sure the fields are usable (for example, turning inconsistent multi-select values into a consistent list).

OpenAI creates the written draft. The workflow generates a LinkedIn post draft in a predictable JSON structure, validates it, then creates an “Articles/output” record in Notion so each draft has a home and a history.

An image is generated and the publish path is chosen. OpenAI writes an image prompt, Replicate generates the image, and then an “if” check decides: publish to LinkedIn (and email a publish notice) or email a draft for review (and mark the status as Draft).

You can easily modify the publish decision to require approval every time, or flip it so only “approved” ideas get published. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Cron Trigger

This workflow starts on a schedule using the cron trigger, then initializes configuration values for downstream nodes.

  1. Add the Scheduled Run Trigger node and set the schedule to run at 19:00 (hour 19) in triggerTimes.
  2. Connect Scheduled Run Trigger to Assign Config Values.
  3. In Assign Config Values, keep Keep Only Set enabled (true).
  4. Set config fields in Assign Config Values: NOTION_DB_ID to [YOUR_ID], NOTION_PAGE_PARENT to [YOUR_ID], LINKEDIN_PERSON_URN to [YOUR_ID], OPENAI_MODEL to gpt-4.1-mini, EMAIL_TO to [YOUR_EMAIL], and LINKEDIN_PUBLISH to true.

Step 2: Connect Notion and Prepare Idea Records

This step pulls unpublished ideas from Notion, filters them, and creates a parallel branch for counting eligible items and iterating through records.

  1. Add Retrieve Notion Ideas and set Resource to databasePage, Operation to getAll, and Return All to true.
  2. Set Database ID in Retrieve Notion Ideas to {{$json.NOTION_DB_ID}}.
  3. Set Filter Type to json and Filter JSON to { "property": "published", "checkbox": { "equals": false } }.
  4. Credential Required: Connect your notionApi credentials in Retrieve Notion Ideas.
  5. Connect Retrieve Notion Ideas to Filter Unpublished Map, which filters and maps fields for downstream use.
  6. Filter Unpublished Map outputs to both Batch Iterator and Count Valid Items in parallel.
  7. In Batch Iterator, set Batch Size to 1 and connect it to Normalize List Fields.
  8. Connect Count Valid Items to Eligible Items Check to evaluate {{$json.eligible_count > 0}}.
  9. On the Eligible Items Check false branch, connect to Notify No Records and set Send To to {{ $('Assign Config Values').item.json.EMAIL_TO }}.
  10. Credential Required: Connect your gmailOAuth2 credentials in Notify No Records.
⚠️ Common Pitfall: If NOTION_DB_ID is missing or incorrect in Assign Config Values, Retrieve Notion Ideas will return zero records and trigger Notify No Records.

Step 3: Set Up AI Draft Generation and Validation

These nodes normalize fields, generate blog and LinkedIn drafts with OpenAI, and validate the JSON response before creating a Notion article record.

  1. In Normalize List Fields, keep the default code to convert strings into arrays and carry config values from Assign Config Values.
  2. Connect Normalize List Fields to Generate Content Draft.
  3. In Generate Content Draft, enable Simplify with {{$json}} output and set JSON Output to true.
  4. Credential Required: Connect your openAiApi credentials in Generate Content Draft.
  5. Connect Generate Content Draft to Parse and Validate JSON, which repairs and validates the model output.
  6. Connect Parse and Validate JSON to Create Article Record.
  7. In Create Article Record, set Title to {{$json.openai.blog.title}} and map properties like slug, excerpt, keywords, and published_at using the provided expressions.
  8. Credential Required: Connect your notionApi credentials in Create Article Record.

Step 4: Configure Publishing, Image Generation, and Notifications

After the article record is created, the workflow decides whether to publish to LinkedIn or send a draft notice, then handles image generation and status updates.

  1. Connect Create Article Record to Check LinkedIn Publish Flag using the condition {{ $('Assign Config Values').item.json.LINKEDIN_PUBLISH || false }}.
  2. If true, connect to Compose Image Prompt and keep its structured content message (title/excerpt/draft/alt/keywords) intact.
  3. Credential Required: Connect your openAiApi credentials in Compose Image Prompt.
  4. Connect Compose Image Prompt to Request Image Generation and set URL to https://api.replicate.com/v1/models/black-forest-labs/flux-schnell/predictions with the JSON body { "input": { "prompt": "{{ $json.message.content }}", "aspect_ratio": "16:9" } }.
  5. Credential Required: Connect your httpBearerAuth credentials in Request Image Generation.
  6. Connect Request Image Generation to Fetch Generated Image, then to Publish LinkedIn Post.
  7. In Publish LinkedIn Post, set Text to {{ $('Generate Content Draft').item.json.message.content.linkedin.final_text }} and Person to [YOUR_ID].
  8. Credential Required: Connect your linkedInOAuth2Api credentials in Publish LinkedIn Post.
  9. Connect Publish LinkedIn Post to Send Publish Notice, then to Mark Published Status.
  10. Credential Required: Connect your gmailOAuth2 credentials in Send Publish Notice.
  11. Credential Required: Connect your notionApi credentials in Mark Published Status.
  12. If Check LinkedIn Publish Flag is false, connect to Send Draft Notice and then to Mark Draft Status.
  13. Credential Required: Connect your gmailOAuth2 credentials in Send Draft Notice.
  14. Credential Required: Connect your notionApi credentials in Mark Draft Status.
⚠️ Common Pitfall: Publish LinkedIn Post requires Person to match your LinkedIn URN. If it’s incorrect, publishing will fail even if credentials are valid.

Step 5: Add Error Handling

Error handling captures failures anywhere in the workflow and emails a detailed report.

  1. Add Error Catch Trigger to capture workflow errors.
  2. Connect Error Catch Trigger to Dispatch Error Report.
  3. In Dispatch Error Report, keep Send To as {{$json.execution?.error?.workflow?.data?.startData?.runData?.['Assign Config Values']?.[0]?.json?.EMAIL_TO || '[YOUR_EMAIL]'}}} so errors go to your configured email.
  4. Credential Required: Connect your gmailOAuth2 credentials in Dispatch Error Report.

Step 6: Test and Activate Your Workflow

Run a manual test to verify Notion retrieval, AI generation, and publishing logic before enabling production scheduling.

  1. Click Execute Workflow and confirm Retrieve Notion Ideas returns items with published = false.
  2. Verify Filter Unpublished Map outputs to both Batch Iterator and Count Valid Items in parallel, and that Eligible Items Check routes correctly.
  3. Ensure Generate Content Draft returns valid JSON and Parse and Validate JSON does not throw validation errors.
  4. Confirm Create Article Record creates a new Notion page with expected fields like slug, excerpt, and status.
  5. If LINKEDIN_PUBLISH is true, confirm Publish LinkedIn Post succeeds and Send Publish Notice is emailed; otherwise, confirm Send Draft Notice and Mark Draft Status run.
  6. Once validated, set the workflow to Active to enable scheduled runs via Scheduled Run Trigger.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Troubleshooting Tips

  • Notion credentials can expire or lack database permissions. If things break, check the Notion integration access to both “Ideas” and “Articles” databases first.
  • If you’re using external image rendering with Replicate, processing times vary. Bump up the wait duration (or add one) if the fetch step fails because the image isn’t ready yet.
  • Default OpenAI prompts are generic. Add your brand voice (tone, banned phrases, formatting rules) near “Generate Content Draft” or you will be editing outputs forever.

Quick Answers

What’s the setup time for this Notion LinkedIn automation?

About 30 minutes if your accounts are already set up.

Is coding required for this Notion LinkedIn automation?

No. You’ll mainly connect accounts and paste in your Notion database IDs.

Is n8n free to use for this Notion LinkedIn automation workflow?

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 OpenAI API costs and Replicate image generation costs, which vary with usage.

Where can I host n8n to run this automation?

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.

Can I modify this Notion LinkedIn automation workflow for different use cases?

Yes, and you’ll probably want to. You can change the approval behavior by editing the “Check LinkedIn Publish Flag” decision, so posts always go to Gmail first or only publish when a Notion field says “Approved.” You can also customize the “Generate Content Draft” prompt to enforce your formatting (hook length, emoji rules, CTA style), and swap the image style by adjusting “Compose Image Prompt.”

Why is my Notion connection failing in this workflow?

Usually it’s permissions. Make sure your Notion integration has been invited to both databases, and that the database IDs in your config are correct. If it used to work and suddenly stopped, regenerate the token and update it in n8n. Also double-check that renamed properties in Notion still match what the workflow expects.

What volume can this Notion LinkedIn automation workflow process?

Plenty for most small teams, but image generation is the bottleneck.

Is this Notion LinkedIn automation better than using Zapier or Make?

Often, yes. This workflow relies on branching logic (publish vs draft), structured AI output validation, and multi-step media handling, which is where Zapier can get expensive or awkward. n8n also gives you self-hosting, so you’re not paying per tiny step when you iterate on prompts. Make can handle a lot too, but complex error handling and “try/catch” style reporting is usually cleaner in n8n. If you’re only doing “Notion row to LinkedIn post” with no AI and no review path, then Zapier or Make may feel simpler. Talk to an automation expert if you want a quick recommendation for your setup.

Once this is running, your Notion ideas stop being a graveyard and start being a pipeline. The workflow handles the repetitive parts so you can focus on saying something worth reading.

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.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal