{
  "id": "yHiTAuQXJYWQsFmJ",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Syndication",
  "tags": [],
  "nodes": [
    {
      "id": "fe07f058-6974-4002-a7ea-2dbfe3bb5670",
      "name": "When clicking \u2018Execute workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -1072,
        -272
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "b12702c5-e1ae-4292-a387-f322ce6d40d4",
      "name": "parse sitemap",
      "type": "n8n-nodes-base.xml",
      "position": [
        -288,
        -320
      ],
      "parameters": {
        "options": {
          "ignoreAttrs": true,
          "explicitArray": false
        }
      },
      "typeVersion": 1
    },
    {
      "id": "f6d4aab6-a45f-45e1-9e29-33ada8a224da",
      "name": "fetch sitemap",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -512,
        -320
      ],
      "parameters": {
        "url": "={{ $json.sitemapURL }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "40388b62-b19f-45cb-96c8-3e834d8c36b2",
      "name": "get list of articles",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        -64,
        -320
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "urlset.url"
      },
      "typeVersion": 1
    },
    {
      "id": "cf3e4b04-4503-41bc-98f2-a680db48310f",
      "name": "filter out ToC pages",
      "type": "n8n-nodes-base.filter",
      "position": [
        384,
        -320
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "a468a3f8-e34b-468c-8809-bdfac39b4a09",
              "operator": {
                "type": "array",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json[\"image:image\"] }}",
              "rightValue": ""
            },
            {
              "id": "86783958-806c-40db-9ce3-4a52759a32c2",
              "operator": {
                "type": "array",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json[\"image:image\"] }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "d85029b8-2148-438d-b7c8-2f0d00380b94",
      "name": "rename fields",
      "type": "n8n-nodes-base.set",
      "position": [
        608,
        -320
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "c49d843b-8805-4921-9f7d-d530f0485aec",
              "name": "url",
              "type": "string",
              "value": "={{ $json.loc }}"
            },
            {
              "id": "485ac811-35f4-4df0-8f6b-2aab656fe185",
              "name": "lastModified",
              "type": "string",
              "value": "={{ $json.lastmod }}"
            },
            {
              "id": "3b73e900-469e-436c-8f32-dc06547cacdf",
              "name": "images",
              "type": "array",
              "value": "={{ $json[\"image:image\"] }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "1c3e3f8f-9331-457c-ab64-bbebf5c8d069",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -544,
        -400
      ],
      "parameters": {
        "color": 6,
        "width": 1520,
        "height": 240,
        "content": "## Get articles from the sitemap"
      },
      "typeVersion": 1
    },
    {
      "id": "1e97b466-a182-4a0c-a756-aab10dad5aab",
      "name": "get processed articles",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        608,
        0
      ],
      "parameters": {
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "",
          "cachedResultUrl": "",
          "cachedResultName": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7,
      "alwaysOutputData": true
    },
    {
      "id": "c1f6dfe9-c6ab-4198-bfc4-7906d0f6a673",
      "name": "availableArticles[]",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        832,
        -320
      ],
      "parameters": {
        "include": "specifiedFields",
        "options": {},
        "aggregate": "aggregateAllItemData",
        "destinationFieldName": "availableArticles"
      },
      "typeVersion": 1
    },
    {
      "id": "5dbace25-e906-4c67-ab05-1ce48284f876",
      "name": "processedArticles",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        832,
        0
      ],
      "parameters": {
        "include": "specifiedFields",
        "options": {},
        "aggregate": "aggregateAllItemData",
        "fieldsToInclude": "url",
        "destinationFieldName": "processedArticles"
      },
      "typeVersion": 1
    },
    {
      "id": "c57d92e1-90e1-44a0-b50a-fd0101126678",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        1168,
        -176
      ],
      "parameters": {},
      "typeVersion": 3.2
    },
    {
      "id": "170ae9cd-6da2-41eb-b979-47d75d0f0e00",
      "name": "pick random not processed article",
      "type": "n8n-nodes-base.code",
      "position": [
        1392,
        -176
      ],
      "parameters": {
        "jsCode": "const availableArticles = $input.first().json.availableArticles\nconst processedArticles = $input.last().json.processedArticles\n\nconst processedURLs = processedArticles.map(i => i.url)\n\nconst remainingArticles = availableArticles.filter(a => !processedURLs.includes(a.url));\n\nif (remainingArticles.length === 0) {\n  return []; // nothing left to process\n}\n\nconst randomIndex = Math.floor(Math.random() * remainingArticles.length);\nreturn [{ json: remainingArticles[randomIndex] }];"
      },
      "typeVersion": 2
    },
    {
      "id": "2580e4f6-91bc-4660-80e3-f3baaf6c6e1f",
      "name": "extract HTML content",
      "type": "n8n-nodes-base.html",
      "position": [
        1936,
        -176
      ],
      "parameters": {
        "options": {
          "trimValues": true,
          "cleanUpText": true
        },
        "operation": "extractHtmlContent",
        "extractionValues": {
          "values": [
            {
              "key": "content",
              "cssSelector": "div.single-post-content",
              "returnValue": "html"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "f9d9b2d3-c590-411a-8378-1953272f754d",
      "name": "fetch article",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1712,
        -176
      ],
      "parameters": {
        "url": "={{ $json.url }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "50491f48-d577-4185-a6ab-6d56b1f2ecd0",
      "name": "add metadata",
      "type": "n8n-nodes-base.set",
      "position": [
        2160,
        -176
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "e6ef597c-cbd9-4528-8239-6634fdbd5233",
              "name": "url",
              "type": "string",
              "value": "={{ $('pick random not processed article').item.json.url }}"
            },
            {
              "id": "aa99e2e9-739f-469d-ae1e-b7ea104c9782",
              "name": "lastModified",
              "type": "string",
              "value": "={{ $('pick random not processed article').item.json.lastModified }}"
            },
            {
              "id": "2e59c3db-362d-4298-85a2-785c1c17f706",
              "name": "images",
              "type": "array",
              "value": "={{ $('pick random not processed article').item.json.images }}"
            },
            {
              "id": "c02ad820-4d31-47eb-b604-c64d62a6f43f",
              "name": "content",
              "type": "string",
              "value": "={{ $json.content }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "3cb95dab-08c1-4de8-a80e-95246f6571bc",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        2480,
        -176
      ],
      "parameters": {
        "text": "=Create engaging social media content to promote the article below. Each post should be optimized for its platform's audience, format, and best practices.\n\nARTICLE CONTENT:\n```\n{{ $json.content }}\n```\n\nARTICLE URL: {{ $json.url }}\n\nLANGUAGE: All posts must be written in {{ $('parameters').first().json.language }}\n\nREQUIRED POSTS: {{ $('parameters').first().json.linkedinPostEnabled ? \"\\n- LinkedIn post\" : \"\" }} {{ $('parameters').first().json.twitterPostEnabled ? \"\\n- Twitter/X post\" : \"\" }} {{ $('parameters').first().json.twitterThreadEnabled ? \"\\n- Twitter/X thread\" : \"\" }}\n\nGENERAL CONTENT GUIDELINES:\n- Extract the most compelling insight or value proposition from the article\n- Make each post self-contained (readable without clicking through)\n- Create curiosity while delivering value\n- Avoid clickbait or misleading statements\n- Adapt tone and complexity to each platform's audience\n- LinkedIn: More detailed, professional, industry-focused\n- Twitter/X: Punchy, direct, conversation-starting\n\nGUIDELINES FOR LinkedIn post\n- Length: 150-300 words (aim for 200)\n- Include 3-5 relevant hashtags\n- Professional tone with thought leadership angle\n- Hook readers in the first 2 lines (before \"see more\")\n- End with a call-to-action\n- Use line breaks for readability\n- Link placement: Include article URL at the end\n\nGUIDELINES FOR Twitter/X post\n- Length: Maximum 280 characters\n- Concise and impactful language\n- Include 1-2 relevant hashtags\n- Conversational yet professional tone\n- Strong hook or key insight from article\n- Link placement: Include article URL (it will auto-preview)",
        "options": {
          "systemMessage": "You are an expert social media marketing strategist specializing in B2B and professional content distribution. Your core competencies include:\n- Crafting platform-optimized content that maximizes engagement\n- Extracting key insights and value propositions from long-form content\n- Writing compelling hooks that stop scrolling\n- Balancing promotional content with genuine value delivery\n- Understanding platform-specific algorithms and best practices\n\nTONE AND STYLE:\n- Professional yet approachable\n- Clear and concise\n- Action-oriented\n- Authentic (avoid corporate jargon and buzzwords)\n\nPRIORITIES:\n1. Value for the reader first, promotion second\n2. Platform optimization over template replication\n3. Clarity and engagement over length\n4. Authenticity over hype\n\nWhen creating social posts, focus on what makes the content valuable to the target audience and why they should care, rather than simply summarizing the article.\n\nAlways reply using JSON format"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "902d9e2d-68f9-44ea-8015-8b867c0d576e",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        2480,
        48
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "727faede-6179-4fc4-93e5-10e7e94ceca0",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        2608,
        48
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"LinkedInPost\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n        \"TwitterPost\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n        \"TwitterThread\": {\n            \"description\": \"A thread of Twitter/X posts, each post in its own array item\",\n\t\t\t\"type\": \"array\",\n            \"items\": {\n              \"type\": \"string\"\n            }\n\t\t}\n\t}\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "4988ffcc-46fd-43ec-ab5b-28ff74808ee5",
      "name": "add processed article",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2960,
        -176
      ],
      "parameters": {
        "columns": {
          "value": {
            "url": "={{ $('add metadata').first().json.url }}",
            "status": "ready",
            "timestamp": "={{ $now.format('dd.MM.yyyy HH:mm:ss') }}",
            "Twitter post": "={{ $json.output.TwitterPost }}",
            "LinkedIn post": "={{ $json.output.LinkedInPost }}"
          },
          "schema": [
            {
              "id": "url",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "timestamp",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "timestamp",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "LinkedIn post",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "LinkedIn post",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Twitter post",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Twitter post",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('get processed articles').params.sheetName.value }}"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('get processed articles').params.documentId.value }}"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "9c9f84fe-447c-4297-b314-a1040214e405",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        496,
        -112
      ],
      "parameters": {
        "color": 6,
        "width": 480,
        "height": 288,
        "content": "## Get already processed articles\n\u27a4 configure Google Sheets credentials\n\u27a4 specify spreadsheet document"
      },
      "typeVersion": 1
    },
    {
      "id": "5ab5c3f6-fe7c-4a4b-821f-c441fa46deca",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1120,
        -304
      ],
      "parameters": {
        "color": 6,
        "width": 416,
        "height": 304,
        "content": "## Pick an article to process"
      },
      "typeVersion": 1
    },
    {
      "id": "955975e9-e1de-481f-a66a-b8025f8871d1",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1664,
        -304
      ],
      "parameters": {
        "color": 6,
        "width": 640,
        "height": 304,
        "content": "## Get article content"
      },
      "typeVersion": 1
    },
    {
      "id": "0b1b999c-398c-4e6c-addc-5c49b894d3b5",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2432,
        -304
      ],
      "parameters": {
        "color": 6,
        "width": 320,
        "height": 512,
        "content": "## Generate social posts\n\u27a4 configure API key"
      },
      "typeVersion": 1
    },
    {
      "id": "526c1a6f-900a-41a4-8b05-19c1820bd1b1",
      "name": "Create Tweet",
      "type": "n8n-nodes-base.twitter",
      "position": [
        3568,
        -80
      ],
      "parameters": {
        "text": "={{ $json[\"Twitter post\"] }}",
        "additionalFields": {}
      },
      "typeVersion": 2
    },
    {
      "id": "ea311e30-de4b-4d81-b476-fa48e9ab91a7",
      "name": "parameters",
      "type": "n8n-nodes-base.set",
      "position": [
        -784,
        -176
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "2a7168f6-d45a-4b59-9e3c-524a1f562ccb",
              "name": "sitemapURL",
              "type": "string",
              "value": "https://example.com/sitemap.xml"
            },
            {
              "id": "706938df-9f50-46ae-ae31-53e6ba8a45ae",
              "name": "language",
              "type": "string",
              "value": "English"
            },
            {
              "id": "4a73c4a0-8bf7-4dcd-8cd3-417be354d4f5",
              "name": "linkedinPostEnabled",
              "type": "boolean",
              "value": true
            },
            {
              "id": "11038476-4de1-43f7-9375-ef23c80e7759",
              "name": "twitterPostEnabled",
              "type": "boolean",
              "value": true
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "7760689f-6bd7-4e9b-add5-c9c92828ede7",
      "name": "If Twitter post created",
      "type": "n8n-nodes-base.if",
      "position": [
        3344,
        -80
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "5d8d619c-d893-47e5-b486-ce9dad943a30",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json[\"Twitter post\"] }}",
              "rightValue": ""
            },
            {
              "id": "a002001a-9084-4ac4-9c63-fc9bbe601ee5",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json[\"Twitter post\"] }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "06e00591-7776-401b-a6e1-b80e3f40e518",
      "name": "If LinkedIn post created",
      "type": "n8n-nodes-base.if",
      "position": [
        3344,
        -272
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "5d8d619c-d893-47e5-b486-ce9dad943a30",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json[\"LinkedIn post\"] }}",
              "rightValue": ""
            },
            {
              "id": "7cc3bc98-7bbf-4b0e-bde2-cf32904da227",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json[\"LinkedIn post\"] }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "e40374b0-27be-4ea7-8562-0322b1e57d88",
      "name": "normalize list of images",
      "type": "n8n-nodes-base.code",
      "position": [
        160,
        -320
      ],
      "parameters": {
        "jsCode": "// Loop over input items and add a new field called 'myNewField' to the JSON of each one\nfor (const item of $input.all()) {\n  const images = item.json[\"image:image\"];\n\n  if (!images) {\n    // no images \u2192 set to empty array\n    item.json[\"image:image\"] = [];\n  } else if (!Array.isArray(images)) {\n    // wrap single object into array\n    item.json[\"image:image\"] = [images];\n  }\n}\n\nreturn $input.all();"
      },
      "typeVersion": 2
    },
    {
      "id": "067e17cc-c2bf-4c99-bb39-4f1ab52895cf",
      "name": "Create a post",
      "type": "n8n-nodes-base.linkedIn",
      "position": [
        3568,
        -272
      ],
      "parameters": {
        "text": "={{ $json[\"LinkedIn post\"] }}",
        "additionalFields": {},
        "shareMediaCategory": "ARTICLE"
      },
      "typeVersion": 1
    },
    {
      "id": "172e968f-764e-4496-99b4-b3d42dfb711f",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -1072,
        -80
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 12
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "df287f98-c83f-42b4-989a-824dfb701f5e",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3296,
        -384
      ],
      "parameters": {
        "color": 6,
        "width": 480,
        "height": 480,
        "content": "## Publish\n\u27a4 configure LinkedIn credentials\n\u27a4 configure Twitter/X credentials"
      },
      "typeVersion": 1
    },
    {
      "id": "a9202a49-5798-444c-85ac-4b00dd1b67a5",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2064,
        -416
      ],
      "parameters": {
        "width": 864,
        "height": 608,
        "content": "## Content syndication workflow\nThis workflow automates content syndication and posting to **LinkedIn** and **X/Twitter**. It takes existing long-form articles and generates from them engaging social posts optimized for each platform.\n\nThe workflow takes links to existing articles from a given sitemap. It randomly selects the next article to republish, making sure that articles are not repeated. For simplicity it uses a Google spreadsheet to track the articles that have already been republished.\n\n### Requirements\n1. Existing [sitemap](https://www.sitemaps.org/protocol.html)\n2. Google Gemini API key (or other model provider's key)\n3. Google Sheets credentials\n4. LinkedIn credentials\n5. X/Twitter credentials\n\n### Setup\n1. Adjust the schedule as needed (by default triggers daily at noon)\n2. Configure parameters in the **parameters** node:\n    - Set the sitemap URL (e.g. https://example.com/sitemap.xml)\n    - Set the language of the posts\n    - Enable/disable channels as needed\n3. Configure Google Sheets credentials for **get processed articles** and **add processed articles** nodes\n3. Create a new Google spreadsheet document with \"url\", \"status\", \"timestamp\", \"LinkedIn post\" and \"Twitter post\" columns\n4. Specify that spreadsheet document in **get processed articles** node (other nodes will take it from here)\n5. Add Google Gemini API key for the model (or change to any other model of choice)\n6. Configure LinkedIn and X/Twitter credentials for publishing"
      },
      "typeVersion": 1
    },
    {
      "id": "4c327cdb-59d6-494f-aa65-743a876c02df",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -848,
        -320
      ],
      "parameters": {
        "color": 5,
        "width": 224,
        "height": 320,
        "content": "## Configure\n\u27a4 set sitemap URL\n\u27a4 set language\n\u27a4 enable/disable platforms"
      },
      "typeVersion": 1
    },
    {
      "id": "999d6091-a9c8-497a-a314-71239a860661",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2912,
        -304
      ],
      "parameters": {
        "color": 6,
        "width": 192,
        "height": 304,
        "content": "## Save posts\n\u27a4 configure Google Sheets credentials"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "4f6601c2-d0eb-4fea-9dbc-65119964a90a",
  "connections": {
    "Merge": {
      "main": [
        [
          {
            "node": "pick random not processed article",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "add processed article",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "parameters": {
      "main": [
        [
          {
            "node": "fetch sitemap",
            "type": "main",
            "index": 0
          },
          {
            "node": "get processed articles",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Tweet": {
      "main": [
        []
      ]
    },
    "add metadata": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fetch article": {
      "main": [
        [
          {
            "node": "extract HTML content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fetch sitemap": {
      "main": [
        [
          {
            "node": "parse sitemap",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "parse sitemap": {
      "main": [
        [
          {
            "node": "get list of articles",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "rename fields": {
      "main": [
        [
          {
            "node": "availableArticles[]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "parameters",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "processedArticles": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "availableArticles[]": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "extract HTML content": {
      "main": [
        [
          {
            "node": "add metadata",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "filter out ToC pages": {
      "main": [
        [
          {
            "node": "rename fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get list of articles": {
      "main": [
        [
          {
            "node": "normalize list of images",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "add processed article": {
      "main": [
        [
          {
            "node": "If Twitter post created",
            "type": "main",
            "index": 0
          },
          {
            "node": "If LinkedIn post created",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get processed articles": {
      "main": [
        [
          {
            "node": "processedArticles",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If Twitter post created": {
      "main": [
        [
          {
            "node": "Create Tweet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "If LinkedIn post created": {
      "main": [
        [
          {
            "node": "Create a post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "normalize list of images": {
      "main": [
        [
          {
            "node": "filter out ToC pages",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "pick random not processed article": {
      "main": [
        [
          {
            "node": "fetch article",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "parameters",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}