AutomationFlowsAI & RAG › Competitor Intelligence Agent: Serp Monitoring + Summary with Thordata + Openai

Competitor Intelligence Agent: Serp Monitoring + Summary with Thordata + Openai

ByRanjan Dailata @ranjancse on n8n.io

This workflow is designed for:

Event trigger★★★★☆ complexityAI-powered23 nodesAgentOpenAI ChatHTTP Request ToolChain LlmInformation ExtractorOutput Parser StructuredGoogle Sheets
AI & RAG Trigger: Event Nodes: 23 Complexity: ★★★★☆ AI nodes: yes Added:
Competitor Intelligence Agent: Serp Monitoring + Summary with Thordata + Openai — n8n workflow card showing Agent, OpenAI Chat, HTTP Request Tool integration

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

This workflow follows the Agent → Chainllm 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
{
  "id": "OQEOWynAfK54HxNr",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Competitor Intelligence Agent: SERP Monitoring + Summary Insights with Thordata + OpenAI",
  "tags": [
    {
      "id": "Kujft2FOjmOVQAmJ",
      "name": "Engineering",
      "createdAt": "2025-04-09T01:31:00.558Z",
      "updatedAt": "2025-04-09T01:31:00.558Z"
    },
    {
      "id": "ddPkw7Hg5dZhQu2w",
      "name": "AI",
      "createdAt": "2025-04-13T05:38:08.053Z",
      "updatedAt": "2025-04-13T05:38:08.053Z"
    },
    {
      "id": "qpxJxOMCv2x7Op5c",
      "name": "SERP",
      "createdAt": "2025-04-03T15:37:19.686Z",
      "updatedAt": "2025-04-03T15:37:19.686Z"
    }
  ],
  "nodes": [
    {
      "id": "d370dfd6-2a22-4e90-816f-be5e3b84c4c4",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -304,
        -288
      ],
      "parameters": {
        "text": "={{ $json.search_query }}",
        "options": {},
        "promptType": "define"
      },
      "retryOnFail": true,
      "typeVersion": 2.2
    },
    {
      "id": "7af03b55-ba2e-4408-80ff-b81c02286993",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -592,
        -64
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "51f08152-e6e0-428a-b914-77cf14e13283",
      "name": "Bing Search",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -416,
        -64
      ],
      "parameters": {
        "url": "https://scraperapi.thordata.com/request",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "form-urlencoded",
        "sendHeaders": true,
        "authentication": "predefinedCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "engine",
              "value": "bing"
            },
            {
              "name": "q",
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters1_Value', ``, 'string') }}"
            },
            {
              "name": "json",
              "value": "1"
            }
          ]
        },
        "toolDescription": "HTTP request using Bing Search",
        "headerParameters": {
          "parameters": [
            {}
          ]
        },
        "nodeCredentialType": "httpBearerAuth"
      },
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "ecdb2eb4-373b-4929-b3b6-14b9063d1e91",
      "name": "Google Search",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -256,
        -64
      ],
      "parameters": {
        "url": "https://scraperapi.thordata.com/request",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "form-urlencoded",
        "sendHeaders": true,
        "authentication": "predefinedCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "engine",
              "value": "google"
            },
            {
              "name": "q",
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters1_Value', ``, 'string') }}"
            },
            {
              "name": "json",
              "value": "1"
            }
          ]
        },
        "toolDescription": "HTTP request using Google Search",
        "headerParameters": {
          "parameters": [
            {}
          ]
        },
        "nodeCredentialType": "httpBearerAuth"
      },
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "ddfeffd8-9c9a-42c4-be8d-36f2dbacb99c",
      "name": "Yandex Search",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -48,
        -64
      ],
      "parameters": {
        "url": "https://scraperapi.thordata.com/request",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "form-urlencoded",
        "sendHeaders": true,
        "authentication": "predefinedCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "engine",
              "value": "yandex"
            },
            {
              "name": "q",
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters1_Value', ``, 'string') }}"
            },
            {
              "name": "json",
              "value": "1"
            }
          ]
        },
        "toolDescription": "HTTP request using Yandex Search",
        "headerParameters": {
          "parameters": [
            {}
          ]
        },
        "nodeCredentialType": "httpBearerAuth"
      },
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "8fdd3ba1-7f2f-4cb5-8be7-810be5048240",
      "name": "DuckDuckGo Search",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        144,
        -64
      ],
      "parameters": {
        "url": "https://scraperapi.thordata.com/request",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "form-urlencoded",
        "sendHeaders": true,
        "authentication": "predefinedCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "engine",
              "value": "duckduckgo"
            },
            {
              "name": "q",
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters1_Value', ``, 'string') }}"
            },
            {
              "name": "json",
              "value": "1"
            }
          ]
        },
        "toolDescription": "HTTP request using DuckDuckGo Search",
        "headerParameters": {
          "parameters": [
            {}
          ]
        },
        "nodeCredentialType": "httpBearerAuth"
      },
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "d1a85744-8eb1-4a7a-9ac4-1dc11843c522",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1088,
        -1136
      ],
      "parameters": {
        "color": 7,
        "width": 160,
        "content": "![Logo](https://consumersiteimages.trustpilot.net/business-units/67b212598525b99cf90a59cc-198x149-1x.jpg)"
      },
      "typeVersion": 1
    },
    {
      "id": "884c52b5-d8a2-4c67-b2a4-ca4ccacb7677",
      "name": "When clicking \u2018Execute workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -1072,
        -288
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "6a142d04-f88e-436c-8a20-4f575de756b8",
      "name": "Set the Input Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        -784,
        -288
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "4a779b05-0cb9-4d93-883c-90b8859edbca",
              "name": "search_query",
              "type": "string",
              "value": "Google Search for Top SEO strategies for e-commerce in 2025"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "8234accd-fa05-4795-96ef-99a158e673ff",
      "name": "Summarize the content",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        448,
        -464
      ],
      "parameters": {
        "text": "=Summarize the following content  {{ $json.output }}.\n\nOutput just the summary. Do not provide your own suggestions or recommendations",
        "batching": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "retryOnFail": true,
      "typeVersion": 1.7
    },
    {
      "id": "fe9c7ae5-70e8-4854-8c4d-f2dee9956024",
      "name": "OpenAI Chat Model For Summarization",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        432,
        -224
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "2438f8b8-02cf-4811-a65f-7c4601f252bc",
      "name": "Keyword and Topic Analysis",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        464,
        -32
      ],
      "parameters": {
        "text": "=Perform Keyword and Topic Analysis of the following  {{ $json.output }}",
        "options": {},
        "schemaType": "manual",
        "inputSchema": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"title\": \"KeywordTopicAnalysis\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"query\": {\n      \"type\": \"string\",\n      \"description\": \"The original search query or keyword used in the SERP analysis.\"\n    },\n    \"primary_keywords\": {\n      \"type\": \"array\",\n      \"description\": \"List of primary focus keywords extracted from the analyzed content or SERP data.\",\n      \"items\": { \"type\": \"string\" }\n    },\n    \"secondary_keywords\": {\n      \"type\": \"array\",\n      \"description\": \"Related or supporting keywords derived from semantic clustering or co-occurrence.\",\n      \"items\": { \"type\": \"string\" }\n    },\n    \"keyword_metrics\": {\n      \"type\": \"array\",\n      \"description\": \"SEO metrics for each keyword, including difficulty and search volume.\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"keyword\": { \"type\": \"string\" },\n          \"search_volume\": { \"type\": \"integer\" },\n          \"competition_score\": { \"type\": \"number\" },\n          \"difficulty_score\": { \"type\": \"number\" },\n          \"trend\": { \"type\": \"string\", \"enum\": [\"rising\", \"falling\", \"steady\"] }\n        },\n        \"required\": [\"keyword\"]\n      }\n    },\n    \"focus_topics\": {\n      \"type\": \"array\",\n      \"description\": \"List of main content themes or topics derived from the SERP results or web pages.\",\n      \"items\": { \"type\": \"string\" }\n    },\n    \"topic_clusters\": {\n      \"type\": \"array\",\n      \"description\": \"Groups of semantically related keywords and topics.\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"cluster_name\": { \"type\": \"string\" },\n          \"related_keywords\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n          \"search_intent\": {\n            \"type\": \"string\",\n            \"enum\": [\"informational\", \"navigational\", \"transactional\", \"commercial\"]\n          }\n        },\n        \"required\": [\"cluster_name\", \"related_keywords\"]\n      }\n    },\n    \"seo_strength_score\": {\n      \"type\": \"integer\",\n      \"description\": \"Overall SEO opportunity score (0\u2013100).\"\n    },\n    \"content_gap_summary\": {\n      \"type\": \"string\",\n      \"description\": \"Summary describing missing topics or keyword opportunities in current content.\"\n    },\n    \"competitor_insights\": {\n      \"type\": \"array\",\n      \"description\": \"Optional data about competitors ranking for the analyzed keyword(s).\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"domain\": { \"type\": \"string\" },\n          \"ranking_position\": { \"type\": \"integer\" },\n          \"page_title\": { \"type\": \"string\" },\n          \"content_type\": { \"type\": \"string\" },\n          \"keyword_overlap\": { \"type\": \"number\" }\n        },\n        \"required\": [\"domain\", \"ranking_position\"]\n      }\n    },\n    \"ai_summary\": {\n      \"type\": \"string\",\n      \"description\": \"GPT-generated summary of the keyword and topic insights.\"\n    },\n    \"timestamp\": {\n      \"type\": \"string\",\n      \"format\": \"date-time\",\n      \"description\": \"Timestamp when the analysis was performed.\"\n    }\n  },\n  \"required\": [\"query\", \"primary_keywords\", \"focus_topics\", \"seo_strength_score\"]\n}\n"
      },
      "typeVersion": 1.2
    },
    {
      "id": "c4b13e07-1fa9-4d33-9140-14375f1e5c6b",
      "name": "OpenAI Chat Model for Keyword and Topic Analysis",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        464,
        144
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "27bcba40-fa09-4561-8a79-67af2e479e16",
      "name": "SEO Analyst",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        432,
        -960
      ],
      "parameters": {
        "text": "=Analyze the following SERP results for competitor insights and keyword opportunities:\\n\\n {{ $json.output }}",
        "options": {
          "systemPromptTemplate": "You are an SEO analyst. Extract primary keywords, competitor names, content tone, and summarize SEO strength from SERP data. "
        },
        "schemaType": "manual",
        "inputSchema": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"title\": \"CompetitorInsightsAndKeywordOpportunities\",\n  \"type\": \"object\",\n  \"description\": \"Structured output for analyzing SERP results to extract competitor insights, keyword opportunities, and SEO metrics.\",\n  \"properties\": {\n    \"query\": {\n      \"type\": \"string\",\n      \"description\": \"The search query or topic analyzed in the SERP.\"\n    },\n    \"analyzed_date\": {\n      \"type\": \"string\",\n      \"format\": \"date-time\",\n      \"description\": \"Timestamp when the analysis was performed.\"\n    },\n    \"competitors\": {\n      \"type\": \"array\",\n      \"description\": \"List of main competitors or domains identified in the SERP results.\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"domain\": { \"type\": \"string\", \"description\": \"Competitor domain or brand name.\" },\n          \"page_title\": { \"type\": \"string\", \"description\": \"Title of the competitor\u2019s ranking page.\" },\n          \"ranking_position\": { \"type\": \"integer\", \"description\": \"SERP position for this result.\" },\n          \"snippet\": { \"type\": \"string\", \"description\": \"Short description or meta snippet from the SERP.\" },\n          \"content_type\": {\n            \"type\": \"string\",\n            \"enum\": [\"blog\", \"product_page\", \"landing_page\", \"news\", \"other\"],\n            \"description\": \"Type of content represented by the competitor page.\"\n          },\n          \"estimated_traffic_share\": {\n            \"type\": \"number\",\n            \"minimum\": 0,\n            \"maximum\": 100,\n            \"description\": \"Estimated share of search traffic (%) for this result.\"\n          },\n          \"keyword_overlap\": {\n            \"type\": \"number\",\n            \"minimum\": 0,\n            \"maximum\": 1,\n            \"description\": \"Proportion of shared keywords with the target domain (0\u20131 scale).\"\n          },\n          \"strengths\": {\n            \"type\": \"array\",\n            \"items\": { \"type\": \"string\" },\n            \"description\": \"SEO strengths or advantages identified for this competitor.\"\n          },\n          \"weaknesses\": {\n            \"type\": \"array\",\n            \"items\": { \"type\": \"string\" },\n            \"description\": \"Content or optimization weaknesses detected.\"\n          }\n        },\n        \"required\": [\"domain\", \"ranking_position\"]\n      }\n    },\n    \"keyword_opportunities\": {\n      \"type\": \"array\",\n      \"description\": \"List of new or underutilized keywords identified from the SERP analysis.\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"keyword\": { \"type\": \"string\" },\n          \"search_volume\": { \"type\": \"integer\", \"description\": \"Estimated monthly search volume.\" },\n          \"competition_score\": { \"type\": \"number\", \"description\": \"Keyword competition (0\u20131 scale).\" },\n          \"difficulty_score\": { \"type\": \"number\", \"description\": \"Keyword difficulty (0\u2013100 scale).\" },\n          \"intent\": {\n            \"type\": \"string\",\n            \"enum\": [\"informational\", \"navigational\", \"transactional\", \"commercial\"],\n            \"description\": \"User search intent.\"\n          },\n          \"relevance_score\": {\n            \"type\": \"number\",\n            \"minimum\": 0,\n            \"maximum\": 1,\n            \"description\": \"Relevance to the analyzed query (0\u20131 scale).\"\n          }\n        },\n        \"required\": [\"keyword\"]\n      }\n    },\n    \"topic_clusters\": {\n      \"type\": \"array\",\n      \"description\": \"Clusters of semantically related topics derived from the SERP.\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"cluster_name\": { \"type\": \"string\" },\n          \"related_keywords\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n          \"dominant_competitor\": { \"type\": \"string\", \"description\": \"Competitor leading in this topic cluster.\" }\n        },\n        \"required\": [\"cluster_name\", \"related_keywords\"]\n      }\n    },\n    \"content_gap_analysis\": {\n      \"type\": \"object\",\n      \"description\": \"Summary of missing or underrepresented topics in the current content compared to competitors.\",\n      \"properties\": {\n        \"gaps_identified\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n        \"recommendations\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } }\n      }\n    },\n    \"seo_strength_score\": {\n      \"type\": \"integer\",\n      \"minimum\": 0,\n      \"maximum\": 100,\n      \"description\": \"Overall SEO opportunity score (0\u2013100) based on keyword difficulty, gap size, and competitor weaknesses.\"\n    },\n    \"ai_summary\": {\n      \"type\": \"string\",\n      \"description\": \"GPT-generated executive summary of the key findings, keyword opportunities, and competitor insights.\"\n    }\n  },\n  \"required\": [\"query\", \"competitors\", \"keyword_opportunities\", \"seo_strength_score\", \"ai_summary\"]\n}\n"
      },
      "typeVersion": 1.2
    },
    {
      "id": "b5cac579-1031-488c-9caa-75af3c14250e",
      "name": "OpenAI Chat Model for SEO Analyst",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        432,
        -784
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "ccae56d4-2d58-4b87-bc57-e24857716860",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        640,
        -224
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\"comprehensive_summary\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n        \"abstract_summary\": {\n\t\t\t\"type\": \"string\"\n\t\t}\n    }\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "934a59b1-7061-4834-8b8e-7a37ebecf43d",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -640,
        -384
      ],
      "parameters": {
        "color": 6,
        "width": 944,
        "height": 480,
        "content": "## SERP AI Agent\n\nPerforms the SERP search via Thordata SERP API\n"
      },
      "typeVersion": 1
    },
    {
      "id": "3941d4f9-83e0-4bcb-87a4-311b1fe9a077",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        336,
        -592
      ],
      "parameters": {
        "color": 5,
        "width": 512,
        "height": 896,
        "content": "## Data Enrichment\n\nPerform Comprehensive and Abstract Summaries. Also performs the Keyword and Topic analysis of the Agent Output content."
      },
      "typeVersion": 1
    },
    {
      "id": "f9919d39-0cd5-489f-ad16-4baff0a648ae",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        336,
        -1072
      ],
      "parameters": {
        "color": 4,
        "width": 512,
        "height": 448,
        "content": "## SEO Analyst\nAnalysis the following SERP results for competitor insights and keyword opportunities\n"
      },
      "typeVersion": 1
    },
    {
      "id": "a3060af6-1f26-42ab-a69e-4be7a7dc4e01",
      "name": "Append or update row in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1152,
        -368
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [
            "seo"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/151xx1ClNDoQ2g_SANQJmdN4EJroWWEsPM658dFWLMTQ/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "151xx1ClNDoQ2g_SANQJmdN4EJroWWEsPM658dFWLMTQ",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/151xx1ClNDoQ2g_SANQJmdN4EJroWWEsPM658dFWLMTQ/edit?usp=drivesdk",
          "cachedResultName": "Competitor Intelligence Agent"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "d058cb5c-ee3a-4b50-be25-8562a1be4e68",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        944,
        -384
      ],
      "parameters": {
        "numberInputs": 3
      },
      "typeVersion": 3.2
    },
    {
      "id": "b0286661-257a-43e7-ae77-3ddba37af384",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        896,
        -560
      ],
      "parameters": {
        "color": 3,
        "width": 480,
        "height": 496,
        "content": "## Export Data Handling\n\nExports the output to the Google Spreedsheet"
      },
      "typeVersion": 1
    },
    {
      "id": "32d8e326-65b6-4705-9a01-a8d6c35755c6",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1088,
        -944
      ],
      "parameters": {
        "color": 7,
        "width": 992,
        "height": 528,
        "content": "## **Purpose:**\n  Automate SERP analysis to extract competitor insights, keyword gaps, and SEO opportunities using Thordata for search data and OpenAI for structured analysis.\n\n* **Workflow Steps:**\n\n  1. **Trigger (Schedule or Manual):** Starts the weekly SERP analysis.\n  2. **AI Agent:** Performs the SERP search and retrieves top-ranking results.\n  3. **OpenAI Node:** Analyzes SERP data with GPT and outputs results in the defined JSON schema.\n  4. **Google Sheets Node:** Sends summarized insights or logs data for historical tracking.\n\n* **Key Outputs:**\n\n  * Competitor domains, ranking positions, and SEO strengths/weaknesses.\n  * Keyword opportunities with search volume, difficulty, and intent.\n  * Topic clusters and content gap recommendations.\n  * Overall SEO Strength Score (0\u2013100).\n  * AI-generated summary for quick reporting.\n\n* **Use Case:**\n  Ideal for SEO teams, marketers, and agencies to monitor competitors, discover new keyword opportunities, and optimize content strategies weekly.\n\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "a4d805de-2a7e-466a-bdce-26a1bc60e212",
  "connections": {
    "Merge": {
      "main": [
        [
          {
            "node": "Append or update row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "Summarize the content",
            "type": "main",
            "index": 0
          },
          {
            "node": "Keyword and Topic Analysis",
            "type": "main",
            "index": 0
          },
          {
            "node": "SEO Analyst",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Bing Search": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "SEO Analyst": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Search": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Yandex Search": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "DuckDuckGo Search": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Set the Input Fields": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Summarize the content": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Summarize the content",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Keyword and Topic Analysis": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "OpenAI Chat Model for SEO Analyst": {
      "ai_languageModel": [
        [
          {
            "node": "SEO Analyst",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model For Summarization": {
      "ai_languageModel": [
        [
          {
            "node": "Summarize the content",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "Set the Input Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model for Keyword and Topic Analysis": {
      "ai_languageModel": [
        [
          {
            "node": "Keyword and Topic Analysis",
            "type": "ai_languageModel",
            "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 workflow is designed for:

Source: https://n8n.io/workflows/10252/ — 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

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

OpenAI, HTTP Request, Form Trigger +7
AI & RAG

This end-to-end AI-powered recruitment automation workflow helps HR and talent acquisition teams automate the complete hiring pipeline—from resume intake and parsing to GPT-4-based evaluation, TA appr

Form Trigger, Output Parser Structured, Google Drive +10
AI & RAG

🧠 Automate end-to-end SEO blog creation and WordPress publishing using a GPT-5 multi-agent workflow with real-time research, metadata generation, and optional featured images.

Output Parser Structured, HTTP Request, OpenAI +10
AI & RAG

This is an automated blog post generation system that: Researches topics using AI agents and web search tools Writes complete blog posts with proper SEO structure Generates custom images for each post

Output Parser Structured, Google Gemini Chat, HTTP Request Tool +11
AI & RAG

This n8n template demonstrates how to audit your brand’s visibility across multiple AI systems and automatically log the results to Google Sheets. It sends the same prompt to OpenAI, Perplexity, and (

Agent, Google Sheets, OpenAI Chat +4