{
  "name": "Search & enrich: Smart keyword analysis with Decodo + OpenAI GPT-4.1-mini",
  "nodes": [
    {
      "id": "33ddc711-0e05-4b9e-bb38-935a720362fb",
      "name": "When clicking ‘Execute workflow’",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -560,
        0
      ]
    },
    {
      "id": "3ce843c8-d6e5-4f11-b8c7-2e2f566adc85",
      "name": "Set the Input Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        -336,
        0
      ]
    },
    {
      "id": "3dc5d5a9-5918-4eea-86d3-1051dec80158",
      "name": "Create a Binary Response",
      "type": "n8n-nodes-base.function",
      "position": [
        368,
        -480
      ]
    },
    {
      "id": "1b0346e6-cf8b-4d7c-9fcb-bb75665a0b2a",
      "name": "Write the Structured Google Search Results to Disk",
      "type": "n8n-nodes-base.readWriteFile",
      "position": [
        544,
        -480
      ]
    },
    {
      "id": "c672ab3b-8227-4d8c-b62a-9aa27dc506a2",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        288,
        -576
      ],
      "parameters": {
        "width": 448,
        "height": 272,
        "content": "## 2. Export Data Handling\n\nExport the results to disk"
      }
    },
    {
      "id": "4ac6838e-4783-4c46-a555-388278e262bb",
      "name": "Google Search with Decodo",
      "type": "@decodo/n8n-nodes-decodo.decodo",
      "position": [
        -112,
        0
      ]
    },
    {
      "id": "359c9df3-d94c-4e0d-8607-7f58ce240a4d",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        368,
        0
      ]
    },
    {
      "id": "7a9d0f82-f494-41b9-a40b-eb0b4dfa6c93",
      "name": "Extract Keywords and Topics",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        624,
        16
      ]
    },
    {
      "id": "c8251421-a218-4d3b-8c5a-9806b53db3ff",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        288,
        -240
      ],
      "parameters": {
        "width": 1200,
        "height": 592,
        "content": "## 3. Data Enrichment\n\nEnrich data with OpenAI gpt-4.1-mini. Perform keyword and topic analysis.\n\n- Loop through the organic search result\n- Extract the keywords and topics by description using OpenAI"
      }
    },
    {
      "id": "f6955e87-afa3-4640-bf57-2e07446aefb2",
      "name": "OpenAI Chat Model for Keywords and Topics",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        608,
        192
      ]
    },
    {
      "id": "2f1198bf-8b84-42d5-af02-6c293fc40beb",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -208,
        -112
      ],
      "parameters": {
        "width": 288,
        "height": 320,
        "content": "## 1. Decodo\n\nPerform Google Search by Geo location using Decode"
      }
    },
    {
      "id": "4335af23-a981-4858-8711-0e293d38f2a9",
      "name": "Return the Organic Search Results",
      "type": "n8n-nodes-base.code",
      "position": [
        128,
        0
      ]
    },
    {
      "id": "17ff3746-4c7f-453e-a896-01fd995de352",
      "name": "Insert row on Data Table",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        1328,
        16
      ]
    },
    {
      "id": "01d3ecff-d74c-45a8-9fe4-18e725e4dec1",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1376,
        -736
      ],
      "parameters": {
        "width": 720,
        "height": 1360,
        "content": "![Logo](https://cdn.brandfetch.io/idIeG9_eXK/w/100/h/100/theme/dark/icon.jpeg?c=1bxid64Mup7aczewSAYMX&t=1756483136894)\n\n## How It works\n\nThis workflow automates **keyword and topic extraction** from G"
      }
    },
    {
      "id": "8b3fbc55-ec14-495a-9394-51031b9efced",
      "name": "If row exists",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        944,
        0
      ]
    },
    {
      "id": "615a78e2-7642-4ba2-9666-1a348ca089d1",
      "name": "If",
      "type": "n8n-nodes-base.if",
      "position": [
        1120,
        0
      ]
    },
    {
      "id": "b0124f12-8d20-4c62-93f5-a17df5519e95",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        288,
        -752
      ],
      "parameters": {
        "width": 448,
        "height": 144,
        "content": "## Disclaimer\n\nThis workflow is only available on n8n self-hosted as it's making use of the community node for the Decodo Web Scraping"
      }
    }
  ],
  "connections": {
    "If": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Insert row on Data Table",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If row exists": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Extract Keywords and Topics",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set the Input Fields": {
      "main": [
        [
          {
            "node": "Google Search with Decodo",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create a Binary Response": {
      "main": [
        [
          {
            "node": "Write the Structured Google Search Results to Disk",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Insert row on Data Table": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Search with Decodo": {
      "main": [
        [
          {
            "node": "Return the Organic Search Results",
            "type": "main",
            "index": 0
          },
          {
            "node": "Create a Binary Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Keywords and Topics": {
      "main": [
        [
          {
            "node": "If row exists",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Return the Organic Search Results": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking ‘Execute workflow’": {
      "main": [
        [
          {
            "node": "Set the Input Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model for Keywords and Topics": {
      "ai_languageModel": [
        [
          {
            "node": "Extract Keywords and Topics",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    }
  }
}