AutomationFlowsAI & RAG › Track AI Brand Visibility Across Gpt, Gemini and Perplexity in Google Sheets

Track AI Brand Visibility Across Gpt, Gemini and Perplexity in Google Sheets

ByMichael Anz @mican on n8n.io

This template measures brand visibility across multiple AI assistants. It sends the same prompts to GPT, Gemini, and Perplexity, evaluates whether a target brand is mentioned, extracts visibility details, and saves structured results to Google Sheets for comparison. 🚀 How It…

Event trigger★★★★☆ complexityAI-powered26 nodesGoogle SheetsOpenAIGoogle GeminiHTTP RequestAgentGoogle Sheets ToolOpenAI Chat
AI & RAG Trigger: Event Nodes: 26 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #15654 — we link there as the canonical source.

This workflow follows the Agent → Googlegemini recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "nodes": [
    {
      "id": "83d280fb-dd81-4336-abe6-2e6629d65da8",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "width": 480,
        "height": 896,
        "content": "## Workflow\n\n### How it works\n\n1. The workflow is manually triggered.\n2. Criteria are retrieved and processed from Google Sheets.\n3. Prompts are fetched from Google Sheets based on processed criteria.\n4. AI requests are sent to OpenAI, Google Gemini, and Perplexity, and results are merged.\n5. AI agents evaluate the merged results and store them in Google Sheets.\n\n### Setup steps\n\n- [ ] Connect Google Sheets node with appropriate access permissions.\n- [ ] Configure OpenAI and Google Gemini credentials.\n- [ ] Ensure Perplexity API access is set up.\n- [ ] Map Google Sheets fields to workflow variables for prompts and criteria.\n\nGoogle Sheet Example: https://docs.google.com/spreadsheets/d/1q9-LcZ_BNQ7PTEKuJ6T4j3HffYn23Co_mO5R-c8C0XY/edit"
      },
      "typeVersion": 1
    },
    {
      "id": "2e040f22-4c79-455c-8056-65ca0b977312",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        560,
        512
      ],
      "parameters": {
        "color": 7,
        "height": 304,
        "content": "## Manual trigger\n\nInitialize the workflow manually."
      },
      "typeVersion": 1
    },
    {
      "id": "15365bcf-1f89-4758-bbe1-993be135ebb2",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        832,
        528
      ],
      "parameters": {
        "color": 7,
        "width": 640,
        "height": 272,
        "content": "## Fetch and process criteria\n\nRetrieve and prepare criteria from Google Sheets for processing."
      },
      "typeVersion": 1
    },
    {
      "id": "15a2b127-375a-41e7-8fab-97ab6193b74b",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1504,
        480
      ],
      "parameters": {
        "color": 7,
        "height": 320,
        "content": "## Fetch prompts\n\nRetrieve prompt data from Google Sheets to be used in AI requests."
      },
      "typeVersion": 1
    },
    {
      "id": "5c7b6cc3-e3e6-4e2f-988e-9917410fab86",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1776,
        32
      ],
      "parameters": {
        "color": 7,
        "width": 544,
        "height": 1184,
        "content": "## AI requests and merging\n\nSend prompts to OpenAI, Google Gemini, and Perplexity, then merge the results for evaluation."
      },
      "typeVersion": 1
    },
    {
      "id": "1b294325-6650-4292-867c-1e16163b4a2f",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2352,
        0
      ],
      "parameters": {
        "color": 7,
        "width": 368,
        "height": 1424,
        "content": "## Evaluate and write results\n\nEvaluate the AI responses and write the results back to Google Sheets."
      },
      "typeVersion": 1
    },
    {
      "id": "5810adfb-c9e9-483f-a653-2d7e9909c2df",
      "name": "Manual Trigger Execute Workflow",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        608,
        640
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "b5ecfcda-868e-4b86-b9df-82035ed306ab",
      "name": "Read Prompts from Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1552,
        640
      ],
      "parameters": {
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "",
          "cachedResultUrl": "",
          "cachedResultName": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": ""
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "629a0236-2f9c-4605-9055-fa17ab43bed7",
      "name": "Read Criteria from Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        880,
        640
      ],
      "parameters": {
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "",
          "cachedResultUrl": "",
          "cachedResultName": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "90c6d80f-85d1-4ee6-a3d2-d1b2dfece53c",
      "name": "Set Criteria Line",
      "type": "n8n-nodes-base.set",
      "position": [
        1104,
        640
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "criteria_line",
              "name": "criteria_line",
              "type": "string",
              "value": "={{ $itemIndex + 1 }}. {{ $json.criteria }}: {{ $json.instruction }} Example: {{ $json.example }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "1181ea07-090a-4790-9fa5-2f43ffcd080f",
      "name": "Aggregate Criteria Data",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        1328,
        640
      ],
      "parameters": {
        "options": {},
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {
              "fieldToAggregate": "criteria_line"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "ebc0d88b-7d46-43e2-ac14-936a5449af39",
      "name": "OpenAI GPT Model Request",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1824,
        160
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-5.2",
          "cachedResultName": "GPT-5.2"
        },
        "options": {},
        "simplify": false,
        "responses": {
          "values": [
            {
              "content": "={{ $json.Prompt }}"
            }
          ]
        },
        "builtInTools": {}
      },
      "typeVersion": 2.1
    },
    {
      "id": "83fbf69f-5514-4d91-b254-bf683e86693e",
      "name": "Google Gemini Model Request",
      "type": "@n8n/n8n-nodes-langchain.googleGemini",
      "position": [
        1824,
        512
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "models/gemini-2.5-flash",
          "cachedResultName": "models/gemini-2.5-flash"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "={{ $json.Prompt }}"
            }
          ]
        },
        "simplify": false,
        "builtInTools": {}
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "2f147b8e-fb55-4df6-8bef-3a5869243b3e",
      "name": "Post to Perplexity API",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1888,
        912
      ],
      "parameters": {
        "url": "https://api.perplexity.ai/chat/completions",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "model",
              "value": "=sonar"
            },
            {
              "name": "messages",
              "value": "=[   {     \"role\": \"user\",     \"content\": \"{{$json.Prompt}}\"   } ]"
            }
          ]
        },
        "genericAuthType": "httpHeaderAuth"
      },
      "typeVersion": 4.4
    },
    {
      "id": "15675cd7-4e65-484d-8792-1d5eb210a1dc",
      "name": "GPT Content Analyzer Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        2400,
        128
      ],
      "parameters": {
        "text": "=You are an AI brand visibility evaluation agent.\n\nINPUTS\n\nOriginal prompt:\n{{ $json.Prompt }}\n\nTarget brand:\n{{ $json[\"Target Tool\"] }}\n\nAI answer:\n{{ $json.output[0].content[0].text }}\n\nUse Criteria:\n{{ $('Aggregate Criteria Data').item.json.criteria_line }}\n\nTASK\n\n1. Analyze the AI answer strictly according to criteria.\n2. Extract all explicit brand, app, website, platform, product, or service names mentioned in the AI answer.\n3. Write exactly one row using the tool \"Write Results\".\n\nIMPORTANT RULES\n\n- Use only explicit information from the AI answer.\n- Do not invent brands.\n- Keep the original order of mentioned brands.\n- Count only explicit brand/service/app/platform names.\n- Ignore generic categories like restaurants, events, tools, apps, or websites.\n- If a value does not exist, write Empty.\n- Keep descriptions short and factual.\n- Always call \"Write Results\".",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 3.1
    },
    {
      "id": "7a634e8c-2fa4-44a0-893d-384925c40ce8",
      "name": "Gemini Content Analyzer Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        2400,
        528
      ],
      "parameters": {
        "text": "=You are an AI brand visibility evaluation agent.\n\nINPUTS\n\nOriginal prompt:\n{{ $json.Prompt }}\n\nTarget brand:\n{{ $json[\"Target Tool\"] }}\n\nAI answer:\n{{ $json.candidates[0].content.parts[0].text }}\n\nUse Criteria:\n{{ $('Aggregate Criteria Data').item.json.criteria_line }}\n\nTASK\n\n1. Analyze the AI answer strictly according to criteria.\n2. Extract all explicit brand, app, website, platform, product, or service names mentioned in the AI answer.\n3. Write exactly one row using the tool \"Write Results\".\n\nIMPORTANT RULES\n\n- Use only explicit information from the AI answer.\n- Do not invent brands.\n- Keep the original order of mentioned brands.\n- Count only explicit brand/service/app/platform names.\n- Ignore generic categories like restaurants, events, tools, apps, or websites.\n- If a value does not exist, write Empty.\n- Keep descriptions short and factual.\n- Always call \"Write Results\".",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 3.1
    },
    {
      "id": "a1458ca8-6dcc-4320-b54c-8f35f4cd0ce6",
      "name": "Perplexity Content Analyzer Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        2400,
        1040
      ],
      "parameters": {
        "text": "=You are an AI brand visibility evaluation agent.\n\nINPUTS\n\nOriginal prompt:\n{{ $json.Prompt }}\n\nTarget brand:\n{{ $json[\"Target Tool\"] }}\n\nAI answer:\n{{ $json.choices[0].message.content }}\n\nUse Criteria:\n{{ $('Aggregate Criteria Data').item.json.criteria_line }}\n\nTASK\n\n1. Analyze the AI answer strictly according to criteria.\n2. Extract all explicit brand, app, website, platform, product, or service names mentioned in the AI answer.\n3. Write exactly one row using the tool \"Write Results\".\n\nIMPORTANT RULES\n\n- Use only explicit information from the AI answer.\n- Do not invent brands.\n- Keep the original order of mentioned brands.\n- Count only explicit brand/service/app/platform names.\n- Ignore generic categories like restaurants, events, tools, apps, or websites.\n- If a value does not exist, write Empty.\n- Keep descriptions short and factual.\n- Always call \"Write Results\".",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 3.1
    },
    {
      "id": "2da584d7-fae7-419c-a48e-68d871b7f52d",
      "name": "Write Gemini Results to Sheets",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        2592,
        752
      ],
      "parameters": {
        "columns": {
          "value": {
            "LLM": "=Gemini",
            "Date": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Date', ``, 'string') }}",
            "Model": "={{ $('Merge Gemini Data').item.json.modelVersion }}",
            "Prompt": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt', ``, 'string') }}",
            "number": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('number', ``, 'string') }}",
            "mention": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('mention', ``, 'string') }}",
            "position": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('position', ``, 'string') }}",
            "brands name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('brands_name', ``, 'string') }}",
            "description": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('description', ``, 'string') }}"
          },
          "schema": [
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Prompt",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Prompt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "mention",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "mention",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "brands name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "brands name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "number",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "position",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "position",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "description",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Model",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Model",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "LLM",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "LLM",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 968806322,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1wH6ZlDD5RcyapAbw3Tgb3tYp5vd6v5JhPC6VSo2B_4A/edit#gid=968806322",
          "cachedResultName": "Results"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1wH6ZlDD5RcyapAbw3Tgb3tYp5vd6v5JhPC6VSo2B_4A",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1wH6ZlDD5RcyapAbw3Tgb3tYp5vd6v5JhPC6VSo2B_4A/edit?usp=drivesdk",
          "cachedResultName": "LLM Brand Visibility"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "ed53a1c7-f987-48c9-997f-09218f001d7b",
      "name": "Write GPT Results to Sheets",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        2592,
        352
      ],
      "parameters": {
        "columns": {
          "value": {
            "LLM": "=GPT",
            "Date": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Date', ``, 'string') }}",
            "Model": "={{ $('Merge GPT Data').item.json.model }}",
            "Prompt": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt', ``, 'string') }}",
            "number": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('number', ``, 'string') }}",
            "mention": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('mention', ``, 'string') }}",
            "position": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('position', ``, 'string') }}",
            "brands name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('brands_name', ``, 'string') }}",
            "description": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('description', ``, 'string') }}"
          },
          "schema": [
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Prompt",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Prompt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "mention",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "mention",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "brands name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "brands name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "number",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "position",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "position",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "description",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Model",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Model",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "LLM",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "LLM",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 968806322,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1wH6ZlDD5RcyapAbw3Tgb3tYp5vd6v5JhPC6VSo2B_4A/edit#gid=968806322",
          "cachedResultName": "Results"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1wH6ZlDD5RcyapAbw3Tgb3tYp5vd6v5JhPC6VSo2B_4A",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1wH6ZlDD5RcyapAbw3Tgb3tYp5vd6v5JhPC6VSo2B_4A/edit?usp=drivesdk",
          "cachedResultName": "LLM Brand Visibility"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "b93fc95a-7d04-4b47-95a6-5fdd09262302",
      "name": "Write Perplexity Results to Sheets",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        2576,
        1264
      ],
      "parameters": {
        "columns": {
          "value": {
            "LLM": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('LLM', `example: GPT, Claude, Gemin, Perplexity`, 'string') }}",
            "Date": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Date', ``, 'string') }}",
            "Model": "={{ $('Merge Perplexity Data').item.json.model }}",
            "Prompt": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt', ``, 'string') }}",
            "number": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('number', ``, 'string') }}",
            "mention": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('mention', ``, 'string') }}",
            "position": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('position', ``, 'string') }}",
            "brands name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('brands_name', ``, 'string') }}",
            "description": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('description', ``, 'string') }}"
          },
          "schema": [
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Prompt",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Prompt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "mention",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "mention",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "brands name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "brands name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "number",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "position",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "position",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "description",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Model",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Model",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "LLM",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "LLM",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 968806322,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1wH6ZlDD5RcyapAbw3Tgb3tYp5vd6v5JhPC6VSo2B_4A/edit#gid=968806322",
          "cachedResultName": "Results"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1wH6ZlDD5RcyapAbw3Tgb3tYp5vd6v5JhPC6VSo2B_4A",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1wH6ZlDD5RcyapAbw3Tgb3tYp5vd6v5JhPC6VSo2B_4A/edit?usp=drivesdk",
          "cachedResultName": "LLM Brand Visibility"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "993085ca-2e8b-466b-aac9-8bd68945eeed",
      "name": "Merge Perplexity Data",
      "type": "n8n-nodes-base.merge",
      "position": [
        2176,
        1040
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineByPosition"
      },
      "typeVersion": 3.2
    },
    {
      "id": "f39c6b8e-931e-44b2-a72e-bd3998252c9a",
      "name": "Merge Gemini Data",
      "type": "n8n-nodes-base.merge",
      "position": [
        2176,
        640
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineByPosition"
      },
      "typeVersion": 3.2
    },
    {
      "id": "4e30a5f9-b0d3-46f4-8cc3-fe18a3ac97d1",
      "name": "Merge GPT Data",
      "type": "n8n-nodes-base.merge",
      "position": [
        2176,
        240
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineByPosition"
      },
      "typeVersion": 3.2
    },
    {
      "id": "5d337c5d-6510-469c-936b-b4acf436611f",
      "name": "OpenAI Perplexity Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        2400,
        1264
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-5-mini"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "5944c290-ee18-4f2a-8674-fe7146bf1f1f",
      "name": "OpenAI Gemini Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        2400,
        752
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-5-mini"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "1944f0d9-92db-4743-9d2a-5c06eb606570",
      "name": "OpenAI GPT Model Evaluator",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        2400,
        352
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-5-mini"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    }
  ],
  "connections": {
    "Merge GPT Data": {
      "main": [
        [
          {
            "node": "GPT Content Analyzer Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge Gemini Data": {
      "main": [
        [
          {
            "node": "Gemini Content Analyzer Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Criteria Line": {
      "main": [
        [
          {
            "node": "Aggregate Criteria Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Gemini Model": {
      "ai_languageModel": [
        [
          {
            "node": "Gemini Content Analyzer Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Merge Perplexity Data": {
      "main": [
        [
          {
            "node": "Perplexity Content Analyzer Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Post to Perplexity API": {
      "main": [
        [
          {
            "node": "Merge Perplexity Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate Criteria Data": {
      "main": [
        [
          {
            "node": "Read Prompts from Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Perplexity Model": {
      "ai_languageModel": [
        [
          {
            "node": "Perplexity Content Analyzer Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI GPT Model Request": {
      "main": [
        [
          {
            "node": "Merge GPT Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read Prompts from Sheets": {
      "main": [
        [
          {
            "node": "OpenAI GPT Model Request",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge GPT Data",
            "type": "main",
            "index": 1
          },
          {
            "node": "Merge Gemini Data",
            "type": "main",
            "index": 1
          },
          {
            "node": "Google Gemini Model Request",
            "type": "main",
            "index": 0
          },
          {
            "node": "Post to Perplexity API",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge Perplexity Data",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Read Criteria from Sheets": {
      "main": [
        [
          {
            "node": "Set Criteria Line",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI GPT Model Evaluator": {
      "ai_languageModel": [
        [
          {
            "node": "GPT Content Analyzer Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Model Request": {
      "main": [
        [
          {
            "node": "Merge Gemini Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Write GPT Results to Sheets": {
      "ai_tool": [
        [
          {
            "node": "GPT Content Analyzer Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Write Gemini Results to Sheets": {
      "ai_tool": [
        [
          {
            "node": "Gemini Content Analyzer Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Write Perplexity Results to Sheets": {
      "ai_tool": [
        [
          {
            "node": "Perplexity Content Analyzer Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This template measures brand visibility across multiple AI assistants. It sends the same prompts to GPT, Gemini, and Perplexity, evaluates whether a target brand is mentioned, extracts visibility details, and saves structured results to Google Sheets for comparison. 🚀 How It…

Source: https://n8n.io/workflows/15654/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This automation is designed to help you generate AI-powered music tracks, cover art, and fully rendered music videos — all triggered from a simple Telegram chat and managed via Google Sheets.

OpenAI Chat, Memory Buffer Window, Output Parser Structured +11
AI & RAG

This n8n workflow creates an intelligent WhatsApp customer support bot that can handle text, image, audio, and document messages. The workflow automatically processes incoming messages through differe

HTTP Request, N8N Nodes Rapiwa, Agent Tool +9
AI & RAG

This workflow automates Facebook posting and appointment booking directly from a Telegram bot, making it especially useful for pet grooming businesses that want to keep their social media active while

Google Sheets, OpenAI Chat, Output Parser Structured +12
AI & RAG

Turn a simple idea into a complete blog article with images, ready to publish — fully automated.

Agent, OpenAI Chat, HTTP Request +5
AI & RAG

🎯 Create viral TikToks, Shorts, Reels, podcasts, and ASMR videos in minutes — all on autopilot.

OpenAI, HTTP Request, Form Trigger +7