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
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
Form Submission: The workflow starts with the On form submission node, which triggers when a user submits a contact form. The form collects the user's name, email, and message. Text Classification: Th