This workflow corresponds to n8n.io template #13867 — we link there as the canonical source.
This workflow follows the Form Trigger → Googlegemini recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "MlBBHoKjaZzrdtXC",
"name": "AEO Assistant",
"tags": [],
"nodes": [
{
"id": "d3df5e88-452b-4a51-b288-6df4bd7ecdb5",
"name": "Google search",
"type": "n8n-nodes-serpapi.serpApi",
"position": [
384,
0
],
"parameters": {
"q": "={{ $json.Keyword }}",
"requestOptions": {},
"additionalFields": {}
},
"credentials": {},
"typeVersion": 1
},
{
"id": "d3a61fff-649d-4a36-a788-94b062bd24cb",
"name": "Split Out",
"type": "n8n-nodes-base.splitOut",
"position": [
768,
0
],
"parameters": {
"options": {},
"fieldToSplitOut": "organic_results"
},
"typeVersion": 1
},
{
"id": "8c8f93a4-3e78-4746-b058-cec82023ec72",
"name": "Message a model",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
1088,
0
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "models/gemini-3-flash-preview",
"cachedResultName": "models/gemini-3-flash-preview"
},
"options": {},
"messages": {
"values": [
{
"role": "model",
"content": "You are an AEO Specialist. For the given question, provide a 40-50 word answer that is factual and direct. Format as a Speakable Schema snippet."
},
{
"content": "={{ $json.title }}"
}
]
},
"builtInTools": {}
},
"typeVersion": 1.1
},
{
"id": "ed11af40-685c-4264-8018-81e98321accb",
"name": "Append row in sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
1520,
0
],
"parameters": {
"columns": {
"value": {
"Timestamp": "={{ $('On form submission').item.json.submittedAt }}",
"Seed Keyword": "={{ $('On form submission').item.json.Keyword }}",
"PAA Questions": "={{ $('Split Out').item.json.title }}",
"AI-Generated Answer": "={{ $json.content.parts[0].text }}"
},
"schema": [
{
"id": "Timestamp",
"type": "string",
"display": true,
"required": false,
"displayName": "Timestamp",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Seed Keyword",
"type": "string",
"display": true,
"required": false,
"displayName": "Seed Keyword",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "PAA Questions",
"type": "string",
"display": true,
"required": false,
"displayName": "PAA Questions",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "AI-Generated Answer",
"type": "string",
"display": true,
"required": false,
"displayName": "AI-Generated Answer",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1voXy3YB36G1bpkcOvgQic5LGm1Wf2CUOppSrAquP67c/edit#gid=0",
"cachedResultName": "Client 1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1voXy3YB36G1bpkcOvgQic5LGm1Wf2CUOppSrAquP67c",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1voXy3YB36G1bpkcOvgQic5LGm1Wf2CUOppSrAquP67c/edit?usp=drivesdk",
"cachedResultName": "AEO Master Log"
}
},
"executeOnce": false,
"typeVersion": 4.7,
"alwaysOutputData": false
},
{
"id": "b2f6c173-5b4b-455e-adb6-5eb68ff34c89",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-800,
-448
],
"parameters": {
"width": 608,
"height": 960,
"content": "# Generate AEO snippets for Google PAA results using SerpApi and AI\n\n## How it works\n- The workflow initiates via a **Form Submission** with a target keyword.\n- It uses the **SerpApi node** to scrape real-time Google Search results, specifically targeting the **related_questions (PAA)** array.\n- An **Item Lists node** cleans the data to ensure only high-relevance questions are processed.\n- The questions are sent to a **Gemini node** with a specialized prompt to draft a 40-50 word answer optimized for \"Speakable\" Schema and featured snippet logic.\n- The finalised Q&A pairs are then appended to a **Google Sheet**, creating a ready-to-publish content gap report for the agency's editorial team.\n\n## How to use\n- Replace the keyword placeholder in the HTTP/SerpApi node with your client\u2019s target search term.\n- Connect your Notion or Google Sheets account to the final destination node to house the results.\n- Adjust the Schedule Trigger frequency based on how often you perform keyword research for your clients.\n\n## Requirements\n- **SerpApi Account:** To programmatically access Google\u2019s \"People Also Ask\" data.\n- **AI Credentials:** An API key for Gemini or OpenAI to generate the response text.\n- **Destination App:** A Notion workspace, Google Sheet, or Airtable base to store the output.\n\n## Customisation\n- **Competitor Tracking:** Modify the SerpApi parameters to include a specific domain to see what questions your competitors are currently ranking for.\n- **Schema Generation:** Add a second AI node to automatically wrap the answers in JSON-LD Question and AcceptedAnswer schema code for immediate dev-handoff.\n- **Multi-lingual AEO:** Add a translation node before the final output to localise answer snippets for international SEO campaigns.\n- **Slack Notification:** Add a Slack node at the end to notify the account manager to review the new optimisation opportunities.\n- **Client Organisation:** create a new tab for each client to organise "
},
"typeVersion": 1
},
{
"id": "001a90ae-e88a-441e-ae3b-5772675f186d",
"name": "On form submission",
"type": "n8n-nodes-base.formTrigger",
"position": [
0,
0
],
"parameters": {
"options": {},
"formTitle": "AEO assistant",
"formFields": {
"values": [
{
"fieldLabel": "Keyword"
}
]
}
},
"typeVersion": 2.5
},
{
"id": "a688248f-3a96-4a30-b17f-53e697133339",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-112,
-112
],
"parameters": {
"color": 7,
"width": 320,
"height": 288,
"content": "## 1. Get the seed keyword/s"
},
"typeVersion": 1
},
{
"id": "a218e19a-f474-4df8-b244-feb6f06af17d",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
240,
-112
],
"parameters": {
"color": 7,
"width": 384,
"height": 288,
"content": "## 2. Scrape Google Search results"
},
"typeVersion": 1
},
{
"id": "0042ca8a-f882-4b4c-ac42-fe15595bc70f",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
656,
-112
],
"parameters": {
"color": 7,
"width": 336,
"height": 288,
"content": "## 3. Process relevant results"
},
"typeVersion": 1
},
{
"id": "48ffca30-ed13-444d-a9dc-2d128b109751",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1024,
-112
],
"parameters": {
"color": 7,
"width": 336,
"height": 288,
"content": "## 4. Get an optimised snippet"
},
"typeVersion": 1
},
{
"id": "5b16c3da-d961-4200-b425-b89d2878bffe",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1392,
-112
],
"parameters": {
"color": 7,
"width": 368,
"height": 288,
"content": "## 5. Add to your AEO master log"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"binaryMode": "separate",
"availableInMCP": false,
"executionOrder": "v1"
},
"versionId": "80ad9815-0293-4d0a-ab9b-a4a721acef84",
"connections": {
"Split Out": {
"main": [
[
{
"node": "Message a model",
"type": "main",
"index": 0
}
]
]
},
"Google search": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
}
]
]
},
"Message a model": {
"main": [
[
{
"node": "Append row in sheet",
"type": "main",
"index": 0
}
]
]
},
"On form submission": {
"main": [
[
{
"node": "Google search",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This n8n template automates the identification & optimisation of Answer Engine Optimisation (AEO) opportunities by extracting Google "People Also Ask" (PAA) data to generate high-authority response snippets.
Source: https://n8n.io/workflows/13867/ — 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.
A production ready Zalo Bot chatbot that handles the full customer journey for Vietnamese small and medium businesses: greeting new customers with a sticker, listening for their first reply, routing t
Author: CSChin Example Source: https://www.ncl.ac.uk/singapore/staff/profile/chengchin.html#publications
This workflow collects an ICP via an n8n form, uses OpenAI GPT-5.6 and Bright Data to find and enrich LinkedIn company pages, scores each company with evidence, then logs qualified and rejected leads
Process multiple invoices automatically using Mistral's dedicated OCR model—at approximately $0.002 per page. Upload batches of PDF, PNG, or JPG invoices through a simple form, extract structured fina
Sending a plain PDF resume doesn’t stand out anymore. This workflow allows candidates to convert their resume and photo into a personalized video resume. Recruiters get a more engaging first impressio