{
  "name": "Automated website change monitoring with Bright Data, GPT-4.1 & Google Workspace",
  "nodes": [
    {
      "id": "a2966ed3-e998-47ca-83b3-b7dc4832bc8f",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        700,
        140
      ]
    },
    {
      "id": "6d4b38bd-fb58-4675-9b83-ade043914d65",
      "name": "Set workflow variables",
      "type": "n8n-nodes-base.set",
      "position": [
        -260,
        -120
      ]
    },
    {
      "id": "6ddda34f-556e-49a5-a103-7641a3f0598d",
      "name": "Merge workflow variables with Google Sheet data",
      "type": "n8n-nodes-base.set",
      "position": [
        180,
        -120
      ]
    },
    {
      "id": "45eefb28-dce0-4fc3-81a1-865762c73226",
      "name": "Read from comparison spreadsheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -40,
        -120
      ]
    },
    {
      "id": "c04cec36-1664-48d7-a9ae-a5665bc2c188",
      "name": "Loop over each comparison URL",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        400,
        -115
      ]
    },
    {
      "id": "c50e3ec4-c3bf-4417-94ad-5b57ad6424da",
      "name": "Web scraping and data extraction agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        652,
        -365
      ]
    },
    {
      "id": "c1f69dc5-6612-4575-aaf4-1d6a7a70c423",
      "name": "Upload current week JSON file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1280,
        -365
      ]
    },
    {
      "id": "e4a1fd2c-e1a5-4065-a9c8-76d1c854af95",
      "name": "Update comparison sheet with current week file data",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1500,
        -365
      ]
    },
    {
      "id": "32934604-9e72-4f6a-aa55-fc0abff1d85c",
      "name": "Check presence of previous week's file",
      "type": "n8n-nodes-base.if",
      "position": [
        1720,
        -365
      ]
    },
    {
      "id": "301dfc46-f1d4-4b1a-892b-25ecb4495b77",
      "name": "Download previous week's file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1940,
        -365
      ]
    },
    {
      "id": "036d00c9-7414-4883-ac56-ef9368195b85",
      "name": "Convert previous week's file to JSON",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        2160,
        -365
      ]
    },
    {
      "id": "67b8ee0a-2ab0-43cd-b24f-0c8ba6b04cd1",
      "name": "Set previous week and current week",
      "type": "n8n-nodes-base.set",
      "position": [
        2380,
        -365
      ]
    },
    {
      "id": "40b828f7-08f2-41ea-a6f7-595c5e4ae3e0",
      "name": "Check if test mode",
      "type": "n8n-nodes-base.if",
      "position": [
        2600,
        -365
      ]
    },
    {
      "id": "af562b9f-3cfc-4715-ae47-779a0554e7d2",
      "name": "Mock previous week changes",
      "type": "n8n-nodes-base.code",
      "position": [
        2820,
        -440
      ]
    },
    {
      "id": "dd764b6d-d412-44e6-8816-e7b66bbb44c6",
      "name": "Detect changes between weeks",
      "type": "n8n-nodes-base.code",
      "position": [
        3040,
        -365
      ]
    },
    {
      "id": "e5a8b7c1-53ec-4a26-8791-30db494cde92",
      "name": "Generate Markdown from detected changes",
      "type": "n8n-nodes-base.code",
      "position": [
        3260,
        -365
      ]
    },
    {
      "id": "16c9f196-6acf-4d3a-946b-727c121b503a",
      "name": "Convert Markdown to HTML",
      "type": "n8n-nodes-base.markdown",
      "position": [
        3480,
        -365
      ]
    },
    {
      "id": "3df4c31f-db47-40a5-9140-d2de7b1fbf2e",
      "name": "Create comparison document",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        3700,
        -365
      ]
    },
    {
      "id": "da24c1a3-fa3b-4b06-b5b9-78dd6d872756",
      "name": "Update comparison document with results",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        3920,
        -365
      ]
    },
    {
      "id": "b532d34b-0ac0-4a00-9949-a9a959e27b31",
      "name": "Update comparison spreadsheet with comparison file",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        4140,
        -365
      ]
    },
    {
      "id": "7ef3ba20-c79e-4d49-8a68-c11d20c77def",
      "name": "Send email of comparison results",
      "type": "n8n-nodes-base.gmail",
      "position": [
        4340,
        -260
      ]
    },
    {
      "id": "a0926fe8-80c2-456b-b9c2-4dc1675c408c",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -540,
        -1340
      ],
      "parameters": {
        "width": 760,
        "height": 1060,
        "content": "# BrightData Weekly Comparison\n## Overview\nThis workflow tracks changes on web pages, compares data, generates change reports, saves to Drive, and sends email notifications. **The workflow runs automa"
      }
    },
    {
      "id": "33c8b369-b6f7-4bb9-87e2-d202d998255d",
      "name": "GPT-4.1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        620,
        -145
      ]
    },
    {
      "id": "700e8bb2-607d-4889-b248-88bf6464c587",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -480,
        -120
      ]
    },
    {
      "id": "c2919b53-c13f-4033-86f2-3b4e2e28dfa8",
      "name": "scrape_as_markdown",
      "type": "n8n-nodes-mcp.mcpClientTool",
      "position": [
        740,
        -145
      ]
    },
    {
      "id": "cbbfbf09-9d2b-4c3b-bcbc-fc43f198f0c0",
      "name": "Auto-fixing Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserAutofixing",
      "position": [
        640,
        20
      ]
    },
    {
      "id": "f3766efe-53a7-4311-9b53-af9f8d11b292",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -540,
        -260
      ],
      "parameters": {
        "width": 220,
        "height": 340,
        "content": "## Scheduled Weekly"
      }
    },
    {
      "id": "93f1107c-8e81-439b-a912-5900e36afd8b",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -280,
        -260
      ],
      "parameters": {
        "width": 620,
        "height": 340,
        "content": "## Initialization\nInitializes the workflow variables, reads the main spreadsheet, then merges the spreadsheet results with the main workflow variables. "
      }
    },
    {
      "id": "f4882880-6ee4-4a44-9967-1be01de7151c",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        580,
        -520
      ],
      "parameters": {
        "width": 400,
        "height": 780,
        "content": "## AI Scraping\nFor the given URL, the agent will use the Scrape as Markdown tool to scrape the page getting the content as Markdown. It will then generate a JSON structure, extracting out relevant inf"
      }
    },
    {
      "id": "8f6da1fd-c91a-4c99-94f8-b2464a0786be",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1020,
        -520
      ],
      "parameters": {
        "width": 860,
        "height": 400,
        "content": "## Process current week results\nThe agent's response is turned into a binary file and then saved in Google Drive for the next week. Then the main spreadsheet is updated with that file. Finally checkin"
      }
    },
    {
      "id": "25f758b4-2e11-4cde-bcc3-1a8e53106d29",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1900,
        -520
      ],
      "parameters": {
        "width": 640,
        "height": 400,
        "content": "## Process previous week results\nRead the previous week's ID and download the file from Google Drive. Then, set variables ready for processing. "
      }
    },
    {
      "id": "f8d7c276-9540-431d-860d-10e15b769fe4",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2560,
        -520
      ],
      "parameters": {
        "width": 440,
        "height": 400,
        "content": "## Mocking\nIf we are in test mode, then this will mock example changes. Otherwise, it will carry on as normal. "
      }
    },
    {
      "id": "c2dfbe5e-e79e-4cc8-91f2-a61bfef2721e",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3020,
        -520
      ],
      "parameters": {
        "width": 1260,
        "height": 400,
        "content": "## Current week vs previous week comparison\nUsing code notes, we detect the changes from the previous week vs the current week and then convert that to a Markdown document and then use the Markdown to"
      }
    },
    {
      "id": "a261bcd8-91a1-40f4-928f-19013b68b998",
      "name": "Convert current week JSON response to file",
      "type": "n8n-nodes-base.convertToFile",
      "position": [
        1060,
        -365
      ]
    },
    {
      "id": "dc49334a-6d00-4476-b84c-7bddfa3c0911",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4300,
        -520
      ],
      "parameters": {
        "width": 380,
        "height": 400,
        "content": "## Send the comparison email"
      }
    }
  ],
  "connections": {
    "GPT-4.1": {
      "ai_languageModel": [
        [
          {
            "node": "Web scraping and data extraction agent",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Auto-fixing Output Parser",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Set workflow variables",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check if test mode": {
      "main": [
        [
          {
            "node": "Mock previous week changes",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Detect changes between weeks",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "scrape_as_markdown": {
      "ai_tool": [
        [
          {
            "node": "Web scraping and data extraction agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Set workflow variables": {
      "main": [
        [
          {
            "node": "Read from comparison spreadsheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert Markdown to HTML": {
      "main": [
        [
          {
            "node": "Create comparison document",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Auto-fixing Output Parser",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Auto-fixing Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Web scraping and data extraction agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Create comparison document": {
      "main": [
        [
          {
            "node": "Update comparison document with results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Mock previous week changes": {
      "main": [
        [
          {
            "node": "Detect changes between weeks",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Detect changes between weeks": {
      "main": [
        [
          {
            "node": "Generate Markdown from detected changes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download previous week's file": {
      "main": [
        [
          {
            "node": "Convert previous week's file to JSON",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop over each comparison URL": {
      "main": [
        [],
        [
          {
            "node": "Web scraping and data extraction agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload current week JSON file": {
      "main": [
        [
          {
            "node": "Update comparison sheet with current week file data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send email of comparison results": {
      "main": [
        [
          {
            "node": "Loop over each comparison URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read from comparison spreadsheets": {
      "main": [
        [
          {
            "node": "Merge workflow variables with Google Sheet data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set previous week and current week": {
      "main": [
        [
          {
            "node": "Check if test mode",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert previous week's file to JSON": {
      "main": [
        [
          {
            "node": "Set previous week and current week",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check presence of previous week's file": {
      "main": [
        [
          {
            "node": "Download previous week's file",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Loop over each comparison URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Web scraping and data extraction agent": {
      "main": [
        [
          {
            "node": "Convert current week JSON response to file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Markdown from detected changes": {
      "main": [
        [
          {
            "node": "Convert Markdown to HTML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update comparison document with results": {
      "main": [
        [
          {
            "node": "Update comparison spreadsheet with comparison file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert current week JSON response to file": {
      "main": [
        [
          {
            "node": "Upload current week JSON file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge workflow variables with Google Sheet data": {
      "main": [
        [
          {
            "node": "Loop over each comparison URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update comparison spreadsheet with comparison file": {
      "main": [
        [
          {
            "node": "Send email of comparison results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update comparison sheet with current week file data": {
      "main": [
        [
          {
            "node": "Check presence of previous week's file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}