This workflow follows the Form Trigger → Google Sheets 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 →
{
"name": "Product - SERP Analysis (SerpAPI + Crawl4AI)",
"nodes": [
{
"parameters": {
"formTitle": "Keyword Research Form",
"formFields": {
"values": [
{
"fieldLabel": "Focus Keyword",
"requiredField": true
},
{
"fieldLabel": "Country",
"fieldType": "dropdown",
"fieldOptions": {
"values": [
{
"option": "de"
},
{
"option": "us"
},
{}
]
}
}
]
},
"options": {}
},
"type": "n8n-nodes-base.formTrigger",
"typeVersion": 2.2,
"position": [
-880,
940
],
"id": "ab9130ad-2ebe-457b-a442-277e406dfd0b",
"name": "On form submission"
},
{
"parameters": {
"url": "https://serpapi.com/search",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "serpApi",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "q",
"value": "={{ $json['Focus Keyword'] }}"
},
{
"name": "gl",
"value": "={{ $json.Country }}"
},
{
"name": "device",
"value": "DESKTOP"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-660,
1040
],
"id": "d14ba2d7-7120-4ad5-9f2a-0e6b1b5f5998",
"name": "get_desktop_serp_results",
"credentials": {
"serpApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"url": "https://serpapi.com/search",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "serpApi",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "q",
"value": "={{ $json['Focus Keyword'] }}"
},
{
"name": "gl",
"value": "={{ $json.Country }}"
},
{
"name": "device",
"value": "mobile"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-660,
820
],
"id": "996db5a2-32eb-4cba-b708-cc7057875030",
"name": "get_mobile_serp_results",
"credentials": {
"serpApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"content": "# Get SERPs by Keyword and Country",
"height": 1440,
"width": 840
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-920,
360
],
"id": "612a8dc7-1b74-4960-972f-e22982e34e3c",
"name": "Sticky Note"
},
{
"parameters": {},
"type": "n8n-nodes-base.merge",
"typeVersion": 3,
"position": [
20,
860
],
"id": "29a3e353-d867-4811-b451-e1dfb620c6c6",
"name": "merge_faq"
},
{
"parameters": {
"fieldToSplitOut": "related_questions",
"options": {}
},
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
260,
860
],
"id": "8a78895b-95b1-402d-8398-93f8ac2ef62b",
"name": "get_questions"
},
{
"parameters": {
"compare": "selectedFields",
"fieldsToCompare": "question",
"options": {}
},
"type": "n8n-nodes-base.removeDuplicates",
"typeVersion": 2,
"position": [
480,
860
],
"id": "5030363b-0373-48a8-b9ef-f1400240bc32",
"name": "remove_duplicates_in_questions"
},
{
"parameters": {
"operation": "append",
"documentId": {
"__rl": true,
"value": "",
"mode": "list",
"cachedResultName": "SERP Analysis (SerpApi + Crawl4AI)",
"cachedResultUrl": ""
},
"sheetName": {
"__rl": true,
"value": 954676522,
"mode": "list",
"cachedResultName": "FAQs",
"cachedResultUrl": ""
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"question": "={{ $json.question }}",
"title": "={{ $json.title }}",
"link": "={{ $json.link }}",
"snippet": "={{ $json.snippet}}"
},
"matchingColumns": [],
"schema": [
{
"id": "question",
"displayName": "question",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "title",
"displayName": "title",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "link",
"displayName": "link",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "snippet",
"displayName": "snippet",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
700,
860
],
"id": "e454c712-dfe5-4188-9592-4fbd80c2c1bd",
"name": "insert_faqs",
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "0e112e59-ad43-4321-9de0-d1d502f98266",
"name": "related_questions",
"value": "={{ $json.related_questions }}",
"type": "array"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-440,
640
],
"id": "0bf66d60-a0dc-41d8-92da-d28dc0994e56",
"name": "get_faqs_mobile"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "fcf16964-061d-4c9e-82c6-954e769e899c",
"name": "organic_results",
"value": "={{ $json.organic_results }}",
"type": "array"
},
{
"id": "44fba0e5-686c-4475-89dd-66f711bf910c",
"name": "search_parameters.device",
"value": "={{ $json.search_parameters.device }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-440,
820
],
"id": "599b9649-517f-4c97-a09c-f49bd6b4a2c8",
"name": "get_serp_results_mobile"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "e76a9070-4782-4a54-84b6-bce1eb50023d",
"name": "organic_results",
"value": "={{ $json.organic_results }}",
"type": "array"
},
{
"id": "64fffe61-bb13-47e6-9555-c8adb9c3762d",
"name": "search_parameters.device",
"value": "={{ $json.search_parameters.device }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-460,
1040
],
"id": "27a98c0c-9cc6-4baa-a449-6c092790cbe5",
"name": "get_serp_results_desktop"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "0e112e59-ad43-4321-9de0-d1d502f98266",
"name": "related_questions",
"value": "={{ $json.related_questions }}",
"type": "array"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-460,
1260
],
"id": "bc8b3e76-66c3-414c-8acf-d7954957c107",
"name": "get_faqs_desktop"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "0e112e59-ad43-4321-9de0-d1d502f98266",
"name": "related_searches",
"value": "={{ $json.related_searches }}",
"type": "array"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-440,
400
],
"id": "f64a255d-2cd5-444d-a8a2-27150c04a728",
"name": "get_related_searches_mobile"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "0e112e59-ad43-4321-9de0-d1d502f98266",
"name": "related_searches",
"value": "={{ $json.related_searches }}",
"type": "array"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-460,
1500
],
"id": "c8fae186-62ae-4882-b9f2-c2a3a7a3c708",
"name": "get_related_searches_desktop"
},
{
"parameters": {
"content": "# Insert Related Searches\n",
"height": 380,
"width": 960,
"color": 4
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-60,
360
],
"id": "b37c6854-03b2-423b-ab79-ad86d6a32e08",
"name": "Sticky Note1"
},
{
"parameters": {
"content": "# Insert FAQs",
"height": 380,
"width": 960,
"color": 4
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-60,
760
],
"id": "66a7e0bd-6726-4189-bc44-b7e45659ea7e",
"name": "Sticky Note3"
},
{
"parameters": {},
"type": "n8n-nodes-base.merge",
"typeVersion": 3,
"position": [
0,
480
],
"id": "766c389d-3a1b-48dd-8f1f-2324278b9168",
"name": "merge_faq1"
},
{
"parameters": {
"operation": "append",
"documentId": {
"__rl": true,
"value": "",
"mode": "list",
"cachedResultName": "SERP Analysis (SerpApi + Crawl4AI)",
"cachedResultUrl": ""
},
"sheetName": {
"__rl": true,
"value": 1692925487,
"mode": "list",
"cachedResultName": "Related Searches",
"cachedResultUrl": ""
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"query": "={{ $json.name }}"
},
"matchingColumns": [
"query"
],
"schema": [
{
"id": "query",
"displayName": "query",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
720,
480
],
"id": "ce1a7673-704d-4131-9435-8f494224c9f5",
"name": "insert_related_searches",
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"compare": "selectedFields",
"fieldsToCompare": "name",
"options": {}
},
"type": "n8n-nodes-base.removeDuplicates",
"typeVersion": 2,
"position": [
520,
480
],
"id": "df2c5afa-5d04-475f-9e93-d9fd70f5ab6c",
"name": "remove_duplicates_in_questions1"
},
{
"parameters": {
"content": "## Workflow Instructions\n#### Requirements\nTo use this workflow, you will need accounts and API access for the following services:\n- **Google Sheets**\n- **SerpApi**\n- **Crawl4AI**\n- **OpenAI**\n#### Google Spreadsheet Setup\nCreate a Google Spreadsheet with **three sheets** named exactly as follows:\n1. **SERP Analysis** \n Columns (in order): \n `position`, `title`, `link`, `snippet`, `short_summary`, `potential_focus_keyword`, `relevant_long_tail_keywords`, `unigrams`, `bigrams`, `trigrams`\n2. **FAQs** \n Columns (in order): \n `question`, `title`, `link`, `snippet`\n3. **Related Searches** \n Columns (in order): \n `query`\n> **Tip:** Make sure the sheet names and column headers match exactly, including capitalization and spacing, to ensure the workflow functions correctly.\n#### Getting Started\n1. **Set up your Google Spreadsheet** as described above.\n2. **Configure your API credentials** for SerpApi, Crawl4AI, and OpenAI within n8n.\n3. **Import the workflow** into your n8n instance.\n4. **Update any required variables or nodes** in the workflow to point to your specific spreadsheet and API keys.\n5. **Run the workflow** and monitor the results in your Google Sheets.\n#### Support & Contact\nDeveloped by **Marvomatic**\n- [Website](https://marvomatic.com)\n- [TikTok](https://www.tiktok.com/@marvomatic)\n- [YouTube](https://www.youtube.com/@marvomatic)\n\nFor business inquiries, email: [hello@marvomatic.com](mailto:hello@marvomatic.com)",
"height": 780,
"width": 1180
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
940,
360
],
"id": "03f13c66-ead3-4718-91b6-30ac8a79444d",
"name": "Sticky Note5"
},
{
"parameters": {
"content": "# SERP Analysis\n",
"height": 640,
"width": 2180,
"color": 5
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-60,
1160
],
"id": "01a82bfd-f020-4a05-b4b3-3a971283c558",
"name": "Sticky Note4"
},
{
"parameters": {
"maxItems": 3
},
"type": "n8n-nodes-base.limit",
"typeVersion": 1,
"position": [
0,
1280
],
"id": "84c45bc1-fe19-4618-b101-ab0e5c047269",
"name": "top_3_by_mobile"
},
{
"parameters": {
"maxItems": 3
},
"type": "n8n-nodes-base.limit",
"typeVersion": 1,
"position": [
0,
1480
],
"id": "10bbd663-ba8c-41f7-93eb-588d42167518",
"name": "top_3_by_desktop"
},
{
"parameters": {},
"type": "n8n-nodes-base.merge",
"typeVersion": 3,
"position": [
220,
1280
],
"id": "15d22f8f-7f73-4d50-9bd7-05ee5b113ba6",
"name": "get_urls_to_crawl"
},
{
"parameters": {
"fieldToSplitOut": "organic_results",
"options": {}
},
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
440,
1280
],
"id": "61b4ff33-c12f-4dcf-9208-01e82c42a0bf",
"name": "Split Out"
},
{
"parameters": {
"compare": "selectedFields",
"fieldsToCompare": "link",
"options": {}
},
"type": "n8n-nodes-base.removeDuplicates",
"typeVersion": 2,
"position": [
660,
1280
],
"id": "172bfff0-b196-43bc-9f5b-0e9a664b4a83",
"name": "Remove Duplicates"
},
{
"parameters": {
"maxItems": 5
},
"type": "n8n-nodes-base.limit",
"typeVersion": 1,
"position": [
860,
1280
],
"id": "11354eb9-a23c-4569-bf30-0796e3fdcd46",
"name": "Limit"
},
{
"parameters": {
"fieldToSplitOut": "link, snippet, position, title",
"options": {}
},
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
1100,
1280
],
"id": "54ffe9d9-cd5a-4c2e-bb84-2f2459c9c1d1",
"name": "get_links"
},
{
"parameters": {
"url": "=http://crawl4ai:11235/task/{{ $json.task_id }}",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
780,
1500
],
"id": "5e699d2c-9d6f-437d-838f-6641cdd3348d",
"name": "get_status",
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "4eec2c04-b519-4c06-a911-bb7780b776b5",
"name": "result.metadata.title",
"value": "={{ $('get_status').item.json.result.metadata.title }}",
"type": "string"
},
{
"id": "0eac8d67-34d9-4809-92fc-69f47381e104",
"name": "result.metadata.description",
"value": "={{ $('get_status').item.json.result.metadata.description }}",
"type": "string"
},
{
"id": "58b74b11-74f8-42e3-b68f-a2aa4c380578",
"name": "result.metadata['og:url']",
"value": "={{ $('get_status').item.json.result.metadata['og:url'] }}",
"type": "string"
},
{
"id": "f57680c0-48ed-492f-a1d9-508a0c996198",
"name": "result.cleaned_html",
"value": "={{ $('get_status').item.json.result.cleaned_html }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1200,
1500
],
"id": "767e4147-b212-4833-a9de-89acce01b1fa",
"name": "get_metadata"
},
{
"parameters": {
"operation": "append",
"documentId": {
"__rl": true,
"value": "",
"mode": "list",
"cachedResultName": "SERP Analysis (SerpApi + Crawl4AI)",
"cachedResultUrl": ""
},
"sheetName": {
"__rl": true,
"value": "gid=0",
"mode": "list",
"cachedResultName": "SERPs",
"cachedResultUrl": ""
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"short_summary": "={{ $json.message.content.short_summary ? $json.message.content.short_summary: \"\" }}",
"potential_focus_keyword": "={{ $json.message.content.potential_focus_keyword ? $json.message.content.potential_focus_keyword: \"\" }}",
"unigrams": "={{ $json.message.content.n_gram_analysis.unigrams ? $json.message.content.n_gram_analysis.unigrams: \"\" }}",
"bigrams": "={{ $json.message.content.n_gram_analysis.bigrams ? $json.message.content.n_gram_analysis.bigrams: \"\" }}",
"trigrams": "={{ $json.message.content.n_gram_analysis.trigrams ? $json.message.content.n_gram_analysis.trigrams: \"\" }}",
"relevant_long_tail_keywords": "={{ $json.message.content.relevant_long_tail_keywords ? $json.message.content.relevant_long_tail_keywords: \"\" }}",
"title": "={{ $('Loop Over Items').item.json.title }}",
"link": "={{ $('Loop Over Items').item.json.link }}",
"snippet": "={{ $('Loop Over Items').item.json.snippet }}",
"position": "={{ $('Loop Over Items').item.json.position }}"
},
"matchingColumns": [],
"schema": [
{
"id": "position",
"displayName": "position",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "title",
"displayName": "title",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "link",
"displayName": "link",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "snippet",
"displayName": "snippet",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "short_summary",
"displayName": "short_summary",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "potential_focus_keyword",
"displayName": "potential_focus_keyword",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "relevant_long_tail_keywords",
"displayName": "relevant_long_tail_keywords",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "unigrams",
"displayName": "unigrams",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "bigrams",
"displayName": "bigrams",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "trigrams",
"displayName": "trigrams",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
1860,
1500
],
"id": "0263981c-763c-4eba-ad3d-cd89f1c2d615",
"name": "insert_serp_analysis",
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"method": "POST",
"url": "http://crawl4ai:11235/crawl",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "urls",
"value": "={{ $json.link }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
360,
1500
],
"id": "ba772328-aa75-4f32-b170-10686a298b2e",
"name": "get_page_content",
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {},
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
580,
1500
],
"id": "a0847995-63bc-4d45-ad6e-a72d58b80ac6",
"name": "sleep"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "100015ac-f73c-406d-acd5-49a41d60111a",
"leftValue": "={{ $json.status }}",
"rightValue": "completed",
"operator": {
"type": "string",
"operation": "equals",
"name": "filter.operator.equals"
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
980,
1500
],
"id": "cae29db7-2e8b-4497-90f7-d47ad206e069",
"name": "check_status"
},
{
"parameters": {
"options": {}
},
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 3,
"position": [
1520,
1280
],
"id": "e8fcf388-c73a-4409-8386-0412992825aa",
"name": "Loop Over Items"
},
{
"parameters": {
"fieldToSplitOut": "related_searches",
"options": {}
},
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
180,
480
],
"id": "f61060db-010d-49b7-a5fd-4db1fecc86e6",
"name": "get_related_searches"
},
{
"parameters": {
"fieldToSplitOut": "items",
"options": {}
},
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
360,
480
],
"id": "820b964d-a28a-430f-a276-e41a2719083f",
"name": "get_names"
},
{
"parameters": {
"modelId": {
"__rl": true,
"value": "gpt-4o-mini",
"mode": "list",
"cachedResultName": "GPT-4O-MINI"
},
"messages": {
"values": [
{
"content": "You are a SEO-specialist and your task is to analyze the articles from our competitors. The ultimate goal is to write an article that is better than the competitors article. Apart from that, you are familiar with markdown and you are able to extract only relevant content.",
"role": "system"
},
{
"content": "=Your task is to analyze the following <article> = {{ $json.content }} and provide me the following information:\n- Short Summary\n- Potential Focus Keyword\n- Relevant long-tail keywords\n- N-Gram-Analysis\n"
}
]
},
"jsonOutput": true,
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1.8,
"position": [
1540,
1500
],
"id": "45770e8f-b9ff-4a5a-ab70-c22033e2225b",
"name": "Analyze Content",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
}
],
"connections": {
"On form submission": {
"main": [
[
{
"node": "get_desktop_serp_results",
"type": "main",
"index": 0
},
{
"node": "get_mobile_serp_results",
"type": "main",
"index": 0
}
]
]
},
"get_mobile_serp_results": {
"main": [
[
{
"node": "get_serp_results_mobile",
"type": "main",
"index": 0
},
{
"node": "get_faqs_mobile",
"type": "main",
"index": 0
},
{
"node": "get_related_searches_mobile",
"type": "main",
"index": 0
}
]
]
},
"get_desktop_serp_results": {
"main": [
[
{
"node": "get_serp_results_desktop",
"type": "main",
"index": 0
},
{
"node": "get_faqs_desktop",
"type": "main",
"index": 0
},
{
"node": "get_related_searches_desktop",
"type": "main",
"index": 0
}
]
]
},
"merge_faq": {
"main": [
[
{
"node": "get_questions",
"type": "main",
"index": 0
}
]
]
},
"get_questions": {
"main": [
[
{
"node": "remove_duplicates_in_questions",
"type": "main",
"index": 0
}
]
]
},
"remove_duplicates_in_questions": {
"main": [
[
{
"node": "insert_faqs",
"type": "main",
"index": 0
}
]
]
},
"insert_faqs": {
"main": [
[]
]
},
"get_faqs_mobile": {
"main": [
[
{
"node": "merge_faq",
"type": "main",
"index": 0
}
]
]
},
"get_serp_results_mobile": {
"main": [
[
{
"node": "top_3_by_mobile",
"type": "main",
"index": 0
}
]
]
},
"get_serp_results_desktop": {
"main": [
[
{
"node": "top_3_by_desktop",
"type": "main",
"index": 0
}
]
]
},
"get_faqs_desktop": {
"main": [
[
{
"node": "merge_faq",
"type": "main",
"index": 1
}
]
]
},
"merge_faq1": {
"main": [
[
{
"node": "get_related_searches",
"type": "main",
"index": 0
}
]
]
},
"remove_duplicates_in_questions1": {
"main": [
[
{
"node": "insert_related_searches",
"type": "main",
"index": 0
}
]
]
},
"get_related_searches_mobile": {
"main": [
[
{
"node": "merge_faq1",
"type": "main",
"index": 0
}
]
]
},
"get_related_searches_desktop": {
"main": [
[
{
"node": "merge_faq1",
"type": "main",
"index": 1
}
]
]
},
"top_3_by_mobile": {
"main": [
[
{
"node": "get_urls_to_crawl",
"type": "main",
"index": 0
}
]
]
},
"top_3_by_desktop": {
"main": [
[
{
"node": "get_urls_to_crawl",
"type": "main",
"index": 1
}
]
]
},
"get_urls_to_crawl": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
}
]
]
},
"Split Out": {
"main": [
[
{
"node": "Remove Duplicates",
"type": "main",
"index": 0
}
]
]
},
"Remove Duplicates": {
"main": [
[
{
"node": "Limit",
"type": "main",
"index": 0
}
]
]
},
"Limit": {
"main": [
[
{
"node": "get_links",
"type": "main",
"index": 0
}
]
]
},
"get_links": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"get_status": {
"main": [
[
{
"node": "check_status",
"type": "main",
"index": 0
}
]
]
},
"get_metadata": {
"main": [
[
{
"node": "Analyze Content",
"type": "main",
"index": 0
}
]
]
},
"insert_serp_analysis": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"get_page_content": {
"main": [
[
{
"node": "sleep",
"type": "main",
"index": 0
}
]
]
},
"sleep": {
"main": [
[
{
"node": "get_status",
"type": "main",
"index": 0
}
]
]
},
"check_status": {
"main": [
[
{
"node": "get_metadata",
"type": "main",
"index": 0
}
],
[
{
"node": "sleep",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items": {
"main": [
[],
[
{
"node": "get_page_content",
"type": "main",
"index": 0
}
]
]
},
"get_related_searches": {
"main": [
[
{
"node": "get_names",
"type": "main",
"index": 0
}
]
]
},
"get_names": {
"main": [
[
{
"node": "remove_duplicates_in_questions1",
"type": "main",
"index": 0
}
]
]
},
"Analyze Content": {
"main": [
[
{
"node": "insert_serp_analysis",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "4a18c727-9d7c-48bb-a6d0-dfec50c6d9e4",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "YnqGjhW0HTJq0eBY",
"tags": [
{
"createdAt": "2025-03-02T12:05:53.836Z",
"updatedAt": "2025-03-02T12:05:53.836Z",
"id": "utwtHTzeqUdktrxJ",
"name": "SEO"
},
{
"createdAt": "2025-03-29T14:05:42.024Z",
"updatedAt": "2025-03-29T14:05:42.024Z",
"id": "FTx17qhhXpcrm35X",
"name": "Template"
}
]
}
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.
googleSheetsOAuth2ApihttpHeaderAuthopenAiApiserpApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
This workflow delivers rapid, actionable insights into search engine results for any product by analysing desktop and mobile SERPs, extracting FAQs, and generating AI-powered summaries to inform marketing strategies or competitor analysis. It's ideal for digital marketers, SEO specialists, or product managers seeking to understand visibility and user intent without manual effort. The key step involves pulling raw SERP data via SerpAPI, merging and deduplicating FAQ elements with Crawl4AI, then appending refined insights to Google Sheets for easy review.
Use this workflow when you need quick, event-driven SERP analysis triggered by a form submission, such as evaluating a new product launch or tracking keyword performance. Avoid it for high-volume, real-time monitoring, as it's better suited to occasional, targeted queries rather than continuous scraping. Common variations include swapping OpenAI for another LLM to customise the analysis depth or integrating additional HTTP requests for social media sentiment alongside SERPs.
About this workflow
Product - SERP Analysis (SerpAPI + Crawl4AI). Uses formTrigger, httpRequest, googleSheets, openAi. Event-driven trigger; 38 nodes.
Source: https://github.com/Marvomatic/n8n-templates/blob/main/serp-analysis/SERP_Analysis_SerpApi_Crawl4AI.json — 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.
Product - SERP Analysis (Serper + Firecrawl). Uses formTrigger, httpRequest, googleSheets, openAi. Event-driven trigger; 40 nodes.
Product - SERP Analysis (Serper & Crawl4AI). Uses formTrigger, httpRequest, googleSheets, openAi. Event-driven trigger; 39 nodes.
This n8n template helps recruitment agencies discover active job openings, filter them based on hiring relevance, and qualify them using AI — specifically designed for semi-skilled manpower hiring use
Collect audience specs – simple web-form asks for your ideal company profile. Generate a laser-targeted Apollo search URL with GPT-4o (no manual filtering). Scrape the matching leads via an Apify acto
Automates scraping trending videos based on a keyword, filters high-potential ones, analyzes thumbnails and transcripts with AI, generates optimized titles and outlines, and updates a Google Sheet for