Workflow de page de comparaison
Ceci est unContent Creation, Multimodal AIworkflow d'automatisation du domainecontenant 50 nœuds.Utilise principalement des nœuds comme Code, Merge, HttpRequest, GoogleSheets, ManualTrigger. Générer automatiquement des pages de comparaison de produits en utilisant OpenAI et Google Sheets
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
- •Informations d'identification Google Sheets API
- •Clé API OpenAI
Nœuds utilisés (50)
Catégorie
{
"id": "UpNXeGPDsa1GIWMw",
"meta": {
"instanceId": "c87a766eb8ed4a39121cf119a5038250a8ca0a11ed90cdd244f6beb7336758b3",
"templateCredsSetupCompleted": true
},
"name": "Versus page workflow",
"tags": [],
"nodes": [
{
"id": "d7025bd7-197d-4c0d-949c-9b5f8f5c2c66",
"name": "Note adhésive2",
"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": "Note adhésive3",
"type": "n8n-nodes-base.stickyNote",
"position": [
120,
100
],
"parameters": {
"color": 4,
"height": 200,
"content": "Features"
},
"typeVersion": 1
},
{
"id": "8c4fc5ad-ca65-4305-8162-b97c9ad04026",
"name": "Note adhésive4",
"type": "n8n-nodes-base.stickyNote",
"position": [
120,
340
],
"parameters": {
"color": 4,
"height": 200,
"content": "Pricing"
},
"typeVersion": 1
},
{
"id": "88f9d6b7-f61c-401f-8edc-6ec0eb02fa30",
"name": "Note adhésive5",
"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": "Agent IA",
"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": "Mémoire simple",
"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": "Note adhésive6",
"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": "Note adhésive7",
"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": "Note adhésive8",
"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": "Note adhésive9",
"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": "Note adhésive10",
"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": "Note adhésive11",
"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": "Agent IA1",
"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": "Fusion",
"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": "Mémoire simple1",
"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": "Agent IA2",
"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": "Mémoire simple2",
"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": "Fonctionnalités",
"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": "Tarification",
"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": "Produits",
"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": "Aperçu du produit",
"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": "Note adhésive12",
"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": "Évaluations utilisateurs",
"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": "Générateur d'évaluations",
"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": "Mémoire simple3",
"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": "Agent IA3",
"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": "Mémoire simple4",
"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": "Fusion2",
"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": "Noms et 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": "Note adhésive14",
"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": "Note adhésive13",
"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": "Note adhésive15",
"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": "Note adhésive16",
"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": "Note adhésive17",
"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": "Note adhésive",
"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": "Note adhésive1",
"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": "Au clic sur 'Tester le flux'",
"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
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé - Création de contenu, IA Multimodale
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Partager ce workflow