{
  "id": "bkRodBs0nMPT5cDv",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Find the Content Gaps in Your Competitors' Discourse for Market Research and SEO",
  "tags": [
    {
      "id": "MyFEaUe9Eo4t7SvF",
      "name": "SEO",
      "createdAt": "2025-05-20T13:16:17.982Z",
      "updatedAt": "2025-05-20T13:16:17.982Z"
    },
    {
      "id": "kRM0hQV2zw7VxrON",
      "name": "Research",
      "createdAt": "2025-05-21T19:44:19.136Z",
      "updatedAt": "2025-05-21T19:44:19.136Z"
    },
    {
      "id": "sJk9cUvmMU8FkJXv",
      "name": "AI",
      "createdAt": "2025-05-20T13:16:15.636Z",
      "updatedAt": "2025-05-20T13:16:15.636Z"
    },
    {
      "id": "kldZpTCan1suEN8v",
      "name": "Marketing",
      "createdAt": "2025-05-20T13:16:20.459Z",
      "updatedAt": "2025-05-20T13:16:20.459Z"
    },
    {
      "id": "9QurS5Kb1CkCYrnG",
      "name": "Product",
      "createdAt": "2025-05-21T17:06:29.704Z",
      "updatedAt": "2025-05-21T17:06:29.704Z"
    }
  ],
  "nodes": [
    {
      "id": "17af96f8-2f12-48b3-864f-bd28aa765ba6",
      "name": "When clicking \"Execute Workflow\"",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -200,
        520
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "9f270d49-c494-4c67-8749-e9ae3dfd0cef",
      "name": "HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        380,
        300
      ],
      "parameters": {
        "url": "={{ $json.URL }}",
        "options": {
          "redirect": {
            "redirect": {
              "followRedirects": true
            }
          }
        }
      },
      "typeVersion": 3,
      "continueOnFail": true
    },
    {
      "id": "3290629e-655a-4091-aee4-41482f441a52",
      "name": "HTML Extract",
      "type": "n8n-nodes-base.htmlExtract",
      "position": [
        560,
        300
      ],
      "parameters": {
        "options": {
          "trimValues": false
        },
        "extractionValues": {
          "values": [
            {
              "key": "body",
              "cssSelector": "html"
            }
          ]
        }
      },
      "typeVersion": 1,
      "continueOnFail": true
    },
    {
      "id": "94146021-3b01-43d0-b6d7-9fcfca0d065a",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        1580,
        140
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combinationMode": "mergeByPosition"
      },
      "typeVersion": 2
    },
    {
      "id": "08e5118b-37df-47a7-a50d-dbd2854d3dee",
      "name": "Clean Content",
      "type": "n8n-nodes-base.code",
      "position": [
        720,
        300
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "if ($input.item.json.body){\n\n\n\n$input.item.json.content = $input.item.json.body.replaceAll('/^\\s+|\\s+$/g', '').replace('/(\\r\\n|\\n|\\r)/gm', \"\").replace(/\\s+/g, ' ')\n\n\n  $input.item.json.contentShort = $input.item.json.content.slice(0, 10000)\n}\n\n\n\n\nreturn $input.item"
      },
      "executeOnce": false,
      "typeVersion": 1,
      "continueOnFail": true,
      "alwaysOutputData": true
    },
    {
      "id": "6eed41aa-176b-4a7c-8288-8c6dd47361df",
      "name": "Split In Batches",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        120,
        220
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "1ca73312-3b32-4fd7-85e9-05850383d0b4",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -300,
        -200
      ],
      "parameters": {
        "width": 300,
        "height": 640,
        "content": "## 1. Specify the Google Sheet file\n\n#### It should contain the company names and their URLs (in the URL column). Also the Topical Summary and the Graph Summary columns that we will copy the data to.\n\n\ud83e\udd0c [SEE GOOGLE SHEETS TEMPLATE HERE](https://docs.google.com/spreadsheets/d/14qR7Gi8SRCd3eM6_V3ftRcDODkEFAILEqogjUvk7hKs/edit?usp=sharing) - use the same column names and replace with your data. Can be a list of companies generated with the workflow below, or Manus AI or any other Deep Research mode or a list of URLs you'd like to analyze for SEO.\n\n\n\ud83d\udea8 Make sure you specify the file here"
      },
      "typeVersion": 1
    },
    {
      "id": "8c657ce2-a363-4a77-9417-a758a8f3d3a0",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        60,
        -160
      ],
      "parameters": {
        "width": 220,
        "height": 600,
        "content": "## 2. Avoid rate limit error\n\n#### Split requests into batches of 10 \n\nso you don't make too many requests at once. \n\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "ebd2ae92-1757-4dc4-b21b-09ad906398ca",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        340,
        -80
      ],
      "parameters": {
        "width": 520,
        "height": 520,
        "content": "## 3. Make an HTTP request and extract text content from the links provided\n\n#### Clean up the content to extract only text, not HTML\n\nwe will then use this content to analyze data"
      },
      "typeVersion": 1
    },
    {
      "id": "6ef3a264-586f-406a-ad44-cdbe2aa28654",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        920,
        -240
      ],
      "parameters": {
        "width": 440,
        "height": 680,
        "content": "## 4. Use InfraNodus GraphRAG Content Enhancer Tool \n\n#### It will use its AI to generate topical summaries and structural insights from every company's website. \n\nIt will generate a \n\n1) Topical Summary \u2014 AI generated summaries of the main topical clusters found in the document (if `graph summary` requestMode is used or a single summary if `summary` requestMode is used.\n\n2) Graph Summary \u2014 the information about the content gaps, the main topical clusters, keywords, and keyword combinations for the websites you provided.\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "727b3598-b759-4c4c-bbaa-50704d159b96",
      "name": "InfraNodus GraphRAG Content Enhancer",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1080,
        260
      ],
      "parameters": {
        "url": "https://infranodus.com/api/v1/graphAndAdvice?doNotSave=true&optimize=develop&includeGraph=false&includeGraphSummary=true",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "name",
              "value": "n8n_dummy_graph"
            },
            {
              "name": "aiTopics",
              "value": "true"
            },
            {
              "name": "text",
              "value": "={{ $json.contentShort }}"
            },
            {
              "name": "requestMode",
              "value": "summary"
            }
          ]
        },
        "genericAuthType": "httpBearerAuth"
      },
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "77584973-d4fd-4a5b-9344-baebdfb4e584",
      "name": "Google Docs",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        3780,
        600
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "text": "={{ $('InfraNodus AI Advice').item.json.aiAdvice[0].text }}\n\n{{ $('InfraNodus Question Generator').item.json.aiAdvice.slice(0, 3).map(advice => advice.text).join('\\n\\n') }}",
              "action": "insert"
            }
          ]
        },
        "operation": "update",
        "documentURL": "https://docs.google.com/document/d/1q_pjPlg7flnP5TooBEC_4r-SkyY6F5tgrC-kE7lbFls/edit?tab=t.0"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "fd082093-c2b1-483e-b418-31bebd15d2c6",
      "name": "Aggregate",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        3100,
        600
      ],
      "parameters": {
        "options": {},
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {
              "fieldToAggregate": "Topical Summary"
            },
            {
              "fieldToAggregate": "Graph Summary"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "4c82a7bf-aa76-4d43-83dc-de54679b5f10",
      "name": "Read a Google Sheets File",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -200,
        240
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1122486654,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1l4RBfavkqZLz8JdwrgNsSwD8xERlDm6BrA2gXFPm0Dg/edit#gid=1122486654",
          "cachedResultName": "Empty"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1l4RBfavkqZLz8JdwrgNsSwD8xERlDm6BrA2gXFPm0Dg",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1l4RBfavkqZLz8JdwrgNsSwD8xERlDm6BrA2gXFPm0Dg/edit?usp=drivesdk",
          "cachedResultName": "Visual Text Analysis Tools"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "5c8a772c-573d-4115-ab61-54a492f69907",
      "name": "Update Google Sheets with Content Insights",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2000,
        240
      ],
      "parameters": {
        "options": {},
        "fieldsUi": {
          "values": [
            {
              "column": "Graph Summary",
              "fieldValue": "={{ $json.graphSummary }}"
            },
            {
              "column": "Topical Summary",
              "fieldValue": "={{ $json.aiAdvice[0].text }}"
            }
          ]
        },
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1122486654,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1l4RBfavkqZLz8JdwrgNsSwD8xERlDm6BrA2gXFPm0Dg/edit#gid=1122486654",
          "cachedResultName": "Empty"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1l4RBfavkqZLz8JdwrgNsSwD8xERlDm6BrA2gXFPm0Dg/edit?gid=1287901638#gid=1287901638"
        },
        "valueToMatchOn": "={{ $json.URL }}",
        "columnToMatchOn": "URL"
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "47de0abb-b1ff-4620-a80f-ac3c3a2369a6",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1500,
        -140
      ],
      "parameters": {
        "width": 260,
        "height": 460,
        "content": "## 5. Add the enhanced content to original row\n\n#### We use this node to match the result to the table row (company and URL) we used to generate this result.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "0a665031-77de-4649-a274-b19092d5f0cf",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1920,
        -100
      ],
      "parameters": {
        "width": 260,
        "height": 520,
        "content": "## 6. Enrich the original Google sheets with the content\n\n#### We save the keywords, topical clusters, topical summaries, and content gaps to the Google sheets, so you can reuse it later in other workflows. \n\n\ud83d\udea8 Make sure to specify the Google sheets file here"
      },
      "typeVersion": 1
    },
    {
      "id": "6955a297-326e-4c30-bfd7-a3abdb2eb712",
      "name": "Wait to avoid API overload",
      "type": "n8n-nodes-base.wait",
      "position": [
        2280,
        500
      ],
      "parameters": {
        "unit": "seconds"
      },
      "typeVersion": 1
    },
    {
      "id": "f1a16bb2-231f-46ae-87d8-91852223092a",
      "name": "If Node: did we process all the data?",
      "type": "n8n-nodes-base.if",
      "position": [
        2500,
        500
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "6b987d9e-7977-4c1e-a22c-42f1bd47e780",
              "operator": {
                "type": "boolean",
                "operation": "false",
                "singleValue": true
              },
              "leftValue": "={{ $node[\"Split In Batches\"].context[\"noItemsLeft\"] }}",
              "rightValue": "value2"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "d6aa6d5d-0cb8-4149-ad78-44b51312ad1a",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2240,
        300
      ],
      "parameters": {
        "width": 420,
        "height": 400,
        "content": "## 7. Batch complete? Go to the next one.\n\n#### We process content in batches of 10 to avoid API overload and rate limit errors."
      },
      "typeVersion": 1
    },
    {
      "id": "e1814824-cb3d-46d3-8747-57bce510493f",
      "name": "Get the content from Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2800,
        600
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1122486654,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1l4RBfavkqZLz8JdwrgNsSwD8xERlDm6BrA2gXFPm0Dg/edit#gid=1122486654",
          "cachedResultName": "Empty"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1l4RBfavkqZLz8JdwrgNsSwD8xERlDm6BrA2gXFPm0Dg",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1l4RBfavkqZLz8JdwrgNsSwD8xERlDm6BrA2gXFPm0Dg/edit?usp=drivesdk",
          "cachedResultName": "Visual Text Analysis Tools"
        },
        "combineFilters": "OR"
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "15dbb650-6c59-49fa-a2fd-8cf4a691b667",
      "name": "InfraNodus AI Advice",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3320,
        480
      ],
      "parameters": {
        "url": "https://infranodus.com/api/v1/graphAndAdvice?doNotSave=true&optimize=develop&includeGraph=false&includeGraphSummary=true",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "aiTopics",
              "value": "true"
            },
            {
              "name": "prompt",
              "value": "=Tell me what are the main topics and gaps in the discourse provided"
            },
            {
              "name": "requestMode",
              "value": "response"
            },
            {
              "name": "text",
              "value": "={{ $json['Topical Summary'].join(' ') }}"
            }
          ]
        },
        "genericAuthType": "httpBearerAuth"
      },
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "c7512eb4-d37f-4613-9b35-94739190515f",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2740,
        240
      ],
      "parameters": {
        "height": 580,
        "content": "## 8. Enrich the original Google sheets with your insights\n\n#### We can then use this data for further research and SEO\n\n\ud83d\udea8 Make sure to specify the Google sheets file here"
      },
      "typeVersion": 1
    },
    {
      "id": "987fd873-00ed-48c8-bbb5-ef309fbd2f21",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3040,
        240
      ],
      "parameters": {
        "width": 500,
        "height": 580,
        "content": "## 9. Get all the insights obtained from all the documents and create the final report.\n\n#### Synthesize the final report based on the main topics, summaries, and content gaps discovered in the previous steps\n\nOptional: You can also feed this output to another workflow to create a full report or SEO-friendly article. "
      },
      "typeVersion": 1
    },
    {
      "id": "7c83852a-8a77-471e-b105-6ef31e1e210e",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -300,
        760
      ],
      "parameters": {
        "width": 300,
        "height": 300,
        "content": "## 0. Specify the starting point\n\n#### You may choose to connect this node directly to the Step 8 if you already enriched the data in the Excel sheet.\n\nIn that case, the workflow will take data from the Topical Summary column and generate the results for you\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "f0b063d7-65e3-4bea-8065-af0b6fdb7e8f",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -300,
        -400
      ],
      "parameters": {
        "color": 7,
        "width": 2940,
        "height": 100,
        "content": "# Stage 1: Data Enrichment"
      },
      "typeVersion": 1
    },
    {
      "id": "5e697fdf-85b2-4761-a4e1-d555179afed8",
      "name": "Sticky Note11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2720,
        -400
      ],
      "parameters": {
        "color": 7,
        "width": 1220,
        "height": 100,
        "content": "# Stage 2: Insight Generation"
      },
      "typeVersion": 1
    },
    {
      "id": "75beedd8-bbb4-465e-98be-932af51e5199",
      "name": "Sticky Note12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3720,
        240
      ],
      "parameters": {
        "height": 580,
        "content": "## 10. Save the insights into a Google Doc\n\n#### We can then use this data for further research and SEO\n\n\ud83d\udea8 Make sure to specify the Google docs file here"
      },
      "typeVersion": 1
    },
    {
      "id": "3fdfae7a-456e-45fb-b1ed-c263838a5e20",
      "name": "Merge1",
      "type": "n8n-nodes-base.merge",
      "position": [
        3580,
        600
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "joinMode": "keepEverything",
        "fieldsToMatchString": "aiAdvice"
      },
      "typeVersion": 3.1
    },
    {
      "id": "f1ef6074-08e1-4afe-8175-9f6d9d0317a7",
      "name": "InfraNodus Question Generator",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3320,
        700
      ],
      "parameters": {
        "url": "https://infranodus.com/api/v1/graphAndAdvice?doNotSave=true&optimize=gap&includeGraph=false&includeGraphSummary=true",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "aiTopics",
              "value": "true"
            },
            {
              "name": "prompt",
              "value": "=Tell me what are the main topics and gaps in the discourse provided"
            },
            {
              "name": "requestMode",
              "value": "question"
            },
            {
              "name": "text",
              "value": "={{ $json['Topical Summary'].join(' ') }}"
            }
          ]
        },
        "genericAuthType": "httpBearerAuth"
      },
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "0b415fbb-5a2b-4b9a-a4ff-53d2cd3a9a33",
      "name": "Perplexity Research",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        620,
        1060
      ],
      "parameters": {
        "url": "https://api.perplexity.ai/chat/completions",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"model\": \"sonar-pro\",\n  \"messages\": [\n    {\n      \"role\": \"system\",\n      \"content\": \"Act as a professional  researcher  whose task is to create the most comprehensive list of links that relate to the niche provided.\"\n    },\n    {\n      \"role\": \"user\",\n      \"content\": \"Find all the link that relate to the following field: '{{ $json['Niche'] }}'\\n\\nAdditional instructions: '{{ $json['Model Instructions'] }}'\\n IMPORTANT: \\nMake a json list of at least 20 of them. One column is the name, the other is the URL, the third one is the category they operate in. Be as comprehensive in your search as you can. IMPORTANT: answer exclusively in JSON, do NOT add any additional comments.EXAMPLE OF YOUR RESPONSE\\n\\n[{\\\"Name\\\":\\\"A\\\",\\\"URL\\\":\\\"https://website.com\\\"}]\"\n    }\n  ]\n}\n",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBearerAuth"
      },
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "a73d5f72-c5f1-46c8-ae7a-08c9ec7f0755",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "disabled": true,
      "position": [
        280,
        1060
      ],
      "parameters": {
        "options": {},
        "formTitle": "Generate a List of Companies for a Market Niche",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Niche",
              "placeholder": "e.g. customer feedback analysis tools",
              "requiredField": true
            },
            {
              "fieldLabel": "Additional Search Instructions",
              "placeholder": "e.g. make sure to include only big companies"
            }
          ]
        },
        "formDescription": "Describe the market for which you want to get a list of companies"
      },
      "typeVersion": 2.2
    },
    {
      "id": "19becdd1-a2f6-4be7-89c7-780a8e80a11b",
      "name": "OpenAI",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        920,
        1060
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini",
          "cachedResultName": "GPT-4O-MINI"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Take this content and generate a JSON from it: {{ $json.choices[0].message.content }}. Make sure your JSON is just a list of companies like an array. Don't give it an additional name. Your response should be in the `response` object."
            }
          ]
        },
        "jsonOutput": true
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "5a14b12b-9645-4a16-a377-e707562af837",
      "name": "Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1760,
        1060
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Category",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Category",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1122486654,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1l4RBfavkqZLz8JdwrgNsSwD8xERlDm6BrA2gXFPm0Dg/edit#gid=1122486654",
          "cachedResultName": "Empty"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1l4RBfavkqZLz8JdwrgNsSwD8xERlDm6BrA2gXFPm0Dg",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1l4RBfavkqZLz8JdwrgNsSwD8xERlDm6BrA2gXFPm0Dg/edit?usp=drivesdk",
          "cachedResultName": "Visual Text Analysis Tools"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "068b21f2-b4e8-4ccb-9756-b0e5ee3a6833",
      "name": "Split Out",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1260,
        1060
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "message.content.response"
      },
      "typeVersion": 1
    },
    {
      "id": "02e38788-8624-4e8f-bb9a-3e0cbed63b49",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1460,
        1060
      ],
      "parameters": {
        "options": {
          "reset": false
        }
      },
      "typeVersion": 3
    },
    {
      "id": "c2a4b61b-74c4-443c-a15e-252f896c372e",
      "name": "Sticky Note13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        220,
        840
      ],
      "parameters": {
        "color": 6,
        "width": 1740,
        "height": 480,
        "content": "## Generate a List of URLs to Analyze \n\n#### Use this workflow to seed the Excel file with the list of URLs you'd like to analyze using the workflow above \n\nTrigger execution by clicking \"Test Workflow\" next to the form"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "2e3a437d-bf75-4612-9ca4-b53e6c2efd31",
  "connections": {
    "Merge": {
      "main": [
        [
          {
            "node": "Update Google Sheets with Content Insights",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge1": {
      "main": [
        [
          {
            "node": "Google Docs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate": {
      "main": [
        [
          {
            "node": "InfraNodus AI Advice",
            "type": "main",
            "index": 0
          },
          {
            "node": "InfraNodus Question Generator",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTML Extract": {
      "main": [
        [
          {
            "node": "Clean Content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request": {
      "main": [
        [
          {
            "node": "HTML Extract",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Clean Content": {
      "main": [
        [
          {
            "node": "InfraNodus GraphRAG Content Enhancer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split In Batches": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "Perplexity Research",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Perplexity Research": {
      "main": [
        [
          {
            "node": "OpenAI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "InfraNodus AI Advice": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read a Google Sheets File": {
      "main": [
        [
          {
            "node": "Split In Batches",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait to avoid API overload": {
      "main": [
        [
          {
            "node": "If Node: did we process all the data?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "InfraNodus Question Generator": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "When clicking \"Execute Workflow\"": {
      "main": [
        [
          {
            "node": "Read a Google Sheets File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get the content from Google Sheets": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "InfraNodus GraphRAG Content Enhancer": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "If Node: did we process all the data?": {
      "main": [
        [
          {
            "node": "Split In Batches",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Get the content from Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Google Sheets with Content Insights": {
      "main": [
        [
          {
            "node": "Wait to avoid API overload",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}