AutomationFlowsAI & RAG › Automate Linkedin Content Creation with Openai, Notion, and Google Slides

Automate Linkedin Content Creation with Openai, Notion, and Google Slides

ByKean @kean on n8n.io

What it is An automated LinkedIn content system that takes a simple form (idea + optional file), generates LinkedIn posts with OpenAI, stores them in Notion, builds Google Slides carousels, and auto-publishes posts (text, image, or document) to LinkedIn on a schedule while…

Event trigger★★★★★ complexityAI-powered35 nodesForm TriggerOpenAINotionGoogle SlidesGoogle DriveLinkedInHTTP RequestGmail
AI & RAG Trigger: Event Nodes: 35 Complexity: ★★★★★ AI nodes: yes Added:

This workflow corresponds to n8n.io template #11252 — we link there as the canonical source.

This workflow follows the Form Trigger → Gmail recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "8254bcaf-7a2a-446f-9efd-7938bce14cc4",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1664,
        -256
      ],
      "parameters": {
        "color": 7,
        "width": 776,
        "height": 536,
        "content": "## Generate LinkedIn posts\n\nChecks if an idea was provided. \n\nNo idea: generates 10 generic posts across funnel stages (BOFU, MOFU TOFU)\nWith idea: creates 3 targeted posts."
      },
      "typeVersion": 1
    },
    {
      "id": "883f3cd1-587a-47b9-ade0-ee5fa2e01760",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        832,
        32
      ],
      "parameters": {
        "options": {},
        "formTitle": "LinkedIn Post Generator",
        "formFields": {
          "values": [
            {
              "fieldLabel": "What is your idea?"
            },
            {
              "fieldType": "file",
              "fieldLabel": "Upload file"
            }
          ]
        },
        "formDescription": "This LinkedIn Post Generator creates a specific post. If left empty, it will generate 10 new posts. "
      },
      "typeVersion": 2.2
    },
    {
      "id": "d2e9ebdb-a874-43c8-9042-a825ff2c095d",
      "name": "Idea available?",
      "type": "n8n-nodes-base.switch",
      "position": [
        1712,
        64
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "No idea",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "2704929a-7a9e-4f41-a45a-4c78cb6bf446",
                    "operator": {
                      "type": "string",
                      "operation": "empty",
                      "singleValue": true
                    },
                    "leftValue": "={{ $('On form submission').item.json['What is your idea?'] }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Idea",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "915856ae-3aed-4076-8a88-7912a8bc3a2d",
                    "operator": {
                      "type": "string",
                      "operation": "notEmpty",
                      "singleValue": true
                    },
                    "leftValue": "={{ $('On form submission').item.json['What is your idea?'] }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "2ebc8818-2c22-498e-801f-1ee8c6622bd0",
      "name": "Create 10 LinkedIn Posts",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1904,
        -80
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "chatgpt-4o-latest",
          "cachedResultName": "CHATGPT-4O-LATEST"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "role": "system",
              "content": "\u2705 SYSTEM PROMPT: Generate 10 LinkedIn Posts with Metadata\nYou are a professional LinkedIn storyteller for a founder who offers AI automation services to small B2B companies.\nYour task is to generate 10 high-performing LinkedIn posts at once.\nEach post should follow the correct funnel logic: TOFU, MOFU, or BOFU.\nUse the founder\u2019s transformation and offer to drive relevance and conversions.\n\n\ud83e\uddfe Output Format (CSV-Ready)\nEach post must be structured as a row with:\n\nPost Title: Compelling, curiosity-driven, and aligned with funnel stage\n\nFunnel Stage: One of TOFU, MOFU, or BOFU\n\nFull Post Text: 10\u201318 line, story-based, short-paragraph post optimized for LinkedIn\n\nFormat output into a JSON with following format:\n{\n\"Post Title\": \"\",\n\"Funnel Stage\":\"\",\n\"Full Post Text\",\"\"\n}\n\n\ud83d\udd27 Funnel Stage Breakdown\n60% TOFU (6 posts): Emotional or relatable pain points, founder stories, big shifts, awareness\n\n30% MOFU (3 posts): Educational how-to, frameworks, tools, checklists\n\n10% BOFU (1 post): Clear offer, urgency, client result\n\n\u270d\ufe0f Style Guidelines\nShort paragraphs (1\u20133 lines each)\n\nNo emojis (or max 1, only if it reinforces tone)\n\nNo em-dashes\n\nUse plain, clear, confident language\n\nSpeak directly to founders/CEOs of small B2B companies\n\nPromote the offer: \u201cAI Opportunity Audit\u201d or a clear automation framework"
            }
          ]
        },
        "jsonOutput": true
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "executeOnce": false,
      "typeVersion": 1.8
    },
    {
      "id": "6f55b2bb-9bb4-4f50-b1c2-80d48e46b9a8",
      "name": "Create a database page",
      "type": "n8n-nodes-base.notion",
      "position": [
        2944,
        0
      ],
      "parameters": {
        "title": "={{ $json['message.content.posts']['Post Title'] }}",
        "options": {},
        "resource": "databasePage",
        "databaseId": {
          "__rl": true,
          "mode": "list",
          "value": "21ffcbff-0b02-8000-a269-d83f2ebee69a",
          "cachedResultUrl": "https://www.notion.so/21ffcbff0b028000a269d83f2ebee69a",
          "cachedResultName": "LinkedIn Auto Posts"
        },
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "Funnel Stage|select",
              "selectValue": "={{ $json['message.content.posts']['Funnel Stage'] }}"
            },
            {
              "key": "Post Content|rich_text",
              "textContent": "={{ $json['message.content.posts']['Full Post Text'] }}"
            },
            {
              "key": "Status|status",
              "statusValue": "={{ $json.Status }}"
            },
            {
              "key": "Type|select",
              "selectValue": "={{ $json.Type }}"
            },
            {
              "key": "Idea|rich_text",
              "textContent": "={{ $json['What is your idea?'] }}"
            }
          ]
        }
      },
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "48e11acf-9c22-40d2-a169-c4153416789a",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        2560,
        -64
      ],
      "parameters": {
        "options": {
          "reset": false
        }
      },
      "typeVersion": 3
    },
    {
      "id": "98369824-b76b-469c-a33b-32efe11d2b3b",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        768,
        352
      ],
      "parameters": {
        "color": 7,
        "width": 1820,
        "height": 420,
        "content": "## Create carousel\n\nMonitors Notion for \"Create Carousel\" status. Generates slide content with OpenAI, populates a Google Slides template, and updates Notion with the carousel link."
      },
      "typeVersion": 1
    },
    {
      "id": "c4ac427a-98b7-4ed1-a04a-e24fa2134fba",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        768,
        800
      ],
      "parameters": {
        "color": 7,
        "width": 2260,
        "height": 716,
        "content": "## Publish to LinkedIn\n\nChecks every minute for scheduled posts ready to publish. \n\nDetects if there's an image or document attached, posts to LinkedIn in the correct format, and updates the status to \"Posted.\""
      },
      "typeVersion": 1
    },
    {
      "id": "4a20f42f-14e6-4c57-8ae9-e2b7d1311ba1",
      "name": "Create 3 LinkedIn Posts from idea",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1904,
        128
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "chatgpt-4o-latest",
          "cachedResultName": "CHATGPT-4O-LATEST"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "role": "system",
              "content": "=\u2705 SYSTEM PROMPT: Generate 3 LinkedIn Posts with Metadata\nYou are a professional LinkedIn storyteller for a founder who offers AI automation services to small B2B companies.\nYour task is to generate 3 high-performing LinkedIn posts at once based on user's idea.\nEach post should follow the correct funnel logic: TOFU, MOFU, or BOFU.\nUse the founder\u2019s transformation and offer to drive relevance and conversions.\n\n\ud83e\uddfe Output Format\nEach post must be structured as a row with:\n\nPost Title: Compelling, curiosity-driven, and aligned with funnel stage\n\nFunnel Stage: One of TOFU, MOFU, or BOFU\n\nFull Post Text: 10\u201318 line, story-based, short-paragraph post optimized for LinkedIn\n\nFormat output into a JSON with following format:\n{\n\"Post Title\": \"\",\n\"Funnel Stage\":\"\",\n\"Full Post Text\",\"\"\n}\n\n\ud83d\udd27 Funnel Stage Breakdown\nTOFU: Emotional or relatable pain points, founder stories, big shifts, awareness\n\nMOFU: Educational how-to, frameworks, tools, checklists\n\nBOFU: Clear offer, urgency, client result\n\n\u270d\ufe0f Style Guidelines\nShort paragraphs (1\u20133 lines each)\n\nNo emojis (or max 1, only if it reinforces tone)\n\nNo em-dashes\n\nUse plain, clear, confident language\n\nSpeak directly to founders/CEOs of small B2B companies\n\nPromote the offer: \u201cAI Opportunity Audit\u201d or a clear automation framework"
            },
            {
              "role": "assistant",
              "content": "={\"idea\": \"{{ $('On form submission').item.json['What is your idea?'] }}\"}"
            }
          ]
        },
        "jsonOutput": true
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "executeOnce": false,
      "typeVersion": 1.8
    },
    {
      "id": "2d5ebcec-cde6-42c1-bed4-e0cbc1050349",
      "name": "Replace text",
      "type": "n8n-nodes-base.googleSlides",
      "position": [
        1856,
        512
      ],
      "parameters": {
        "textUi": {
          "textValues": [
            {
              "text": "{{PostTitle}}",
              "replaceText": "={{ $('Message a model').item.json.message.content.PostTitle }}"
            },
            {
              "text": "{{PostSubtitle}}",
              "replaceText": "={{ $('Message a model').item.json.message.content.PostSubtitle }}"
            },
            {
              "text": "{{PointOneTitle}}",
              "replaceText": "={{ $('Message a model').item.json.message.content.PointOneTitle }}"
            },
            {
              "text": "{{PointOneSubtitle}}",
              "replaceText": "={{ $('Message a model').item.json.message.content.PointOneSubtitle }}"
            },
            {
              "text": "{{PointTwoTitle}}",
              "replaceText": "={{ $('Message a model').item.json.message.content.PointTwoTitle }}"
            },
            {
              "text": "{{PointTwoSubtitle}}",
              "replaceText": "={{ $('Message a model').item.json.message.content.PointTwoSubtitle }}"
            },
            {
              "text": "{{PointThreeTitle}}",
              "replaceText": "={{ $('Message a model').item.json.message.content.PointThreeTitle }}"
            },
            {
              "text": "{{PointThreeSubtitle}}",
              "replaceText": "={{ $('Message a model').item.json.message.content.PointThreeSubtitle }}"
            },
            {
              "text": "{{CTA}}",
              "replaceText": "={{ $('Message a model').item.json.message.content.CTA }}"
            }
          ]
        },
        "options": {
          "revisionId": ""
        },
        "operation": "replaceText",
        "presentationId": "={{ $json.id }}"
      },
      "credentials": {
        "googleSlidesOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "b5d7ae82-877d-4103-a46c-1d454be97fbd",
      "name": "Copy file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1616,
        512
      ],
      "parameters": {
        "name": "= {{ new Date().toISOString().split('T')[0].replace(/-/g, '.');}} - {{ $json.message.content.PostTitle }}",
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "1RXTBb17TjslPS-MVaR_GZQtkwn7OcjVS1nFOJZ-37cU"
        },
        "driveId": {
          "__rl": true,
          "mode": "id",
          "value": "1wuf6IlbDurkYNnXRkmAf3QxK26u3bMa2"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "root",
          "cachedResultName": "/ (Root folder)"
        },
        "operation": "copy",
        "sameFolder": false
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "96a5a628-65d7-45f1-aa24-a5588f736a0e",
      "name": "Message a model",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1264,
        512
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "chatgpt-4o-latest",
          "cachedResultName": "CHATGPT-4O-LATEST"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "role": "system",
              "content": "=# Prompt\nYou are a helpful, intelligent writing assistant. Your task it to convert the user's input into the following format. Only use input from the user as a source.\n\nThe slides have to follow a logical order and you are telling a story and giving actions, take away and value.\n\n## Output Format\nEach post must be structured with:\n\nPostTitle: Use bold, clear headlines as a hook. 3-8 words\nPostSubtitle: Add an intriguing question or promise value, 3-8 words\nPointOneTitle\nPointOneSubtitle: Keep sentences short and skimmable. Add breakline between sentences\nPointTwoTitle\nPointTwoSubtitle: Keep sentences short and skimmable. Add breakline between sentences\nPointThreeTitle\nPointThreeSubtitle: Keep sentences short and skimmable. Add breakline between sentences\nCTA: brief, clear prompt\u2014e.g., \u201cLike if you agree\u201d or \u201cComment your take\u201d\u2014ideally <50\u202fchars)\n\nFormat output into a JSON with following format:\n\n{\n  \"PostTitle\": \"\",\n  \"PostSubtitle\": \"\",\n  \"PointOneTitle\": \"\",\n  \"PointOneSubtitle\": \"\",\n  \"PointTwoTitle\": \"\",\n  \"PointTwoSubtitle\": \"\",\n  \"PointThreeTitle\": \"\",\n  \"PointThreeSubtitle\": \"\",\n  \"CTA\": \"\"\n}\n\n\n\n## Rules\n- Use a spartan, casual tone of voice.\n- Be to-the-point but professional -assume you're writing to a sophisticated audience.\n- Speak directly to founders/CEOs of small B2B companies\n- Ensure that all fields are filled out. Do not miss a field or leave any variables empty.\n- Stick to one main point per slide to maintain clarity.\n- No em-dashes\n= 10\u201350 words per slide \n\n"
            },
            {
              "content": "={\"Content\": \"{{ $json.property_post_content }}\"\n\"Title\": \"{{ $json.name }}\"}"
            },
            {
              "role": "assistant",
              "content": "Your task is to generate a google slide deck caroussel for LinkedIn by using user'sinput. This slidedeck should be highly customized, specific, and high quality. Considering we are going to be sending it immediately after you're done.\n\n\n# Context\nWe are an automation no-code agency that develops systems revolving around growth and revenue ops, etc.\n\nThe linkedin carousel template we're using has many fields. You must return these fields in one JSON object.\n\nNO em dashes\n\n\nUse this format as an example:\n{\n  \"PostTitle\": \"Automate 80% of Ops for B2B Teams\",\n  \"PostSubtitle\": \"Discover Our 6-Part Framework\",\n  \"PointOneTitle\": \"\",\n  \"PointOneSubtitle\": \"Assess current processes and identify automation opportunities.\",\n  \"PointTwoTitle\": \"Evaluate Your Process\",\n  \"PointTwoSubtitle\": \"Plan it ahead\",\n  \"PointThreeTitle\": \"Build the system\",\n  \"PointThreeSubtitle\": \"Develop automation solutions tailored to your B2B operations.\",\n  \"CTA\": \"Ready to Automate?\"\n}"
            }
          ]
        },
        "jsonOutput": true
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "e2cf35fb-ba2e-4c92-9e0a-85deb94360d2",
      "name": "Get many database pages",
      "type": "n8n-nodes-base.notion",
      "position": [
        1040,
        512
      ],
      "parameters": {
        "filters": {
          "conditions": [
            {
              "key": "Status|status",
              "condition": "equals",
              "statusValue": "2. Create Carousel"
            }
          ]
        },
        "options": {},
        "resource": "databasePage",
        "operation": "getAll",
        "databaseId": {
          "__rl": true,
          "mode": "list",
          "value": "21ffcbff-0b02-8000-a269-d83f2ebee69a",
          "cachedResultUrl": "https://www.notion.so/21ffcbff0b028000a269d83f2ebee69a",
          "cachedResultName": "LinkedIn Auto Posts"
        },
        "filterType": "manual"
      },
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "5a179e9f-bed9-4f09-b3aa-38b5d0fff5d5",
      "name": "Update a database page",
      "type": "n8n-nodes-base.notion",
      "position": [
        2112,
        512
      ],
      "parameters": {
        "pageId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Get many database pages').item.json.id }}"
        },
        "options": {},
        "resource": "databasePage",
        "operation": "update",
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "Google Carousel Link|url",
              "urlValue": "=https://docs.google.com/presentation/d/{{ $json.presentationId }}"
            },
            {
              "key": "Status|status",
              "statusValue": "3. Ready for Post"
            },
            {
              "key": "Type|select",
              "selectValue": "Carrousel"
            }
          ]
        }
      },
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "d50f6faa-783a-461e-a27d-0f4a74fefdf9",
      "name": "Create a post",
      "type": "n8n-nodes-base.linkedIn",
      "position": [
        2032,
        1344
      ],
      "parameters": {
        "text": "={{ $json.property_post_content }}",
        "person": "X0o56YS955",
        "additionalFields": {}
      },
      "credentials": {
        "linkedInOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "9c84a850-4486-4597-b5ee-34d2804b0300",
      "name": "file uploaded?",
      "type": "n8n-nodes-base.if",
      "position": [
        1024,
        32
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "5b88eafe-3a2b-4832-9a24-3cc19b8f6c90",
              "operator": {
                "type": "object",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $('On form submission').item.binary.Upload_file",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "77c14673-9264-4621-97ae-442759c5213a",
      "name": "Upload file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1264,
        -48
      ],
      "parameters": {
        "name": "={{ $('On form submission').item.json['Upload file'][0].filename }}",
        "driveId": {
          "__rl": true,
          "mode": "id",
          "value": "18PiERLOKmQhvcYtUu7BFT9Hi6K33qV9s"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "root",
          "cachedResultName": "/ (Root folder)"
        },
        "inputDataFieldName": "Upload_file"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "bb058706-8a55-459a-9649-aff0dffe7e02",
      "name": "Set fields",
      "type": "n8n-nodes-base.set",
      "position": [
        2816,
        0
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "ed8f2be6-5a3c-45a5-8fac-5d3b617859f8",
              "name": "['message.content.posts']['Post Title']",
              "type": "string",
              "value": "={{ $json['Post Title'] }}"
            },
            {
              "id": "9f9b8000-98b2-47c5-a112-fe9d2b997fd1",
              "name": "['message.content.posts']['Funnel Stage']",
              "type": "string",
              "value": "={{ $json['Funnel Stage'] }}"
            },
            {
              "id": "936cf2d0-b503-4421-b07d-876e456e6431",
              "name": "['message.content.posts']['Full Post Text']",
              "type": "string",
              "value": "={{ $json['Full Post Text'] }}"
            },
            {
              "id": "935f2faf-a027-4ee1-a433-f626f68fc6e9",
              "name": "Creation date",
              "type": "string",
              "value": "={{ $today }}"
            },
            {
              "id": "203943ca-a9a9-4508-9a02-0ef9e9e1a8d4",
              "name": "Type",
              "type": "string",
              "value": "Post"
            },
            {
              "id": "944f5cbe-4b96-48d2-a3b1-834bd150bac8",
              "name": "Status",
              "type": "string",
              "value": "1. Review"
            },
            {
              "id": "0de424d8-e956-45cf-bb71-fc260869a5ac",
              "name": "What is your idea?",
              "type": "string",
              "value": "={{ $('On form submission').item.json['What is your idea?'] }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "a137cfbb-b5bc-48b8-bc66-7c1076c85235",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        784,
        -256
      ],
      "parameters": {
        "color": 7,
        "width": 860,
        "height": 536,
        "content": "## Upload file to Drive\n\nChecks if a file was submitted with the form. \n\nIf yes, uploads it to Google Drive and saves the shareable link."
      },
      "typeVersion": 1
    },
    {
      "id": "130088be-c3af-4a17-8f02-f758c3bf256b",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2464,
        -256
      ],
      "parameters": {
        "color": 7,
        "width": 1076,
        "height": 536,
        "content": "## Save posts to Notion\n\nCreates a Notion page for each generated post with all metadata. \n\nIf a file was uploaded, adds the file link to the page."
      },
      "typeVersion": 1
    },
    {
      "id": "965b38cd-b9a1-4315-a327-302e26fa514f",
      "name": "Split Out",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        2272,
        32
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "message.content.posts"
      },
      "typeVersion": 1
    },
    {
      "id": "83bd01f3-2b5a-4f52-8cd1-d37923258acf",
      "name": "Set File Url",
      "type": "n8n-nodes-base.set",
      "position": [
        1440,
        -48
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "b2e3de29-6828-4921-bc38-d3d70351328a",
              "name": "File url",
              "type": "string",
              "value": "={{ $json.webViewLink }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "35e4dd51-601e-404b-90df-efb57f229251",
      "name": "Update database page (with file)",
      "type": "n8n-nodes-base.notion",
      "position": [
        3296,
        64
      ],
      "parameters": {
        "pageId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "options": {},
        "resource": "databasePage",
        "operation": "update",
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "File uploaded|files",
              "fileUrls": {
                "fileUrl": [
                  {
                    "url": "={{ $('Set File Url').item.json[\"File url\"] }}",
                    "name": "File"
                  }
                ]
              }
            }
          ]
        }
      },
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "2cca290c-c1c3-49ed-aaaa-41bb6df2b25f",
      "name": "File uploaded",
      "type": "n8n-nodes-base.if",
      "position": [
        3088,
        16
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "5b88eafe-3a2b-4832-9a24-3cc19b8f6c90",
              "operator": {
                "type": "object",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $('On form submission').item.binary.Upload_file",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "ea43f68a-5a5b-4bd8-bd51-becff7d707fa",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        816,
        1056
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "minutes"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "9aa185ad-5d7e-446e-aee1-f4c666d9e958",
      "name": "Get Ready Posts",
      "type": "n8n-nodes-base.notion",
      "position": [
        1040,
        1056
      ],
      "parameters": {
        "filters": {
          "conditions": [
            {
              "key": "Status|status",
              "condition": "equals",
              "statusValue": "3. Ready for Post"
            },
            {
              "key": "Scheduled Date|date",
              "date": "={{$now}}",
              "condition": "on_or_after"
            },
            {
              "key": "Scheduled Date|date",
              "date": "={{$now.plus({minutes:60})}}",
              "condition": "before"
            }
          ]
        },
        "options": {},
        "resource": "databasePage",
        "matchType": "allFilters",
        "operation": "getAll",
        "databaseId": {
          "__rl": true,
          "mode": "list",
          "value": "21ffcbff-0b02-8000-a269-d83f2ebee69a",
          "cachedResultUrl": "https://www.notion.so/21ffcbff0b028000a269d83f2ebee69a",
          "cachedResultName": "LinkedIn Auto Posts"
        },
        "filterType": "manual"
      },
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "958a2dc5-b21a-4687-ba47-c96622623806",
      "name": "Update Notion Posted Status",
      "type": "n8n-nodes-base.notion",
      "position": [
        2736,
        1120
      ],
      "parameters": {
        "pageId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Get Ready Posts').item.json.id }}"
        },
        "options": {},
        "resource": "databasePage",
        "operation": "update",
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "Status|status",
              "statusValue": "4. Posted"
            }
          ]
        }
      },
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "6b506af9-711b-4dfc-8509-8a15f4ccb68f",
      "name": "Create a post with image",
      "type": "n8n-nodes-base.linkedIn",
      "position": [
        2032,
        944
      ],
      "parameters": {
        "text": "={{ $json.property_post_content }}",
        "person": "X0o56YS955",
        "additionalFields": {},
        "shareMediaCategory": "IMAGE"
      },
      "credentials": {
        "linkedInOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "100993fc-0338-4a28-998d-0658acb4be45",
      "name": "LinkedIn Media?",
      "type": "n8n-nodes-base.if",
      "position": [
        1296,
        1056
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "6c86820c-d4de-4d62-a8df-8462948de1b2",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.property_linked_in_media[0] }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "997ea2b2-6953-4f03-bdde-405afec5aed6",
      "name": "Get file",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1552,
        960
      ],
      "parameters": {
        "url": "={{ $json.property_linked_in_media }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "0ca04776-5d08-4a54-ad66-48aecf4dd513",
      "name": "Extension",
      "type": "n8n-nodes-base.switch",
      "position": [
        1776,
        960
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "jpg",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "b21052c1-1605-4891-abe6-5b5cc3581081",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{$binary.data.fileExtension}}",
                    "rightValue": "=jpg"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "pdf",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "b3ff9aea-8985-4bac-87f7-89d9341cf922",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{$binary.data.fileExtension}}",
                    "rightValue": "pdf"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "9844e8b2-4ee3-414a-b09c-90d0a4e18448",
      "name": "Send a message",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2288,
        1120
      ],
      "parameters": {
        "sendTo": "user@example.com",
        "message": "Add document to LinkedIn Carousel https://www.linkedin.com/in/kean-yong/recent-activity/all/",
        "options": {},
        "subject": "LinkedIn Carousel - ACTION NEEDED"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "32fc36b2-3e6a-4d4f-9ea2-8ab21399857a",
      "name": "Create a post with document",
      "type": "n8n-nodes-base.linkedIn",
      "position": [
        2032,
        1120
      ],
      "parameters": {
        "text": "={{ $json.property_post_content }}",
        "person": "X0o56YS955",
        "additionalFields": {}
      },
      "credentials": {
        "linkedInOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "4aec732e-fadf-4ef3-bbe7-406769185ab0",
      "name": "Notion Trigger",
      "type": "n8n-nodes-base.notionTrigger",
      "position": [
        848,
        512
      ],
      "parameters": {
        "event": "pagedUpdatedInDatabase",
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "databaseId": {
          "__rl": true,
          "mode": "list",
          "value": "21ffcbff-0b02-8000-a269-d83f2ebee69a",
          "cachedResultUrl": "https://www.notion.so/21ffcbff0b028000a269d83f2ebee69a",
          "cachedResultName": "LinkedIn Auto Posts"
        }
      },
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "fb85526e-eb0a-4a51-b02b-24647ebb0599",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        784,
        -832
      ],
      "parameters": {
        "width": 1008,
        "height": 544,
        "content": "## How it works\n\nThis workflow automates your LinkedIn content from idea to post.\n\n**Generate content:** Submit an idea through a form. Get 10 generic posts or 3 custom posts saved to Notion.\n\n**Create carousels:** Mark a post as \"Create Carousel\" to generate slides in Google Slides automatically.\n\n**Publish automatically:** Posts are published to LinkedIn on schedule and marked as complete.\n\n## Setup steps\n\n1. **Connect accounts:** Link OpenAI, Notion, Google Drive, Google Slides, and LinkedIn to n8n.\n\n2. **Create Notion database:** Add fields for title, funnel stage, content, status, type, idea, and file URL.\n\n3. **Add Google Slides template:** Create a carousel template for automated population.\n\n4. **Set up form:** Configure fields for idea input and file upload.\n\n5. **Enable triggers:** Activate Notion and schedule triggers.\n\n6. **Test:** Submit a test idea and verify it works end-to-end."
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Get file": {
      "main": [
        [
          {
            "node": "Extension",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Copy file": {
      "main": [
        [
          {
            "node": "Replace text",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extension": {
      "main": [
        [
          {
            "node": "Create a post with image",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create a post with document",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set fields": {
      "main": [
        [
          {
            "node": "Create a database page",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload file": {
      "main": [
        [
          {
            "node": "Set File Url",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Replace text": {
      "main": [
        [
          {
            "node": "Update a database page",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set File Url": {
      "main": [
        [
          {
            "node": "Idea available?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create a post": {
      "main": [
        [
          {
            "node": "Update Notion Posted Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "File uploaded": {
      "main": [
        [
          {
            "node": "Update database page (with file)",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Notion Trigger": {
      "main": [
        [
          {
            "node": "Get many database pages",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send a message": {
      "main": [
        [
          {
            "node": "Update Notion Posted Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "file uploaded?": {
      "main": [
        [
          {
            "node": "Upload file",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Idea available?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Ready Posts": {
      "main": [
        [
          {
            "node": "LinkedIn Media?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Idea available?": {
      "main": [
        [
          {
            "node": "Create 10 LinkedIn Posts",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create 3 LinkedIn Posts from idea",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "LinkedIn Media?": {
      "main": [
        [
          {
            "node": "Get file",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create a post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Set fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Message a model": {
      "main": [
        [
          {
            "node": "Copy file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get Ready Posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "file uploaded?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create a database page": {
      "main": [
        [
          {
            "node": "File uploaded",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update a database page": {
      "main": [
        []
      ]
    },
    "Get many database pages": {
      "main": [
        [
          {
            "node": "Message a model",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create 10 LinkedIn Posts": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create a post with image": {
      "main": [
        [
          {
            "node": "Update Notion Posted Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create a post with document": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update database page (with file)": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create 3 LinkedIn Posts from idea": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

What it is An automated LinkedIn content system that takes a simple form (idea + optional file), generates LinkedIn posts with OpenAI, stores them in Notion, builds Google Slides carousels, and auto-publishes posts (text, image, or document) to LinkedIn on a schedule while…

Source: https://n8n.io/workflows/11252/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

AI Proposal Generator System

Google Slides, OpenAI, Google Drive +3
AI & RAG

This workflow is an AI-powered lighting and look development pipeline designed for VFX production. It transforms a single lighting brief into multiple high-quality cinematic lighting references using

Form Trigger, HTTP Request, Google Drive +4
AI & RAG

An n8n-based automation that generates client proposals from a form, lets you review everything in one place, and sends the proposal only when you approve it.

Form Trigger, Google Sheets Trigger, OpenAI +4
AI & RAG

This workflow enables seamless speech-to-text transcription, AI-powered summarization, sentiment analysis, and automated email delivery. It supports two different input modes: Form Upload (Local File)

HTTP Request, OpenAI, Gmail +2
AI & RAG

This workflow uses Tally.so to collect client input that you input yourself during the meeting or after from a simple form and send that data to n8n via an API webhook. Once received, n8n processes th

Google Slides, OpenAI, Gmail +2