{
  "id": "PNx02Wqkn6Ge0EQn",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Easy Brand Monitoring TEMPLATE",
  "tags": [
    {
      "id": "5WzUYUnG7iVDJG7q",
      "name": "TEMPLATE",
      "createdAt": "2025-10-13T19:43:42.665Z",
      "updatedAt": "2025-10-13T19:43:42.665Z"
    }
  ],
  "nodes": [
    {
      "id": "efea64ae-8882-4b1f-b510-220425347f03",
      "name": "Loop Setup",
      "type": "n8n-nodes-base.set",
      "position": [
        -2560,
        336
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "loop1",
              "name": "currentDork",
              "type": "string",
              "value": "={{ $json.currentDork }}"
            },
            {
              "id": "loop2",
              "name": "keyword",
              "type": "string",
              "value": "={{ $json.keyword }}"
            },
            {
              "id": "loop3",
              "name": "bannedDomains",
              "type": "array",
              "value": "={{ $json.bannedDomains }}"
            },
            {
              "id": "loop4",
              "name": "timeRange",
              "type": "string",
              "value": "={{ $json.timeRange }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "bdf1a944-7c81-4b13-93ad-8e20cdd589cc",
      "name": "Split Dorky",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -2864,
        112
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "1c106d24-67fa-4158-b5a7-954d8622796f",
      "name": "Split Results",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        -2080,
        272
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "web.results"
      },
      "typeVersion": 1
    },
    {
      "id": "a482ff88-e998-4c99-92cf-37f9ffa3fff4",
      "name": "Extract Data",
      "type": "n8n-nodes-base.set",
      "position": [
        -1936,
        272
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "a1",
              "name": "url",
              "type": "string",
              "value": "={{ $json.url }}"
            },
            {
              "id": "a2",
              "name": "title",
              "type": "string",
              "value": "={{ $json.title }}"
            },
            {
              "id": "a3",
              "name": "source",
              "type": "string",
              "value": "={{ $json.meta_url.hostname }}"
            },
            {
              "id": "a4",
              "name": "published",
              "type": "string",
              "value": "={{ $json.page_age }}"
            },
            {
              "id": "a5",
              "name": "snippet",
              "type": "string",
              "value": "={{ $json.description }}"
            },
            {
              "id": "a6",
              "name": "domain",
              "type": "string",
              "value": "={{ $json.profile.long_name }}"
            },
            {
              "id": "a7",
              "name": "bannedDomains",
              "type": "array",
              "value": "={{ $('Loop Setup').item.json.bannedDomains }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "507e1597-a630-4a2a-a60f-05e6d21191a1",
      "name": "Continue Loop",
      "type": "n8n-nodes-base.noOp",
      "position": [
        -1600,
        352
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "d28025b9-2ed7-4b99-b166-fc06f36c793f",
      "name": "Check & Log to Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -3200,
        -352
      ],
      "parameters": {
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "",
          "cachedResultUrl": "",
          "cachedResultName": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "214ecac2-ca55-4346-8d8b-d6ffc80270be",
      "name": "Format Email",
      "type": "n8n-nodes-base.code",
      "position": [
        -1456,
        -352
      ],
      "parameters": {
        "jsCode": "const items = $input.all();\n\nif (items.length === 0) {\n  return [];\n}\n\nlet emailBody = `\n<div style=\"font-family: Arial, sans-serif; max-width: 600px;\">\n  <h2 style=\"color: #1DB954;\">\ud83c\udfb8 ${items.length} nov\u00e1 zm\u00ednka${items.length > 1 ? 'y' : ''} o ${$('Set Config').item.json.keyword} !</h2>\n  <p style=\"color: #666;\">I found these new mentions in the last 24 hours:</p>\n`;\n\nfor (const item of items) {\n  emailBody += `\n    <div style=\"margin: 20px 0; padding: 15px; border-left: 4px solid #1DB954; background: #f9f9f9;\">\n      <h3 style=\"margin: 0 0 10px 0; color: #333;\">${item.json.title}</h3>\n      <p style=\"margin: 5px 0;\"><strong>\ud83d\udcf0 Zdroj:</strong> ${item.json.source} (${item.json.domain})</p>\n      <p style=\"margin: 5px 0;\"><strong>\ud83d\udcc5 Published:</strong> ${item.json.published}</p>\n      <p style=\"margin: 5px 0;\"><strong>\ud83d\udd17 Link:</strong> <a href=\"${item.json.url}\" style=\"color: #1DB954;\">${item.json.url}</a></p>\n      <p style=\"margin: 10px 0 0 0; color: #666; font-style: italic;\">${item.json.snippet}</p>\n    </div>\n  `;\n}\n\nemailBody += `\n  <hr style=\"margin: 30px 0; border: none; border-top: 1px solid #ddd;\">\n  <p style=\"color: #999; font-size: 12px;\">You can find all mentions in Google Sheets. This email was generated automatically by n8n workflow.</p>\n</div>\n`;\n\nreturn [{\n  json: {\n    subject: `\ud83c\udfb8 ${items.length} new mention${items.length > 1 ? 'y' : ''} about ${$('Set Config').item.json.keyword} !`,\n    body: emailBody,\n    count: items.length\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "20511f36-e3f6-4e42-83f8-59241a0c5080",
      "name": "Send Email",
      "type": "n8n-nodes-base.gmail",
      "position": [
        -1296,
        -352
      ],
      "parameters": {
        "sendTo": "user@example.com",
        "message": "={{$json.body}}",
        "options": {},
        "subject": "={{$json.subject}}"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "6d3679ab-f01f-455a-8588-2783fe249821",
      "name": "No New Results",
      "type": "n8n-nodes-base.noOp",
      "position": [
        -1456,
        -208
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "dfc84274-2458-4a4a-b0c9-8e34c921e4c1",
      "name": "Every Day",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -3392,
        -32
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 6
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "48167150-df48-4708-ade8-f0acd3de9738",
      "name": "Brave Search",
      "type": "@brave/n8n-nodes-brave-search.braveSearch",
      "position": [
        -2416,
        336
      ],
      "parameters": {
        "count": 3,
        "query": "={{ $json.currentDork }}",
        "additionalParameters": {
          "freshness": "pd"
        }
      },
      "credentials": {
        "braveSearchApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "8b7eaf91-cf0b-4d09-8e78-787cc54d566a",
      "name": "Set Config",
      "type": "n8n-nodes-base.code",
      "position": [
        -3056,
        -32
      ],
      "parameters": {
        "jsCode": "const keyword = $input.first().json.keyword;\nconst description = $input.first().json.description;\n\nconst dorky = [\n  `\"${keyword}\" music`,\n  `\"${keyword}\" concert`,\n  `\"${keyword}\" festival`,\n  `\"${keyword}\" album`,\n  `\"${keyword}\" band`,\n  `(\"${keyword}\" OR \"${keyword.replace(' ', '')}\") AND (music OR concert OR festival OR release)`\n];\n\nconst bannedDomains = [\n  'spotify.com',\n  'open.spotify.com',\n  'music.apple.com',\n  'bandcamp.com',\n  'soundcloud.com',\n  'youtube.com',\n  'youtu.be',\n  'instagram.com',\n  'facebook.com',\n  'twitter.com',\n  'x.com',\n  'tiktok.com',\n  'linktr.ee'\n];\n\n// Vra\u0165 array - ka\u017ed\u00fd dork jako samostatn\u00fd item\nreturn dorky.map(dork => ({\n  json: {\n    currentDork: dork,\n    keyword: keyword,\n    description: description,\n    bannedDomains: bannedDomains,\n    timeRange: 'pd'  // past day pro Brave API\n  }\n}));"
      },
      "typeVersion": 2
    },
    {
      "id": "2961b163-3967-405c-81a8-5904970fd717",
      "name": "HasResult?",
      "type": "n8n-nodes-base.if",
      "position": [
        -2272,
        336
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "a842e0db-94c6-4bce-9f9e-bf18221ba016",
              "operator": {
                "type": "number",
                "operation": "gt"
              },
              "leftValue": "={{ $json.web.results.length }}",
              "rightValue": 0
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "18bfc460-da2c-45a0-bb9b-8701f1cb7142",
      "name": "FilterBannedDomains",
      "type": "n8n-nodes-base.filter",
      "position": [
        -1792,
        272
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "9529f246-48e2-4c62-80bd-5a8edd821f4d",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ !$json.bannedDomains.some(d => $json.domain.includes(d)) }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.3,
      "alwaysOutputData": true
    },
    {
      "id": "f205a15e-a0a0-4f53-9f6c-16c47c43326d",
      "name": "Remove Duplicates",
      "type": "n8n-nodes-base.removeDuplicates",
      "position": [
        -2592,
        -224
      ],
      "parameters": {
        "compare": "selectedFields",
        "options": {},
        "fieldsToCompare": "url"
      },
      "typeVersion": 2
    },
    {
      "id": "f31f7bcc-8e68-4f8c-a32e-68995b33692c",
      "name": "Message a model",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        -2272,
        -128
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-5-nano",
          "cachedResultName": "GPT-5-NANO"
        },
        "options": {
          "textFormat": {
            "textOptions": {
              "type": "json_object",
              "verbosity": "low"
            }
          }
        },
        "responses": {
          "values": [
            {
              "content": "=Web details:\nTitle: {{ $json.title }}\nSnippet: {{ $json.snippet }}\nURL: {{ $json.url }}\n\nBrand details:\nKeyword: {{ $('Set Config').item.json.keyword }}\nDescription: {{ $('Set Config').item.json.description }}\n\nAccording to the provided context, is this article?"
            },
            {
              "role": "system",
              "content": "You are a brand mention verification system. Your job is to determine if an article is about a specific brand.\n\nYou will receive:\n- keyword: brand name\n- description: description of the brand\n- title: article title  \n- snippet: article excerpt\n- url: article URL\n\nReturn ONLY a JSON object with this structure:\n{\n  \"isRelevant\": true/false,\n  \"confidence\": \"high/medium/low\",\n  \"reason\": \"brief explanation\"\n}\n\nRules:\n- If the article is about the music artist/band with that name \u2192 isRelevant: true\n- If it's about something else (different topic, different person, unrelated) \u2192 isRelevant: false\n- Be strict: only mark as relevant if it's clearly about the brand"
            }
          ]
        },
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "010c4f11-e1d1-4130-8696-381e22e2f339",
      "name": "5s",
      "type": "n8n-nodes-base.wait",
      "position": [
        -2736,
        336
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "0913b368-da12-479a-b6b1-fa4f33948af5",
      "name": "URL_Is_NOT_empty",
      "type": "n8n-nodes-base.filter",
      "position": [
        -2752,
        -224
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "20aef9d4-6807-484c-9da5-c087df9a6794",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json.url }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "0a1b72ac-2d70-4450-b66b-c2e0eadc8b77",
      "name": "RelevancyVerification",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -2432,
        -224
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "2ca0ce23-9203-4a07-81c8-65bd410ace9c",
      "name": "MergeOutput&Input",
      "type": "n8n-nodes-base.code",
      "position": [
        -2016,
        -128
      ],
      "parameters": {
        "jsCode": "// Get the AI output\nconst aiData = $input.first().json;\nlet aiResult;\n\ntry {\n  // Extract the text object from the nested structure\n  aiResult = aiData.output[0].content[0].text;\n} catch (e) {\n  // Fallback if structure is different\n  aiResult = {\n    isRelevant: false,\n    confidence: 'low',\n    reason: 'Failed to parse AI response'\n  };\n}\n\n// Get the original data from Extract Data node\nconst originalData = $('Extract Data').item.json;\n\n// Merge everything together\nreturn [{\n  json: {\n    url: originalData.url,\n    title: originalData.title,\n    source: originalData.source,\n    domain: originalData.domain,\n    published: originalData.published,\n    snippet: originalData.snippet,\n    isRelevant: aiResult.isRelevant,\n    verificationConfidence: aiResult.confidence,\n    verificationReason: aiResult.reason\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "f3794ee9-f9f6-4047-a3d1-73eace15b0c6",
      "name": "FilterRelevantOnly",
      "type": "n8n-nodes-base.filter",
      "position": [
        -2240,
        -272
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "5c180f1c-0a75-46b3-b9f4-850f4722468d",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.isRelevant }}",
              "rightValue": false
            }
          ]
        }
      },
      "typeVersion": 2.3,
      "alwaysOutputData": true
    },
    {
      "id": "0a48c33e-9051-414e-ad53-da11440b32be",
      "name": "No Relevant Results",
      "type": "n8n-nodes-base.noOp",
      "position": [
        -1216,
        -48
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "cd1d7732-5c82-48d2-ad92-eef043098d72",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        -1808,
        -336
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "advanced": true,
        "joinMode": "keepNonMatches",
        "mergeByFields": {
          "values": [
            {
              "field1": "URL",
              "field2": "url"
            }
          ]
        },
        "outputDataFrom": "input2"
      },
      "typeVersion": 3.2
    },
    {
      "id": "e54e072d-d123-41fe-800b-0a213ba1860f",
      "name": "NewURL?",
      "type": "n8n-nodes-base.if",
      "position": [
        -1648,
        -336
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "e2393571-e002-4c92-9c1f-3b2b92e2ffb9",
              "operator": {
                "type": "number",
                "operation": "gt"
              },
              "leftValue": "={{ Object.keys($json).length }}",
              "rightValue": 0
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "b4b11e13-c3db-44ec-bf4a-2e27d83f250b",
      "name": "AnyRelevantResults?",
      "type": "n8n-nodes-base.if",
      "position": [
        -2048,
        -272
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "2ad314b3-034b-494a-b3ba-343d299010dc",
              "operator": {
                "type": "number",
                "operation": "gt"
              },
              "leftValue": "={{ Object.keys($json).length }}",
              "rightValue": 0
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "450e7974-34ae-460c-b068-f6d2cc214332",
      "name": "InsertSentRows",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1104,
        -352
      ],
      "parameters": {
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "553ed547-d78a-4d8c-a089-878ed3136bba",
      "name": "Set keyword and description",
      "type": "n8n-nodes-base.set",
      "position": [
        -3216,
        -32
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "993b1670-77b6-4e1c-9643-35dad41b3f2c",
              "name": "keyword",
              "type": "string",
              "value": "Goofy Cow"
            },
            {
              "id": "7c9c0c63-8d5f-4856-a454-00af86d4f27a",
              "name": "description",
              "type": "string",
              "value": "Goofy Cow is a czech music band. "
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "695460b4-5357-4412-9b85-6ea6ec02553b",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3680,
        -528
      ],
      "parameters": {
        "width": 272,
        "height": 912,
        "content": "# How it works\n\nTrigger fires once per day\nBrave Search API executes searches for the past 24 hours using configured dorky.\n\nResults are filtered against banned domains\nRemaining results go through GPT-5 Nano verification.\n\nVerified mentions are cross-matched against historical results (loaded from Google Sheet).\n\nNew mentions are sent via email and appended to the tracking sheet\n\n## Configuration Requirements:\n\n* Keyword (brand name)\n* .Keyword description (optional context for AI)\n* Dorky (array of search query variations)\n* Banned domains (list of domains to exclude)"
      },
      "typeVersion": 1
    },
    {
      "id": "1e8b6386-1540-40b5-a13a-3e2cf811261c",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3392,
        -48
      ],
      "parameters": {
        "color": 5,
        "width": 528,
        "height": 512,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## 1. Setup your brand :\nThis section contains the configuration node where you define your monitoring parameters.\n\n## Configuration Fields:\n* Keyword: The exact name of brand\n* Keyword Description \n* Dorky\n* Banned Domains\n"
      },
      "typeVersion": 1
    },
    {
      "id": "69b23f7c-0b3c-4af1-8f72-568331ee356e",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2864,
        -528
      ],
      "parameters": {
        "color": 5,
        "width": 992,
        "height": 608,
        "content": "## 4. Verification\nThis section handles data cleanup and AI-powered relevance verification.\nProcess Flow:\n\n* Filter URL Exists: Removes any results without valid URLs\n* Deduplicate: Eliminates duplicate URLs found across multiple dorky\n* AI Verification: Each unique result is sent to GPT-5 Nano for relevance check"
      },
      "typeVersion": 1
    },
    {
      "id": "c113b1f8-f934-44e7-9923-be1c101709ad",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3392,
        -528
      ],
      "parameters": {
        "color": 5,
        "width": 528,
        "height": 480,
        "content": "## 2. Load File with previous results\nThis section loads historical data from your Google Sheet to enable duplicate detection."
      },
      "typeVersion": 1
    },
    {
      "id": "f65e8129-16e5-43e8-a868-9d3693504630",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2704,
        112
      ],
      "parameters": {
        "color": 5,
        "width": 576,
        "height": 208,
        "content": "##  3. Split Dorky Section\nThis section executes the core search loop, processing each dork sequentially.\nProcess:\n\n* Each search query (dork) is executed individually via Brave Search API\n* Results are filtered against banned domains\n* Valid results proceed to the next stage"
      },
      "typeVersion": 1
    },
    {
      "id": "c25dd165-96ef-4fa5-a5b2-8e12e6ef8be1",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1856,
        -64
      ],
      "parameters": {
        "color": 4,
        "width": 400,
        "height": 208,
        "content": "## Prompt Note\n* **System Prompt:** Defines the verification task. The AI acts as a brand mention verification system, determining if an article is genuinely about your music artist/band (not a different person with the same name, unrelated topic, etc.).\n\n* **User Prompt:** Provides the article context (keyword, title, snippet, URL) and asks for verification."
      },
      "typeVersion": 1
    },
    {
      "id": "eaf1ab50-2fe5-4b44-be3e-59afd7dddcde",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1872,
        -528
      ],
      "parameters": {
        "color": 5,
        "width": 896,
        "height": 448,
        "content": "## 5. Merge & Send\nThis section finalizes results and delivers notifications."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "8bc98532-2d0b-4e03-bfe6-43db32aa5c65",
  "connections": {
    "5s": {
      "main": [
        [
          {
            "node": "Loop Setup",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "NewURL?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "NewURL?": {
      "main": [
        [
          {
            "node": "Format Email",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "No New Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Every Day": {
      "main": [
        [
          {
            "node": "Set keyword and description",
            "type": "main",
            "index": 0
          },
          {
            "node": "Check & Log to Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HasResult?": {
      "main": [
        [
          {
            "node": "Split Results",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Continue Loop",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Setup": {
      "main": [
        [
          {
            "node": "Brave Search",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Email": {
      "main": [
        [
          {
            "node": "InsertSentRows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Config": {
      "main": [
        [
          {
            "node": "Split Dorky",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Dorky": {
      "main": [
        [
          {
            "node": "URL_Is_NOT_empty",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "5s",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Brave Search": {
      "main": [
        [
          {
            "node": "HasResult?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Data": {
      "main": [
        [
          {
            "node": "FilterBannedDomains",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Email": {
      "main": [
        [
          {
            "node": "Send Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Continue Loop": {
      "main": [
        [
          {
            "node": "Split Dorky",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Results": {
      "main": [
        [
          {
            "node": "Extract Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Message a model": {
      "main": [
        [
          {
            "node": "MergeOutput&Input",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "URL_Is_NOT_empty": {
      "main": [
        [
          {
            "node": "Remove Duplicates",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "MergeOutput&Input": {
      "main": [
        [
          {
            "node": "RelevancyVerification",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Remove Duplicates": {
      "main": [
        [
          {
            "node": "RelevancyVerification",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "FilterRelevantOnly": {
      "main": [
        [
          {
            "node": "AnyRelevantResults?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AnyRelevantResults?": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ],
        [
          {
            "node": "No Relevant Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "FilterBannedDomains": {
      "main": [
        [
          {
            "node": "Continue Loop",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check & Log to Sheet": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "RelevancyVerification": {
      "main": [
        [
          {
            "node": "FilterRelevantOnly",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Message a model",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set keyword and description": {
      "main": [
        [
          {
            "node": "Set Config",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}