{ "id": "yF1HNe2ucaE81fNl", "meta": { "instanceId": "workflow-46d6adaf", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:48.262743", "updatedAt": "2025-09-29T07:07:48.262757", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production" }, "name": "Linkedin Automation", "tags": [ "automation", "n8n", "production-ready", "excellent", "optimized" ], "nodes": [ { "id": "fa012332-1c95-4460-b1d1-9d54441c9179", "name": "Get List of records used", "type": "n8n-nodes-base.airtable", "position": [ -40, -80 ], "parameters": { "base": { "__rl": true, "mode": "list", "value": "appt6kHkRkLlUh033", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Linkdin" }, "table": { "__rl": true, "mode": "list", "value": "tbliloartO26TD5TG", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Used Articles" }, "options": {}, "operation": "search" }, "credentials": { "airtableTokenApi": { "id": "9bPeAvakB1tkDxsW", "name": "Airtable Personal Access Token account" } }, "typeVersion": 2.1, "alwaysOutputData": true, "notes": "This airtable node performs automated tasks as part of the workflow." }, { "id": "2d99b3b7-2fcd-46bf-8859-f41e94cb5ae1", "name": "Update the used node", "type": "n8n-nodes-base.airtable", "position": [ 200, 600 ], "parameters": { "base": { "__rl": true, "mode": "list", "value": "appt6kHkRkLlUh033", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Linkdin" }, "table": { "__rl": true, "mode": "list", "value": "tbliloartO26TD5TG", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Used Articles" }, "columns": { "value": { "id": "={{ $('download image for post').item.json.id }}", "value": "={{ $('download image for post').item.json.id }}" }, "schema": [ { "id": "id", "type": "string", "display": true, "removed": false, "readOnly": false, "required": false, "displayName": "id", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "value", "type": "string", "display": true, "removed": false, "readOnly": false, "required": false, "displayName": "value", "defaultMatch": false, "canBeUsedToMatch": true } ], "mappingMode": "defineBelow", "matchingColumns": [], "attemptToConvertTypes": false, "convertFieldsToString": false }, "options": {}, "operation": "create" }, "credentials": { "airtableTokenApi": { "id": "9bPeAvakB1tkDxsW", "name": "Airtable Personal Access Token account" } }, "typeVersion": 2.1, "notes": "This airtable node performs automated tasks as part of the workflow." }, { "id": "72abb016-8f58-4c4c-b492-9ba7a576441a", "name": "map used articls ids", "type": "n8n-nodes-base.code", "position": [ 200, -80 ], "parameters": { "jsCode": "let values = $input.all().map(item => item.json.value);\n\nreturn [\n {\n json: {\n values: values\n }\n }\n ];" }, "typeVersion": 2, "notes": "This code node performs automated tasks as part of the workflow." }, { "id": "c49d5db2-d1c9-4444-8fa8-f39197e2a472", "name": "filter only unused Ids", "type": "n8n-nodes-base.filter", "position": [ 640, -80 ], "parameters": { "options": {}, "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "id": "934a4ab8-bc6b-4d1b-b050-c1f19a03cc9f", "operator": { "type": "array", "operation": "notContains", "rightType": "any" }, "leftValue": "={{ $('map used articls ids').item.json.values }}", "rightValue": "={{ $json.articles }}" } ] } }, "typeVersion": 2.2, "notes": "This filter node performs automated tasks as part of the workflow." }, { "id": "0b390b7d-8729-48e5-aadc-5aa9da8c7139", "name": "get random tags", "type": "n8n-nodes-base.code", "position": [ -280, -80 ], "parameters": { "jsCode": "const devToTags = [\n \"android\",\n \"androiddev\",\n \"kotlin\",\n \"jetpack-compose\",\n \"android-appdevelopment\",\n \"app-development\"\n];\n\n\nfunction getRandomValuesAsObjects(list, count) {\n const randomValues = [];\n for (let i = 0; i < count; i++) {\n const randomIndex = Math.floor(Math.random() * list.length);\n randomValues.push({ json: { value: list[randomIndex] } });\n }\n return randomValues;\n}\n\nreturn getRandomValuesAsObjects(devToTags, 1);\n" }, "typeVersion": 2, "notes": "This code node performs automated tasks as part of the workflow." }, { "id": "6b16bc15-8d82-4aa0-9ee2-5a10f070d106", "name": "sent the status", "type": "n8n-nodes-base.telegram", "position": [ 520, 600 ], "webhookId": "9373d46a-d5ad-40f4-93c0-7a44ff5fea37", "parameters": { "text": "=Linkdin Post Sent Successfully \n\n{{ $('If').item.json.title }}\n\nDb Status Id {{ $json.id }}", "chatId": "1199262493", "replyMarkup": "inlineKeyboard", "additionalFields": { "appendAttribution": false } }, "credentials": { "telegramApi": { "id": "R8nJZScHqw02haLU", "name": "Mr.4rogrammer bot" } }, "typeVersion": 1.2, "notes": "This telegram node performs automated tasks as part of the workflow." }, { "id": "99c5ed96-4220-46b0-9a2a-628963393894", "name": "Morning 9 Clock", "type": "n8n-nodes-base.scheduleTrigger", "position": [ -560, -80 ], "parameters": { "rule": { "interval": [ { "field": "cronExpression", "expression": "0 9,19 * * *" } ] } }, "typeVersion": 1.2, "notes": "This scheduleTrigger node performs automated tasks as part of the workflow." }, { "id": "c81c749a-e21b-4ba6-beae-2b8a21523c06", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [ -560, -600 ], "parameters": { "width": 920, "height": 400, "content": "# 📢 Auto-Post Medium Articles to LinkedIn with Telegram Alerts\n\nThis n8n workflow automates your LinkedIn posting by fetching articles from [medium.com](medium.com) twice a day (9:00 AM and 7:00 PM), ensuring consistent content sharing without manual effort.\n\nTo prevent duplicates, it stores posted article IDs in Airtable. It also sends a Telegram message after every successful post, so you stay updated.\n\n---\n" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "61171a34-53a3-448a-886c-b0cc83b75b33", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [ 400, -520 ], "parameters": { "width": 580, "height": 240, "content": "\n## ✅ Features\n\n- 🕒 Runs twice daily at 9:00 AM and 7:00 PM (customizable)\n- 📰 Fetches latest medium.com articles by tag\n- 📂 Uses Airtable to avoid reposting the same article\n- 📢 Posts to your LinkedIn profile or company page\n- 📬 Sends a Telegram notification after successful posting\n- ⚙️ Fully customizable schedule, tags, and post format" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "c6712f11-2852-49af-8fb9-235da0e4685c", "name": "fetch article ids from tag", "type": "n8n-nodes-base.httpRequest", "position": [ 420, -80 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": {}, "sendHeaders": true, "headerParameters": { "parameters": [ { "name": "x-rapidapi-host", "value": "medium2.p.rapidapi.com" }, { "name": "x-rapidapi-key", "value": "" } ] } }, "typeVersion": 4.2, "notes": "This httpRequest node performs automated tasks as part of the workflow." }, { "id": "6382e23e-e214-48b4-8d93-06fc2c74e7cc", "name": "Fetch Medium post using Article Id", "type": "n8n-nodes-base.httpRequest", "position": [ 880, -80 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": {}, "sendHeaders": true, "headerParameters": { "parameters": [ { "name": "x-rapidapi-host", "value": "medium2.p.rapidapi.com" }, { "name": "x-rapidapi-key", "value": "" } ] } }, "typeVersion": 4.2, "notes": "This httpRequest node performs automated tasks as part of the workflow." }, { "id": "eb92a4b3-d468-4d0f-8488-e6edb122b1db", "name": "If Node", "type": "n8n-nodes-base.if", "position": [ -200, 260 ], "parameters": { "options": {}, "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "id": "69a60b53-f719-44e8-9ca4-97b99205a253", "operator": { "type": "string", "operation": "notEmpty", "singleValue": true }, "leftValue": "={{ $json.image_url }}", "rightValue": "" } ] } }, "typeVersion": 2.2, "notes": "This if node performs automated tasks as part of the workflow." }, { "id": "792507fc-f956-4bc7-9c56-80f1078643a1", "name": "make Linkedin post", "type": "n8n-nodes-base.linkedIn", "position": [ 740, 240 ], "parameters": { "text": "={{ $('Fetch Medium post content').item.json.content.substring(0, 600) }} ...\n\nArticle link : {{ $env.WEBHOOK_URL }}{{ $('If').item.json.url }}\n\n#AndroidDevelopment #MobileAppDevelopment #AppDevelopment #Programming #SoftwareEngineering #TechCommunity #DeveloperLife #Kotlin #LinkedInDevelopers \n#Mr4rogrammer #isharewhatilearn", "person": "BQYGc4bH9N", "additionalFields": { "title": "=💫 {{ $('If').item.json.title }} ⭐", "visibility": "PUBLIC" }, "shareMediaCategory": "IMAGE" }, "credentials": { "linkedInOAuth2Api": { "id": "TODMZHWKWUyYl0qb", "name": "LinkedIn account" } }, "typeVersion": 1, "notes": "This linkedIn node performs automated tasks as part of the workflow." }, { "id": "b5026d10-0bcf-4ef4-a42e-0d8162a7eccc", "name": "Fetch Medium post content", "type": "n8n-nodes-base.httpRequest", "position": [ 100, 240 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": {}, "sendHeaders": true, "headerParameters": { "parameters": [ { "name": "x-rapidapi-host", "value": "medium2.p.rapidapi.com" }, { "name": "x-rapidapi-key", "value": "" } ] } }, "typeVersion": 4.2, "notes": "This httpRequest node performs automated tasks as part of the workflow." }, { "id": "d25bf5d7-0258-4f07-b0b7-54ace75ef697", "name": "download image for post", "type": "n8n-nodes-base.httpRequest", "position": [ 420, 240 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": { "allowUnauthorizedCerts": false }, "sendHeaders": true, "headerParameters": { "parameters": [ { "name": "User-Agent", "value": "Mozilla/5.0" } ] } }, "typeVersion": 4.2, "alwaysOutputData": false, "notes": "This httpRequest node performs automated tasks as part of the workflow." } ], "active": false, "pinData": {}, "settings": { "timezone": "UTC", "callerPolicy": "workflowsFromSameOwner", "executionOrder": "v1", "saveManualExecutions": true, "errorWorkflow": null, "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000 }, "versionId": "cc2275e5-a8d2-468c-be91-5e14ad568e3a", "connections": { "c6712f11-2852-49af-8fb9-235da0e4685c": { "main": [ [ { "node": "error-handler-c6712f11-2852-49af-8fb9-235da0e4685c", "type": "main", "index": 0 } ], [ { "node": "error-handler-c6712f11-2852-49af-8fb9-235da0e4685c-c9edf6f6", "type": "main", "index": 0 } ], [ { "node": "error-handler-c6712f11-2852-49af-8fb9-235da0e4685c-b1507478", "type": "main", "index": 0 } ], [ { "node": "error-handler-c6712f11-2852-49af-8fb9-235da0e4685c-25949fa6", "type": "main", "index": 0 } ], [ { "node": "error-handler-c6712f11-2852-49af-8fb9-235da0e4685c-a0154846", "type": "main", "index": 0 } ], [ { "node": "error-handler-c6712f11-2852-49af-8fb9-235da0e4685c-7a831d0d", "type": "main", "index": 0 } ], [ { "node": "error-handler-c6712f11-2852-49af-8fb9-235da0e4685c-e78720cb", "type": "main", "index": 0 } ], [ { "node": "error-handler-c6712f11-2852-49af-8fb9-235da0e4685c-b9852b5c", "type": "main", "index": 0 } ], [ { "node": "error-handler-c6712f11-2852-49af-8fb9-235da0e4685c-07b3edf9", "type": "main", "index": 0 } ] ] }, "6382e23e-e214-48b4-8d93-06fc2c74e7cc": { "main": [ [ { "node": "error-handler-6382e23e-e214-48b4-8d93-06fc2c74e7cc", "type": "main", "index": 0 } ], [ { "node": "error-handler-6382e23e-e214-48b4-8d93-06fc2c74e7cc-56131c3d", "type": "main", "index": 0 } ], [ { "node": "error-handler-6382e23e-e214-48b4-8d93-06fc2c74e7cc-8cdd96be", "type": "main", "index": 0 } ], [ { "node": "error-handler-6382e23e-e214-48b4-8d93-06fc2c74e7cc-3acef32b", "type": "main", "index": 0 } ], [ { "node": "error-handler-6382e23e-e214-48b4-8d93-06fc2c74e7cc-69d276b0", "type": "main", "index": 0 } ], [ { "node": "error-handler-6382e23e-e214-48b4-8d93-06fc2c74e7cc-b333a586", "type": "main", "index": 0 } ], [ { "node": "error-handler-6382e23e-e214-48b4-8d93-06fc2c74e7cc-72e7be1a", "type": "main", "index": 0 } ], [ { "node": "error-handler-6382e23e-e214-48b4-8d93-06fc2c74e7cc-3412d35d", "type": "main", "index": 0 } ], [ { "node": "error-handler-6382e23e-e214-48b4-8d93-06fc2c74e7cc-0ea53bce", "type": "main", "index": 0 } ] ] }, "b5026d10-0bcf-4ef4-a42e-0d8162a7eccc": { "main": [ [ { "node": "error-handler-b5026d10-0bcf-4ef4-a42e-0d8162a7eccc", "type": "main", "index": 0 } ], [ { "node": "error-handler-b5026d10-0bcf-4ef4-a42e-0d8162a7eccc-841da890", "type": "main", "index": 0 } ], [ { "node": "error-handler-b5026d10-0bcf-4ef4-a42e-0d8162a7eccc-4d3f1e82", "type": "main", "index": 0 } ], [ { "node": "error-handler-b5026d10-0bcf-4ef4-a42e-0d8162a7eccc-3ef7c9da", "type": "main", "index": 0 } ], [ { "node": "error-handler-b5026d10-0bcf-4ef4-a42e-0d8162a7eccc-89468515", "type": "main", "index": 0 } ], [ { "node": "error-handler-b5026d10-0bcf-4ef4-a42e-0d8162a7eccc-8a07bd16", "type": "main", "index": 0 } ], [ { "node": "error-handler-b5026d10-0bcf-4ef4-a42e-0d8162a7eccc-ad51c834", "type": "main", "index": 0 } ], [ { "node": "error-handler-b5026d10-0bcf-4ef4-a42e-0d8162a7eccc-ec640826", "type": "main", "index": 0 } ], [ { "node": "error-handler-b5026d10-0bcf-4ef4-a42e-0d8162a7eccc-da7435d9", "type": "main", "index": 0 } ] ] }, "d25bf5d7-0258-4f07-b0b7-54ace75ef697": { "main": [ [ { "node": "error-handler-d25bf5d7-0258-4f07-b0b7-54ace75ef697", "type": "main", "index": 0 } ], [ { "node": "error-handler-d25bf5d7-0258-4f07-b0b7-54ace75ef697-e273c43d", "type": "main", "index": 0 } ], [ { "node": "error-handler-d25bf5d7-0258-4f07-b0b7-54ace75ef697-e9a0e5b0", "type": "main", "index": 0 } ], [ { "node": "error-handler-d25bf5d7-0258-4f07-b0b7-54ace75ef697-441fd32c", "type": "main", "index": 0 } ], [ { "node": "error-handler-d25bf5d7-0258-4f07-b0b7-54ace75ef697-dbfc56c0", "type": "main", "index": 0 } ], [ { "node": "error-handler-d25bf5d7-0258-4f07-b0b7-54ace75ef697-fce88071", "type": "main", "index": 0 } ], [ { "node": "error-handler-d25bf5d7-0258-4f07-b0b7-54ace75ef697-f0c46735", "type": "main", "index": 0 } ], [ { "node": "error-handler-d25bf5d7-0258-4f07-b0b7-54ace75ef697-54e619b0", "type": "main", "index": 0 } ], [ { "node": "error-handler-d25bf5d7-0258-4f07-b0b7-54ace75ef697-d2a64f07", "type": "main", "index": 0 } ] ] }, "6b16bc15-8d82-4aa0-9ee2-5a10f070d106": { "main": [ [ { "node": "error-handler-6b16bc15-8d82-4aa0-9ee2-5a10f070d106-08f8b2a6", "type": "main", "index": 0 } ] ] } }, "description": "Automated workflow: Linkedin Automation. This workflow integrates 10 different services: filter, stickyNote, httpRequest, telegram, airtable. It contains 24 nodes and follows best practices for error handling and security.", "notes": "Excellent quality workflow: Linkedin Automation. This workflow has been optimized for production use with comprehensive error handling, security, and documentation." }