Flujo de trabajo de página de comparación
Este es unContent Creation, Multimodal AIflujo de automatización del dominio deautomatización que contiene 50 nodos.Utiliza principalmente nodos como Code, Merge, HttpRequest, GoogleSheets, ManualTrigger. Generar automáticamente páginas de comparación de productos usando OpenAI y Google Sheets
- •Pueden requerirse credenciales de autenticación para la API de destino
- •Credenciales de API de Google Sheets
- •Clave de API de OpenAI
Nodos utilizados (50)
Categoría
{
"id": "UpNXeGPDsa1GIWMw",
"meta": {
"instanceId": "c87a766eb8ed4a39121cf119a5038250a8ca0a11ed90cdd244f6beb7336758b3",
"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": {
"id": "HIKBWjUjcycw5pnA",
"name": "OpenAi account 2"
}
},
"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": {
"id": "Nos9qO5bcL3vdPcg",
"name": "Google Sheets account 4"
}
},
"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 — imagine you’re 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’s 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": {
"id": "HIKBWjUjcycw5pnA",
"name": "OpenAi account 2"
}
},
"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": {
"id": "Nos9qO5bcL3vdPcg",
"name": "Google Sheets account 4"
}
},
"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": {
"id": "HIKBWjUjcycw5pnA",
"name": "OpenAi account 2"
}
},
"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": {
"id": "Nos9qO5bcL3vdPcg",
"name": "Google Sheets account 4"
}
},
"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.com/spreadsheets/d/1s70R1Djw3nCdqQdz8nOE_r3oDSNwbcVzg6wpSo0kDCk/edit#gid=671004843",
"cachedResultName": "[[DATA]] Features Data"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1s70R1Djw3nCdqQdz8nOE_r3oDSNwbcVzg6wpSo0kDCk",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1s70R1Djw3nCdqQdz8nOE_r3oDSNwbcVzg6wpSo0kDCk/edit?usp=drivesdk",
"cachedResultName": "THE KRANES Product Comparison page template "
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "gPEEiziU0kLV5lvj",
"name": "Google Sheets account 3"
}
},
"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.com/spreadsheets/d/1s70R1Djw3nCdqQdz8nOE_r3oDSNwbcVzg6wpSo0kDCk/edit#gid=1708880266",
"cachedResultName": "[[DATA]] Product Pricing"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1s70R1Djw3nCdqQdz8nOE_r3oDSNwbcVzg6wpSo0kDCk",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1s70R1Djw3nCdqQdz8nOE_r3oDSNwbcVzg6wpSo0kDCk/edit?usp=drivesdk",
"cachedResultName": "THE KRANES Product Comparison page template "
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "gPEEiziU0kLV5lvj",
"name": "Google Sheets account 3"
}
},
"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.com/spreadsheets/d/1s70R1Djw3nCdqQdz8nOE_r3oDSNwbcVzg6wpSo0kDCk/edit#gid=784599460",
"cachedResultName": "[[DATA]] Products"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1s70R1Djw3nCdqQdz8nOE_r3oDSNwbcVzg6wpSo0kDCk",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1s70R1Djw3nCdqQdz8nOE_r3oDSNwbcVzg6wpSo0kDCk/edit?usp=drivesdk",
"cachedResultName": "THE KRANES Product Comparison page template "
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "gPEEiziU0kLV5lvj",
"name": "Google Sheets account 3"
}
},
"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.com/spreadsheets/d/1s70R1Djw3nCdqQdz8nOE_r3oDSNwbcVzg6wpSo0kDCk/edit#gid=1692888920",
"cachedResultName": "[[DATA]] Product Overview"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1s70R1Djw3nCdqQdz8nOE_r3oDSNwbcVzg6wpSo0kDCk",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1s70R1Djw3nCdqQdz8nOE_r3oDSNwbcVzg6wpSo0kDCk/edit?usp=drivesdk",
"cachedResultName": "THE KRANES Product Comparison page template "
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "gPEEiziU0kLV5lvj",
"name": "Google Sheets account 3"
}
},
"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.com/spreadsheets/d/1s70R1Djw3nCdqQdz8nOE_r3oDSNwbcVzg6wpSo0kDCk/edit#gid=76885548",
"cachedResultName": "[[DATA]] Product User Reviews"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1s70R1Djw3nCdqQdz8nOE_r3oDSNwbcVzg6wpSo0kDCk",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1s70R1Djw3nCdqQdz8nOE_r3oDSNwbcVzg6wpSo0kDCk/edit?usp=drivesdk",
"cachedResultName": "THE KRANES Product Comparison page template "
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "gPEEiziU0kLV5lvj",
"name": "Google Sheets account 3"
}
},
"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": {
"id": "HIKBWjUjcycw5pnA",
"name": "OpenAi account 2"
}
},
"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": {
"id": "Nos9qO5bcL3vdPcg",
"name": "Google Sheets account 4"
}
},
"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": {
"id": "HIKBWjUjcycw5pnA",
"name": "OpenAi account 2"
}
},
"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": {
"id": "Nos9qO5bcL3vdPcg",
"name": "Google Sheets account 4"
}
},
"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": {
"id": "4Hzemqi0UYcjm8Kx",
"name": "Header Auth account"
}
},
"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.com/spreadsheets/d/1s70R1Djw3nCdqQdz8nOE_r3oDSNwbcVzg6wpSo0kDCk/edit#gid=784599460",
"cachedResultName": "[[DATA]] Products"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1s70R1Djw3nCdqQdz8nOE_r3oDSNwbcVzg6wpSo0kDCk",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1s70R1Djw3nCdqQdz8nOE_r3oDSNwbcVzg6wpSo0kDCk/edit?usp=drivesdk",
"cachedResultName": "THE KRANES Product Comparison page template "
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "gPEEiziU0kLV5lvj",
"name": "Google Sheets account 3"
}
},
"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": "# 🧠 Generate SEO Product Comparisons Using AI & Google Sheets\n\nThis workflow allows users to **automatically generate “vs” 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 — 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": "## ✅ STEP 1 – 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–3 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 — 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": "## 🔁 STEP 2 – COMBINE PRODUCTS TO GENERATE “VS” 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- …406 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": "## 💬 STEP 3 – 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| 📝 Intro | Contextual intro for the comparison |\n| 📊 Feature Table | Key features and comparison grid |\n| 💵 Pricing Summary | Who offers better value and how |\n| 🚀 Activation Guide | How to get started with each tool |\n| 🌟 User Ratings | Summary of what people say about each tool |\n| ❓ 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": "## 🧱 STEP 4 – 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 “Product A vs Product B” 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": "## 🕒 STEP 5 – RUN THE WORKFLOW\n\nThe automation can be triggered:\n\n- 📆 On a schedule (e.g., every 10 minutes)\n- 🚀 Or manually (with “Test Workflow” 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 ‘Test workflow’",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-420,
-100
],
"parameters": {},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "920d3061-29e9-41c6-bc8a-8c1a26030c97",
"connections": {
"58da9b60-21a7-4f66-a805-7c16090fb503": {
"main": [
[
{
"node": "5f155698-23dc-4930-bfe0-a5ac4efa1cf6",
"type": "main",
"index": 0
}
]
]
},
"309c7d10-bd75-4451-b8f3-9dc273beb693": {
"main": [
[
{
"node": "3dcc7d9e-a147-4481-8424-8a8822ce07f9",
"type": "main",
"index": 0
},
{
"node": "c6ff7fe1-d26d-4bb2-8099-ea2391fbe9cf",
"type": "main",
"index": 0
}
]
]
},
"591621c9-9ae5-4028-9724-e452533f4d67": {
"main": [
[
{
"node": "8f4fcd17-205b-42b7-b9f8-09ed913ffe63",
"type": "main",
"index": 0
}
]
]
},
"e4dda855-3b3a-4013-8f5c-d3a3c0513e86": {
"main": [
[
{
"node": "58da9b60-21a7-4f66-a805-7c16090fb503",
"type": "main",
"index": 0
}
]
]
},
"978478ae-8de9-4892-9364-5eafa8d47d27": {
"main": [
[
{
"node": "591621c9-9ae5-4028-9724-e452533f4d67",
"type": "main",
"index": 2
}
]
]
},
"7cf7b91f-b5ec-4145-b569-4e4bab58c0e1": {
"main": [
[
{
"node": "c274d098-918c-43e5-87cc-aa13ab5f3bce",
"type": "main",
"index": 0
}
]
]
},
"781d63d8-9ccd-4bd0-8f8e-2cdf941b9c1d": {
"main": [
[
{
"node": "591621c9-9ae5-4028-9724-e452533f4d67",
"type": "main",
"index": 1
}
]
]
},
"e5f5d687-8d8d-4362-af2d-0d850f589c39": {
"main": [
[
{
"node": "8a33fce0-c50a-4e7e-94f4-696e31a3f14a",
"type": "main",
"index": 0
},
{
"node": "5c58713d-b435-4dea-b0a1-d827ffbcd088",
"type": "main",
"index": 0
},
{
"node": "309c7d10-bd75-4451-b8f3-9dc273beb693",
"type": "main",
"index": 0
},
{
"node": "781d63d8-9ccd-4bd0-8f8e-2cdf941b9c1d",
"type": "main",
"index": 0
},
{
"node": "978478ae-8de9-4892-9364-5eafa8d47d27",
"type": "main",
"index": 0
},
{
"node": "fc81db8e-52db-49df-9e10-537d1f1fe1ca",
"type": "main",
"index": 0
}
]
]
},
"8f4fcd17-205b-42b7-b9f8-09ed913ffe63": {
"main": [
[
{
"node": "5d05d7b0-6b2a-4155-b3ea-923bed52c23d",
"type": "main",
"index": 0
}
]
]
},
"8a33fce0-c50a-4e7e-94f4-696e31a3f14a": {
"main": [
[
{
"node": "cf94400a-59b6-49ab-9785-6c9e2db1b22e",
"type": "main",
"index": 0
}
]
]
},
"5c58713d-b435-4dea-b0a1-d827ffbcd088": {
"main": [
[
{
"node": "e710caf6-d6a5-4bec-ad6b-01b1837b3b45",
"type": "main",
"index": 0
}
]
]
},
"fc81db8e-52db-49df-9e10-537d1f1fe1ca": {
"main": [
[
{
"node": "bc807d1b-5fd6-496a-bd23-f31fcde62574",
"type": "main",
"index": 0
}
]
]
},
"d5bb7fcc-bdf7-4611-ac8f-87aeff58f6a5": {
"main": [
[
{
"node": "e4dda855-3b3a-4013-8f5c-d3a3c0513e86",
"type": "main",
"index": 5
}
]
]
},
"e50e2a07-bb82-47f8-8f86-34dc52f9ee8c": {
"ai_memory": [
[
{
"node": "7cf7b91f-b5ec-4145-b569-4e4bab58c0e1",
"type": "ai_memory",
"index": 0
}
]
]
},
"e710caf6-d6a5-4bec-ad6b-01b1837b3b45": {
"main": [
[
{
"node": "e4dda855-3b3a-4013-8f5c-d3a3c0513e86",
"type": "main",
"index": 0
}
]
]
},
"c274d098-918c-43e5-87cc-aa13ab5f3bce": {
"main": [
[
{
"node": "e4dda855-3b3a-4013-8f5c-d3a3c0513e86",
"type": "main",
"index": 2
}
]
]
},
"5d05d7b0-6b2a-4155-b3ea-923bed52c23d": {
"main": [
[
{
"node": "e4dda855-3b3a-4013-8f5c-d3a3c0513e86",
"type": "main",
"index": 4
}
]
]
},
"cf94400a-59b6-49ab-9785-6c9e2db1b22e": {
"main": [
[
{
"node": "e4dda855-3b3a-4013-8f5c-d3a3c0513e86",
"type": "main",
"index": 1
}
]
]
},
"700cca6b-9e3d-4158-81a5-c8c86bd425e6": {
"ai_memory": [
[
{
"node": "8f4fcd17-205b-42b7-b9f8-09ed913ffe63",
"type": "ai_memory",
"index": 0
}
]
]
},
"1951eb45-e401-4516-bb64-c5090dcfad17": {
"ai_memory": [
[
{
"node": "8a33fce0-c50a-4e7e-94f4-696e31a3f14a",
"type": "ai_memory",
"index": 0
}
]
]
},
"94d9e455-7d79-4237-827e-8e54758edeff": {
"ai_memory": [
[
{
"node": "bc807d1b-5fd6-496a-bd23-f31fcde62574",
"type": "ai_memory",
"index": 0
}
]
]
},
"b0624bce-d72c-486e-b3d0-15b3235518a8": {
"ai_memory": [
[
{
"node": "5c58713d-b435-4dea-b0a1-d827ffbcd088",
"type": "ai_memory",
"index": 0
}
]
]
},
"c6ff7fe1-d26d-4bb2-8099-ea2391fbe9cf": {
"main": [
[
{
"node": "e4dda855-3b3a-4013-8f5c-d3a3c0513e86",
"type": "main",
"index": 3
}
]
]
},
"3dcc7d9e-a147-4481-8424-8a8822ce07f9": {
"main": [
[
{
"node": "7cf7b91f-b5ec-4145-b569-4e4bab58c0e1",
"type": "main",
"index": 0
},
{
"node": "591621c9-9ae5-4028-9724-e452533f4d67",
"type": "main",
"index": 0
}
]
]
},
"f89ab3f6-163e-4139-b8f7-c023304b4486": {
"ai_languageModel": [
[
{
"node": "7cf7b91f-b5ec-4145-b569-4e4bab58c0e1",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"ad0abe47-08cd-4103-a75b-a3938292e0d2": {
"ai_languageModel": [
[
{
"node": "8f4fcd17-205b-42b7-b9f8-09ed913ffe63",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"858cc1d9-47cc-45b4-b14a-2bc177e69e4c": {
"ai_languageModel": [
[
{
"node": "8a33fce0-c50a-4e7e-94f4-696e31a3f14a",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"029d13ab-2920-4d0f-8538-b10593282e6b": {
"ai_languageModel": [
[
{
"node": "bc807d1b-5fd6-496a-bd23-f31fcde62574",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"682b3409-edeb-4fee-b034-17c495e0a329": {
"ai_languageModel": [
[
{
"node": "5c58713d-b435-4dea-b0a1-d827ffbcd088",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"bc807d1b-5fd6-496a-bd23-f31fcde62574": {
"main": [
[
{
"node": "d5bb7fcc-bdf7-4611-ac8f-87aeff58f6a5",
"type": "main",
"index": 0
}
]
]
},
"d5f14618-2796-4bd4-a054-b595cb24fbba": {
"main": [
[
{
"node": "e5f5d687-8d8d-4362-af2d-0d850f589c39",
"type": "main",
"index": 0
}
]
]
}
}
}¿Cómo usar este flujo de trabajo?
Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.
¿En qué escenarios es adecuado este flujo de trabajo?
Avanzado - Creación de contenido, IA Multimodal
¿Es de pago?
Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.
Flujos de trabajo relacionados recomendados
Compartir este flujo de trabajo