{
  "id": "NVYTk6MsFOtt7oz1",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Optimize Your Top Performing Website Content: Google Analytics, Firecrawl, and InfraNodus",
  "tags": [
    {
      "id": "E52i6BJ7Ht6yF3OB",
      "name": "Productivity",
      "createdAt": "2025-06-04T10:29:27.533Z",
      "updatedAt": "2025-06-04T10:29:27.533Z"
    },
    {
      "id": "MyFEaUe9Eo4t7SvF",
      "name": "SEO",
      "createdAt": "2025-05-20T13:16:17.982Z",
      "updatedAt": "2025-05-20T13:16:17.982Z"
    },
    {
      "id": "kldZpTCan1suEN8v",
      "name": "Marketing",
      "createdAt": "2025-05-20T13:16:20.459Z",
      "updatedAt": "2025-05-20T13:16:20.459Z"
    }
  ],
  "nodes": [
    {
      "id": "d891e465-f85d-4496-a17e-8def7784e7d0",
      "name": "InfraNodus Save to Graph",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1260,
        280
      ],
      "parameters": {
        "url": "https://infranodus.com/api/v1/graphAndStatements?doNotSave=false&includeGraph=false&includeGraphSummary=true&includeGraph=false",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "name",
              "value": "top_support_pages"
            },
            {
              "name": "text",
              "value": "={{ $json.data.markdown }}"
            },
            {
              "name": "=categories",
              "value": "=[filename: {{ $('Loop Over Items').item.json.pagePath .slice(0,16)}}]"
            },
            {
              "name": "contextSettings",
              "value": "={{{ \"squareBracketsProcessing\":\"IGNORE_BRACKETS\"} }}"
            }
          ]
        },
        "genericAuthType": "httpBearerAuth"
      },
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "3b5a882d-eba5-4303-bd0f-b55bb9dc3c80",
      "name": "Google Analytics",
      "type": "n8n-nodes-base.googleAnalytics",
      "position": [
        260,
        180
      ],
      "parameters": {
        "limit": 30,
        "dateRange": "last30days",
        "metricsGA4": {
          "metricValues": [
            {
              "listName": "screenPageViews"
            }
          ]
        },
        "propertyId": {
          "__rl": true,
          "mode": "list",
          "value": "367609797",
          "cachedResultUrl": "https://analytics.google.com/analytics/web/#/p367609797/",
          "cachedResultName": "NodusLabs Support - GA4"
        },
        "dimensionsGA4": {
          "dimensionValues": [
            {
              "name": "pagePath",
              "listName": "other"
            }
          ]
        },
        "additionalFields": {}
      },
      "credentials": {
        "googleAnalyticsOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "9b026c0e-b5e8-4269-875f-25020808cf2f",
      "name": "Code",
      "type": "n8n-nodes-base.code",
      "position": [
        460,
        200
      ],
      "parameters": {
        "jsCode": "// Loop over input items and add a new field called 'myNewField' to the JSON of each one\nfor (const item of $input.all()) {\n  item.json.fullUrl = \"https://support.noduslabs.com\" + item.json.pagePath\n}\n\nreturn $input.all();"
      },
      "typeVersion": 2
    },
    {
      "id": "053de933-9cb0-454e-b504-7e51b9fce532",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        700,
        200
      ],
      "parameters": {
        "options": {
          "reset": false
        }
      },
      "typeVersion": 3
    },
    {
      "id": "5b9a3e4d-ebeb-4ced-b4f3-f8d871d40351",
      "name": "InfraNodus GraphRAG Summary",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        980,
        -240
      ],
      "parameters": {
        "url": "https://infranodus.com/api/v1/graphAndAdvice?doNotSave=true&includeGraph=false&includeGraphSummary=true",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "name",
              "value": "top_support_pages"
            },
            {
              "name": "requestMode",
              "value": "=summary"
            },
            {
              "name": "aiTopics",
              "value": "true"
            }
          ]
        },
        "genericAuthType": "httpBearerAuth"
      },
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "87d3b8f9-0b29-4f59-80d0-c24506c1672d",
      "name": "Form",
      "type": "n8n-nodes-base.form",
      "position": [
        1260,
        -240
      ],
      "parameters": {
        "operation": "completion",
        "respondWith": "showText",
        "responseText": "=<br>\n<h1>Top Content Summary</h1>\n<h3>{{ $json.aiAdvice[0].text }}</h3>\n<br>\n<h1>Main Topics</h1>\n<h3>{{ $json.graphSummary }}</h3>"
      },
      "typeVersion": 1
    },
    {
      "id": "ab6c3d18-e864-4d7a-882d-640433d89692",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -40,
        -1000
      ],
      "parameters": {
        "color": 4,
        "width": 720,
        "height": 820,
        "content": "# Optimize Your Top Performing Website Content\n\n## What are the main topics your customers are interested in? \n## What new content could you create for them?\n\n### 1. Gets the top pages from your Google Analytics account\n### 2. Extracts text from them using Firecrawl API\n### 3. Generates a knowledge graph with [InfraNodus](https://infranodus.com) for all the pages\n### 4. Extracts the main topical clusters from the knowledge graph\n### 5. Finds the gaps between the clusters = opportunities for new content\n\n![https://infranodus.com/images/front/infranodus-overview@.jpg](https://infranodus.com/images/front/infranodus-overview@2x.jpg)"
      },
      "typeVersion": 1
    },
    {
      "id": "4b064223-fd1f-4908-9989-88460d674ffe",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -40,
        -140
      ],
      "parameters": {
        "width": 200,
        "height": 280,
        "content": "## 1. Trigger the workflow"
      },
      "typeVersion": 1
    },
    {
      "id": "b6947c22-985b-4930-8e2c-e8cacbf10999",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        0,
        -20
      ],
      "parameters": {
        "options": {},
        "formTitle": "Launch Analysis",
        "formDescription": "This workflow will analyze top visited pages in a Google Analytics property you select and reveal the main topics inside."
      },
      "typeVersion": 2.2
    },
    {
      "id": "e38ad0da-6f9c-4fc3-98b5-96f0d3306342",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        200,
        -140
      ],
      "parameters": {
        "width": 200,
        "height": 480,
        "content": "## 2. Get top pages from your Google Analytics account\n\n\ud83d\udea8 Specify and connect your Google Analytics account here"
      },
      "typeVersion": 1
    },
    {
      "id": "c25a4cff-fb5f-4c84-8600-13a3c98784e4",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        420,
        -140
      ],
      "parameters": {
        "width": 200,
        "height": 480,
        "content": "## 3. Fix analytics links\n\n\ud83d\udea8 Add the website name as a prefix to extracted links from Analytics"
      },
      "typeVersion": 1
    },
    {
      "id": "149613e6-a11b-4749-85fd-f6c0322ee1bd",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        660,
        -140
      ],
      "parameters": {
        "width": 200,
        "height": 480,
        "content": "## 4. Loop through each URL page"
      },
      "typeVersion": 1
    },
    {
      "id": "fb3050ec-f4e6-424e-8f1e-7152791b8001",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        920,
        100
      ],
      "parameters": {
        "width": 200,
        "height": 400,
        "content": "## 5. Scrape and extract text from each URL\n\n\ud83d\udea8 Add your [Firecrawl API key](firecrawl.dev) here"
      },
      "typeVersion": 1
    },
    {
      "id": "d517976a-f792-4d67-ac30-0b3e297a04c0",
      "name": "URL to Markdown with Firecrawl",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        960,
        300
      ],
      "parameters": {
        "url": "https://api.firecrawl.dev/v1/scrape",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "url",
              "value": "={{ $json.fullUrl }}"
            }
          ]
        },
        "genericAuthType": "httpBearerAuth"
      },
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "e8a79940-f810-439d-b094-1a06c6550862",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1200,
        20
      ],
      "parameters": {
        "width": 200,
        "height": 480,
        "content": "## 6. Save Text to InfraNodus Knowledge Graph\n\n\ud83d\udea8 Add your [InfraNodus](https://infranodus.com) key and specify the graph to save to"
      },
      "typeVersion": 1
    },
    {
      "id": "5ac8c100-f1f2-4b17-9187-1b32d06b0a4c",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        920,
        -540
      ],
      "parameters": {
        "width": 200,
        "height": 540,
        "content": "## 7. Get the main topics from the graph\n\n\ud83d\udea8 Add your [InfraNodus](https://infranodus.com) key and specify the same graph name as in Step 6"
      },
      "typeVersion": 1
    },
    {
      "id": "4b51a22d-3c9f-4c3d-915e-197986ccd0f1",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1200,
        -540
      ],
      "parameters": {
        "width": 200,
        "height": 520,
        "content": "## 8. Display the final result\n\n### Optionally: you can send the result to your Slack channel or via email. Or link it to a content creation workflow."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "28265123-7003-43e7-81fe-db737067ca43",
  "connections": {
    "Code": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [
          {
            "node": "InfraNodus GraphRAG Summary",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "URL to Markdown with Firecrawl",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Analytics": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "Google Analytics",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "InfraNodus Save to Graph": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "InfraNodus GraphRAG Summary": {
      "main": [
        [
          {
            "node": "Form",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "URL to Markdown with Firecrawl": {
      "main": [
        [
          {
            "node": "InfraNodus Save to Graph",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}