{
  "name": "Generate SEO meta tags with Gemini AI & competitor analysis using Google Sheets",
  "nodes": [
    {
      "id": "21097b90-82b1-4c0b-aa25-889a470b99bd",
      "name": "Get row(s) in sheet1",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -2000,
        192
      ]
    },
    {
      "id": "a95a3e5d-4bce-47a0-9fc6-8adf5a4ca8d4",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -528,
        240
      ]
    },
    {
      "id": "17a49a52-d070-4bf1-83d1-c0c74218ac56",
      "name": "Googl SERP",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -304,
        16
      ]
    },
    {
      "id": "4b99ad81-9984-4f03-ab7c-f891d182178f",
      "name": "Code1",
      "type": "n8n-nodes-base.code",
      "position": [
        -80,
        16
      ]
    },
    {
      "id": "b7c1c026-7fcb-471c-927d-f824c3d8a227",
      "name": "Update row in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1776,
        304
      ]
    },
    {
      "id": "75ec0306-25d5-44a1-a8b8-f26a6d0323d7",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -1776,
        192
      ]
    },
    {
      "id": "981f9de9-0b0e-4131-93b6-b10cb86cf9cf",
      "name": "Update row in sheet1",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1552,
        16
      ]
    },
    {
      "id": "80628c57-5dcc-4302-85f9-947d04e47895",
      "name": "HTML",
      "type": "n8n-nodes-base.html",
      "position": [
        -1104,
        16
      ]
    },
    {
      "id": "aaf1562b-8ff7-4f61-b696-31441d296df5",
      "name": "Google Sheets Trigger",
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "position": [
        -2224,
        192
      ]
    },
    {
      "id": "ffa6f621-4744-4003-99d1-7172161a558a",
      "name": "Edit Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        -880,
        16
      ]
    },
    {
      "id": "43ded5ba-a2dc-44f1-88a4-88acc2c886f8",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        -784,
        304
      ]
    },
    {
      "id": "ed7b7a51-ca89-4e48-b7f3-3aabf6f824e2",
      "name": "Google Gemini Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        80,
        320
      ]
    },
    {
      "id": "3f0be34f-b1ba-4b02-bd7b-fe7f76852bb8",
      "name": "Google Gemini Chat Model2",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        656,
        240
      ]
    },
    {
      "id": "017bb8e3-82a8-4d24-85c7-a67f94f85850",
      "name": "Code",
      "type": "n8n-nodes-base.code",
      "position": [
        528,
        16
      ]
    },
    {
      "id": "14b14114-3cde-45d5-a646-f4e1ff640e1c",
      "name": "Code2",
      "type": "n8n-nodes-base.code",
      "position": [
        1152,
        0
      ]
    },
    {
      "id": "353ce1ea-4f1a-474f-b651-ede4fadf622e",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2288,
        -672
      ],
      "parameters": {
        "width": 448,
        "height": 1200,
        "content": "# 1. START HERE: Get the To-Do List\n\n## This is the starting point for the generation process.\n\n### 1.  **Trigger:** The workflow starts when you enter a new row in the Sheets\n### 2.  **Read Sheet:** "
      }
    },
    {
      "id": "2b6ff240-48f7-435d-aba9-c399c317e6df",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1824,
        -672
      ],
      "parameters": {
        "width": 448,
        "height": 1200,
        "content": "# 2. Process URLs One-by-One\n\n\n\n\n## This is the starting point for the generation process.\n\n### 1. The **Loop** node takes our list of URLs from the sheet and processes them individually, one at a tim"
      }
    },
    {
      "id": "f6e32900-1ac4-4f4c-8108-821d2cde1235",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1360,
        -672
      ],
      "parameters": {
        "width": 896,
        "height": 1200,
        "content": "# 3. PHASE 1: Analyze Our Own Page\n\n## This is the intelligence-gathering phase. The system figures out what our own page is truly about.\n\n### 1.  **Scrape Website:** It visits the current URL and dow"
      }
    },
    {
      "id": "0aff16f7-3317-4e5f-80d3-cd77b7daab6d",
      "name": "AI Analyzer",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        -656,
        16
      ]
    },
    {
      "id": "0479e704-5dfb-4801-a7f1-2b0fa7df41aa",
      "name": "Scrape Website",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1328,
        16
      ]
    },
    {
      "id": "432adc86-31d1-461e-9421-bad8ca367b35",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -448,
        -672
      ],
      "parameters": {
        "width": 512,
        "height": 1200,
        "content": "# 4. PHASE 2: Spy on Competitors\n\n## This block performs a live competitive analysis on Google.\n\n### 1.  **Google SERP:** It takes the Primary Keyword we just found and searches for it on Google using"
      }
    },
    {
      "id": "011d1b47-04e4-4ba2-8010-d2cb0321cc4b",
      "name": "Competitor Analysis",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        176,
        16
      ]
    },
    {
      "id": "adcba714-75d6-46b6-8661-e6494424fb29",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        80,
        -672
      ],
      "parameters": {
        "width": 592,
        "height": 1200,
        "content": "# 5. Find the Competitor Strategies\n## This AI's only job is to analyze the clean list of competitors from the previous step.\n\n### It acts like an SEO strategist, identifying the **Top Ranker Strategi"
      }
    },
    {
      "id": "70030a73-ec32-4a63-af30-6ec24a39c981",
      "name": "Master Generator",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        800,
        0
      ]
    },
    {
      "id": "6f5a055b-be9b-4c45-b0b6-6b3126e65cd8",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        704,
        -672
      ],
      "parameters": {
        "width": 592,
        "height": 1200,
        "content": "# 6. PHASE 3: The Master Generator\n\n## This is the final and most powerful AI in the system.\n\n### It synthesizes ALL the intel we've gathered:\n -   Info about **our page** (from Phase 1)\n -   The **Re"
      }
    },
    {
      "id": "bbb69642-c210-4827-83da-e3a98eb914c6",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1344,
        -672
      ],
      "parameters": {
        "width": 592,
        "height": 1200,
        "content": "# 7. The Final Write-Back\n\n## This is the end of the line for one URL.\n\n### This node takes all the data we've collected and generated—the current metas, the new metas, the competitor insights—and wri"
      }
    },
    {
      "id": "c59503df-a7a8-42c8-a55b-e0f514e690e2",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2368,
        -1088
      ],
      "parameters": {
        "width": 4368,
        "height": 1792,
        "content": "# SEO Meta TITLE and DESCRIPTION Generator"
      }
    }
  ],
  "connections": {
    "Code": {
      "main": [
        [
          {
            "node": "Master Generator",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTML": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code1": {
      "main": [
        [
          {
            "node": "Competitor Analysis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code2": {
      "main": [
        [
          {
            "node": "Update row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Googl SERP": {
      "main": [
        [
          {
            "node": "Code1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Analyzer": {
      "main": [
        [
          {
            "node": "Googl SERP",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "AI Analyzer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape Website": {
      "main": [
        [
          {
            "node": "HTML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Update row in sheet1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Master Generator": {
      "main": [
        [
          {
            "node": "Code2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Competitor Analysis": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update row in sheet": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get row(s) in sheet1": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update row in sheet1": {
      "main": [
        [
          {
            "node": "Scrape Website",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets Trigger": {
      "main": [
        [
          {
            "node": "Get row(s) in sheet1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Analyzer",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI Analyzer",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Competitor Analysis",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model2": {
      "ai_languageModel": [
        [
          {
            "node": "Master Generator",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    }
  }
}