{
  "name": "Automate web research & analysis with Oxylabs & GPT for comprehensive reports",
  "nodes": [
    {
      "id": "27d13444-fc79-40ec-a483-3ffccd4ef7d4",
      "name": "When chat message received",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        784,
        176
      ]
    },
    {
      "id": "12afa4de-2a04-4143-bbdf-400717423285",
      "name": "Search Google",
      "type": "n8n-nodes-oxylabs-ai-studio.oxylabsAiStudio",
      "position": [
        1792,
        176
      ]
    },
    {
      "id": "2c795a46-4418-497b-b5d7-908f42db8d3a",
      "name": "Split URLs",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        2352,
        176
      ]
    },
    {
      "id": "53cf66de-b210-4b5d-b631-d80633612c5e",
      "name": "Split queries",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1328,
        176
      ]
    },
    {
      "id": "ffea02a2-0341-4d34-89a2-aa8288154119",
      "name": "Get number of URLs",
      "type": "n8n-nodes-base.set",
      "position": [
        1712,
        752
      ]
    },
    {
      "id": "ad23e5a2-81be-4aab-b5b8-59f62f8eb91e",
      "name": "Get all data",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        2848,
        432
      ]
    },
    {
      "id": "e3b3d79a-1cb8-45f0-802d-7fd5e2bd0db4",
      "name": "Get current data for polling",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        1936,
        752
      ]
    },
    {
      "id": "9996d9ba-083c-44e5-9487-1f7008247a87",
      "name": "If all data exists",
      "type": "n8n-nodes-base.if",
      "position": [
        2320,
        656
      ]
    },
    {
      "id": "d5760b93-94a9-4b42-acf2-b35ec10babf6",
      "name": "Extract IDs",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        2096,
        752
      ]
    },
    {
      "id": "5effde9e-3260-49d6-8058-6c1b9ea31a8f",
      "name": "Wait 60s",
      "type": "n8n-nodes-base.wait",
      "position": [
        1472,
        864
      ]
    },
    {
      "id": "0c6e19c9-12c5-4217-b605-e9157965a15c",
      "name": "Wait 10s",
      "type": "n8n-nodes-base.wait",
      "position": [
        2304,
        912
      ]
    },
    {
      "id": "70ab5aa1-8d40-4be1-b90d-522b01d1ed63",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        640,
        0
      ],
      "parameters": {
        "width": 960,
        "height": 448,
        "content": "# 🔎  STEP 1: Create Google search queries\nSubmit your message/questions, automatically create strategic Google Search queries, and make them ready for processing."
      }
    },
    {
      "id": "44a7c413-9768-4e11-a7b7-ff9a28b1e47c",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1664,
        0
      ],
      "parameters": {
        "width": 960,
        "height": 448,
        "content": "# 📌  STEP 2: Scrape Google & pick relevant URLs\nScrape Google Search results for each query, select relevant and authoritative sources from all results, and prepare the list of URLs for further proces"
      }
    },
    {
      "id": "18aa0a13-86ff-4024-9370-2706aec66546",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        640,
        512
      ],
      "parameters": {
        "width": 960,
        "height": 704,
        "content": "# 📑  STEP 3: Scrape & summarize content in parallel\n\nScrape content from each URL, summarize it with AI, and save it into a data table. Make sure to convert the 3 nodes below to a sub-workflow and edi"
      }
    },
    {
      "id": "31855d55-0845-48e5-b0c2-787c57cda75f",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1664,
        512
      ],
      "parameters": {
        "width": 960,
        "height": 704,
        "content": "# ⏳  STEP 4: Wait for data\nCheck the data table whether the last row's ID matches the amount of URLs we've sent to the sub-workflow. If it doesn't, wait for 10 seconds and repeat."
      }
    },
    {
      "id": "214c885f-34f7-4164-8284-cf0a4d3c7a3e",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2688,
        288
      ],
      "parameters": {
        "width": 768,
        "height": 400,
        "content": "# ✅ STEP 5: Create final analysis\nGet all summaries from the data table and analyze everything with AI to produce a comprehensive deep research report."
      }
    },
    {
      "id": "87025c0d-ae1d-4158-baea-e11c158dc4da",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "width": 576,
        "height": 1216,
        "content": "# ⚡︎  Fast Deep Research AI Flow\n\nFully automate **deep research from start to finish**: scrape Google Search results, select relevant sources, scrape & analyze each source in parallel, and generate a"
      }
    },
    {
      "id": "77a2e3e0-3bb0-45ea-bfe8-0b25e84ca397",
      "name": "Create search queries",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        992,
        176
      ]
    },
    {
      "id": "3d580a2b-a175-43b4-8187-bd1790efb58c",
      "name": "Pick URLs",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        2016,
        176
      ]
    },
    {
      "id": "b901ffde-9522-46b8-b7a8-d6f3f22af22c",
      "name": "Scrape content",
      "type": "n8n-nodes-oxylabs-ai-studio.oxylabsAiStudio",
      "position": [
        736,
        688
      ]
    },
    {
      "id": "9b7d6165-ec14-47a0-9e73-23e837b5df19",
      "name": "Insert row",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        1296,
        688
      ]
    },
    {
      "id": "6bb49288-2aba-4495-b9c2-1f41b11d6bea",
      "name": "Summarize content",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        944,
        688
      ]
    },
    {
      "id": "27fd20bb-87cb-4bb9-814e-03fc493926bb",
      "name": "Final analysis",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        3088,
        432
      ]
    }
  ],
  "connections": {
    "Wait 10s": {
      "main": [
        [
          {
            "node": "Get current data for polling",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 60s": {
      "main": [
        [
          {
            "node": "Get number of URLs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Pick URLs": {
      "main": [
        [
          {
            "node": "Split URLs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Insert row": {
      "main": [
        [
          {
            "node": "Wait 60s",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split URLs": {
      "main": [
        [
          {
            "node": "Scrape content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract IDs": {
      "main": [
        [
          {
            "node": "If all data exists",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get all data": {
      "main": [
        [
          {
            "node": "Final analysis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search Google": {
      "main": [
        [
          {
            "node": "Pick URLs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split queries": {
      "main": [
        [
          {
            "node": "Search Google",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape content": {
      "main": [
        [
          {
            "node": "Summarize content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Summarize content": {
      "main": [
        [
          {
            "node": "Insert row",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get number of URLs": {
      "main": [
        [
          {
            "node": "Get current data for polling",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If all data exists": {
      "main": [
        [
          {
            "node": "Get all data",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait 10s",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create search queries": {
      "main": [
        [
          {
            "node": "Split queries",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When chat message received": {
      "main": [
        [
          {
            "node": "Create search queries",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get current data for polling": {
      "main": [
        [
          {
            "node": "Extract IDs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}