{ "id": "mb2MU4xOaT3NrvqN", "meta": { "instanceId": "workflow-0c4a6428", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:48.225043", "updatedAt": "2025-09-29T07:07:48.225056", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production" }, "name": "Automate LinkedIn Posts with AI", "tags": [ "automation", "n8n", "production-ready", "excellent", "optimized" ], "nodes": [ { "id": "7e8ec5cc-0216-4897-8a40-c44f9bbe5a9b", "name": "Schedule Trigger", "type": "n8n-nodes-base.scheduleTrigger", "position": [ 580, 540 ], "parameters": { "rule": { "interval": [ { "triggerAtHour": 15 } ] } }, "typeVersion": 1.2, "notes": "This scheduleTrigger node performs automated tasks as part of the workflow." }, { "id": "dbde804d-9c84-4023-9e05-7506cd38a460", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [ 760, 225.26841303066982 ], "parameters": { "color": 6, "width": 652.1201853643956, "height": 542.0867486896091, "content": "## Fetch the day's post from my Notion database\nA Notion _\"database\"_ is just a table on a Notion Page.\nThis table will have various rows, for which a minimum of three columns are required:\n- Name\n- Status\n- Date\n\nThe Date column is the most important, which will dictate when that row from your Notion table containing the text should be posted.\n\nNOTE: each post is required to have a copy and pasted image!" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "95205e81-e28d-48f9-b3fb-bcf361f7799e", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [ 1520, 220 ], "parameters": { "width": 860.9829802912225, "height": 540.7357881640437, "content": "## Format Post\nSend the post to OpenAI, where it will attempt to ask your assistant how to take the incoming blob of text, and soup it up into something more palpable for LinkedIn engagement." }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "4bc2a550-a8ad-4b25-ac53-01413277e068", "name": "Set post status to \"Done\"", "type": "n8n-nodes-base.notion", "position": [ 2760, 540 ], "parameters": { "pageId": { "__rl": true, "mode": "url", "value": "={{ $('query entries from Notion table for today').item.json.url }}" }, "options": {}, "resource": "databasePage", "operation": "update", "propertiesUi": { "propertyValues": [ { "key": "YOUR_CREDENTIAL_HERE", "statusValue": "Done" } ] } }, "credentials": { "notionApi": { "id": "nBu4zRArkldtNypO", "name": "Notion account" } }, "typeVersion": 2.2, "notes": "This notion node performs automated tasks as part of the workflow." }, { "id": "31116f06-72ca-4219-9575-8efaefbff24b", "name": "Post on LinkedIn", "type": "n8n-nodes-base.linkedIn", "position": [ 2500, 540 ], "parameters": { "text": "={{ $json.output }}", "person": "_RmSSZc0jB", "additionalFields": {}, "shareMediaCategory": "IMAGE" }, "credentials": { "linkedInOAuth2Api": { "id": "fozSa4dLS6Jgbn4e", "name": "LinkedIn account 2" } }, "typeVersion": 1, "notes": "This linkedIn node performs automated tasks as part of the workflow." }, { "id": "1bf0540d-a180-457a-a7d7-fb74c8119a52", "name": "Combine text+image", "type": "n8n-nodes-base.merge", "position": [ 2100, 540 ], "parameters": { "mode": "combine", "options": {}, "combinationMode": "mergeByPosition" }, "typeVersion": 2.1, "notes": "This merge node performs automated tasks as part of the workflow." }, { "id": "f1fdf6f7-a75c-451b-8bce-ea581b4b6197", "name": "Fetch image from post", "type": "n8n-nodes-base.httpRequest", "position": [ 1640, 620 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": {} }, "typeVersion": 4.2, "notes": "This httpRequest node performs automated tasks as part of the workflow." }, { "id": "00e2bbcb-bac0-4a7e-9892-59f41a26ce9d", "name": "Reformat Post Text", "type": "n8n-nodes-base.noOp", "position": [ 1620, 440 ], "parameters": { "text": "=Thank you kindly for your help, please refer to the following LinkedIn post, and output a reformatted version employing thoroughly thought-out paragraph breaks, and lists if present:\n```\n{{ $json.content.join(\" \") }}\n```", "prompt": "define", "options": {}, "resource": "assistant", "assistantId": { "__rl": true, "mode": "list", "value": "asst_J1KuOx5wTLrjEHuy5q94jEgh", "cachedResultName": "LinkedIn Post Reviewer" } }, "credentials": { "openAiApi": { "id": "Gxn0kNMCREcTNGcB", "name": "OpenAi account 2" } }, "typeVersion": 1.3, "notes": "This openAi node performs automated tasks as part of the workflow." }, { "id": "119d7fc7-ed62-4a73-916e-8baf19ab1d86", "name": "get all content from post page", "type": "n8n-nodes-base.notion", "position": [ 1020, 540 ], "parameters": { "blockId": { "__rl": true, "mode": "url", "value": "={{ $json.url }}" }, "resource": "block", "operation": "getAll", "returnAll": true }, "credentials": { "notionApi": { "id": "nBu4zRArkldtNypO", "name": "Notion account" } }, "typeVersion": 2.2, "notes": "This notion node performs automated tasks as part of the workflow." }, { "id": "461d4dd2-a91a-4219-bd20-6dd3398d4274", "name": "Pull together all text blocks + image", "type": "n8n-nodes-base.aggregate", "position": [ 1240, 540 ], "parameters": { "options": {}, "fieldsToAggregate": { "fieldToAggregate": [ { "fieldToAggregate": "content" }, { "fieldToAggregate": "image.file.url" } ] } }, "typeVersion": 1, "notes": "This aggregate node performs automated tasks as part of the workflow." }, { "id": "72052eec-c180-4da5-ba15-1a69a7ce6892", "name": "query entries from Notion table for today", "type": "n8n-nodes-base.notion", "position": [ 800, 540 ], "parameters": { "filters": { "conditions": [ { "key": "YOUR_CREDENTIAL_HERE", "date": "={{ $today.format(\"yyyy/mM/dd\") }}", "condition": "equals" } ] }, "options": {}, "resource": "databasePage", "operation": "getAll", "databaseId": { "__rl": true, "mode": "list", "value": "9aba7f55-a7de-4329-9d5b-6d127937fa49", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "LinkedIn Posts example" }, "filterType": "manual" }, "credentials": { "notionApi": { "id": "nBu4zRArkldtNypO", "name": "Notion account" } }, "typeVersion": 2.2, "notes": "This notion node performs automated tasks as part of the workflow." } ], "active": true, "pinData": {}, "settings": { "executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000 }, "versionId": "35f9b7b6-0e60-495f-826d-af7040e7de1f", "connections": { "f1fdf6f7-a75c-451b-8bce-ea581b4b6197": { "main": [ [ { "node": "error-handler-f1fdf6f7-a75c-451b-8bce-ea581b4b6197", "type": "main", "index": 0 } ], [ { "node": "error-handler-f1fdf6f7-a75c-451b-8bce-ea581b4b6197-74a7fd29", "type": "main", "index": 0 } ], [ { "node": "error-handler-f1fdf6f7-a75c-451b-8bce-ea581b4b6197-995e5fbf", "type": "main", "index": 0 } ], [ { "node": "error-handler-f1fdf6f7-a75c-451b-8bce-ea581b4b6197-ec028cb7", "type": "main", "index": 0 } ], [ { "node": "error-handler-f1fdf6f7-a75c-451b-8bce-ea581b4b6197-5f7545e5", "type": "main", "index": 0 } ], [ { "node": "error-handler-f1fdf6f7-a75c-451b-8bce-ea581b4b6197-52ca108a", "type": "main", "index": 0 } ], [ { "node": "error-handler-f1fdf6f7-a75c-451b-8bce-ea581b4b6197-6dac0d35", "type": "main", "index": 0 } ], [ { "node": "error-handler-f1fdf6f7-a75c-451b-8bce-ea581b4b6197-0db07993", "type": "main", "index": 0 } ], [ { "node": "error-handler-f1fdf6f7-a75c-451b-8bce-ea581b4b6197-312a45f4", "type": "main", "index": 0 } ] ] }, "00e2bbcb-bac0-4a7e-9892-59f41a26ce9d": { "main": [ [ { "node": "error-handler-00e2bbcb-bac0-4a7e-9892-59f41a26ce9d-2eff9130", "type": "main", "index": 0 } ] ] } }, "description": "Automated workflow: Automate LinkedIn Posts with AI. This workflow integrates 9 different services: stickyNote, httpRequest, scheduleTrigger, merge, stopAndError. It contains 14 nodes and follows best practices for error handling and security.", "notes": "Excellent quality workflow: Automate LinkedIn Posts with AI. This workflow has been optimized for production use with comprehensive error handling, security, and documentation." }