{
  "id": "I83U7IQQyHLJaLRF",
  "name": "AI_Ranking_Checker",
  "tags": [],
  "nodes": [
    {
      "id": "05f07bea-7687-4714-9858-051dee4651e2",
      "name": "Receive Website and Summary from Parent",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        0,
        0
      ],
      "parameters": {
        "workflowInputs": {
          "values": [
            {
              "name": "Website"
            },
            {
              "name": "Website Summary"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "43a6e12a-3236-40e0-b69b-37c0aa930215",
      "name": "Generate Brand-Neutral Search Prompts",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        352,
        0
      ],
      "parameters": {
        "text": "=You are responsible to generate relevant prompts that users might put on AI searches in order to find companies like  {{ $json.Website }}\n\nDon't use client's name directly in the prompt. The prompt should be independent and focus ont the core services of the client. \n\nAbout the website: \n{{ $json[\"Website Summary\"] }}\nGOAL: Create one prompt",
        "options": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2
    },
    {
      "id": "3de0e9b1-5590-4286-8c07-334087c0b6b1",
      "name": "GPT Model for Prompt Generation",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        272,
        224
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "36f50c3a-6597-4b06-9751-b4f344a6eb78",
      "name": "Parse Prompt as JSON",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        528,
        224
      ],
      "parameters": {
        "autoFix": true,
        "jsonSchemaExample": "{\n\t\"Prompts\": \"Prompt\"\n}",
        "customizeRetryPrompt": true
      },
      "typeVersion": 1.3
    },
    {
      "id": "feb08780-e899-4ada-a955-9e995c9ed03b",
      "name": "GPT Model for Parser Support",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        624,
        448
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "b282c280-ccaa-45d4-8ec8-9d409e09c87a",
      "name": "Test Visibility on ChatGPT",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        880,
        0
      ],
      "parameters": {
        "text": "={{ $json.output.Prompts }}",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "a8e0e795-99d2-4f40-bd2b-d903e61f4c24",
      "name": "GPT-4o-mini for ChatGPT Test",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        880,
        240
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "e23c46c2-7633-4952-bea9-1190d47b9575",
      "name": "Test Visibility on Claude",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "onError": "continueRegularOutput",
      "position": [
        1296,
        0
      ],
      "parameters": {
        "text": "={{ $('Generate Brand-Neutral Search Prompts').item.json.output.Prompts }}",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 2,
      "alwaysOutputData": false
    },
    {
      "id": "89fdef8b-f763-4277-b6ef-29fc43194697",
      "name": "Claude Sonnet 3.7 Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "position": [
        1296,
        256
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "claude-3-7-sonnet-20250219",
          "cachedResultName": "Claude Sonnet 3.7"
        },
        "options": {}
      },
      "credentials": {
        "anthropicApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "69138df5-509b-4f68-b11d-87d9cbaeaf00",
      "name": "Test Visibility on DeepSeek",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "onError": "continueRegularOutput",
      "position": [
        1680,
        0
      ],
      "parameters": {
        "text": "={{ $('Generate Brand-Neutral Search Prompts').item.json.output.Prompts }}",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 2,
      "alwaysOutputData": false
    },
    {
      "id": "02c058c5-0603-4798-8b44-987a6ed1b596",
      "name": "DeepSeek Model for Testing",
      "type": "@n8n/n8n-nodes-langchain.lmChatDeepSeek",
      "position": [
        1680,
        224
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "deepSeekApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "eed1d2c0-e5e4-444e-81be-9f7d75473132",
      "name": "Test Visibility on Perplexity",
      "type": "n8n-nodes-base.perplexity",
      "onError": "continueRegularOutput",
      "position": [
        2080,
        0
      ],
      "parameters": {
        "options": {},
        "messages": {
          "message": [
            {
              "content": "={{ $('Generate Brand-Neutral Search Prompts').item.json.output.Prompts }}"
            }
          ]
        },
        "requestOptions": {}
      },
      "credentials": {
        "perplexityApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1,
      "alwaysOutputData": false
    },
    {
      "id": "faca2ef7-1a59-4a56-bc96-06faacccfa8e",
      "name": "Analyze All Platform Results",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        2336,
        0
      ],
      "parameters": {
        "text": "=Client's Website: {{ $('Receive Website and Summary from Parent').item.json.Website }}\n\nYou need to check if my client's website is ranking on these AI searches. You need provide if the site is visible or not and provide the % strength of the presence based on positive the output is in favour of my client. \n\nPrompt used to generate Output: {{ $('Generate Brand-Neutral Search Prompts').item.json.output.Prompts }}\n\nChatGPT Output {{ $('Test Visibility on ChatGPT').item.json.output }}\n\nClaude Output: {{ $('Test Visibility on Claude').item.json.output }}\n\nDeepseek Output {{ $('Test Visibility on DeepSeek').item.json.output }}\n\nPerplexity Output: {{ $json.choices[0].message.content }}",
        "options": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2
    },
    {
      "id": "559d5fd4-00ac-4860-8319-10312968f9b6",
      "name": "DeepSeek Model for Analysis",
      "type": "@n8n/n8n-nodes-langchain.lmChatDeepSeek",
      "position": [
        2336,
        240
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "deepSeekApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "465d78a9-f377-46ae-b4a7-aba77e1196c5",
      "name": "Parse Analysis as Structured JSON",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        2480,
        224
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"client_website\": \"Website URL being analyzed\",\n  \"search_query\": \"The search prompt used\",\n  \"chatgpt_analysis\": {\n    \"is_ranking\": \"Yes/No - Is client site visible in ChatGPT results\",\n    \"ranking_position\": \"Numerical position if visible (1-10 or null)\",\n    \"presence_strength_percent\": \"0-100 - Strength of presence percentage\",\n    \"key_mentions\": \"Brief description of how client is mentioned\",\n    \"top_competitors\": [\"competitor1.com\", \"competitor2.com\"]\n  },\n  \"claude_analysis\": {\n    \"is_ranking\": \"Yes/No - Is client site visible in Claude results\",\n    \"ranking_position\": \"Numerical position if visible (1-10 or null)\",\n    \"presence_strength_percent\": \"0-100 - Strength of presence percentage\",\n    \"key_mentions\": \"Brief description of how client is mentioned\",\n    \"top_competitors\": [\"competitor1.com\", \"competitor2.com\"]\n  },\n  \"deepseek_analysis\": {\n    \"is_ranking\": \"Yes/No - Is client site visible in DeepSeek results\",\n    \"ranking_position\": \"Numerical position if visible (1-10 or null)\",\n    \"presence_strength_percent\": \"0-100 - Strength of presence percentage\",\n    \"key_mentions\": \"Brief description of how client is mentioned\",\n    \"top_competitors\": [\"competitor1.com\", \"competitor2.com\"]\n  },\n  \"perplexity_analysis\": {\n    \"is_ranking\": \"Yes/No - Is client site visible in Perplexity results\",\n    \"ranking_position\": \"Numerical position if visible (1-10 or null)\",\n    \"presence_strength_percent\": \"0-100 - Strength of presence percentage\",\n    \"key_mentions\": \"Brief description of how client is mentioned\",\n    \"top_competitors\": [\"competitor1.com\", \"competitor2.com\"]\n  },\n  \"overall_summary\": {\n    \"total_platforms_ranking\": \"Number of platforms where client is visible\",\n    \"average_presence_strength\": \"Average percentage across all platforms\",\n    \"strongest_platform\": \"Platform with highest presence strength\",\n    \"weakest_platform\": \"Platform with lowest presence strength\",\n    \"main_competitors\": [\"top 3 competitors across all platforms\"],\n    \"recommendations\": \"Brief recommendations for improvement\"\n  }\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "06b6182a-5a60-4001-99d6-a362d377f948",
      "name": "Flatten JSON to 27 Data Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        2752,
        0
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "5fb9dd51-477e-4a86-a2ab-eb165b2e5b52",
              "name": "Prompt",
              "type": "string",
              "value": "={{ $('Receive Website and Summary from Parent').item.json.Prompt }}"
            },
            {
              "id": "4d5d8493-08f2-4d8e-92a0-2b346b443d7c",
              "name": "ChatGPT: Ranking",
              "type": "string",
              "value": "={{ $json.output.chatgpt_analysis.is_ranking }}"
            },
            {
              "id": "daff00fc-7a2e-4121-85fc-1d4cccef7b62",
              "name": "ChatGPT: Position",
              "type": "string",
              "value": "={{ $json.output.chatgpt_analysis.ranking_position }}"
            },
            {
              "id": "12e52b41-a34a-4a4f-bd05-a6589433da06",
              "name": "ChatGPT: Presence Strength",
              "type": "string",
              "value": "={{ $json.output.chatgpt_analysis.presence_strength_percent }}"
            },
            {
              "id": "2e7d5e1b-5a6a-49ae-9c73-8d1020a30fe2",
              "name": "ChatGPT: Key Mentions",
              "type": "string",
              "value": "={{ $json.output.chatgpt_analysis.key_mentions }}"
            },
            {
              "id": "44a7b302-214e-4b5a-a6f2-8691fd72c2fc",
              "name": "ChatGPT: Ranking Competitors",
              "type": "string",
              "value": "={{ $json.output.chatgpt_analysis.top_competitors }}"
            },
            {
              "id": "d910cfc7-1ea2-41aa-9425-ad2a937906fd",
              "name": "Claude: Ranking",
              "type": "string",
              "value": "={{ $json.output.claude_analysis.is_ranking }}"
            },
            {
              "id": "269e1495-81cd-4df7-b885-9db3ff49d372",
              "name": "Claude: Position",
              "type": "string",
              "value": "={{ $json.output.claude_analysis.ranking_position }}"
            },
            {
              "id": "8aec0392-650d-4e55-864c-e4c1f108d047",
              "name": "Calude: Presence Strength",
              "type": "string",
              "value": "={{ $json.output.claude_analysis.presence_strength_percent }}"
            },
            {
              "id": "2ed394ed-af87-4eaa-b7c4-a0a7a612179c",
              "name": "Claude: Key Mentions",
              "type": "string",
              "value": "={{ $json.output.claude_analysis.key_mentions }}"
            },
            {
              "id": "bd1f66db-3d70-46cc-be85-a1a1fc01f50b",
              "name": "Claude: Ranking Competitors",
              "type": "string",
              "value": "={{ $json.output.claude_analysis.top_competitors }}"
            },
            {
              "id": "c25d36ee-c556-47b1-ae1c-a7990aa801c1",
              "name": "Deepseek: Ranking",
              "type": "string",
              "value": "={{ $json.output.deepseek_analysis.is_ranking }}"
            },
            {
              "id": "11a5d97b-1511-41b8-9df3-113e9373d4df",
              "name": "Deepseek: Position",
              "type": "string",
              "value": "={{ $json.output.deepseek_analysis.ranking_position }}"
            },
            {
              "id": "4c80d8d6-f65f-4f84-9f58-12ea276edaa9",
              "name": "Deepseek: Presence Strength",
              "type": "string",
              "value": "={{ $json.output.deepseek_analysis.presence_strength_percent }}"
            },
            {
              "id": "0eda6a00-7eb6-49a1-98d3-b840e5c70262",
              "name": "Deepseek: Key Mentions",
              "type": "string",
              "value": "={{ $json.output.deepseek_analysis.key_mentions }}"
            },
            {
              "id": "a6682f89-13c9-42e5-a818-7733f623a356",
              "name": "Deepseek: Ranking Competitors",
              "type": "string",
              "value": "={{ $json.output.deepseek_analysis.top_competitors }}"
            },
            {
              "id": "05e1d98c-34ac-43cf-918a-49f5d4245454",
              "name": "Perplexity: Ranking",
              "type": "string",
              "value": "={{ $json.output.perplexity_analysis.is_ranking }}"
            },
            {
              "id": "22c7a801-92ca-4aa9-a466-70c2fc057ba5",
              "name": "Perplexity: Position",
              "type": "string",
              "value": "={{ $json.output.perplexity_analysis.ranking_position }}"
            },
            {
              "id": "37239557-abad-47f1-a27a-4b5c2e0035e4",
              "name": "Perplexity: Presence Strength",
              "type": "string",
              "value": "={{ $json.output.perplexity_analysis.presence_strength_percent }}"
            },
            {
              "id": "484ea19b-f827-45d1-9ec6-0abfbba14bce",
              "name": "Perplexity:  Key Mentions",
              "type": "string",
              "value": "={{ $json.output.perplexity_analysis.key_mentions }}"
            },
            {
              "id": "f0cd3cfa-1404-46a6-b70f-fb512035b75d",
              "name": "Perplexity: Ranking Competitors",
              "type": "string",
              "value": "={{ $json.output.perplexity_analysis.top_competitors }}"
            },
            {
              "id": "d63c8961-e82c-48a5-acb0-7a52f247a518",
              "name": "Overall: Ranking",
              "type": "string",
              "value": "={{ $json.output.overall_summary.total_platforms_ranking }}"
            },
            {
              "id": "60972256-0843-42aa-ac62-7b4cae7eb1ef",
              "name": "Overall: Presence Strength",
              "type": "string",
              "value": "={{ $json.output.overall_summary.average_presence_strength }}"
            },
            {
              "id": "f91981bf-2aa0-4998-8b9f-82166a0db25d",
              "name": "Strongest Platform",
              "type": "string",
              "value": "={{ $json.output.overall_summary.strongest_platform }}"
            },
            {
              "id": "d0c0556f-4994-4c34-af74-afd90ad56bd6",
              "name": "Weekest Platform",
              "type": "string",
              "value": "={{ $json.output.overall_summary.weakest_platform }}"
            },
            {
              "id": "e4efbdfe-0716-4474-8456-92437ee059f0",
              "name": "Overall: Main Comeptitors",
              "type": "string",
              "value": "={{ $json.output.overall_summary.main_competitors }}"
            },
            {
              "id": "ca6deae9-2631-48b8-83e6-16602998f436",
              "name": "Recommendations",
              "type": "string",
              "value": "={{ $json.output.overall_summary.recommendations }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "ce1c6902-018f-47fa-a862-85867f6791b6",
      "name": "Output Data Complete",
      "type": "n8n-nodes-base.noOp",
      "position": [
        3024,
        0
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "db9ba0f8-bbc8-49f6-978c-76a64b513ecd",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -528,
        -320
      ],
      "parameters": {
        "width": 464,
        "height": 832,
        "content": "## AI Search Ranking Analyzer Across 4 Platforms\n\nAutomates AI Search Engine Optimization (ASEO) tracking for\ndigital marketing agencies. Receives client website + summary,\ngenerates brand-neutral search prompts using GPT-4.1-mini,\ntests visibility across ChatGPT, Claude, DeepSeek, and Perplexity\nsimultaneously with error handling, analyzes each platform's\nranking position and presence strength (0-100%), identifies top\ncompetitors across all platforms, and produces structured 27-field\noutput with overall summary, strongest/weakest platforms, and\nactionable recommendations. Tracks the new frontier of AI\ndiscoverability beyond traditional SEO.\n\n## How it works\n1. Receives Website URL and Summary from parent workflow.\n2. AI generates search prompts users would ask (no brand names).\n3. Tests same prompt on ChatGPT (GPT-4o-mini).\n4. Tests on Claude (Sonnet 3.7) with error handling.\n5. Tests on DeepSeek with error handling.\n6. Tests on Perplexity with error handling.\n7. AI analyzes all 4 outputs for ranking, position, strength %.\n8. Identifies competitors mentioned across platforms.\n9. Flattens JSON to 27 fields for reporting.\n10. Returns comprehensive visibility scorecard.\n\n## Setup steps\n1. Create parent workflow with Execute Workflow node.\n2. Pass Website URL and Website Summary parameters.\n3. Configure OpenAI API credentials (GPT-4.1-mini, GPT-4o-mini).\n4. Configure Anthropic API credentials (Claude Sonnet 3.7).\n5. Configure DeepSeek API credentials.\n6. Configure Perplexity API credentials.\n7. Test with sample website data.\n8. Enable error handling (continueRegularOutput on agents)."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "abde20d6-7b8c-46c0-ba45-7751a1723e8f",
  "connections": {
    "Parse Prompt as JSON": {
      "ai_outputParser": [
        [
          {
            "node": "Generate Brand-Neutral Search Prompts",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Claude Sonnet 3.7 Model": {
      "ai_languageModel": [
        [
          {
            "node": "Test Visibility on Claude",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Test Visibility on Claude": {
      "main": [
        [
          {
            "node": "Test Visibility on DeepSeek",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "DeepSeek Model for Testing": {
      "ai_languageModel": [
        [
          {
            "node": "Test Visibility on DeepSeek",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Test Visibility on ChatGPT": {
      "main": [
        [
          {
            "node": "Test Visibility on Claude",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "DeepSeek Model for Analysis": {
      "ai_languageModel": [
        [
          {
            "node": "Analyze All Platform Results",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Test Visibility on DeepSeek": {
      "main": [
        [
          {
            "node": "Test Visibility on Perplexity",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Analyze All Platform Results": {
      "main": [
        [
          {
            "node": "Flatten JSON to 27 Data Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "GPT Model for Parser Support": {
      "ai_languageModel": [
        [
          {
            "node": "Parse Prompt as JSON",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "GPT-4o-mini for ChatGPT Test": {
      "ai_languageModel": [
        [
          {
            "node": "Test Visibility on ChatGPT",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Test Visibility on Perplexity": {
      "main": [
        [
          {
            "node": "Analyze All Platform Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Flatten JSON to 27 Data Fields": {
      "main": [
        [
          {
            "node": "Output Data Complete",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "GPT Model for Prompt Generation": {
      "ai_languageModel": [
        [
          {
            "node": "Generate Brand-Neutral Search Prompts",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Parse Analysis as Structured JSON": {
      "ai_outputParser": [
        [
          {
            "node": "Analyze All Platform Results",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Generate Brand-Neutral Search Prompts": {
      "main": [
        [
          {
            "node": "Test Visibility on ChatGPT",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Receive Website and Summary from Parent": {
      "main": [
        [
          {
            "node": "Generate Brand-Neutral Search Prompts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}