8
n8n 中文网amn8n.com

通过竞争对手内容分析发现市场研究和 SEO 的内容空白

高级

这是一个AI, Marketing领域的自动化工作流,包含 37 个节点。主要使用 If, Code, Wait, Merge, SplitOut 等节点,结合人工智能技术实现智能自动化。 使用 InfraNodus GraphRAG 分析竞争对手网站内容空白,助力 SEO

前置要求
  • 可能需要目标 API 的认证凭证
  • Google Sheets API 凭证
  • OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "bkRodBs0nMPT5cDv",
  "meta": {
    "instanceId": "2a26454b0172ffcb8d70ba77c235b1209f92cd71bf06c79ba609c7173b416d68",
    "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🤌 [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🚨 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 — 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 — 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": {
          "id": "6lSuuSDajZrvI2GM",
          "name": "InfraNodus API Key"
        }
      },
      "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": {
          "id": "EHbGAxRKLI2ejgPv",
          "name": "Google Docs account 2"
        }
      },
      "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": {
          "id": "DHJcCtarL7rWLBsF",
          "name": "Google Sheets account 2"
        }
      },
      "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": {
          "id": "DHJcCtarL7rWLBsF",
          "name": "Google Sheets account 2"
        }
      },
      "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🚨 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
      ],
      "webhookId": "e48bd7c5-7bc3-4f1d-8134-e25c7619ba83",
      "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": {
          "id": "DHJcCtarL7rWLBsF",
          "name": "Google Sheets account 2"
        }
      },
      "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": {
          "id": "6lSuuSDajZrvI2GM",
          "name": "InfraNodus API Key"
        }
      },
      "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🚨 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🚨 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": {
          "id": "6lSuuSDajZrvI2GM",
          "name": "InfraNodus API Key"
        }
      },
      "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": {
          "id": "9fXf9Np7XsCWgxhg",
          "name": "Perplexity"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "a73d5f72-c5f1-46c8-ae7a-08c9ec7f0755",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "disabled": true,
      "position": [
        280,
        1060
      ],
      "webhookId": "fcf3ba43-d94f-4aad-a8a0-62492274b372",
      "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": {
          "id": "07wFa8Wa4mMRCHAj",
          "name": "OpenAi account 2"
        }
      },
      "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": {
          "id": "DHJcCtarL7rWLBsF",
          "name": "Google Sheets account 2"
        }
      },
      "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,
  "pinData": {},
  "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
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

高级 - 人工智能, 营销

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
高级
节点数量37
分类2
节点类型15
难度说明

适合高级用户,包含 16+ 个节点的复杂工作流

作者
InfraNodus

InfraNodus

@infranodus

I'm Dmitry, the founder of InfraNodus — an AI text network analysis tool. I'm passionate about networks and data visualization and its ability to reveal what everyone else is missing and to highlight different perspectives. I'm sharing the n8n templates that make use of this unique capability of InfraNodus for multiple scenarios.

外部链接
在 n8n.io 查看

分享此工作流