{ "meta": { "instanceId": "workflow-a0e6a2c8", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:52.829658", "updatedAt": "2025-09-29T07:07:52.829673", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production" }, "nodes": [ { "id": "f4570aad-db25-4dcd-8589-b1c8335935de", "name": "When clicking ‘Test workflow’", "type": "n8n-nodes-base.manualTrigger", "position": [ 480, 1800 ], "parameters": {}, "typeVersion": 1, "notes": "This manualTrigger node performs automated tasks as part of the workflow." }, { "id": "1c1be9d6-3fd5-44c2-a7dd-d291b9efe65b", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [ -260, 1360 ], "parameters": { "color": 4, "width": 657.3293805248016, "height": 843.3412992154545, "content": "## Generate SEO Keyword Search Volume Data using Google API\n\n## Use Case\nGenerate accurate search volume data for SEO keyword research:\n- You have a list of potential keywords to target for your website SEO but don't know their actual search volume\n- You need historical data to identify seasonal trends in keyword popularity\n- You want to assess keyword difficulty to prioritize your content strategy\n- You need data-driven insights for planning your SEO campaigns\n\n## What this Workflow Does\nThe workflow connects to Google's Keyword Planner API to retrieve keyword metrics for your SEO research:\n\n- Fetches monthly search volume for each keyword\n- Provides historical trends data for the past 12 months\n- Calculates keyword difficulty scores\n- Delivers competition metrics from Google Ads\n\n\n## Setup\n1. Fill the `Set 20 Keywords` with up to 20 Keywords of your choosing in an array e.g. [\"keyword 1\", \"keyword 2\",...]\n2. Create a Google Ads API account and add credentials to `Get Search Data` node\n3. Replace the `Connect to your own database` with your own database for the output\n\n\n## How to Adjust it to Your Needs\n- Change the `Set 20 Keywords` node input to a source of your choosing e.g. Airtable database with 20 keywords\n- Connect to output source of your choosing \n\n\nMade by Simon @ automake.io" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "adbbe4ee-d671-4b9b-b619-47f7522e2af4", "name": "Split Out by KW", "type": "n8n-nodes-base.splitOut", "position": [ 1180, 1800 ], "parameters": { "options": {}, "fieldToSplitOut": "results" }, "notesInFlow": true, "typeVersion": 1, "notes": "This splitOut node performs automated tasks as part of the workflow." }, { "id": "654c95b4-1018-496e-a0eb-75fddfd98d68", "name": "Sticky Note2", "type": "n8n-nodes-base.stickyNote", "position": [ 622.1526025594685, 1740 ], "parameters": { "color": 7, "width": 250.00985945500486, "height": 249.10159911061476, "content": "**Set up to 20 keywords** " }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "0ddcd5f2-fb3b-425c-95d3-f22b9b99c3c4", "name": "Sticky Note25", "type": "n8n-nodes-base.stickyNote", "position": [ 1400, 1740 ], "parameters": { "color": 7, "width": 231.51775697271012, "height": 213.62075341687063, "content": "**Update record in own Database**" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "dca7e597-4aa9-440b-8861-2453a5e455fe", "name": "Sticky Note26", "type": "n8n-nodes-base.stickyNote", "position": [ 891.5919235222407, 1740 ], "parameters": { "color": 7, "width": 475.3228796552902, "height": 250.67161641737852, "content": "**POST request to Google API for Keyword Data**" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "217565a9-0c8b-4725-bbda-bcd1968567ac", "name": "Sticky Note19", "type": "n8n-nodes-base.stickyNote", "position": [ 620, 2000 ], "parameters": { "color": 3, "width": 248.59379819295242, "height": 94.39142091152823, "content": "**REQUIRED**\nRemove pinned data in 'Set >= 20 Keywords' to test and connect to own datasource if desired" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "a836e364-0526-47aa-938a-d32cc47efbd8", "name": "Sticky Note20", "type": "n8n-nodes-base.stickyNote", "position": [ 880, 2000 ], "parameters": { "color": 3, "width": 723.161826981043, "height": 217.5249520543415, "content": "**REQUIRED**\nAt this time 15/10/2024 this API endpoint is the latest, it will need to be updated as it changes\n{{ $env.API_BASE_URL }}\n\n**Replace the following in the HTTP request with your own account values**\n- URL >> customer_id must be your own account customer id e.g. '1234567890' in {{ $env.API_BASE_URL }}\n- developer-token\n- login-customer-id" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "3dac2fe3-8710-49cc-87ed-918972d00354", "name": "Sticky Note21", "type": "n8n-nodes-base.stickyNote", "position": [ 1400, 1640 ], "parameters": { "color": 3, "width": 284.87764467541297, "height": 80, "content": "**REQUIRED**\nConnect to your own database / GSheet / Airtable base to output these" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "806fd20d-4bc4-41a3-9ef7-77561e2cfc0c", "name": "Set >=20 Keywords", "type": "n8n-nodes-base.set", "notes": "Insert up to 20 keywords to test", "position": [ 680, 1800 ], "parameters": { "options": {}, "assignments": { "assignments": [ { "id": "973e949e-1afd-4378-8482-d2168532eff6", "name": "Keyword", "type": "array", "value": "=[\"workflow automation software\", \"enterprise workflow automation\", \"finance automation software\", \"saas automation platform\", \"automation roi calculator\", \"hr process automation\", \"data synchronization software\", \"n8n workflow automation\", \"scalable business operations\", \"n8n vs zapier\", \"lead generation automation\", \"automation consulting services\", \"n8n automation\", \"marketing automation tools\", \"custom automation solutions\", \"ecommerce automation solutions\", \"business process automation\", \"small business automation\", \"no code automation\", \"crm automation integration\"] " } ] } }, "notesInFlow": true, "typeVersion": 3.4 }, { "id": "430d4950-1e49-460e-bb9b-56e0e825e621", "name": "Connect to your own database.", "type": "n8n-nodes-base.noOp", "position": [ 1460, 1800 ], "parameters": {}, "typeVersion": 1, "notes": "This noOp node performs automated tasks as part of the workflow." }, { "id": "464cfe3f-3a3f-4ec0-882d-861e48916e0b", "name": "Get Search Data", "type": "n8n-nodes-base.httpRequest", "notes": "Seed KW with Vol & Comp\n\n{{ $env.API_BASE_URL }} Google API call structure", "position": [ 960, 1800 ], "parameters": { "url": "{{ $env.API_BASE_URL }}{customer_id}:generateKeywordHistoricalMetrics", "method": "POST", "options": {}, "sendBody": true, "sendHeaders": true, "authentication": "{{ $credentials.predefinedCredentialType }}", "bodyParameters": { "parameters": [ { "name": "keywords", "value": "={{ $json.Keyword }}" }, { "name": "keywordPlanNetwork", "value": "GOOGLE_SEARCH" } ] }, "headerParameters": { "parameters": [ { "name": "content-type", "value": "application/json" }, { "name": "developer-token", "value": "replace-with-value" }, { "name": "login-customer-id", "value": "replace-with-value" } ] }, "nodeCredentialType": "YOUR_CREDENTIAL_HERE" }, "credentials": { "googleAdsOAuth2Api": { "id": "1Htz9e3PoJufbctg", "name": "Google Ads account" } }, "notesInFlow": false, "retryOnFail": true, "typeVersion": 4.2 } ], "pinData": { "Set >=20 Keywords": [ { "Keyword": [ "workflow automation software", "enterprise workflow automation", "finance automation software", "saas automation platform", "automation roi calculator", "hr process automation", "data synchronization software", "n8n workflow automation", "scalable business operations", "n8n vs zapier", "lead generation automation", "automation consulting services", "n8n automation", "marketing automation tools", "custom automation solutions", "ecommerce automation solutions", "business process automation", "small business automation", "no code automation", "crm automation integration" ] } ] }, "connections": { "464cfe3f-3a3f-4ec0-882d-861e48916e0b": { "main": [ [ { "node": "error-handler-464cfe3f-3a3f-4ec0-882d-861e48916e0b", "type": "main", "index": 0 } ], [ { "node": "error-handler-464cfe3f-3a3f-4ec0-882d-861e48916e0b-ea8f8a52", "type": "main", "index": 0 } ], [ { "node": "error-handler-464cfe3f-3a3f-4ec0-882d-861e48916e0b-670c92b6", "type": "main", "index": 0 } ], [ { "node": "error-handler-464cfe3f-3a3f-4ec0-882d-861e48916e0b-10387b88", "type": "main", "index": 0 } ], [ { "node": "error-handler-464cfe3f-3a3f-4ec0-882d-861e48916e0b-9fd3e1c5", "type": "main", "index": 0 } ], [ { "node": "error-handler-464cfe3f-3a3f-4ec0-882d-861e48916e0b-cf090182", "type": "main", "index": 0 } ], [ { "node": "error-handler-464cfe3f-3a3f-4ec0-882d-861e48916e0b-b3d143a9", "type": "main", "index": 0 } ], [ { "node": "error-handler-464cfe3f-3a3f-4ec0-882d-861e48916e0b-cba339fc", "type": "main", "index": 0 } ], [ { "node": "error-handler-464cfe3f-3a3f-4ec0-882d-861e48916e0b-cbdc3c7e", "type": "main", "index": 0 } ] ] } }, "name": "Manualtrigger Workflow", "settings": { "executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000 }, "description": "Automated workflow: Manualtrigger Workflow. This workflow integrates 7 different services: stickyNote, httpRequest, splitOut, set, stopAndError. It contains 14 nodes and follows best practices for error handling and security.", "tags": [ "automation", "n8n", "production-ready", "excellent", "optimized" ], "notes": "Excellent quality workflow: Manualtrigger Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation." }