This workflow corresponds to n8n.io template #13449 — we link there as the canonical source.
This workflow follows the Agent → Execute Workflow Trigger 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 →
{
"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
}
]
]
}
}
}
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.
anthropicApideepSeekApiopenAiApiperplexityApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow automates AI Search Engine Optimization (ASEO) tracking for digital marketing agencies. It tests your client's website visibility across four major AI platforms—ChatGPT, Claude, DeepSeek, and Perplexity—using brand-neutral prompts, analyzes ranking position and…
Source: https://n8n.io/workflows/13449/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This workflow is designed for marketers, content creators, agencies, and solo founders who want to publish long‑form posts with visuals on autopilot using n8n and AI agents.
Template Carnaval - time instagram. Uses toolWorkflow, lmChatOpenAi, memoryBufferWindow, agent. Event-driven trigger; 56 nodes.
The best content automation template in the market is now even better—with “deep research” on time-sensitive topics\! Unlike most n8n content automation templates that are mainly for “demo purposes,”
Typeform IA - YT. Uses typeformTrigger, agent, lmChatOpenAi, toolWorkflow. Event-driven trigger; 75 nodes.
My workflow 53. Uses formTrigger, httpRequest, lmChatOpenAi, form. Event-driven trigger; 74 nodes.