Workflow: Linkedin Automation
Integrations: airtable, code, filter, httpRequest, if, linkedIn, scheduleTrigger, stickyNote, telegram

{"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": "# \ud83d\udce2 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## \u2705 Features\n\n- \ud83d\udd52 Runs twice daily at 9:00 AM and 7:00 PM (customizable)\n- \ud83d\udcf0 Fetches latest medium.com articles by tag\n- \ud83d\udcc2 Uses Airtable to avoid reposting the same article\n- \ud83d\udce2 Posts to your LinkedIn profile or company page\n- \ud83d\udcec Sends a Telegram notification after successful posting\n- \u2699\ufe0f 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": "=\ud83d\udcab {{ $('If').item.json.title }} \u2b50", "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."}