{
  "id": "UpNXeGPDsa1GIWMw",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Versus page workflow",
  "tags": [],
  "nodes": [
    {
      "id": "d7025bd7-197d-4c0d-949c-9b5f8f5c2c66",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        120,
        -160
      ],
      "parameters": {
        "color": 4,
        "height": 220,
        "content": "Providers & their overview"
      },
      "typeVersion": 1
    },
    {
      "id": "176b92ac-d8b7-4198-b6cf-ca9014d1192b",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        120,
        100
      ],
      "parameters": {
        "color": 4,
        "height": 200,
        "content": "Features"
      },
      "typeVersion": 1
    },
    {
      "id": "8c4fc5ad-ca65-4305-8162-b97c9ad04026",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        120,
        340
      ],
      "parameters": {
        "color": 4,
        "height": 200,
        "content": "Pricing"
      },
      "typeVersion": 1
    },
    {
      "id": "88f9d6b7-f61c-401f-8edc-6ec0eb02fa30",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -540,
        -1380
      ],
      "parameters": {
        "color": 3,
        "width": 3040,
        "height": 2420,
        "content": "Product Comparison pages"
      },
      "typeVersion": 1
    },
    {
      "id": "7cf7b91f-b5ec-4145-b569-4e4bab58c0e1",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        760,
        -460
      ],
      "parameters": {
        "text": "=This is an overview of: {{ $json.Overview }}\n\nYou are an expert copywriter for a comparison site. \n\nUse this information to write a unique introductory paragraph for the page titled: {{ $('Code1').item.json.name }}. The intro should be engaging, informative, and briefly explain what makes this comparison interesting or relevant to travelers looking for an eSIM. Avoid generic language. Mention specific strengths or positioning of each provider when introducing them. Make the language easily readable and use basic vocabulary.",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 1.9
    },
    {
      "id": "f89ab3f6-163e-4139-b8f7-c023304b4486",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        760,
        -340
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "e50e2a07-bb82-47f8-8f86-34dc52f9ee8c",
      "name": "Simple Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        880,
        -340
      ],
      "parameters": {
        "sessionKey": "=intro-{{ $json.Provider }}",
        "sessionIdType": "customKey"
      },
      "typeVersion": 1.3
    },
    {
      "id": "d18ba028-a902-486f-b36b-38ffb4bb57f8",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1620,
        -240
      ],
      "parameters": {
        "color": 4,
        "width": 800,
        "height": 360,
        "content": "ALL ROADS LEAD TO ROME"
      },
      "typeVersion": 1
    },
    {
      "id": "b3ccd911-27ad-49fc-9913-027c03920715",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        620,
        100
      ],
      "parameters": {
        "color": 5,
        "width": 620,
        "height": 360,
        "content": "Comparison Table"
      },
      "typeVersion": 1
    },
    {
      "id": "05698cec-baa0-4983-85de-b23dd8c00e8b",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        620,
        -860
      ],
      "parameters": {
        "color": 5,
        "width": 620,
        "height": 340,
        "content": "Product activation process"
      },
      "typeVersion": 1
    },
    {
      "id": "94860e6e-4517-49e7-958a-84737bd399eb",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        620,
        480
      ],
      "parameters": {
        "color": 5,
        "width": 620,
        "height": 440,
        "content": "User Ratings"
      },
      "typeVersion": 1
    },
    {
      "id": "ffe18bcb-c8f4-4e1f-b82c-bb821e3e1827",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        620,
        -1180
      ],
      "parameters": {
        "color": 5,
        "width": 620,
        "height": 300,
        "content": "FAQs\n"
      },
      "typeVersion": 1
    },
    {
      "id": "73c46227-4fbf-4a69-af6c-19af6067968d",
      "name": "Sticky Note11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        620,
        -500
      ],
      "parameters": {
        "color": 5,
        "width": 620,
        "height": 300,
        "content": "PRODUCT OVERVIEW"
      },
      "typeVersion": 1
    },
    {
      "id": "c274d098-918c-43e5-87cc-aa13ab5f3bce",
      "name": "Google Sheets6",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1340,
        -460
      ],
      "parameters": {
        "columns": {
          "value": {
            "Intro": "={{ $json.output }}"
          },
          "schema": [
            {
              "id": "Provider",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Provider",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Intro",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Intro",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1416889088,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17fG29HKhQMZKZVIJgFNBKqA5zyIGV_RFw9axiG0k1dQ/edit#gid=1416889088",
          "cachedResultName": "Test data 1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "17fG29HKhQMZKZVIJgFNBKqA5zyIGV_RFw9axiG0k1dQ",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17fG29HKhQMZKZVIJgFNBKqA5zyIGV_RFw9axiG0k1dQ/edit?usp=drivesdk",
          "cachedResultName": "Programmatic SEO of Truely vs. pages"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.5
    },
    {
      "id": "8f4fcd17-205b-42b7-b9f8-09ed913ffe63",
      "name": "AI Agent1",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        880,
        180
      ],
      "parameters": {
        "text": "=Take in this information about:-  {{ $json.Features }},{{ $json.Pricing }}\n\nPage Title: {{ $('Code1').item.json.name }}\n\nYour tone should be easy to read, neutral, and informative \u2014 imagine you\u2019re helping a traveler quickly decide which provider is better for them.\n\n\n---\n\n**Write a comparison table** with clear, distinct rows that compare both products across relevant categories. Make sure each row focuses on what a user would care about most when choosing between them.\n\nUse only what\u2019s relevant based on the overview data and general context. Be concise but helpful in every row.\n\nRemember, I only need the table as output, nothing else\n",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 1.9
    },
    {
      "id": "591621c9-9ae5-4028-9724-e452533f4d67",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        700,
        220
      ],
      "parameters": {
        "mode": "combine",
        "options": {
          "includeUnpaired": true
        },
        "combineBy": "combineByPosition",
        "numberInputs": 3
      },
      "typeVersion": 3.1
    },
    {
      "id": "ad0abe47-08cd-4103-a75b-a3938292e0d2",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        880,
        340
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "700cca6b-9e3d-4158-81a5-c8c86bd425e6",
      "name": "Simple Memory1",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        980,
        340
      ],
      "parameters": {
        "sessionKey": "={{ $json.Comparison }}",
        "sessionIdType": "customKey"
      },
      "typeVersion": 1.3
    },
    {
      "id": "5d05d7b0-6b2a-4155-b3ea-923bed52c23d",
      "name": "Google Sheets7",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1340,
        180
      ],
      "parameters": {
        "columns": {
          "value": {
            "Comparison Table": "={{ $json.output }}"
          },
          "schema": [
            {
              "id": "Provider",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Provider",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Intro",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Intro",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Comparison Table",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Comparison Table",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1416889088,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17fG29HKhQMZKZVIJgFNBKqA5zyIGV_RFw9axiG0k1dQ/edit#gid=1416889088",
          "cachedResultName": "Test data 1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "17fG29HKhQMZKZVIJgFNBKqA5zyIGV_RFw9axiG0k1dQ",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17fG29HKhQMZKZVIJgFNBKqA5zyIGV_RFw9axiG0k1dQ/edit?usp=drivesdk",
          "cachedResultName": "Programmatic SEO of Truely vs. pages"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.5
    },
    {
      "id": "8a33fce0-c50a-4e7e-94f4-696e31a3f14a",
      "name": "AI Agent2",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        760,
        -820
      ],
      "parameters": {
        "text": "=Write a product learning curve comparison paragraph for  {{ $json['Product Vs. Dynamic'] }}\n\nWrite in simple vocabulary and make sure you provide accurate info of the activation process of each provider\n\nThe output should only contain the activation process text, nothing else",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 1.9
    },
    {
      "id": "858cc1d9-47cc-45b4-b14a-2bc177e69e4c",
      "name": "OpenAI Chat Model2",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        760,
        -660
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1",
          "cachedResultName": "gpt-4.1"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "1951eb45-e401-4516-bb64-c5090dcfad17",
      "name": "Simple Memory2",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        920,
        -660
      ],
      "parameters": {
        "sessionKey": "={{ $json.providers }}",
        "sessionIdType": "customKey"
      },
      "typeVersion": 1.3
    },
    {
      "id": "cf94400a-59b6-49ab-9785-6c9e2db1b22e",
      "name": "Google Sheets8",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1340,
        -820
      ],
      "parameters": {
        "columns": {
          "value": {
            "eSIM Activation": "={{ $json.output }}"
          },
          "schema": [
            {
              "id": "Provider",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Provider",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Intro",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Intro",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Comparison Table",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Comparison Table",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "eSIM Activation",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "eSIM Activation",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1416889088,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17fG29HKhQMZKZVIJgFNBKqA5zyIGV_RFw9axiG0k1dQ/edit#gid=1416889088",
          "cachedResultName": "Test data 1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "17fG29HKhQMZKZVIJgFNBKqA5zyIGV_RFw9axiG0k1dQ",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17fG29HKhQMZKZVIJgFNBKqA5zyIGV_RFw9axiG0k1dQ/edit?usp=drivesdk",
          "cachedResultName": "Programmatic SEO of Truely vs. pages"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.5
    },
    {
      "id": "781d63d8-9ccd-4bd0-8f8e-2cdf941b9c1d",
      "name": "Features",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        180,
        140
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 671004843,
          "cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_r3oDSNwbcVzg6wpSo0kDCk/edit#gid=671004843",
          "cachedResultName": "[[DATA]] Features Data"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1s70R1Djw3nCdqQdz8nOE_r3oDSNwbcVzg6wpSo0kDCk",
          "cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_r3oDSNwbcVzg6wpSo0kDCk/edit?usp=drivesdk",
          "cachedResultName": "THE KRANES Product Comparison page template "
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.5
    },
    {
      "id": "978478ae-8de9-4892-9364-5eafa8d47d27",
      "name": "Pricing",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        180,
        380
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1708880266,
          "cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_r3oDSNwbcVzg6wpSo0kDCk/edit#gid=1708880266",
          "cachedResultName": "[[DATA]] Product Pricing"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1s70R1Djw3nCdqQdz8nOE_r3oDSNwbcVzg6wpSo0kDCk",
          "cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_r3oDSNwbcVzg6wpSo0kDCk/edit?usp=drivesdk",
          "cachedResultName": "THE KRANES Product Comparison page template "
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.5
    },
    {
      "id": "e5f5d687-8d8d-4362-af2d-0d850f589c39",
      "name": "Products",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -260,
        -100
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 784599460,
          "cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_r3oDSNwbcVzg6wpSo0kDCk/edit#gid=784599460",
          "cachedResultName": "[[DATA]] Products"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1s70R1Djw3nCdqQdz8nOE_r3oDSNwbcVzg6wpSo0kDCk",
          "cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_r3oDSNwbcVzg6wpSo0kDCk/edit?usp=drivesdk",
          "cachedResultName": "THE KRANES Product Comparison page template "
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.5
    },
    {
      "id": "3dcc7d9e-a147-4481-8424-8a8822ce07f9",
      "name": "Product Overview",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        180,
        -100
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1692888920,
          "cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_r3oDSNwbcVzg6wpSo0kDCk/edit#gid=1692888920",
          "cachedResultName": "[[DATA]] Product Overview"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1s70R1Djw3nCdqQdz8nOE_r3oDSNwbcVzg6wpSo0kDCk",
          "cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_r3oDSNwbcVzg6wpSo0kDCk/edit?usp=drivesdk",
          "cachedResultName": "THE KRANES Product Comparison page template "
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.5
    },
    {
      "id": "93396c42-2b80-4e9a-9344-e680c42c2a25",
      "name": "Sticky Note12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        120,
        580
      ],
      "parameters": {
        "color": 4,
        "height": 240,
        "content": "User Ratings data\n"
      },
      "typeVersion": 1
    },
    {
      "id": "fc81db8e-52db-49df-9e10-537d1f1fe1ca",
      "name": "User Ratings",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        180,
        640
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 76885548,
          "cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_r3oDSNwbcVzg6wpSo0kDCk/edit#gid=76885548",
          "cachedResultName": "[[DATA]] Product User Reviews"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1s70R1Djw3nCdqQdz8nOE_r3oDSNwbcVzg6wpSo0kDCk",
          "cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_r3oDSNwbcVzg6wpSo0kDCk/edit?usp=drivesdk",
          "cachedResultName": "THE KRANES Product Comparison page template "
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.5
    },
    {
      "id": "bc807d1b-5fd6-496a-bd23-f31fcde62574",
      "name": "User Ratings Maker",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        800,
        620
      ],
      "parameters": {
        "text": "=I want you to create a user review comparison table of \n\nTake info from this user review data: {{ $json['User Rating Summary'] }}\n\nI want the table to be easy to read and concise\n\nThe output should only contain the table, nothing else",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 1.9
    },
    {
      "id": "029d13ab-2920-4d0f-8538-b10593282e6b",
      "name": "OpenAI Chat Model3",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        800,
        760
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "94d9e455-7d79-4237-827e-8e54758edeff",
      "name": "Simple Memory3",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        920,
        780
      ],
      "parameters": {
        "sessionKey": "={{ $json.providers }}",
        "sessionIdType": "customKey"
      },
      "typeVersion": 1.3
    },
    {
      "id": "d5bb7fcc-bdf7-4611-ac8f-87aeff58f6a5",
      "name": "Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1340,
        620
      ],
      "parameters": {
        "columns": {
          "value": {
            "User Ratings": "={{ $json.output }}"
          },
          "schema": [
            {
              "id": "Provider",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Provider",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Intro",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Intro",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Comparison Table",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Comparison Table",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "eSIM Activation",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "eSIM Activation",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "User Ratings",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "User Ratings",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1416889088,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17fG29HKhQMZKZVIJgFNBKqA5zyIGV_RFw9axiG0k1dQ/edit#gid=1416889088",
          "cachedResultName": "Test data 1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "17fG29HKhQMZKZVIJgFNBKqA5zyIGV_RFw9axiG0k1dQ",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17fG29HKhQMZKZVIJgFNBKqA5zyIGV_RFw9axiG0k1dQ/edit?usp=drivesdk",
          "cachedResultName": "Programmatic SEO of Truely vs. pages"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.5
    },
    {
      "id": "5c58713d-b435-4dea-b0a1-d827ffbcd088",
      "name": "AI Agent3",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        780,
        -1140
      ],
      "parameters": {
        "text": "=Write an FAQ section for:  {{ $json['Product Vs. Dynamic'] }}\n\nNote: If one of the provider is Truely, make sure to write it in a convincing way so that the reader thinks Truely is more popular\n\nThe output should only contain the FAQ text, nothing else",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 1.9
    },
    {
      "id": "682b3409-edeb-4fee-b034-17c495e0a329",
      "name": "OpenAI Chat Model4",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        780,
        -1000
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "b0624bce-d72c-486e-b3d0-15b3235518a8",
      "name": "Simple Memory4",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        940,
        -1000
      ],
      "parameters": {
        "sessionKey": "={{ $json['Product Vs. Dynamic'] }}",
        "sessionIdType": "customKey"
      },
      "typeVersion": 1.3
    },
    {
      "id": "e710caf6-d6a5-4bec-ad6b-01b1837b3b45",
      "name": "Google Sheets1",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1340,
        -1140
      ],
      "parameters": {
        "columns": {
          "value": {
            "User Ratings": "={{ $json.output }}"
          },
          "schema": [
            {
              "id": "Provider",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Provider",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Intro",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Intro",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Comparison Table",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Comparison Table",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "eSIM Activation",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "eSIM Activation",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "User Ratings",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "User Ratings",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1416889088,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17fG29HKhQMZKZVIJgFNBKqA5zyIGV_RFw9axiG0k1dQ/edit#gid=1416889088",
          "cachedResultName": "Test data 1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "17fG29HKhQMZKZVIJgFNBKqA5zyIGV_RFw9axiG0k1dQ",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17fG29HKhQMZKZVIJgFNBKqA5zyIGV_RFw9axiG0k1dQ/edit?usp=drivesdk",
          "cachedResultName": "Programmatic SEO of Truely vs. pages"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.5
    },
    {
      "id": "5f155698-23dc-4930-bfe0-a5ac4efa1cf6",
      "name": "Dorik CMS",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2220,
        -120
      ],
      "parameters": {
        "url": "https://api.cmsfly.com/api/v1/collections/6855985e93afef001268bfbb/items",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "=name",
              "value": "={{ $json.name }}"
            },
            {
              "name": "slug",
              "value": "={{ $json.slug }}"
            },
            {
              "name": "htmlContent",
              "value": "={{ $json.htmlContent }}"
            }
          ]
        },
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "X-Dorik-Key",
              "value": "1307e09d45ad0db928ce567ef171fca3c05468437016d13af170075ef058024b"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "58da9b60-21a7-4f66-a805-7c16090fb503",
      "name": "Code",
      "type": "n8n-nodes-base.code",
      "position": [
        2020,
        -120
      ],
      "parameters": {
        "jsCode": "const provider = $json[\"Provider vs.\"];\nconst slug = provider.toLowerCase().replace(/\\s+/g, \"-\");\n\nconst safe = (v) => v || \"\";\n\nreturn [{\n  json: {\n    name: provider,\n    slug,\n    htmlContent: `\n      <h1>${safe(provider)}</h1>\n      <section>${safe($json.Intro)}</section>\n      <section>${safe($json[\"Comparison Table\"])}</section>\n      <section>${safe($json[\"eSIM Activation\"])}</section>\n      <section>${safe($json[\"User Ratings\"])}</section>\n      <section>${safe($json.FAQs)}</section>\n    `\n  }\n}];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "e4dda855-3b3a-4013-8f5c-d3a3c0513e86",
      "name": "Merge2",
      "type": "n8n-nodes-base.merge",
      "position": [
        1800,
        -180
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineByPosition",
        "numberInputs": 6
      },
      "typeVersion": 3.1
    },
    {
      "id": "309c7d10-bd75-4451-b8f3-9dc273beb693",
      "name": "Code1",
      "type": "n8n-nodes-base.code",
      "position": [
        -120,
        -100
      ],
      "parameters": {
        "jsCode": "// Extract product names from the \"All Products\" column\nconst productNames = $input.all().map(item => item.json[\"All Products\"]).filter(Boolean);\n\nconst pairs = [];\n\nfor (let i = 0; i < productNames.length; i++) {\n  for (let j = i + 1; j < productNames.length; j++) {\n    const name = `${productNames[i]} vs ${productNames[j]}`;\n    const slug = name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');\n    pairs.push({\n      json: {\n        name,\n        slug,\n        product1: productNames[i],\n        product2: productNames[j]\n      }\n    });\n  }\n}\n\nreturn pairs;\n"
      },
      "typeVersion": 2
    },
    {
      "id": "c6ff7fe1-d26d-4bb2-8099-ea2391fbe9cf",
      "name": "Names and slugs",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1340,
        -100
      ],
      "parameters": {
        "columns": {
          "value": {
            "slug": "={{ $json.slug }}",
            "Product Vs. Dynamic": "={{ $json.name }}"
          },
          "schema": [
            {
              "id": "All Products",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "All Products",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Product Vs. Dynamic",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Product Vs. Dynamic",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "slug",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "slug",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "All Products"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 784599460,
          "cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_r3oDSNwbcVzg6wpSo0kDCk/edit#gid=784599460",
          "cachedResultName": "[[DATA]] Products"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1s70R1Djw3nCdqQdz8nOE_r3oDSNwbcVzg6wpSo0kDCk",
          "cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_r3oDSNwbcVzg6wpSo0kDCk/edit?usp=drivesdk",
          "cachedResultName": "THE KRANES Product Comparison page template "
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "7b688c38-8578-41ce-9360-b6d88c3b0ca8",
      "name": "Sticky Note14",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1260,
        -1180
      ],
      "parameters": {
        "color": 6,
        "width": 280,
        "height": 2100,
        "content": "Assembling"
      },
      "typeVersion": 1
    },
    {
      "id": "293af7a5-f2c2-4570-af5c-72156b3d7cfd",
      "name": "Sticky Note13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1340,
        -1240
      ],
      "parameters": {
        "width": 720,
        "height": 320,
        "content": "# \ud83e\udde0 Generate SEO Product Comparisons Using AI & Google Sheets\n\nThis workflow allows users to **automatically generate \u201cvs\u201d comparison pages** between SaaS tools using GPT-4o, data from Google Sheets, and publish-ready HTML for your CMS. The entire process is powered by a Google Sheet that acts as the control panel for product input and triggers.\n\nIt automates research, copywriting, and formatting \u2014 ensuring seamless integration between Google Sheets, OpenAI, and your publishing backend."
      },
      "typeVersion": 1
    },
    {
      "id": "7bb2f478-6299-46aa-ad02-eb4e19f2b62d",
      "name": "Sticky Note15",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1340,
        -880
      ],
      "parameters": {
        "width": 720,
        "height": 300,
        "content": "## \u2705 STEP 1 \u2013 GOOGLE SHEET SETUP\n\nCreate a Google Sheet structured like this:\n\n| Column                   | Purpose                                      |\n|--------------------------|----------------------------------------------|\n| All Products             | Add the full list of products to compare     |\n| Product Overview         | Add 2\u20133 line blurbs for each product         |\n| Features Data            | List of product features and their strengths |\n| Product Pricing          | Cost, tiers, and model                       |\n| Product User Reviews     | Summary of user sentiment                    |\n\n> No need to list pairs manually \u2014 the system will generate combinations automatically.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "2a3538a2-6b82-4f94-9fb6-77f2d24ffc00",
      "name": "Sticky Note16",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1340,
        -540
      ],
      "parameters": {
        "width": 720,
        "height": 360,
        "content": "## \ud83d\udd01 STEP 2 \u2013 COMBINE PRODUCTS TO GENERATE \u201cVS\u201d PAIRS\n\nThe Code node dynamically combines all products into pairs like:\n\n- `Truely vs Zapier`\n- `Truely vs Make`\n- `Make vs IFTTT`\n- \u2026406 total combinations for 29 tools!\n\nEach pair is labeled with:\n\n- `name`: `\"Zapier vs Make\"`\n- `slug`: `\"zapier-vs-make\"`\n\nThese become your page titles and URLs.\n\n---"
      },
      "typeVersion": 1
    },
    {
      "id": "064df6de-be16-4129-971c-88a7465b4d6b",
      "name": "Sticky Note17",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1340,
        -120
      ],
      "parameters": {
        "width": 720,
        "height": 320,
        "content": "## \ud83d\udcac STEP 3 \u2013 GENERATE CONTENT USING AI\n\nEach section of the page is written using GPT-4o, powered through LangChain inside n8n:\n\n| Section            | Description                                      |\n|--------------------|--------------------------------------------------|\n| \ud83d\udcdd Intro            | Contextual intro for the comparison              |\n| \ud83d\udcca Feature Table    | Key features and comparison grid                 |\n| \ud83d\udcb5 Pricing Summary  | Who offers better value and how                  |\n| \ud83d\ude80 Activation Guide | How to get started with each tool                |\n| \ud83c\udf1f User Ratings     | Summary of what people say about each tool       |\n| \u2753 FAQs             | Common doubts or decision criteria explained     |\n\n> These are written in a friendly, helpful tone and subtly highlight Truely when relevant.\n\n---"
      },
      "typeVersion": 1
    },
    {
      "id": "46bbd6f6-eda4-4b0a-9b2d-dcaa857d280b",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1340,
        260
      ],
      "parameters": {
        "width": 720,
        "height": 300,
        "content": "## \ud83e\uddf1 STEP 4 \u2013 BUILD FINAL HTML & PUBLISH\n\nOnce content is generated:\n\n- A final `Code` node assembles everything into clean HTML blocks.\n- The data is pushed to your CMS via API (e.g., Dorik), using:\n  - `\"name\"`: Page title  \n  - `\"slug\"`: SEO URL  \n  - `\"htmlContent\"`: Full HTML for the page\n\nYou now have a fully functioning \u201cProduct A vs Product B\u201d page!\n\n---"
      },
      "typeVersion": 1
    },
    {
      "id": "c4ee7dd6-e0b2-420d-9b4b-c5f0666cdebb",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1340,
        640
      ],
      "parameters": {
        "width": 720,
        "height": 280,
        "content": "## \ud83d\udd52 STEP 5 \u2013 RUN THE WORKFLOW\n\nThe automation can be triggered:\n\n- \ud83d\udcc6 On a schedule (e.g., every 10 minutes)\n- \ud83d\ude80 Or manually (with \u201cTest Workflow\u201d in n8n)\n\nEach run checks for new or updated product rows and processes them into full pages automatically.\n\n---\n"
      },
      "typeVersion": 1
    },
    {
      "id": "d5f14618-2796-4bd4-a054-b595cb24fbba",
      "name": "When clicking \u2018Test workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -420,
        -100
      ],
      "parameters": {},
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "920d3061-29e9-41c6-bc8a-8c1a26030c97",
  "connections": {
    "Code": {
      "main": [
        [
          {
            "node": "Dorik CMS",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code1": {
      "main": [
        [
          {
            "node": "Product Overview",
            "type": "main",
            "index": 0
          },
          {
            "node": "Names and slugs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "AI Agent1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge2": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Pricing": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "Google Sheets6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Features": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Products": {
      "main": [
        [
          {
            "node": "AI Agent2",
            "type": "main",
            "index": 0
          },
          {
            "node": "AI Agent3",
            "type": "main",
            "index": 0
          },
          {
            "node": "Code1",
            "type": "main",
            "index": 0
          },
          {
            "node": "Features",
            "type": "main",
            "index": 0
          },
          {
            "node": "Pricing",
            "type": "main",
            "index": 0
          },
          {
            "node": "User Ratings",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent1": {
      "main": [
        [
          {
            "node": "Google Sheets7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent2": {
      "main": [
        [
          {
            "node": "Google Sheets8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent3": {
      "main": [
        [
          {
            "node": "Google Sheets1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "User Ratings": {
      "main": [
        [
          {
            "node": "User Ratings Maker",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets": {
      "main": [
        [
          {
            "node": "Merge2",
            "type": "main",
            "index": 5
          }
        ]
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "AI Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets1": {
      "main": [
        [
          {
            "node": "Merge2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets6": {
      "main": [
        [
          {
            "node": "Merge2",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "Google Sheets7": {
      "main": [
        [
          {
            "node": "Merge2",
            "type": "main",
            "index": 4
          }
        ]
      ]
    },
    "Google Sheets8": {
      "main": [
        [
          {
            "node": "Merge2",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Simple Memory1": {
      "ai_memory": [
        [
          {
            "node": "AI Agent1",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory2": {
      "ai_memory": [
        [
          {
            "node": "AI Agent2",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory3": {
      "ai_memory": [
        [
          {
            "node": "User Ratings Maker",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory4": {
      "ai_memory": [
        [
          {
            "node": "AI Agent3",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Names and slugs": {
      "main": [
        [
          {
            "node": "Merge2",
            "type": "main",
            "index": 3
          }
        ]
      ]
    },
    "Product Overview": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model2": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent2",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model3": {
      "ai_languageModel": [
        [
          {
            "node": "User Ratings Maker",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model4": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent3",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "User Ratings Maker": {
      "main": [
        [
          {
            "node": "Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Test workflow\u2019": {
      "main": [
        [
          {
            "node": "Products",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}