├── .gitignore ├── AI-Powered SEO Keyword Research Automation ├── AI_powered_SEO_Keyword_Research_Automation___The_vibe_Marketer.json ├── Final_Keyword_Strategy-AI_Automation.md ├── README.md ├── comparison_analysis.md └── screenshots │ ├── end-slack-notification.png │ ├── input-table.png │ ├── output-table.png │ ├── start-slack-notification.png │ ├── webhook-settings.png │ └── workflow.png ├── Link Capture System ├── Link_Capture_System.json └── README.md ├── README.md └── Video to Text ├── README.md └── Video_to_text_w_ElevenLabs.json /.gitignore: -------------------------------------------------------------------------------- 1 | # Node.js 2 | node_modules/ 3 | npm-debug.log* 4 | yarn-debug.log* 5 | yarn-error.log* 6 | 7 | # Environment variables 8 | .env 9 | .env.* 10 | !.env.example 11 | 12 | # n8n specific 13 | .n8n/ 14 | .n8n-cache/ 15 | credentials.json 16 | 17 | # IDE 18 | .idea/ 19 | .vscode/ 20 | *.swp 21 | *.swo 22 | 23 | # OS 24 | .DS_Store 25 | Thumbs.db 26 | 27 | # Logs 28 | logs/ 29 | *.log 30 | -------------------------------------------------------------------------------- /AI-Powered SEO Keyword Research Automation/AI_powered_SEO_Keyword_Research_Automation___The_vibe_Marketer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AI powered SEO Keyword Research Automation - The vibe Marketer", 3 | "nodes": [ 4 | { 5 | "parameters": { 6 | "model": { 7 | "__rl": true, 8 | "value": "o1", 9 | "mode": "list", 10 | "cachedResultName": "o1" 11 | }, 12 | "options": {} 13 | }, 14 | "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", 15 | "typeVersion": 1.2, 16 | "position": [ 17 | 88, 18 | 455 19 | ], 20 | "id": "65aacfa5-4891-49f9-a614-2866c96142ee", 21 | "name": "OpenAI Chat Model", 22 | "credentials": { 23 | "openAiApi": { 24 | "id": "AZynAxNG099jyj7B", 25 | "name": "OpenAi account" 26 | } 27 | } 28 | }, 29 | { 30 | "parameters": { 31 | "jsonSchemaExample": "{\n \"primary_keywords\": [\"string\"],\n \"long_tail_keywords\": [\n {\n \"keyword\": \"string\",\n \"intent\": \"string\"\n }\n ],\n \"question_based_keywords\": [\"string\"],\n \"related_topics\": [\"string\"]\n}\n" 32 | }, 33 | "type": "@n8n/n8n-nodes-langchain.outputParserStructured", 34 | "typeVersion": 1.2, 35 | "position": [ 36 | 208, 37 | 455 38 | ], 39 | "id": "5a0445ad-20c9-4e62-8e04-62451d3e8f7e", 40 | "name": "Structured Output Parser" 41 | }, 42 | { 43 | "parameters": { 44 | "promptType": "define", 45 | "text": "=I need to create comprehensive SEO keyword research for content about: \n{{ $json.primary_topic }}\n\nMy target audience is: {{ $json.target_audience }}\nThis will be used for a: {{ $json.content_type }}\nLocation: {{ $json.location }}\nLanguage: {{ $json.language }}\n\nPlease generate:\n1. A list of 20 primary keywords directly related to {{ $json.primary_topic }}\n2. 30 long-tail keyword variations with search intent (informational, commercial, transactional)\n3. 15 question-based keywords people might ask about this topic\n4. 10 related topics that could be used for supporting content\n\nFormat the output as a structured JSON with these categories. ", 46 | "hasOutputParser": true, 47 | "options": {} 48 | }, 49 | "type": "@n8n/n8n-nodes-langchain.agent", 50 | "typeVersion": 1.8, 51 | "position": [ 52 | 60, 53 | 235 54 | ], 55 | "id": "38cd2c66-d4b7-47a9-a3eb-f58eb32f55ab", 56 | "name": "Topic Expansion" 57 | }, 58 | { 59 | "parameters": { 60 | "promptType": "define", 61 | "text": "=Analyze the following competitor content for the Primary Topic \"{{ $('Format Json and add Competitor URLs').item.json.primary_topic }}\":\n\nCompetitor: {{ $('Split the Competitor URLs').item.json.competitorUrls }}\nDATA: ```\n{{ $json.tasks[0].result.toJsonString() }}\n```\n\nPlease identify:\n1. Primary keywords they appear to be targeting\n2. Content gaps or missing topics they aren't covering\n3. Unique angles or approaches they're taking\n4. Questions they're answering (or not answering)\n\nFormat the output as a structured analysis. ", 62 | "options": {} 63 | }, 64 | "type": "@n8n/n8n-nodes-langchain.agent", 65 | "typeVersion": 1.8, 66 | "position": [ 67 | 1100, 68 | 660 69 | ], 70 | "id": "14811f51-5992-4e35-af8d-f05f5b488bc1", 71 | "name": "Competitor Analysis" 72 | }, 73 | { 74 | "parameters": { 75 | "resource": "labs", 76 | "operation": "get-keyword-difficulty", 77 | "keywords": { 78 | "values": [ 79 | { 80 | "value": "={{ $json['output.primary_keywords'] }}" 81 | } 82 | ] 83 | }, 84 | "location_name_required": "={{ $('Set relevant fields').item.json.location }}", 85 | "language_name_required": "={{ $('Set relevant fields').item.json.language }}" 86 | }, 87 | "type": "n8n-nodes-dataforseo.dataForSeo", 88 | "typeVersion": 1, 89 | "position": [ 90 | 656, 91 | 260 92 | ], 93 | "id": "564866ac-c287-48a3-816c-78207dfce133", 94 | "name": "Keyword Difficulty", 95 | "credentials": { 96 | "dataForSeoApi": { 97 | "id": "owHrK02rkWLlYrl3", 98 | "name": "DataForSEO account" 99 | } 100 | } 101 | }, 102 | { 103 | "parameters": { 104 | "resource": "keywords_data", 105 | "keywords": { 106 | "values": [ 107 | { 108 | "value": "={{ $json['output.primary_keywords'] }}" 109 | } 110 | ] 111 | }, 112 | "location_name": "={{ $('Set relevant fields').item.json.location }}", 113 | "language_name": "={{ $('Set relevant fields').item.json.language }}", 114 | "date_from": {}, 115 | "date_to": {} 116 | }, 117 | "type": "n8n-nodes-dataforseo.dataForSeo", 118 | "typeVersion": 1, 119 | "position": [ 120 | 656, 121 | 60 122 | ], 123 | "id": "d39e392c-c547-4edd-8fe9-014c26152915", 124 | "name": "Search Volume & CPC", 125 | "credentials": { 126 | "dataForSeoApi": { 127 | "id": "owHrK02rkWLlYrl3", 128 | "name": "DataForSEO account" 129 | } 130 | } 131 | }, 132 | { 133 | "parameters": { 134 | "fieldToSplitOut": "output.primary_keywords", 135 | "options": {} 136 | }, 137 | "type": "n8n-nodes-base.splitOut", 138 | "typeVersion": 1, 139 | "position": [ 140 | 440, 141 | 160 142 | ], 143 | "id": "2985d85c-4373-4f18-9c27-188f19c920a6", 144 | "name": "split primary keywords" 145 | }, 146 | { 147 | "parameters": { 148 | "model": { 149 | "__rl": true, 150 | "value": "o1", 151 | "mode": "list", 152 | "cachedResultName": "o1" 153 | }, 154 | "options": {} 155 | }, 156 | "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", 157 | "typeVersion": 1.2, 158 | "position": [ 159 | 1920, 160 | 640 161 | ], 162 | "id": "49819332-744d-45a5-b0ed-b74a1a57aad8", 163 | "name": "OpenAI Chat Model2", 164 | "credentials": { 165 | "openAiApi": { 166 | "id": "AZynAxNG099jyj7B", 167 | "name": "OpenAi account" 168 | } 169 | } 170 | }, 171 | { 172 | "parameters": { 173 | "resource": "labs", 174 | "operation": "get-ranked-keywords", 175 | "target": "={{ $json.competitorUrls }}", 176 | "location_name_required": "={{ $('Format Json and add Competitor URLs').item.json.location }}", 177 | "language_name_required": "={{ $('Format Json and add Competitor URLs').item.json.language }}", 178 | "limit": 10 179 | }, 180 | "type": "n8n-nodes-dataforseo.dataForSeo", 181 | "typeVersion": 1, 182 | "position": [ 183 | 880, 184 | 660 185 | ], 186 | "id": "07576442-14b1-402a-a084-50fd775d6523", 187 | "name": "Keyword Ranking per URL", 188 | "credentials": { 189 | "dataForSeoApi": { 190 | "id": "owHrK02rkWLlYrl3", 191 | "name": "DataForSEO account" 192 | } 193 | } 194 | }, 195 | { 196 | "parameters": { 197 | "promptType": "define", 198 | "text": "=# Role: Act as an expert SEO Strategist and Content Planner.\n\n# Context:\n# You are creating an actionable SEO Keyword Strategy & Content Brief based on prior AI-driven keyword generation and competitor analysis.\n# The goal is content creation for the 'Primary Topic', targeting the specified 'Target Audience' and 'Content Type' in the given 'Location' and 'Language'.\n# Data provided includes initial keyword ideas (primary, long-tail, questions), keyword metrics (volume, difficulty), related topics, and competitor analysis insights (their likely keywords, content gaps, unique angles).\n\n# Input Parameters for this Task:\nPrimary Topic: {{ $json.primary_topic }}\nTarget Audience: {{ $json.target_audience }}\nContent Type: {{ $json.content_type }}\nLocation: {{ $json.location }}\nLanguage: {{ $json.language }}\nAnalyzed Compeitors: {{ $json.competitor_urls }}\n\n# Your Task:\n# Analyze the provided input parameters and the detailed 'DATA' section below.\n# Synthesize this information into a clear, concise, and actionable SEO Keyword Strategy & Content Brief.\n# Structure the output logically using Markdown. Focus on providing insights and actionable recommendations, not just listing data. Explain the 'why' behind key recommendations. Keep the language easy to understand, assuming the reader (e.g., a content writer or marketing manager) understands basic SEO concepts but isn't necessarily a deep expert.\n\n# Required Output Sections (Use Markdown Headers):\n\n## 1. Executive Summary\n - **Objective:** Briefly state the primary goal of creating content on this topic for this audience (e.g., \"Attract [Target Audience] seeking information on [Primary Topic]...\" or \"Position our brand as a thought leader for [Target Audience] regarding [Primary Topic]\").\n - **Key Opportunity:** Summarize the most significant keyword opportunity identified (e.g., \"Target the high-volume term '[Example Keyword]' while capturing related informational queries via long-tail variations.\")\n - **Competitor Angle:** Briefly mention the main strategic takeaway from the competitor analysis (e.g., \"Competitors focus heavily on [X], leaving an opportunity to address [Y] or provide a unique angle on [Z].\")\n\n## 2. Target Keyword Strategy & Rationale\n - **Primary Target Keywords:**\n - List the top 5-10 recommended primary keywords.\n - For each, include Search Volume (SV) and Keyword Difficulty (KD).\n - **Add brief commentary/rationale for each group or key term:** Why were these chosen? (e.g., \"High relevance and strong search volume despite moderate difficulty,\" or \"Balances primary topic focus with user search behavior.\")\n - **Secondary & Long-Tail Opportunities:**\n - List the top 10-15 recommended long-tail and secondary keywords.\n - Group them by likely Search Intent (e.g., Informational, Commercial, Transactional) if discernible from the input data.\n - **Add brief commentary on the overall opportunity:** What specific user needs or funnel stages do these address? Note any clusters with particularly low competition.\n - **Key Question Keywords:**\n - List the top 5 question-based keywords the content *must* answer.\n - **Add brief commentary:** Why are these questions crucial for the target audience or content goals?\n\n## 3. Competitive Landscape & Content Gaps\n - **Competitor Focus:** Briefly summarize the main keyword themes or angles competitors seem to be targeting, based on the provided analysis.\n - **Identified Gaps/Opportunities:** Highlight 1-3 specific content gaps, under-served intents, or unique angles identified from the competitor analysis that this content piece should leverage. Be specific (e.g., \"Competitors explain 'what', but not 'how to implement',\" or \"Lack of practical examples for [Target Audience]\").\n\n## 4. Content Outline & Actionable Recommendations\n - **Recommended Structure:** Propose a logical H2/H3 structure or outline for the content piece, designed to cover the target keywords and address user intent effectively.\n - **Keyword Integration:** Briefly suggest how to naturally incorporate the different keyword types (primary, long-tail, questions) within the proposed structure.\n - **Content Enhancement:** Provide 2-3 specific, actionable recommendations to make the content stand out for the target audience and potentially outperform competitors (e.g., \"Include step-by-step instructions,\" \"Add original data/charts,\" \"Feature quotes from [Target Audience Role],\" \"Create a downloadable checklist\").\n\n## 5. Proposed SEO Titles\n - List 3-5 compelling, SEO-optimized title options for the content piece. Ensure they are relevant, incorporate keywords naturally, and entice clicks.\n\n# DATA for Analysis:\n# (Analyze the following JSON data containing keyword suggestions, metrics, and competitor analysis results)\n```json\n{{ $json.data.toJsonString() }}\n\n{{ $json.output.toJsonString() }}\n```\n\nFinal Output Format: Ensure the entire response is well-structured, clean Markdown, ready to be used as a content brief.", 199 | "options": {} 200 | }, 201 | "type": "@n8n/n8n-nodes-langchain.agent", 202 | "typeVersion": 1.8, 203 | "position": [ 204 | 1940, 205 | 440 206 | ], 207 | "id": "1e1f4a81-31b9-450d-85ba-65dbe2b6e8c2", 208 | "name": "Final Keyword Strategy" 209 | }, 210 | { 211 | "parameters": { 212 | "httpMethod": "POST", 213 | "path": "ac7e989d-6e32-4850-83c4-f10421467fb8", 214 | "options": {} 215 | }, 216 | "type": "n8n-nodes-base.webhook", 217 | "typeVersion": 2, 218 | "position": [ 219 | -680, 220 | 340 221 | ], 222 | "id": "613e1d25-3e9d-4a7f-8657-392854eb00de", 223 | "name": "Get Input from NocoDB", 224 | "webhookId": "ac7e989d-6e32-4850-83c4-f10421467fb8" 225 | }, 226 | { 227 | "parameters": { 228 | "fieldToSplitOut": "competitorUrls", 229 | "options": {} 230 | }, 231 | "type": "n8n-nodes-base.splitOut", 232 | "typeVersion": 1, 233 | "position": [ 234 | 580, 235 | 660 236 | ], 237 | "id": "88076d36-fe04-4a7a-a176-9ba93388b089", 238 | "name": "Split the Competitor URLs" 239 | }, 240 | { 241 | "parameters": { 242 | "assignments": { 243 | "assignments": [ 244 | { 245 | "id": "e729ab88-95f8-44c0-948c-d2476262fd17", 246 | "name": "primary_topic", 247 | "value": "={{ $json.body.data.rows[0]['Primary Topic'] }}", 248 | "type": "string" 249 | }, 250 | { 251 | "id": "1c6fbf22-fb3f-4577-b6cc-4d0672ff2046", 252 | "name": "competitor_urls", 253 | "value": "={{ $json.body.data.rows[0]['Competitor URLs'] }}", 254 | "type": "string" 255 | }, 256 | { 257 | "id": "ea8518c8-8f89-4aa5-9546-44be77deeebb", 258 | "name": "target_audience", 259 | "value": "={{ $json.body.data.rows[0]['Target Audience'] }}", 260 | "type": "string" 261 | }, 262 | { 263 | "id": "4b27d628-6cc1-4161-bb49-d39a4b1d320e", 264 | "name": "content_type", 265 | "value": "={{ $json.body.data.rows[0]['Content Type'] }}", 266 | "type": "string" 267 | }, 268 | { 269 | "id": "bb3fefe7-7eea-4a6d-b2de-307b791ff1b6", 270 | "name": "id", 271 | "value": "={{ $json.body.data.rows[0].Id }}", 272 | "type": "string" 273 | }, 274 | { 275 | "id": "09e64ce6-39de-4550-9078-fe4f233edd9a", 276 | "name": "status", 277 | "value": "={{ $json.body.data.rows[0].Status }}", 278 | "type": "string" 279 | }, 280 | { 281 | "id": "c10736b0-dece-40a7-9fb0-86b23b44e517", 282 | "name": "location", 283 | "value": "={{ $json.body.data.rows[0].Location }}", 284 | "type": "string" 285 | }, 286 | { 287 | "id": "6508a1e9-963d-4a79-bd35-f537c892e8d4", 288 | "name": "language", 289 | "value": "={{ $json.body.data.rows[0].Language }}", 290 | "type": "string" 291 | } 292 | ] 293 | }, 294 | "options": {} 295 | }, 296 | "type": "n8n-nodes-base.set", 297 | "typeVersion": 3.4, 298 | "position": [ 299 | -500, 300 | 340 301 | ], 302 | "id": "88d8ad2f-4b66-48e3-aaf7-d6f8210f264b", 303 | "name": "Set relevant fields" 304 | }, 305 | { 306 | "parameters": { 307 | "model": { 308 | "__rl": true, 309 | "value": "o1", 310 | "mode": "list", 311 | "cachedResultName": "o1" 312 | }, 313 | "options": {} 314 | }, 315 | "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", 316 | "typeVersion": 1.2, 317 | "position": [ 318 | 1100, 319 | 860 320 | ], 321 | "id": "1f083fb0-8b55-43f0-85de-58a81f30a9f2", 322 | "name": "OpenAI Chat Model1", 323 | "credentials": { 324 | "openAiApi": { 325 | "id": "AZynAxNG099jyj7B", 326 | "name": "OpenAi account" 327 | } 328 | } 329 | }, 330 | { 331 | "parameters": { 332 | "jsCode": "const inputJson = $input.first().json;\nconst rawUrls = inputJson.competitor_urls;\n\nconst competitorUrls = rawUrls\n .split(\",\")\n .map(url => url.trim())\n .filter(url => url.length > 0);\n\nconst outputJson = {\n ...inputJson,\n competitorUrls: competitorUrls\n};\n\nreturn [{ json: outputJson }];\n" 333 | }, 334 | "type": "n8n-nodes-base.code", 335 | "typeVersion": 2, 336 | "position": [ 337 | 300, 338 | 660 339 | ], 340 | "id": "ffcc38ac-0f0a-4fc7-8e65-86950ea6a01d", 341 | "name": "Format Json and add Competitor URLs" 342 | }, 343 | { 344 | "parameters": { 345 | "aggregate": "aggregateAllItemData", 346 | "options": {} 347 | }, 348 | "type": "n8n-nodes-base.aggregate", 349 | "typeVersion": 1, 350 | "position": [ 351 | 880, 352 | 60 353 | ], 354 | "id": "cf522a25-6e62-4a34-b5dd-6684ea67e938", 355 | "name": "Aggregate SV & CPC" 356 | }, 357 | { 358 | "parameters": { 359 | "aggregate": "aggregateAllItemData", 360 | "options": {} 361 | }, 362 | "type": "n8n-nodes-base.aggregate", 363 | "typeVersion": 1, 364 | "position": [ 365 | 880, 366 | 260 367 | ], 368 | "id": "781614a6-7afd-4465-86cb-05ef781b70fe", 369 | "name": "Aggregate KWD" 370 | }, 371 | { 372 | "parameters": { 373 | "mode": "combine", 374 | "combineBy": "combineByPosition", 375 | "options": {} 376 | }, 377 | "type": "n8n-nodes-base.merge", 378 | "typeVersion": 3.1, 379 | "position": [ 380 | 1174, 381 | 160 382 | ], 383 | "id": "15ab5e60-1f8d-4fd5-bfd8-983a8e0861bb", 384 | "name": "Merge SV, CPC & KWD" 385 | }, 386 | { 387 | "parameters": { 388 | "mode": "combine", 389 | "combineBy": "combineByPosition", 390 | "options": {} 391 | }, 392 | "type": "n8n-nodes-base.merge", 393 | "typeVersion": 3.1, 394 | "position": [ 395 | 1472, 396 | 235 397 | ], 398 | "id": "19b056e8-8fb3-436a-b8be-356eeedbb57e", 399 | "name": "Merge Topic Expansion, SV, CPC & KWD" 400 | }, 401 | { 402 | "parameters": { 403 | "aggregate": "aggregateAllItemData", 404 | "options": {} 405 | }, 406 | "type": "n8n-nodes-base.aggregate", 407 | "typeVersion": 1, 408 | "position": [ 409 | 1472, 410 | 660 411 | ], 412 | "id": "460a5cf3-691e-44c8-a1d3-8dcd43728851", 413 | "name": "Aggregate Competitor Analysis" 414 | }, 415 | { 416 | "parameters": { 417 | "mode": "combine", 418 | "combineBy": "combineByPosition", 419 | "numberInputs": 3, 420 | "options": { 421 | "includeUnpaired": false 422 | } 423 | }, 424 | "type": "n8n-nodes-base.merge", 425 | "typeVersion": 3.1, 426 | "position": [ 427 | 1720, 428 | 440 429 | ], 430 | "id": "b28fe5bb-2ca1-4c02-b45f-033af494d706", 431 | "name": "Merge Everything" 432 | }, 433 | { 434 | "parameters": { 435 | "authentication": "nocoDbApiToken", 436 | "operation": "create", 437 | "projectId": "pl6znsxtne8x3yh", 438 | "table": "mfsjucjn304v1hc", 439 | "fieldsUi": { 440 | "fieldValues": [ 441 | { 442 | "fieldName": "primary_topic_used", 443 | "fieldValue": "={{ $('Merge Everything').item.json.primary_topic }}" 444 | }, 445 | { 446 | "fieldName": "report_content", 447 | "fieldValue": "={{ $json.output }}" 448 | } 449 | ] 450 | } 451 | }, 452 | "type": "n8n-nodes-base.nocoDb", 453 | "typeVersion": 3, 454 | "position": [ 455 | 2320, 456 | 440 457 | ], 458 | "id": "a4851979-f231-458b-be3f-13eb3c14b0ee", 459 | "name": "Write Content Brief ", 460 | "credentials": { 461 | "nocoDbApiToken": { 462 | "id": "Nqxw0TptKnROWv9i", 463 | "name": "NocoDB (hosted) Token account" 464 | } 465 | } 466 | }, 467 | { 468 | "parameters": { 469 | "authentication": "nocoDbApiToken", 470 | "operation": "update", 471 | "projectId": "pl6znsxtne8x3yh", 472 | "table": "mp3qmbuye3pyihc", 473 | "fieldsUi": { 474 | "fieldValues": [ 475 | { 476 | "fieldName": "Id", 477 | "fieldValue": "={{ $('Merge Everything').item.json.id }}" 478 | }, 479 | { 480 | "fieldName": "=Status", 481 | "fieldValue": "Done" 482 | } 483 | ] 484 | } 485 | }, 486 | "type": "n8n-nodes-base.nocoDb", 487 | "typeVersion": 3, 488 | "position": [ 489 | 2320, 490 | 600 491 | ], 492 | "id": "e13ecdf4-0696-4bd7-bbf5-49cb508072c6", 493 | "name": "Update Status - Done", 494 | "credentials": { 495 | "nocoDbApiToken": { 496 | "id": "Nqxw0TptKnROWv9i", 497 | "name": "NocoDB (hosted) Token account" 498 | } 499 | } 500 | }, 501 | { 502 | "parameters": { 503 | "select": "channel", 504 | "channelId": { 505 | "__rl": true, 506 | "value": "C08Q7EQ8JNS", 507 | "mode": "list", 508 | "cachedResultName": "seo-keyword-research" 509 | }, 510 | "text": "=>> DONE << \n\nSEO Keyword Research \nPrimary Topic: {{ $('Merge Everything').item.json.primary_topic }}\nTarget Audience: {{ $('Merge Everything').item.json.target_audience }}\nContent Type: {{ $('Merge Everything').item.json.content_type }}\nLocation: {{ $('Merge Everything').item.json.location }}\nLanguage: {{ $('Merge Everything').item.json.language }}\nCompetitor URLs: {{ $('Merge Everything').item.json.competitor_urls }}", 511 | "otherOptions": { 512 | "includeLinkToWorkflow": false, 513 | "mrkdwn": false 514 | } 515 | }, 516 | "type": "n8n-nodes-base.slack", 517 | "typeVersion": 2.3, 518 | "position": [ 519 | 2320, 520 | 800 521 | ], 522 | "id": "c23e1c12-41d3-4c91-8175-f035024c6339", 523 | "name": "Send Notification", 524 | "webhookId": "d4615307-81b9-45a3-9d03-4fe5875811c1", 525 | "credentials": { 526 | "slackApi": { 527 | "id": "WSpsCFfmEwBZkHv1", 528 | "name": "Slack account" 529 | } 530 | } 531 | }, 532 | { 533 | "parameters": { 534 | "select": "channel", 535 | "channelId": { 536 | "__rl": true, 537 | "value": "C08Q7EQ8JNS", 538 | "mode": "list", 539 | "cachedResultName": "seo-keyword-research" 540 | }, 541 | "text": "=>> START << \n\nSEO Keyword Research \nPrimary Topic: {{ $json.primary_topic }}\nTarget Audience: {{ $json.target_audience }}\nContent Type: {{ $json.content_type }}\nLocation: {{ $json.location }}\nLanguage: {{ $json.language }}\nCompetitor URLs: {{ $json.competitor_urls }}", 542 | "otherOptions": { 543 | "includeLinkToWorkflow": false, 544 | "mrkdwn": false 545 | } 546 | }, 547 | "type": "n8n-nodes-base.slack", 548 | "typeVersion": 2.3, 549 | "position": [ 550 | -340, 551 | 20 552 | ], 553 | "id": "acfee96e-7d37-4a36-b652-3b0798688538", 554 | "name": "Start Notification", 555 | "webhookId": "d4615307-81b9-45a3-9d03-4fe5875811c1", 556 | "credentials": { 557 | "slackApi": { 558 | "id": "WSpsCFfmEwBZkHv1", 559 | "name": "Slack account" 560 | } 561 | } 562 | }, 563 | { 564 | "parameters": { 565 | "authentication": "nocoDbApiToken", 566 | "operation": "update", 567 | "projectId": "pl6znsxtne8x3yh", 568 | "table": "mp3qmbuye3pyihc", 569 | "fieldsUi": { 570 | "fieldValues": [ 571 | { 572 | "fieldName": "Id", 573 | "fieldValue": "={{ $json.id }}" 574 | }, 575 | { 576 | "fieldName": "=Status", 577 | "fieldValue": "Started" 578 | } 579 | ] 580 | } 581 | }, 582 | "type": "n8n-nodes-base.nocoDb", 583 | "typeVersion": 3, 584 | "position": [ 585 | -140, 586 | 40 587 | ], 588 | "id": "5af5855d-b858-4b9f-91bc-1cbb14c08258", 589 | "name": "Update Status - Started", 590 | "credentials": { 591 | "nocoDbApiToken": { 592 | "id": "Nqxw0TptKnROWv9i", 593 | "name": "NocoDB (hosted) Token account" 594 | } 595 | } 596 | }, 597 | { 598 | "parameters": { 599 | "content": "## Notification and Update Status\n", 600 | "height": 360, 601 | "width": 480, 602 | "color": 7 603 | }, 604 | "type": "n8n-nodes-base.stickyNote", 605 | "typeVersion": 1, 606 | "position": [ 607 | -440, 608 | -140 609 | ], 610 | "id": "a9db9a15-acc1-411c-b596-810a2ce6b8f6", 611 | "name": "Sticky Note" 612 | }, 613 | { 614 | "parameters": { 615 | "content": "## Topic Expansion", 616 | "height": 540, 617 | "width": 280 618 | }, 619 | "type": "n8n-nodes-base.stickyNote", 620 | "typeVersion": 1, 621 | "position": [ 622 | 60, 623 | 40 624 | ], 625 | "id": "bd0e0d35-dce3-47c4-bb85-de02ded10691", 626 | "name": "Sticky Note1" 627 | }, 628 | { 629 | "parameters": { 630 | "content": "## Search Volume, Cost Per Click, Keyword Difficulty", 631 | "height": 540, 632 | "width": 1220, 633 | "color": 5 634 | }, 635 | "type": "n8n-nodes-base.stickyNote", 636 | "typeVersion": 1, 637 | "position": [ 638 | 400, 639 | -80 640 | ], 641 | "id": "9bb138db-cf51-4614-aeb4-abe7b298aab7", 642 | "name": "Sticky Note2" 643 | }, 644 | { 645 | "parameters": { 646 | "content": "## Competitor Research", 647 | "height": 460, 648 | "width": 1360, 649 | "color": 4 650 | }, 651 | "type": "n8n-nodes-base.stickyNote", 652 | "typeVersion": 1, 653 | "position": [ 654 | 260, 655 | 600 656 | ], 657 | "id": "757c15fc-5b5f-44d6-ae06-43dac9c32b2c", 658 | "name": "Sticky Note3" 659 | }, 660 | { 661 | "parameters": { 662 | "content": "## Merge and write Final Keyword Strategy", 663 | "height": 540, 664 | "width": 500, 665 | "color": 6 666 | }, 667 | "type": "n8n-nodes-base.stickyNote", 668 | "typeVersion": 1, 669 | "position": [ 670 | 1700, 671 | 260 672 | ], 673 | "id": "5459b4ee-f8dd-426b-b0f2-52b8ad6e1222", 674 | "name": "Sticky Note4" 675 | }, 676 | { 677 | "parameters": { 678 | "content": "## Save, Update Status and Notify", 679 | "height": 720, 680 | "color": 7 681 | }, 682 | "type": "n8n-nodes-base.stickyNote", 683 | "typeVersion": 1, 684 | "position": [ 685 | 2260, 686 | 260 687 | ], 688 | "id": "398ff4dd-d143-4944-96f3-3284cb391d84", 689 | "name": "Sticky Note5" 690 | }, 691 | { 692 | "parameters": { 693 | "content": "## Input", 694 | "height": 320, 695 | "width": 400 696 | }, 697 | "type": "n8n-nodes-base.stickyNote", 698 | "typeVersion": 1, 699 | "position": [ 700 | -740, 701 | 240 702 | ], 703 | "id": "7d0ee538-62c7-4bdc-bd4a-be5f600c78b4", 704 | "name": "Sticky Note6" 705 | }, 706 | { 707 | "parameters": { 708 | "content": "# AI-Powered SEO Keyword Research Automation", 709 | "height": 80, 710 | "width": 820, 711 | "color": 3 712 | }, 713 | "type": "n8n-nodes-base.stickyNote", 714 | "position": [ 715 | 460, 716 | -280 717 | ], 718 | "typeVersion": 1, 719 | "id": "42f81576-ac7c-4ab2-a93b-3c95410bd801", 720 | "name": "Sticky Note7" 721 | } 722 | ], 723 | "pinData": {}, 724 | "connections": { 725 | "OpenAI Chat Model": { 726 | "ai_languageModel": [ 727 | [ 728 | { 729 | "node": "Topic Expansion", 730 | "type": "ai_languageModel", 731 | "index": 0 732 | } 733 | ] 734 | ] 735 | }, 736 | "Structured Output Parser": { 737 | "ai_outputParser": [ 738 | [ 739 | { 740 | "node": "Topic Expansion", 741 | "type": "ai_outputParser", 742 | "index": 0 743 | } 744 | ] 745 | ] 746 | }, 747 | "Topic Expansion": { 748 | "main": [ 749 | [ 750 | { 751 | "node": "split primary keywords", 752 | "type": "main", 753 | "index": 0 754 | }, 755 | { 756 | "node": "Merge Topic Expansion, SV, CPC & KWD", 757 | "type": "main", 758 | "index": 1 759 | } 760 | ] 761 | ] 762 | }, 763 | "split primary keywords": { 764 | "main": [ 765 | [ 766 | { 767 | "node": "Search Volume & CPC", 768 | "type": "main", 769 | "index": 0 770 | }, 771 | { 772 | "node": "Keyword Difficulty", 773 | "type": "main", 774 | "index": 0 775 | } 776 | ] 777 | ] 778 | }, 779 | "Search Volume & CPC": { 780 | "main": [ 781 | [ 782 | { 783 | "node": "Aggregate SV & CPC", 784 | "type": "main", 785 | "index": 0 786 | } 787 | ] 788 | ] 789 | }, 790 | "Keyword Difficulty": { 791 | "main": [ 792 | [ 793 | { 794 | "node": "Aggregate KWD", 795 | "type": "main", 796 | "index": 0 797 | } 798 | ] 799 | ] 800 | }, 801 | "Competitor Analysis": { 802 | "main": [ 803 | [ 804 | { 805 | "node": "Aggregate Competitor Analysis", 806 | "type": "main", 807 | "index": 0 808 | } 809 | ] 810 | ] 811 | }, 812 | "OpenAI Chat Model2": { 813 | "ai_languageModel": [ 814 | [ 815 | { 816 | "node": "Final Keyword Strategy", 817 | "type": "ai_languageModel", 818 | "index": 0 819 | } 820 | ] 821 | ] 822 | }, 823 | "Keyword Ranking per URL": { 824 | "main": [ 825 | [ 826 | { 827 | "node": "Competitor Analysis", 828 | "type": "main", 829 | "index": 0 830 | } 831 | ] 832 | ] 833 | }, 834 | "Final Keyword Strategy": { 835 | "main": [ 836 | [ 837 | { 838 | "node": "Write Content Brief ", 839 | "type": "main", 840 | "index": 0 841 | }, 842 | { 843 | "node": "Update Status - Done", 844 | "type": "main", 845 | "index": 0 846 | }, 847 | { 848 | "node": "Send Notification", 849 | "type": "main", 850 | "index": 0 851 | } 852 | ] 853 | ] 854 | }, 855 | "Get Input from NocoDB": { 856 | "main": [ 857 | [ 858 | { 859 | "node": "Set relevant fields", 860 | "type": "main", 861 | "index": 0 862 | } 863 | ] 864 | ] 865 | }, 866 | "Split the Competitor URLs": { 867 | "main": [ 868 | [ 869 | { 870 | "node": "Keyword Ranking per URL", 871 | "type": "main", 872 | "index": 0 873 | } 874 | ] 875 | ] 876 | }, 877 | "Set relevant fields": { 878 | "main": [ 879 | [ 880 | { 881 | "node": "Topic Expansion", 882 | "type": "main", 883 | "index": 0 884 | }, 885 | { 886 | "node": "Format Json and add Competitor URLs", 887 | "type": "main", 888 | "index": 0 889 | }, 890 | { 891 | "node": "Merge Everything", 892 | "type": "main", 893 | "index": 2 894 | }, 895 | { 896 | "node": "Update Status - Started", 897 | "type": "main", 898 | "index": 0 899 | }, 900 | { 901 | "node": "Start Notification", 902 | "type": "main", 903 | "index": 0 904 | } 905 | ] 906 | ] 907 | }, 908 | "OpenAI Chat Model1": { 909 | "ai_languageModel": [ 910 | [ 911 | { 912 | "node": "Competitor Analysis", 913 | "type": "ai_languageModel", 914 | "index": 0 915 | } 916 | ] 917 | ] 918 | }, 919 | "Format Json and add Competitor URLs": { 920 | "main": [ 921 | [ 922 | { 923 | "node": "Split the Competitor URLs", 924 | "type": "main", 925 | "index": 0 926 | } 927 | ] 928 | ] 929 | }, 930 | "Aggregate SV & CPC": { 931 | "main": [ 932 | [ 933 | { 934 | "node": "Merge SV, CPC & KWD", 935 | "type": "main", 936 | "index": 0 937 | } 938 | ] 939 | ] 940 | }, 941 | "Aggregate KWD": { 942 | "main": [ 943 | [ 944 | { 945 | "node": "Merge SV, CPC & KWD", 946 | "type": "main", 947 | "index": 1 948 | } 949 | ] 950 | ] 951 | }, 952 | "Merge SV, CPC & KWD": { 953 | "main": [ 954 | [ 955 | { 956 | "node": "Merge Topic Expansion, SV, CPC & KWD", 957 | "type": "main", 958 | "index": 0 959 | } 960 | ] 961 | ] 962 | }, 963 | "Merge Topic Expansion, SV, CPC & KWD": { 964 | "main": [ 965 | [ 966 | { 967 | "node": "Merge Everything", 968 | "type": "main", 969 | "index": 0 970 | } 971 | ] 972 | ] 973 | }, 974 | "Aggregate Competitor Analysis": { 975 | "main": [ 976 | [ 977 | { 978 | "node": "Merge Everything", 979 | "type": "main", 980 | "index": 1 981 | } 982 | ] 983 | ] 984 | }, 985 | "Merge Everything": { 986 | "main": [ 987 | [ 988 | { 989 | "node": "Final Keyword Strategy", 990 | "type": "main", 991 | "index": 0 992 | } 993 | ] 994 | ] 995 | }, 996 | "Write Content Brief ": { 997 | "main": [ 998 | [] 999 | ] 1000 | } 1001 | }, 1002 | "active": true, 1003 | "settings": { 1004 | "executionOrder": "v1" 1005 | }, 1006 | "versionId": "9abcff0c-1aff-4594-8796-8828963a3f75", 1007 | "meta": { 1008 | "templateCredsSetupCompleted": true, 1009 | "instanceId": "dcb7e9805ce8fe33e4ef843b02947aacc9de2ca8e3594435f3a36d9f33df54fc" 1010 | }, 1011 | "id": "nGpVbW7RTylKujyT", 1012 | "tags": [ 1013 | { 1014 | "createdAt": "2025-04-14T11:05:17.062Z", 1015 | "updatedAt": "2025-04-14T11:05:17.062Z", 1016 | "id": "SRzFKUr6fVtmWq2d", 1017 | "name": "works" 1018 | } 1019 | ] 1020 | } -------------------------------------------------------------------------------- /AI-Powered SEO Keyword Research Automation/Final_Keyword_Strategy-AI_Automation.md: -------------------------------------------------------------------------------- 1 | # Final Keyword Strategy 2 | 3 | ## 1. Executive Summary 4 | 5 | **Objective:** Create a compelling, conversion-focused landing page on “AI Automation” to attract and inform small business owners in the United States. The overall goal is to position our brand as a leading resource and solution provider for business owners seeking AI-based workflow optimizations. 6 | 7 | **Key Opportunity:** The data shows strong traffic potential around the terms “AI automation” (2,900+ monthly searches) and related phrases like “artificial intelligence automation.” Having content that clearly demonstrates “how AI automation directly benefits small businesses” can capture both informational and commercial search intent. 8 | 9 | **Competitor Angle:** Competitors (n8n.io, zapier.com, make.com) often highlight technical integrations and use-case tutorials. However, there’s a notable gap in addressing small business challenges, cost-effectiveness, and straightforward AI implementation guides. We can fill this gap by focusing on practical, step-by-step guidance tailored specifically to the small business context. 10 | 11 | --- 12 | 13 | ## 2. Target Keyword Strategy & Rationale 14 | 15 | ### Primary Target Keywords 16 | 17 | Below are the top recommended primary keywords, with approximate Search Volume (SV) and Keyword Difficulty (KD) where available, and commentary on their relevance. 18 | 19 | 1. **AI automation** 20 | • SV: 2,900+ | KD: 23 21 | • Why: Core term with solid volume; moderate difficulty yet highly relevant to the landing page’s main topic. 22 | 23 | 2. **Artificial intelligence automation** 24 | • SV: 2,900+ | KD: 30 25 | • Why: Closely related to “AI automation” but with a slightly higher difficulty; good for semantic coverage. 26 | 27 | 3. **Machine learning automation** 28 | • SV: 480 | KD: 36 29 | • Why: Niche segment with relatively lower volume but aligns well with deeper technical subtopics. 30 | 31 | 4. **AI automation for small businesses** 32 | • SV: ~70 (fluctuates) | KD: 27 33 | • Why: Directly speaks to our key audience, even with modest volume; strong commercial intent. 34 | 35 | 5. **Intelligent automation solutions** 36 | • SV: ~210 | KD: 38 37 | • Why: Captures a subset of business users exploring high-level solutions, valuable for positioning. 38 | 39 | ### Secondary & Long-Tail Opportunities 40 | 41 | Below are some of the top long-tail keywords grouped by intent (examples only, not an exhaustive list). These address specific pain points and funnel stages: 42 | 43 | • **Informational Intent** 44 | 45 | - “How to implement AI automation in a small business” 46 | - “Successful AI automation examples in small businesses” 47 | - “Top benefits of AI automation for small businesses” 48 | - “AI automation for e-commerce” 49 | 50 | • **Commercial Intent** 51 | 52 | - “Best AI-powered automation tools for small businesses” 53 | - “Scalable AI automation solutions” 54 | - “Choosing the right AI automation vendor” 55 | - “Hiring an AI automation specialist” 56 | 57 | • **Transactional Intent** 58 | 59 | - “Where to buy AI automation software” 60 | - “AI automation ROI calculator” (users might be deeper in the purchase cycle) 61 | 62 | **Overall Opportunity Commentary:** These keywords let us address multiple stages of the buyer’s journey. The informational queries focus on “What is it?” and “How can it help my small business?” Commercial queries highlight solution comparisons and vendor selection, while transactional queries target those ready to purchase or measure ROI. 63 | 64 | ### Key Question Keywords 65 | 66 | The following five are must-answer questions to ensure we comprehensively meet user intent: 67 | 68 | 1. **What is AI automation and how does it work?** 69 | 2. **How can small businesses benefit from AI automation?** 70 | 3. **How much does AI automation cost for a small business?** 71 | 4. **Which industries benefit the most from AI automation?** 72 | 5. **Can AI automation replace human workers completely?** 73 | 74 | **Why These?** They tackle the fundamental curiosities small business owners have: definitions, benefits, costs, industry applicability, and workforce concerns. Answering them thoroughly can boost user trust and engagement. 75 | 76 | --- 77 | 78 | ## 3. Competitive Landscape & Content Gaps 79 | 80 | ### Competitor Focus 81 | 82 | • n8n.io, zapier.com, and make.com emphasize workflow integrations and step-by-step tutorials. 83 | • Their content often highlights “how to connect X app with Y platform,” focusing on technical how-tos, particularly for data manipulation and broad integrations. 84 | • They do not deeply discuss small-business-centric ROI, cost-benefit analyses, or practical adoption steps. 85 | 86 | ### Identified Gaps/Opportunities 87 | 88 | 1. **Practical Implementation for SMBs** – Showcasing step-by-step guides specifically for small businesses (e.g., marketing, HR, sales) is under-served. 89 | 2. **Cost-Focused Insights** – Competitors rarely address budget constraints or ROI calculators for small companies. 90 | 3. **Industry-Specific Examples** – Deeper examples in e-commerce, retail, and service-based businesses are scarce. Providing tailored use cases can differentiate our content. 91 | 92 | --- 93 | 94 | ## 4. Content Outline & Actionable Recommendations 95 | 96 | ### Recommended Structure 97 | 98 | 1. **Introduction (H1)** 99 | 100 | - Brief overview of AI Automation importance and an immediate promise of value to small business owners. 101 | 102 | 2. **What is AI Automation? (H2)** 103 | 104 | - Define AI automation in non-technical terms. 105 | - Sub-section: “How Does It Work?” (H3) 106 | 107 | 3. **Key Benefits for Small Businesses (H2)** 108 | 109 | - Address ROI, cost savings, productivity boosts, etc. 110 | - Sub-section ideas: “Industry-Specific Examples” (H3) 111 | 112 | 4. **Real-World Use Cases & Success Stories (H2)** 113 | 114 | - Showcase varied SMB contexts: e-commerce, retail, service providers, etc. 115 | - Highlight one or two mini case studies. 116 | 117 | 5. **Popular AI Automation Tools & Platforms (H2)** 118 | 119 | - Mention known players but also highlight your unique offering or angle. 120 | - Sub-section: “What to Consider When Choosing an AI Automation Provider” (H3) 121 | 122 | 6. **Getting Started: Implementation Steps (H2)** 123 | 124 | - Outline a simple step-by-step adoption roadmap. 125 | - Include cost/budgeting considerations, training, and setting KPIs. 126 | 127 | 7. **Answering Common Questions (H2)** 128 | 129 | - Directly address the 5 key questions listed above. 130 | - Where relevant, link to more detailed FAQs or resources. 131 | 132 | 8. **Conclusion & Call-to-Action (H2)** 133 | - Summarize main points. 134 | - Encourage contact form submission or sign-up for a demo. 135 | 136 | ### Keyword Integration 137 | 138 | • Use “AI automation” and “Artificial intelligence automation” in the opening paragraphs, headers, and conclusion naturally. 139 | • Embed long-tail keywords contextually inside body sections (e.g., “How to implement AI automation in a small business” under “Getting Started”). 140 | • Weave question keywords into a dedicated FAQ or in the relevant sections. 141 | 142 | ### Content Enhancement Recommendations 143 | 144 | 1. **Add Step-by-Step Illustrations or Flowcharts** – Showcasing exactly how an SMB can integrate an AI solution into existing processes. 145 | 2. **Highlight Real-Life ROI Data or Stats** – If possible, provide a quick ROI calculation example or chart for small businesses. 146 | 3. **Include Expert Quotes or Testimonials** – Quotes from small business owners who successfully integrated AI automation can boost credibility. 147 | 148 | --- 149 | 150 | ## 5. Proposed SEO Titles 151 | 152 | 1. “AI Automation for Small Businesses: Streamline Tasks & Boost ROI” 153 | 2. “Transform Your Small Business with AI Automation: A Beginner’s Guide” 154 | 3. “Unlock Efficiency: How AI Automation Revolutionizes Small Business Operations” 155 | 4. “Smarter Workflows: The Ultimate Guide to AI Automation for SMBs” 156 | 5. “Cut Costs & Increase Productivity with AI Automation for Small Businesses” 157 | 158 | Each title naturally incorporates our core keyword focus (“AI automation” + “small business”) while highlighting a clear user benefit or promise. 159 | 160 | --- 161 | 162 | By following this brief, you can create a keyword-rich, user-focused landing page that resonates with small business owners seeking practical and affordable AI automation solutions – a gap that our competitors have not fully addressed. The structure, combined with strategic keyword implementation and unique content elements such as ROI examples and success stories, will help our content stand out and rank more effectively. 163 | -------------------------------------------------------------------------------- /AI-Powered SEO Keyword Research Automation/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2025-05-02 23:34 3 | modification date: Friday 2nd May 2025 23:34:06 4 | tags: 5 | --- 6 | 7 | # AI-Powered SEO Keyword Research Workflow with n8n 8 | 9 | This README provides a detailed explanation of the n8n workflow "AI powered SEO keyword research - vibe marketer", which automates comprehensive keyword research for content creation. 10 | 11 | ![Workflow Overview](./screenshots/workflow.png) 12 | 13 | ## Table of Contents 14 | 15 | 1. [Introduction](#introduction) 16 | 2. [Workflow Architecture](#workflow-architecture) 17 | 3. [NocoDB Integration](#nocodb-integration) 18 | 4. [Data Flow](#data-flow) 19 | 5. [Core Components](#core-components) 20 | 6. [Setup Requirements](#setup-requirements) 21 | 7. [Possible Improvements](#possible-improvements) 22 | 23 | ## Introduction 24 | 25 | This n8n workflow automates SEO keyword research using AI and data-driven analytics. It combines OpenAI's language models with DataForSEO's analytics to generate comprehensive keyword strategies for content creation. The workflow is triggered by a webhook from NocoDB, processes the input data through multiple stages, and returns a detailed content brief with optimized keywords. 26 | 27 | ## Workflow Architecture 28 | 29 | The workflow follows a structured process: 30 | 31 | 1. **Input Collection**: Receives data via webhook from NocoDB 32 | 2. **Topic Expansion**: Generates keywords using AI 33 | 3. **Keyword Metrics Analysis**: Gathers search volume, CPC, and difficulty metrics 34 | 4. **Competitor Analysis**: Analyzes competitor content for ranking keywords 35 | 5. **Final Strategy Creation**: Combines all data to generate a comprehensive keyword strategy 36 | 6. **Output Storage**: Saves results back to NocoDB and sends notifications 37 | 38 | ```mermaid 39 | flowchart TD 40 | A[Webhook Input from NocoDB] --> B[Set Relevant Fields] 41 | B --> C[Start Notification - Slack] 42 | B --> D[Update Status: Started] 43 | B --> E[Topic Expansion - OpenAI] 44 | B --> F[Format JSON & Competitor URLs] 45 | 46 | E --> G[Split Primary Keywords] 47 | G --> H[Search Volume & CPC - DataForSEO] 48 | G --> I[Keyword Difficulty - DataForSEO] 49 | 50 | H --> J[Aggregate SV & CPC] 51 | I --> K[Aggregate KWD] 52 | J --> L[Merge SV, CPC & KWD] 53 | 54 | L --> M[Merge Topic Expansion with Metrics] 55 | E --> M 56 | 57 | F --> N[Split Competitor URLs] 58 | N --> O[Keyword Ranking per URL - DataForSEO] 59 | O --> P[Competitor Analysis - OpenAI] 60 | P --> Q[Aggregate Competitor Analysis] 61 | 62 | M --> R[Merge Everything] 63 | Q --> R 64 | B --> R 65 | 66 | R --> S[Final Keyword Strategy - OpenAI] 67 | S --> T[Write Content Brief to NocoDB] 68 | S --> U[Update Status: Done] 69 | S --> V[Send Completion Notification - Slack] 70 | ``` 71 | 72 | ## NocoDB Integration 73 | 74 | ### Database Structure 75 | 76 | The workflow integrates with two tables in NocoDB: 77 | 78 | #### Input Table Schema 79 | 80 | This table collects the input parameters for the keyword research: 81 | 82 | | Field Name | Type | Description | 83 | | --------------- | ------------- | --------------------------------------------------------------------------- | 84 | | ID | Auto Number | Unique identifier | 85 | | Primary Topic | Text | The main keyword/topic to research | 86 | | Competitor URLs | Text | Comma-separated list of competitor websites | 87 | | Target Audience | Single Select | Description of the target audience (Solopreneurs, Marketing Managers, etc.) | 88 | | Content Type | Single Select | Type of content (Blog, Product page, etc.) | 89 | | Location | Single Select | Target geographic location | 90 | | Language | Single Select | Target language for keywords | 91 | | Status | Single Select | Workflow status (Pending, Started, Done) | 92 | | Start Research | Checkbox | Active Workflow when you set this to true | 93 | 94 | ![Input Table Screenshot](./screenshots/input-table.png) 95 | 96 | #### Output Table Schema 97 | 98 | This table stores the generated keyword strategy: 99 | 100 | | Field Name | Type | Description | 101 | | ------------------ | ----------- | ------------------------------------------------ | 102 | | ID | Auto Number | Unique identifier | 103 | | primary_topic_used | Text | The topic that was researched | 104 | | report_content | Long Text | The complete keyword strategy in Markdown format | 105 | | generatedAt | Datetime | Automatically generated by NocoDb | 106 | 107 | ![Output Table Screenshot](./screenshots/output-table.png) 108 | 109 | ### Webhook Settings 110 | 111 | NocoDB Webhook Settings 112 | 113 | ![Webhook Settings](./screenshots/webhook-settings.png) 114 | 115 | ## Data Flow 116 | 117 | The workflow handles data in the following sequence: 118 | 119 | 1. **Webhook Trigger**: Receives input from NocoDB when a new keyword research request is created 120 | ![Start Slack Notification](./screenshots/start-slack-notification.png) 121 | 2. **Field Extraction**: Extracts primary topic, competitor URLs, audience, and other parameters 122 | 3. **AI Topic Expansion**: Uses OpenAI to generate related keywords, categorized by type and intent 123 | 4. **Keyword Analysis**: Sends primary keywords to DataForSEO to get search volume, CPC, and difficulty 124 | 5. **Competitor Research**: Analyzes competitor pages to identify their keyword rankings 125 | 6. **Strategy Generation**: Combines all data to create a comprehensive keyword strategy 126 | 7. **Storage & Notification**: Saves the strategy to NocoDB and sends a notification to Slack 127 | ![Final Slack Notification](./screenshots/end-slack-notification.png) 128 | 129 | ## Core Components 130 | 131 | ### 1. Topic Expansion 132 | 133 | This component uses OpenAI and a structured output parser to generate: 134 | 135 | - 20 primary keywords 136 | - 30 long-tail keywords with search intent 137 | - 15 question-based keywords 138 | - 10 related topics 139 | 140 | ### 2. DataForSEO Integration 141 | 142 | Two API endpoints are used: 143 | 144 | - **Search Volume & CPC**: Gets monthly search volume and cost-per-click data 145 | - **Keyword Difficulty**: Evaluates how difficult it would be to rank for each keyword 146 | 147 | ### 3. Competitor Analysis 148 | 149 | This component: 150 | 151 | - Analyzes competitor URLs to identify which keywords they rank for 152 | - Identifies content gaps or opportunities 153 | - Determines the search intent their content targets 154 | 155 | ### 4. Final Keyword Strategy 156 | 157 | The AI-generated strategy includes: 158 | 159 | - Top 10 primary keywords with metrics 160 | - 15 long-tail opportunities with low competition 161 | - 5 question-based keywords to address in content 162 | - Content structure recommendations 163 | - 3 potential content titles optimized for SEO 164 | 165 | ## Setup Requirements 166 | 167 | To use this workflow, you'll need: 168 | 169 | 1. **n8n Instance**: Either cloud or self-hosted 170 | 2. **NocoDB Account**: For data input and storage 171 | 3. **API Keys**: 172 | - OpenAI API key 173 | - DataForSEO API credentials 174 | - Slack API token (for notifications) 175 | 4. **Database Setup**: Create the required tables in NocoDB as described above 176 | 177 | ## Possible Improvements 178 | 179 | The workflow could be enhanced with the following improvements: 180 | 181 | ### Enhanced Keyword Strategy 182 | 183 | - Add topic clustering to group related keywords 184 | - Enhance the final output with more specific content structure suggestions 185 | - Include word count recommendations for each content section 186 | 187 | ### Additional Data Sources 188 | 189 | - Integrate Google Search Console data for existing content optimization 190 | - Add Google Trends data to identify rising topics 191 | - Include sentiment analysis for different keyword groups 192 | 193 | ### Improved Competitor Analysis 194 | 195 | - Analyze content length and structure from top-ranking pages 196 | - Identify common backlink sources for competitor content 197 | - Extract content headings to better understand content organization 198 | 199 | ### Automation Enhancements 200 | 201 | - Add scheduling capabilities to run updates on existing content 202 | - Implement content performance tracking over time 203 | - Create alert thresholds for changes in keyword difficulty or search volume 204 | 205 | --- 206 | 207 | ## Example Output 208 | 209 | Here is an example Output the Workflow generated based on the following inputs: 210 | 211 | - Primary Topic: `AI Automation` 212 | - Competitor URLs: `n8n.io, zapier.com, make.com` 213 | - Target Audience: `Small Business Owners` 214 | - Content Type: `Landing Page` 215 | - Location: `United States` 216 | - Language: `English` 217 | 218 | **Output**: [Final Keyword Strategy ](./Final_Keyword_Strategy-AI_Automation.md) 219 | 220 | --- 221 | 222 | The workflow provides a powerful automation for content marketers and SEO specialists to develop data-driven keyword strategies with minimal manual effort. 223 | 224 | > Original Workflow: [AI-Powered SEO Keyword Research Automation - The vibe Marketer](https://templates.thevibemarketer.com/template/seo-keyword-research) 225 | 226 | --- 227 | 228 | ## Getting Started with n8n 229 | 230 | This workflow is now available in the n8n template library as a verified creator workflow: [Comprehensive SEO Keyword Research with OpenAI & DataForSEO Analytics to NocoDB](https://n8n.io/workflows/3908-comprehensive-seo-keyword-research-with-openai-and-dataforseo-analytics-to-nocodb/) 231 | 232 | If you're new to n8n, you can sign up and test this workflow directly: 233 | [Get started with n8n](https://n8n.partnerlinks.io/d25fz3175b1l) 234 | -------------------------------------------------------------------------------- /AI-Powered SEO Keyword Research Automation/comparison_analysis.md: -------------------------------------------------------------------------------- 1 | Let me format the entire document into proper markdown. 2 | 3 | Read file: AI-Powered SEO Keyword Research Automation/comparison_analysis.md 4 | 5 | # SEO Keyword Strategy & Content Brief: AI Automation for Small Businesses 6 | 7 | ## 1. Executive Summary 8 | 9 | **Objective:** The primary goal of this landing page is to attract Small Business Owners (SMBs) in the United States who are actively seeking practical, easy-to-understand AI automation solutions. The page must clearly demonstrate tangible value propositions, primarily focusing on time savings, cost reduction, and efficiency gains relevant to SMB pain points. It aims to build trust by addressing common SMB concerns about technology adoption (complexity, cost, security) and ultimately drive conversions, such as signing up for a free trial or requesting a product demonstration. The strategic positioning is to establish our brand as the accessible, results-oriented AI automation partner specifically designed for the non-technical small business owner, distinguishing us from competitors who may target broader or more technically proficient audiences. 10 | 11 | **Key Opportunity:** Analysis indicates a significant opportunity exists in targeting mid-volume keywords with strong commercial or informational intent, such as "AI automation for small business" (SV 390, KD 36). While this core term anchors the strategy, substantial potential lies in capturing long-tail variations and question-based keywords that address specific SMB pain points and automation needs. Keywords like "automate admin tasks small business" or "AI tools to reduce admin work" directly target efficiency gains, while questions like "how can AI automate invoicing for small business?" capture users seeking specific solutions. The strategy focuses on balancing search volume with achievable keyword difficulty (KD), aiming for terms where we can realistically compete and rank. 12 | 13 | **Competitor Angle:** Competitor analysis reveals distinct positioning: 14 | 15 | - Zapier emphasizes its vast library of integrations (7,000+) and ease of use for connecting apps. 16 | - Make.com focuses on its visual workflow builder for complex, multi-step automations, often highlighting cost-effectiveness for intricate scenarios. 17 | - n8n.io targets a more technical audience needing the control, flexibility, and potential cost savings of an open-source, often self-hosted solution. 18 | 19 | A key strategic opportunity arises from this landscape: competitors often discuss automation broadly or cater to users with higher technical acumen. This leaves a gap in directly addressing the specific AI automation needs, anxieties (cost, complexity, data security), and desired outcomes (tangible ROI, time savings) of the average, non-technical small business owner. This landing page will capitalize on this gap by focusing on simplicity, trust, and clear, SMB-centric value propositions. The market demonstrates a clear requirement for demystifying AI automation specifically for this audience, moving beyond feature lists to solve their unique problems. Successfully converting this audience depends heavily on proactively addressing concerns around trust, security, and ease of implementation, making these core elements of our messaging. 20 | 21 | ## 2. Target Keyword Strategy & Rationale 22 | 23 | The keyword strategy aims to attract qualified SMB owners actively searching for AI automation solutions by targeting a mix of relevant terms across different stages of the buyer's journey. 24 | 25 | ### Primary Target Keywords 26 | 27 | These keywords form the core focus of the landing page content, targeting users with relatively high intent who are specifically searching for AI automation solutions relevant to small businesses. The selection balances search volume (SV) with keyword difficulty (KD), aiming for terms that offer significant traffic potential while being realistically achievable to rank for. 28 | 29 | | Keyword | Search Volume (SV) | Keyword Difficulty (KD) | Rationale/Intent | 30 | | ------------------------------------- | ------------------ | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | 31 | | ai automation for small business | 390 | 36 | High relevance, targets core audience directly. Commercial/Informational intent. Good balance of volume and achievable difficulty. | 32 | | ai for small business | 1000+ (Implied) | Moderate (Varies) | Broader term, high volume potential. Captures users exploring AI benefits for SMBs. Informational/Commercial. | 33 | | automate tasks small business | ~500 (Estimated) | 40 (Estimated) | Addresses key SMB pain point (time saving). Connects task automation with business size. Commercial/Informational. | 34 | | small business automation tools | High (Varies) | Moderate (Varies) | Targets users actively looking for solutions. Commercial intent. Needs differentiation towards AI. | 35 | | AI workflow automation small business | Moderate (Varies) | Moderate (Varies) | More specific term indicating interest in process improvement via AI. Commercial/Informational. | 36 | | business process automation ai | Moderate (Varies) | Moderate (Varies) | Targets users familiar with BPA concepts seeking AI enhancements. Informational/Commercial. | 37 | 38 | _(Note: SV/KD values are illustrative based on provided snippets/general knowledge; actual JSON data should refine these. KD estimates assume a moderate website authority. Some terms like "ai for small business" have high volume but difficulty varies based on specific tools like Semrush, Ahrefs, Moz)_ 39 | 40 | **Commentary:** The primary keywords were chosen for their direct relevance to the target audience and topic. They capture searches from SMB owners who are aware of AI or automation and are exploring its application to their business context. The focus is on terms explicitly linking "AI" or "automation" with "small business" or addressing core SMB challenges like task management and process efficiency. While some terms have higher difficulty, their relevance warrants targeting, supported by long-tail variations. It's important to recognize that reported KD values might be influenced by general AI content targeting broader audiences; the _actual_ competitive landscape for content hyper-focused on _non-technical SMB needs_ might be less saturated, offering a ranking advantage if the content truly resonates. 41 | 42 | ### Secondary & Long-Tail Opportunities 43 | 44 | This group targets users exploring specific benefits, use cases, or comparisons, often with lower competition. They are crucial for capturing niche traffic and addressing specific user needs throughout the funnel. 45 | 46 | #### Informational 47 | 48 | | Keyword | Intent | SV (Est.) | KD (Est.) | Notes | 49 | | -------------------------------------------- | ------------- | --------- | --------- | -------------------------------------------------- | 50 | | benefits of ai automation for small business | Informational | Low-Mod | Low-Mod | Addresses "Why AI?" | 51 | | how ai automation helps small business | Informational | Low-Mod | Low | Focuses on practical application and understanding | 52 | | ai automation use cases small business | Informational | Moderate | Moderate | Users seeking specific examples | 53 | | ai vs simple automation for smb | Informational | Low | Low | Clarifies value proposition vs basic tools | 54 | | challenges small business ai adoption | Informational | Low-Mod | Low | Addresses user concerns directly | 55 | 56 | #### Commercial 57 | 58 | | Keyword | Intent | SV (Est.) | KD (Est.) | Notes | 59 | | ------------------------------------------------- | ---------- | --------- | --------- | --------------------------------- | 60 | | best ai automation tools for small business | Commercial | Moderate | Mod-High | Comparison stage, high value | 61 | | affordable ai automation for small business | Commercial | Low-Mod | Low-Mod | Targets cost-conscious SMBs | 62 | | easy ai automation software smb | Commercial | Low-Mod | Low-Mod | Targets simplicity/usability need | 63 | | AI email automation small business | Commercial | Low-Mod | Low-Mod | Specific use case: Email | 64 | | AI for lead follow up small business | Commercial | Low | Low | Specific use case: Sales/CRM | 65 | | AI for social media content small business | Commercial | Low-Mod | Low-Mod | Specific use case: Marketing | 66 | | virtual assistant small business (AI context) | Commercial | Moderate | Moderate | Connects AI to familiar concept | 67 | | zapier alternatives for small business (AI focus) | Commercial | Moderate | Moderate | Targets users comparing platforms | 68 | 69 | #### Transactional 70 | 71 | | Keyword | Intent | SV (Est.) | KD (Est.) | Notes | 72 | | ------------------------------------ | ------------- | --------- | --------- | ------------------------------------- | 73 | | ai automation software free trial | Transactional | Low-Mod | Moderate | High intent, ready to try | 74 | | ai automation pricing small business | Transactional | Low | Low-Mod | Users evaluating cost before purchase | 75 | 76 | **Commentary:** This selection aims to cover the full spectrum of user intent. Informational keywords attract users early in their research, allowing us to educate them and build trust. Commercial keywords capture users actively evaluating different solutions, providing an opportunity to showcase our specific advantages. Transactional keywords target users close to making a decision. Focusing on keywords related to specific _outcomes_ SMBs desire (e.g., "automate invoice follow up," "AI tool for scheduling") is crucial. These terms often have higher conversion intent and potentially lower competition than generic "AI automation" keywords because they directly address the problem the SMB owner is trying to solve. 77 | 78 | ### Key Question Keywords 79 | 80 | The landing page must effectively answer these fundamental questions, either directly or implicitly, to address the core concerns and information needs of SMB owners: 81 | 82 | - What is AI automation for small business? (Addresses basic understanding and relevance) 83 | - How can AI automation save my business time and money? (Addresses the core value proposition and ROI) 84 | - Is AI automation easy to implement for non-technical users? (Addresses complexity and usability concerns) 85 | - What specific tasks can AI automate for my small business? (Provides concrete examples and use cases) 86 | - Is AI automation secure for my business data? (Addresses critical trust and security barriers) 87 | 88 | **Commentary:** These questions represent the primary hurdles SMB owners face when considering AI adoption. They are concerned about relevance, cost, complexity, practical application, and security. A successful landing page must anticipate and address these questions proactively through its messaging, structure, and proof points. Failing to do so will likely result in user confusion, lack of trust, and ultimately, poor conversion rates. 89 | 90 | ## 3. Competitive Landscape & Content Gaps 91 | 92 | Understanding how competitors like Zapier, Make.com, and n8n.io position themselves helps identify strategic opportunities for differentiation. 93 | 94 | ### Competitor Focus 95 | 96 | Based on their offerings and common use cases, the competitive focus appears to be: 97 | 98 | | Competitor | Likely Keyword Themes/Focus | Target User Profile | 99 | | ---------- | ----------------------------------------------------------------------------------------------- | ------------------------------------------------------- | 100 | | Zapier | App integration, connecting apps, easy automation, task automation, workflow automation | Non-technical users, SMBs needing simple connections | 101 | | Make.com | Visual workflow builder, complex automation, API integration, scenario automation, cost savings | Users needing visual control, complex logic, developers | 102 | | n8n.io | Open source automation, self-hosted automation, developer workflows, custom automation, control | Technical users, developers, businesses needing control | 103 | 104 | Zapier leverages its extensive library (7,000+ apps) to dominate keywords related to simple app connections and ease of use. Their AI features are positioned as extensions of this ease-of-use paradigm, often relying on templates. Make.com competes on the ability to handle more complex, multi-step scenarios visually, appealing to users who need more granular control or find Zapier limiting or costly for complex tasks. Their AI features emphasize adaptability and intelligent agents within these complex flows. n8n.io carves out a niche with technical users and developers who prioritize customization, control over data (via self-hosting), and potentially lower costs, often targeting keywords related to specific technologies like LangChain or open-source solutions. Their AI positioning reflects this technical focus. 105 | 106 | ### Identified Gaps/Opportunities 107 | 108 | The analysis reveals several gaps where our content can provide unique value: 109 | 110 | 1. **Lack of Dedicated SMB AI Focus:** While competitors offer automation solutions used by SMBs, their core messaging often remains general ("connect apps," "build workflows") or targets technically advanced users. There is a clear opportunity to create content that speaks directly to the non-technical SMB owner, explicitly framing AI automation as the solution to their specific challenges (e.g., overwhelming admin work, lack of time, need for simple lead follow-up). Competitors might list features, but they often fail to translate complex AI capabilities into simple, tangible benefits understood by the average business owner. 111 | 112 | 2. **Insufficient Emphasis on Trust & Simplicity for SMBs:** SMBs harbor significant concerns about adopting new technology, particularly AI, related to cost, complexity, data security, and the required expertise. While competitors touch on ease of use or security, there's a gap in making these central pillars of the value proposition specifically for SMBs. We can differentiate by proactively and prominently addressing data privacy concerns, highlighting the simplicity of our no-code interface, explaining pricing clearly, and building trust through transparency. 113 | 114 | 3. **Practical "How-To" vs. Abstract "What":** Competitor content often explains what their platforms do (features, integrations) but can lack concrete, relatable examples of how an SMB owner uses AI automation to solve a common problem step-by-step. There is an opportunity to provide practical mini-use cases or simplified workflow visuals showing AI automating tasks like appointment scheduling, social media content ideation, or customer email responses in an SMB context. 115 | 116 | These gaps suggest a strategic direction: instead of engaging in a "feature war" (competing on number of integrations like Zapier or technical power like Make/n8n), we can compete effectively by focusing intensely on the target audience. By deeply understanding and addressing the specific needs, language, pain points, and anxieties of the non-technical SMB owner, we can create a more resonant and trustworthy message. Furthermore, simplifying the communication of AI benefits is critical. Terms like "AI Agents" or "LLM logic" can be intimidating; translating these into simple outcomes like "your 24/7 virtual email assistant" or "automation that gets smarter over time" makes the value proposition much clearer and less daunting for the target audience. 117 | 118 | ## 4. Content Outline & Actionable Recommendations 119 | 120 | This outline proposes a structure for the landing page content, designed to follow the typical decision-making process of a small business owner evaluating new technology: identifying pain, understanding the solution and its value, addressing concerns, seeing proof, and taking action. 121 | 122 | ### Recommended Structure (Landing Page Flow) 123 | 124 | #### H1 & Above the Fold (Immediate Impact & Value) 125 | 126 | - **Hook/Problem:** Start with a concise headline addressing a core SMB pain point (e.g., "Tired of Admin Tasks Killing Your Productivity?"). 127 | - **Solution/Value Proposition:** Immediately introduce AI automation as the solution, emphasizing ease and benefits (e.g., "Automate Your Small Business with Easy-to-Use AI. Save Time, Reduce Costs, Grow Faster."). Use primary keywords here. 128 | - **Call-to-Action (CTA):** Prominent button (e.g., "Start Your Free Trial," "See AI Automation in Action"). 129 | - **Trust Signals:** Include subtle trust elements like "Trusted by 5,000+ Small Businesses," key partner logos (if applicable), or a short, impactful testimonial snippet. 130 | 131 | #### H2: Is Your Day Filled With...? (Relatable Pain Points) 132 | 133 | Use a visually engaging section (icons + short text) highlighting common SMB struggles this AI automation solves: 134 | 135 | - Endless Email Follow-ups 136 | - Manual Data Entry 137 | - Scheduling Nightmares 138 | - Missed Sales Leads 139 | - Content Creation Blocks 140 | - Chasing Invoices 141 | 142 | Transition: "There's a smarter, automated way." 143 | 144 | #### H2: Introducing [Our Product Name]: AI Automation Designed for Main Street, Not Just Tech Street 145 | 146 | **Core Concept:** Briefly explain that this isn't just connecting apps, but using AI to automate tasks intelligently – handling complexity, learning, and adapting – all through a simple, no-code interface built specifically for busy business owners. 147 | 148 | ##### H3: Reclaim Your Time & Cut Costs (Focus on ROI) 149 | 150 | - Elaborate on how AI takes over manual work (data entry, email sorting/drafting, scheduling). 151 | - Quantify the benefit using compelling statistics: "Save an average of 10-15 hours per week" or "Reduce operational costs by up to 30%". Cite relevant studies or average user results if possible. Use secondary keywords like "cost savings small business automation". 152 | 153 | ##### H3: Boost Productivity & Never Miss an Opportunity (Focus on Growth) 154 | 155 | - Explain how AI improves critical growth functions: faster lead follow-up, smarter marketing content generation, 24/7 customer query handling via chatbots. 156 | - Mention benefits like increased lead conversion or improved customer satisfaction. Use keywords like "AI for lead follow up," "automate customer service." 157 | 158 | ##### H3: Simple Setup, Secure Foundation (Addressing Concerns) 159 | 160 | - Emphasize the no-code, user-friendly nature: "Get started in minutes, no technical skills needed". Overcome the complexity objection. 161 | - Directly address security and privacy: Use trust badges or short statements like "Your data is protected with bank-level encryption," "We prioritize ethical AI and data privacy". Address the trust barrier head-on. 162 | 163 | #### H2: See AI Automation in Action: Real Solutions for Small Businesses 164 | 165 | Provide 3-4 concise, relatable examples (potentially using tabs or a carousel). Focus on the outcome for the SMB. 166 | 167 | ##### H3: Example 1: The Overwhelmed Consultant - Automate Scheduling & Reminders 168 | 169 | - **Problem:** Spending hours emailing back-and-forth to book client calls. 170 | - **AI Solution:** Show (visually or textually) how AI syncs calendars, finds mutual availability, sends confirmations, and automated reminders. Use keywords like "AI scheduling tool small business." 171 | 172 | ##### H3: Example 2: The Local Service Business - Instant Lead Follow-Up 173 | 174 | - **Problem:** Website leads go cold before the team can respond. 175 | - **AI Solution:** Demonstrate how AI instantly sends personalized acknowledgment emails/texts, qualifies the lead with basic questions, and even schedules an initial call. Use keywords like "automate lead follow up." 176 | 177 | ##### H3: Example 3: The E-commerce Store Owner - Smart Social Media Content 178 | 179 | - **Problem:** No time to consistently create engaging social media posts. 180 | - **AI Solution:** Show how AI can analyze product info or blog posts to generate draft captions, suggest relevant hashtags, and even schedule posts. Use keywords like "AI social media content generator." 181 | 182 | ##### H3: Example 4: The Busy Freelancer - Automated Invoicing & Payment Reminders 183 | 184 | - **Problem:** Chasing late payments eats into billable hours. 185 | - **AI Solution:** Illustrate how AI can generate invoices from project data and automatically send polite payment reminders based on due dates. Use keywords like "automate invoicing small business." 186 | 187 | #### H2: Why AI Automation Beats Simple Task Connection (The Smart Advantage) 188 | 189 | - Use the recommended "AI vs. Simple Automation" explainer graphic/table here. 190 | - Briefly explain that while tools like Zapier connect apps (Step A -> Step B), AI automation adds intelligence. 191 | - Highlight 1-2 key AI differentiators using simple language: 192 | - **Learning & Adapting:** "Our AI learns from your data to get smarter over time, optimizing workflows automatically." (e.g., predicting best email send times) 193 | - **Handling Complexity:** "AI can understand unstructured text like customer emails or feedback, not just structured data fields." (e.g., sentiment analysis) 194 | 195 | #### H2: Don't Just Take Our Word For It (Social Proof) 196 | 197 | - Feature 2-3 strong, concise testimonials from identifiable SMB owners (Name, Company Type). 198 | - Focus on quantifiable results: "Saved me 10 hours a week!", "Our lead response time dropped by 80%", "Reduced admin costs significantly." 199 | - Include photos or logos if possible for added credibility. 200 | 201 | #### H2: Simple, Affordable Plans for Every Small Business (Pricing & Guarantee) 202 | 203 | - Clearly present 1-3 pricing tiers suitable for SMBs. Emphasize transparency and value. 204 | - Prominently feature any Free Trial or Money-Back Guarantee to lower the adoption barrier. Use keywords like "affordable AI automation." 205 | 206 | #### H2: Ready to Stop Drowning and Start Growing? (Final CTA) 207 | 208 | - Reiterate the core benefit: "Free up your time, automate the busywork, and focus on growing your business." 209 | - Large, clear Call-to-Action button: "Start Your Free Trial Now" or "Get Started with AI Automation". 210 | - Optional secondary links: "See Pricing" or "Contact Us". 211 | 212 | ### Keyword Integration 213 | 214 | - **Primary keywords** ("AI automation for small business," "automate tasks small business") should appear naturally in the H1, main H2s (like the introduction and value proposition sections), introductory paragraphs, and near CTAs. The page's core theme must be unmistakable. 215 | - **Secondary and long-tail keywords** should be woven into the body copy, particularly within the H3 sections detailing benefits (e.g., "save time," "reduce costs"), addressing pain points (e.g., "email follow up," "admin work"), explaining use cases (e.g., "AI for scheduling," "AI content generation"), and addressing concerns (e.g., "easy ai automation," "secure ai platform"). Use synonyms and related terms naturally to avoid stuffing. For instance, when discussing cost savings, use phrases like "reduce operational costs," "affordable AI solutions," etc. 216 | - **Question keywords** are best addressed implicitly by the content structure. The section on benefits answers "How can AI save time/money?". The section on simplicity/security answers "Is it easy/secure?". The use case section answers "What tasks can AI automate?". The "AI vs Simple Automation" section helps answer "What is AI automation?". 217 | - Ensure relevant keywords are used in image alt text (e.g., alt="AI automating email follow up for small business consultant"). 218 | 219 | ### Content Enhancement Recommendations 220 | 221 | 1. **Hyper-Relatable SMB Examples/Mini-Stories:** Go beyond generic use cases. Pepper the landing page with short, specific examples featuring relatable SMB roles: "Like Maria, the local bakery owner, who uses AI to predict pastry demand..." or "For contractors like Dave, AI automates appointment reminders..." This makes the abstract concept of AI automation tangible and directly applicable to the visitor's own business reality. 222 | 223 | 2. **Visual ROI Emphasis (Calculator or Clear Stats):** Since SMBs are highly focused on ROI, include a simple interactive element (e.g., "How many hours do you spend on admin weekly? See your potential time savings!") or very prominent callouts using statistics from research ("SMBs using automation save an average of X hours/week" or "Reduce admin costs by up to Y%"). This immediately quantifies the primary benefit. 224 | 225 | 3. **"AI vs. Simple Automation" Explainer Graphic:** Create a clear, simple visual (like a two-column table or infographic) contrasting basic "If This, Then That" automation (e.g., Zapier's core function) with AI-powered automation. Use SMB examples: Simple: "New form submission -> Add to spreadsheet." AI: "New customer email -> AI understands urgency/sentiment -> AI drafts personalized reply -> Adds task to CRM." This clarifies the unique value proposition of AI's intelligence and adaptability. 226 | 227 | 4. **Prominent Trust & Security Section/Icons:** Don't bury security information. Dedicate a small, visually distinct section or use clear icons (e.g., lock icon, checkmark) near CTAs or pricing to highlight key trust factors: "Bank-Level Encryption," "Your Data Stays Private," "Ethical AI Practices," "SOC 2 Compliant (if applicable)". This directly addresses a major SMB adoption hurdle and builds crucial confidence. 228 | 229 | The overall landing page structure should deliberately mirror the SMB owner's likely decision-making pathway: acknowledging their pain points first, then introducing a relevant solution, clearly articulating the value (especially ROI), proactively addressing their primary concerns about complexity and trust, showing social proof through relatable examples, and finally, presenting a clear, low-risk call to action. Given that SMB owners are typically time-constrained, the page must be highly scannable, utilizing visuals (icons, simple graphics, perhaps short demo videos showcasing ease-of-use) over dense blocks of text to communicate key messages quickly and effectively. 230 | 231 | ## 5. Proposed SEO Titles 232 | 233 | These title options aim to be concise (ideally under 60 characters), incorporate target keywords, highlight key SMB benefits, and entice clicks from the target audience in search results: 234 | 235 | - Easy AI Automation for Small Business | Save Time & Grow (Focuses on ease, SMB, core benefits) 236 | - AI Automation Tools Built for Small Business Owners | Simple (Highlights target audience, simplicity) 237 | - Stop Drowning in Tasks: AI Automation for Small Business (Addresses pain point, offers solution) 238 | - Simple AI Automation Software for Busy Small Businesses | Try Free (Emphasizes simplicity, targets busy owners, includes CTA element) 239 | - AI Automation for SMBs: Boost Efficiency & Cut Costs Today (Uses SMB acronym, focuses on key ROI benefits) 240 | -------------------------------------------------------------------------------- /AI-Powered SEO Keyword Research Automation/screenshots/end-slack-notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/philrox/n8n-workflows/41c4c83825bc8992f3320df3dc249905bceba08c/AI-Powered SEO Keyword Research Automation/screenshots/end-slack-notification.png -------------------------------------------------------------------------------- /AI-Powered SEO Keyword Research Automation/screenshots/input-table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/philrox/n8n-workflows/41c4c83825bc8992f3320df3dc249905bceba08c/AI-Powered SEO Keyword Research Automation/screenshots/input-table.png -------------------------------------------------------------------------------- /AI-Powered SEO Keyword Research Automation/screenshots/output-table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/philrox/n8n-workflows/41c4c83825bc8992f3320df3dc249905bceba08c/AI-Powered SEO Keyword Research Automation/screenshots/output-table.png -------------------------------------------------------------------------------- /AI-Powered SEO Keyword Research Automation/screenshots/start-slack-notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/philrox/n8n-workflows/41c4c83825bc8992f3320df3dc249905bceba08c/AI-Powered SEO Keyword Research Automation/screenshots/start-slack-notification.png -------------------------------------------------------------------------------- /AI-Powered SEO Keyword Research Automation/screenshots/webhook-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/philrox/n8n-workflows/41c4c83825bc8992f3320df3dc249905bceba08c/AI-Powered SEO Keyword Research Automation/screenshots/webhook-settings.png -------------------------------------------------------------------------------- /AI-Powered SEO Keyword Research Automation/screenshots/workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/philrox/n8n-workflows/41c4c83825bc8992f3320df3dc249905bceba08c/AI-Powered SEO Keyword Research Automation/screenshots/workflow.png -------------------------------------------------------------------------------- /Link Capture System/Link_Capture_System.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Link Capture System", 3 | "nodes": [ 4 | { 5 | "parameters": { 6 | "updates": [ 7 | "message" 8 | ], 9 | "additionalFields": { 10 | "download": true 11 | } 12 | }, 13 | "type": "n8n-nodes-base.telegramTrigger", 14 | "typeVersion": 1.2, 15 | "position": [ 16 | 140, 17 | 640 18 | ], 19 | "id": "473974c0-d6b5-448f-be65-e0e07d3d7372", 20 | "name": "Telegram Trigger", 21 | "webhookId": "99ee4c7f-4de2-4d9a-a780-1c467b7d040d", 22 | "credentials": { 23 | "telegramApi": { 24 | "id": "aEEmDIfizpluBu2v", 25 | "name": "TG - Results by Magic Bot" 26 | } 27 | } 28 | }, 29 | { 30 | "parameters": { 31 | "chatId": "={{ $('If url').item.json.message.chat.id }}", 32 | "text": "=Title: {{ $json.fields.Name }}\n\nQuote: {{ $json.fields.Quote }}\n\nContent Idea: {{ $json.fields['Content Idea'] }}\n\nAutomation Idea: {{ $json.fields['Automation Idea'] }}\n\nSummary: {{ $json.fields.Summary }}", 33 | "additionalFields": { 34 | "appendAttribution": false, 35 | "reply_to_message_id": "={{ $('If url').item.json.message.message_id }}" 36 | } 37 | }, 38 | "type": "n8n-nodes-base.telegram", 39 | "typeVersion": 1.2, 40 | "position": [ 41 | 2300, 42 | 620 43 | ], 44 | "id": "f010b026-8d56-4541-a12e-9e97f0d5f73c", 45 | "name": "Answer on Message", 46 | "webhookId": "333cabde-be04-481a-ba64-6265fecb1bcb", 47 | "credentials": { 48 | "telegramApi": { 49 | "id": "aEEmDIfizpluBu2v", 50 | "name": "TG - Results by Magic Bot" 51 | } 52 | } 53 | }, 54 | { 55 | "parameters": { 56 | "jsCode": "for (const item of $input.all()) {\n const msg = item.json.message;\n const text = (msg.text || msg.caption || '').trim();\n\n // URL (falls vorhanden)\n const url = (text.match(/https?:\\/\\/\\S+/i) || [''])[0];\n\n // Hashtags → Tags-Array (#idea, #n8n …)\n const tags = (text.match(/#(\\w[\\w-]*)/g) || []).map((t) =>\n t.slice(1).toLowerCase(),\n );\n\n // Notes = Rest ohne URL & Hashtags\n const notes = text\n .replace(url, '')\n .replace(/#\\w[\\w-]*/g, '')\n .replace(/\\s+/g, ' ')\n .trim();\n\n // Attachment-URL (nur Foto, easily erweiterbar)\n const photo = msg.photo?.at(-1);\n const attach = photo\n ? `https://api.telegram.org/file/bot${$env.TG_TOKEN}/${photo.file_id}`\n : '';\n\n Object.assign(item.json, { url, tags, notes, attach });\n}\n\nreturn $input.all();" 57 | }, 58 | "type": "n8n-nodes-base.code", 59 | "typeVersion": 2, 60 | "position": [ 61 | 360, 62 | 645 63 | ], 64 | "id": "bf8b162e-21f2-4dd4-99ae-bad03bd65a3d", 65 | "name": "filter for tags, url, notes" 66 | }, 67 | { 68 | "parameters": { 69 | "conditions": { 70 | "options": { 71 | "caseSensitive": true, 72 | "leftValue": "", 73 | "typeValidation": "strict", 74 | "version": 2 75 | }, 76 | "conditions": [ 77 | { 78 | "id": "b0ad7121-ad62-4313-91d9-9ec848a5bcf8", 79 | "leftValue": "={{ $json.url }}", 80 | "rightValue": "", 81 | "operator": { 82 | "type": "string", 83 | "operation": "notEmpty", 84 | "singleValue": true 85 | } 86 | }, 87 | { 88 | "id": "2a510fd3-1102-45e5-a38c-856d0ec79b79", 89 | "leftValue": "={{ $json.url }}", 90 | "rightValue": "reddit", 91 | "operator": { 92 | "type": "string", 93 | "operation": "notContains" 94 | } 95 | } 96 | ], 97 | "combinator": "or" 98 | }, 99 | "options": {} 100 | }, 101 | "type": "n8n-nodes-base.if", 102 | "typeVersion": 2.2, 103 | "position": [ 104 | 580, 105 | 640 106 | ], 107 | "id": "91c253cb-6d24-410b-b0d1-d8022ec34e4a", 108 | "name": "If url" 109 | }, 110 | { 111 | "parameters": { 112 | "method": "POST", 113 | "url": "https://api.exa.ai/contents", 114 | "authentication": "genericCredentialType", 115 | "genericAuthType": "httpHeaderAuth", 116 | "sendBody": true, 117 | "specifyBody": "json", 118 | "jsonBody": "={\n \"urls\": [\n \"{{ $json.url }}\"\n ],\n \"text\": true\n}", 119 | "options": {} 120 | }, 121 | "type": "n8n-nodes-base.httpRequest", 122 | "typeVersion": 4.2, 123 | "position": [ 124 | 1000, 125 | 460 126 | ], 127 | "id": "714cff2b-7323-46f0-94d4-a0f49925d07e", 128 | "name": "exaAI scrape content from link", 129 | "credentials": { 130 | "httpHeaderAuth": { 131 | "id": "DkKf1MlUtL0Wsi1E", 132 | "name": "exaAI API" 133 | } 134 | } 135 | }, 136 | { 137 | "parameters": { 138 | "model": { 139 | "__rl": true, 140 | "value": "o1", 141 | "mode": "list", 142 | "cachedResultName": "o1" 143 | }, 144 | "options": {} 145 | }, 146 | "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", 147 | "typeVersion": 1.2, 148 | "position": [ 149 | 1180, 150 | 660 151 | ], 152 | "id": "83101d26-8fbf-441e-92aa-46785747607f", 153 | "name": "OpenAI Chat Model", 154 | "credentials": { 155 | "openAiApi": { 156 | "id": "AZynAxNG099jyj7B", 157 | "name": "OpenAi account" 158 | } 159 | } 160 | }, 161 | { 162 | "parameters": { 163 | "jsonSchemaExample": "{\n \"title\": \"string\",\n \"summary\": \"string\",\n \"tags\": [\"string\"],\n \"content_type\": \"string\",\n \"quote\": \"string\",\n \"content_idea\": \"string\",\n \"automation_idea\": \"string\"\n}\n" 164 | }, 165 | "type": "@n8n/n8n-nodes-langchain.outputParserStructured", 166 | "typeVersion": 1.2, 167 | "position": [ 168 | 1340, 169 | 660 170 | ], 171 | "id": "0805571f-f22b-4456-b469-34e8087ff20a", 172 | "name": "Structured Output Parser" 173 | }, 174 | { 175 | "parameters": { 176 | "aggregate": "aggregateAllItemData", 177 | "options": {} 178 | }, 179 | "type": "n8n-nodes-base.aggregate", 180 | "typeVersion": 1, 181 | "position": [ 182 | 1540, 183 | 320 184 | ], 185 | "id": "80801e38-9993-4b90-bed4-47d4ba2c4351", 186 | "name": "Aggregate" 187 | }, 188 | { 189 | "parameters": { 190 | "aggregate": "aggregateAllItemData", 191 | "options": {} 192 | }, 193 | "type": "n8n-nodes-base.aggregate", 194 | "typeVersion": 1, 195 | "position": [ 196 | 1552, 197 | 570 198 | ], 199 | "id": "54e57236-d81d-4df8-ac1a-0bfa2eb09834", 200 | "name": "Aggregate1" 201 | }, 202 | { 203 | "parameters": { 204 | "mode": "combine", 205 | "combineBy": "combineByPosition", 206 | "options": {} 207 | }, 208 | "type": "n8n-nodes-base.merge", 209 | "typeVersion": 3.1, 210 | "position": [ 211 | 1772, 212 | 445 213 | ], 214 | "id": "95fd6593-01cd-422b-8eeb-4af8a28b8c51", 215 | "name": "Merge" 216 | }, 217 | { 218 | "parameters": { 219 | "aggregate": "aggregateAllItemData", 220 | "options": {} 221 | }, 222 | "type": "n8n-nodes-base.aggregate", 223 | "typeVersion": 1, 224 | "position": [ 225 | 1560, 226 | 900 227 | ], 228 | "id": "5096c9db-81ea-49aa-bb2d-ee29fceb5daf", 229 | "name": "Aggregate2" 230 | }, 231 | { 232 | "parameters": { 233 | "mode": "combine", 234 | "combineBy": "combineByPosition", 235 | "options": {} 236 | }, 237 | "type": "n8n-nodes-base.merge", 238 | "typeVersion": 3.1, 239 | "position": [ 240 | 1780, 241 | 820 242 | ], 243 | "id": "5c41daa4-d91c-474a-977e-ec3f6fb1b00b", 244 | "name": "Merge1" 245 | }, 246 | { 247 | "parameters": { 248 | "aggregate": "aggregateAllItemData", 249 | "options": {} 250 | }, 251 | "type": "n8n-nodes-base.aggregate", 252 | "typeVersion": 1, 253 | "position": [ 254 | 1560, 255 | 760 256 | ], 257 | "id": "10523c72-26ea-4b77-9e26-cb6354e6f694", 258 | "name": "Aggregate3" 259 | }, 260 | { 261 | "parameters": { 262 | "content": "# Input\n\n- Get link or notes from Telegram Bot\n- regex for tags, url, notes\n", 263 | "height": 480, 264 | "width": 440 265 | }, 266 | "type": "n8n-nodes-base.stickyNote", 267 | "typeVersion": 1, 268 | "position": [ 269 | 80, 270 | 460 271 | ], 272 | "id": "e45e23fe-1d96-420f-9b53-c3ba90f93a14", 273 | "name": "Sticky Note" 274 | }, 275 | { 276 | "parameters": { 277 | "content": "# Processing Data\n- if it has a url, scrape it with exaAI (currently some issue)\n- let AI Agent write Title, Summary, content idea, automation idea, quote\n- merge data from Input and AI Agent together", 278 | "height": 1100, 279 | "width": 1340, 280 | "color": 2 281 | }, 282 | "type": "n8n-nodes-base.stickyNote", 283 | "typeVersion": 1, 284 | "position": [ 285 | 560, 286 | 100 287 | ], 288 | "id": "4b973607-694b-4191-89ed-586399abcb41", 289 | "name": "Sticky Note1" 290 | }, 291 | { 292 | "parameters": { 293 | "content": "# Save\n- Save data to Airtable\n- or just use google sheets", 294 | "height": 640, 295 | "color": 3 296 | }, 297 | "type": "n8n-nodes-base.stickyNote", 298 | "typeVersion": 1, 299 | "position": [ 300 | 1920, 301 | 340 302 | ], 303 | "id": "fd015df5-cc88-420e-9e1d-eefb2fd63bbc", 304 | "name": "Sticky Note2" 305 | }, 306 | { 307 | "parameters": { 308 | "content": "# Notify\n- Send a Thumb up as answer on the input message, so you know that it worked", 309 | "height": 640 310 | }, 311 | "type": "n8n-nodes-base.stickyNote", 312 | "typeVersion": 1, 313 | "position": [ 314 | 2220, 315 | 340 316 | ], 317 | "id": "0b5e38d5-a87c-4dbf-8ef5-ffa6143de218", 318 | "name": "Sticky Note3" 319 | }, 320 | { 321 | "parameters": { 322 | "operation": "create", 323 | "base": { 324 | "__rl": true, 325 | "value": "appZibYq6NNCMXIvD", 326 | "mode": "list", 327 | "cachedResultName": "Results by Magic", 328 | "cachedResultUrl": "https://airtable.com/appZibYq6NNCMXIvD" 329 | }, 330 | "table": { 331 | "__rl": true, 332 | "value": "tblnPIHHxymbcKTJc", 333 | "mode": "list", 334 | "cachedResultName": "Links", 335 | "cachedResultUrl": "https://airtable.com/appZibYq6NNCMXIvD/tblnPIHHxymbcKTJc" 336 | }, 337 | "columns": { 338 | "mappingMode": "defineBelow", 339 | "value": { 340 | "Notes": "={{ $json.data[0].notes }}", 341 | "Url": "={{ $json.data[0].url }}", 342 | "Tags": "={{ $json.data[0].output.tags.append( $json.data[0].tags).join(', ') }}", 343 | "Name": "={{ $json.data[0].output.title }}", 344 | "Content Type": "={{ $json.data[0].output.content_type }}", 345 | "Quote": "={{ $json.data[0].output.quote }}", 346 | "Content Idea": "={{ $json.data[0].output.content_idea }}", 347 | "Automation Idea": "={{ $json.data[0].output.automation_idea }}", 348 | "Summary": "={{ $json.data[0].output.summary }}" 349 | }, 350 | "matchingColumns": [], 351 | "schema": [ 352 | { 353 | "id": "Name", 354 | "displayName": "Name", 355 | "required": false, 356 | "defaultMatch": false, 357 | "canBeUsedToMatch": true, 358 | "display": true, 359 | "type": "string", 360 | "readOnly": false, 361 | "removed": false 362 | }, 363 | { 364 | "id": "Notes", 365 | "displayName": "Notes", 366 | "required": false, 367 | "defaultMatch": false, 368 | "canBeUsedToMatch": true, 369 | "display": true, 370 | "type": "string", 371 | "readOnly": false, 372 | "removed": false 373 | }, 374 | { 375 | "id": "Url", 376 | "displayName": "Url", 377 | "required": false, 378 | "defaultMatch": false, 379 | "canBeUsedToMatch": true, 380 | "display": true, 381 | "type": "string", 382 | "readOnly": false, 383 | "removed": false 384 | }, 385 | { 386 | "id": "Attachment", 387 | "displayName": "Attachment", 388 | "required": false, 389 | "defaultMatch": false, 390 | "canBeUsedToMatch": true, 391 | "display": true, 392 | "type": "array", 393 | "readOnly": false, 394 | "removed": true 395 | }, 396 | { 397 | "id": "Created", 398 | "displayName": "Created", 399 | "required": false, 400 | "defaultMatch": false, 401 | "canBeUsedToMatch": true, 402 | "display": true, 403 | "type": "string", 404 | "readOnly": true, 405 | "removed": true 406 | }, 407 | { 408 | "id": "Tags", 409 | "displayName": "Tags", 410 | "required": false, 411 | "defaultMatch": false, 412 | "canBeUsedToMatch": true, 413 | "display": true, 414 | "type": "string", 415 | "readOnly": false, 416 | "removed": false 417 | }, 418 | { 419 | "id": "Content Type", 420 | "displayName": "Content Type", 421 | "required": false, 422 | "defaultMatch": false, 423 | "canBeUsedToMatch": true, 424 | "display": true, 425 | "type": "string", 426 | "readOnly": false, 427 | "removed": false 428 | }, 429 | { 430 | "id": "Quote", 431 | "displayName": "Quote", 432 | "required": false, 433 | "defaultMatch": false, 434 | "canBeUsedToMatch": true, 435 | "display": true, 436 | "type": "string", 437 | "readOnly": false, 438 | "removed": false 439 | }, 440 | { 441 | "id": "Content Idea", 442 | "displayName": "Content Idea", 443 | "required": false, 444 | "defaultMatch": false, 445 | "canBeUsedToMatch": true, 446 | "display": true, 447 | "type": "string", 448 | "readOnly": false, 449 | "removed": false 450 | }, 451 | { 452 | "id": "Automation Idea", 453 | "displayName": "Automation Idea", 454 | "required": false, 455 | "defaultMatch": false, 456 | "canBeUsedToMatch": true, 457 | "display": true, 458 | "type": "string", 459 | "readOnly": false, 460 | "removed": false 461 | }, 462 | { 463 | "id": "Summary", 464 | "displayName": "Summary", 465 | "required": false, 466 | "defaultMatch": false, 467 | "canBeUsedToMatch": true, 468 | "display": true, 469 | "type": "string", 470 | "readOnly": false, 471 | "removed": false 472 | } 473 | ], 474 | "attemptToConvertTypes": false, 475 | "convertFieldsToString": false 476 | }, 477 | "options": { 478 | "typecast": true 479 | } 480 | }, 481 | "type": "n8n-nodes-base.airtable", 482 | "typeVersion": 2.1, 483 | "position": [ 484 | 1980, 485 | 620 486 | ], 487 | "id": "db7b7cae-7b70-4309-8a76-28d599acd74e", 488 | "name": "Save data to Airtable", 489 | "credentials": { 490 | "airtableTokenApi": { 491 | "id": "nx8bCP26DBRqsiLs", 492 | "name": "Airtable Personal Access Token account" 493 | } 494 | } 495 | }, 496 | { 497 | "parameters": { 498 | "promptType": "define", 499 | "text": "=Content: {{ $json.results[0].text }}", 500 | "hasOutputParser": true, 501 | "options": { 502 | "systemMessage": "Here is an article text.\n\nPlease answer:\n1. Title in 1 line\n2. Short summary in 2–3 sentences\n3. 3–5 matching tags (single words only)\n4. Content type (blog, news, tutorial...)\n5. Best quote in the text\n6. A content idea I could make of it\n7. What automation idea comes from the content?\n\nAnswer structured as JSON." 503 | } 504 | }, 505 | "type": "@n8n/n8n-nodes-langchain.agent", 506 | "typeVersion": 1.8, 507 | "position": [ 508 | 1180, 509 | 320 510 | ], 511 | "id": "257ba4d8-676f-43f5-b0e1-cfc1c8c28682", 512 | "name": "Generate Info with url" 513 | }, 514 | { 515 | "parameters": { 516 | "promptType": "define", 517 | "text": "=Note: {{ $json.notes }}\n", 518 | "hasOutputParser": true, 519 | "options": { 520 | "systemMessage": "Here's a note.\n\nPlease answer:\n1. Title in 1 line\n2. Short summary in 2–3 sentences\n3. 3–5 matching tags (single words only)\n4. Content type (blog, news, tutorial...)\n5. Best quote in the text\n6. A content idea I could make of it\n7. What automation idea comes from the content?\n\nAnswer structured as JSON." 521 | } 522 | }, 523 | "type": "@n8n/n8n-nodes-langchain.agent", 524 | "typeVersion": 1.8, 525 | "position": [ 526 | 1200, 527 | 900 528 | ], 529 | "id": "36cfb0b9-c688-486e-9f4d-238ebe90ad53", 530 | "name": "Generate Info without url" 531 | }, 532 | { 533 | "parameters": { 534 | "content": "# Improvements\n- error solving and notifications, especially for reddit links, we could try another scraping method.\n", 535 | "width": 800, 536 | "color": 6 537 | }, 538 | "type": "n8n-nodes-base.stickyNote", 539 | "typeVersion": 1, 540 | "position": [ 541 | 140, 542 | -120 543 | ], 544 | "id": "e1ec9717-521d-4f4d-bbd4-6b1a0b0e66d0", 545 | "name": "Sticky Note4" 546 | } 547 | ], 548 | "pinData": {}, 549 | "connections": { 550 | "Telegram Trigger": { 551 | "main": [ 552 | [ 553 | { 554 | "node": "filter for tags, url, notes", 555 | "type": "main", 556 | "index": 0 557 | } 558 | ] 559 | ] 560 | }, 561 | "filter for tags, url, notes": { 562 | "main": [ 563 | [ 564 | { 565 | "node": "If url", 566 | "type": "main", 567 | "index": 0 568 | } 569 | ] 570 | ] 571 | }, 572 | "If url": { 573 | "main": [ 574 | [ 575 | { 576 | "node": "Aggregate1", 577 | "type": "main", 578 | "index": 0 579 | }, 580 | { 581 | "node": "exaAI scrape content from link", 582 | "type": "main", 583 | "index": 0 584 | } 585 | ], 586 | [ 587 | { 588 | "node": "Generate Info without url", 589 | "type": "main", 590 | "index": 0 591 | }, 592 | { 593 | "node": "Aggregate3", 594 | "type": "main", 595 | "index": 0 596 | } 597 | ] 598 | ] 599 | }, 600 | "exaAI scrape content from link": { 601 | "main": [ 602 | [ 603 | { 604 | "node": "Generate Info with url", 605 | "type": "main", 606 | "index": 0 607 | } 608 | ] 609 | ] 610 | }, 611 | "OpenAI Chat Model": { 612 | "ai_languageModel": [ 613 | [ 614 | { 615 | "node": "Generate Info with url", 616 | "type": "ai_languageModel", 617 | "index": 0 618 | }, 619 | { 620 | "node": "Generate Info without url", 621 | "type": "ai_languageModel", 622 | "index": 0 623 | } 624 | ] 625 | ] 626 | }, 627 | "Structured Output Parser": { 628 | "ai_outputParser": [ 629 | [ 630 | { 631 | "node": "Generate Info with url", 632 | "type": "ai_outputParser", 633 | "index": 0 634 | }, 635 | { 636 | "node": "Generate Info without url", 637 | "type": "ai_outputParser", 638 | "index": 0 639 | } 640 | ] 641 | ] 642 | }, 643 | "Aggregate": { 644 | "main": [ 645 | [ 646 | { 647 | "node": "Merge", 648 | "type": "main", 649 | "index": 0 650 | } 651 | ] 652 | ] 653 | }, 654 | "Aggregate1": { 655 | "main": [ 656 | [ 657 | { 658 | "node": "Merge", 659 | "type": "main", 660 | "index": 1 661 | } 662 | ] 663 | ] 664 | }, 665 | "Aggregate2": { 666 | "main": [ 667 | [ 668 | { 669 | "node": "Merge1", 670 | "type": "main", 671 | "index": 1 672 | } 673 | ] 674 | ] 675 | }, 676 | "Aggregate3": { 677 | "main": [ 678 | [ 679 | { 680 | "node": "Merge1", 681 | "type": "main", 682 | "index": 0 683 | } 684 | ] 685 | ] 686 | }, 687 | "Merge": { 688 | "main": [ 689 | [ 690 | { 691 | "node": "Save data to Airtable", 692 | "type": "main", 693 | "index": 0 694 | } 695 | ] 696 | ] 697 | }, 698 | "Merge1": { 699 | "main": [ 700 | [ 701 | { 702 | "node": "Save data to Airtable", 703 | "type": "main", 704 | "index": 0 705 | } 706 | ] 707 | ] 708 | }, 709 | "Save data to Airtable": { 710 | "main": [ 711 | [ 712 | { 713 | "node": "Answer on Message", 714 | "type": "main", 715 | "index": 0 716 | } 717 | ] 718 | ] 719 | }, 720 | "Generate Info with url": { 721 | "main": [ 722 | [ 723 | { 724 | "node": "Aggregate", 725 | "type": "main", 726 | "index": 0 727 | } 728 | ] 729 | ] 730 | }, 731 | "Generate Info without url": { 732 | "main": [ 733 | [ 734 | { 735 | "node": "Aggregate2", 736 | "type": "main", 737 | "index": 0 738 | } 739 | ] 740 | ] 741 | } 742 | }, 743 | "active": true, 744 | "settings": { 745 | "executionOrder": "v1" 746 | }, 747 | "versionId": "3736171a-1a09-4015-8b32-e3bbe409b7ad", 748 | "meta": { 749 | "templateCredsSetupCompleted": true, 750 | "instanceId": "dcb7e9805ce8fe33e4ef843b02947aacc9de2ca8e3594435f3a36d9f33df54fc" 751 | }, 752 | "id": "7dEfZgwuXMtvZ4xc", 753 | "tags": [ 754 | { 755 | "createdAt": "2025-04-14T11:05:17.062Z", 756 | "updatedAt": "2025-04-14T11:05:17.062Z", 757 | "id": "SRzFKUr6fVtmWq2d", 758 | "name": "works" 759 | }, 760 | { 761 | "createdAt": "2025-04-15T19:44:22.741Z", 762 | "updatedAt": "2025-04-15T19:44:22.741Z", 763 | "id": "uwptq6flpj7qr09N", 764 | "name": "share" 765 | } 766 | ] 767 | } -------------------------------------------------------------------------------- /Link Capture System/README.md: -------------------------------------------------------------------------------- 1 | # Link Capture System 2 | 3 | An n8n workflow that captures links from Telegram messages, processes them using AI to extract valuable information, and stores the results in Airtable. 4 | 5 | ## Overview 6 | 7 | This workflow helps you capture, analyze, and organize links and notes shared through a Telegram bot. It extracts meaningful information such as title, summary, quotes, content ideas, and automation ideas from the shared content. 8 | 9 | ## Features 10 | 11 | - Capture URLs, notes, and hashtags from Telegram messages 12 | - Extract content from URLs using exaAI (with special handling for Reddit links) 13 | - Process content using AI to identify: 14 | - Title 15 | - Summary 16 | - Tags 17 | - Content type 18 | - Notable quotes 19 | - Content ideas 20 | - Automation ideas 21 | - Store all information in Airtable 22 | - Send a confirmation message back to the user with key insights 23 | 24 | ## How It Works 25 | 26 | 1. A message is received by the Telegram bot 27 | 2. The system extracts URLs, hashtags, and notes 28 | 3. If a URL is present, it's scraped using exaAI 29 | 4. The content (from URL or notes) is analyzed by AI 30 | 5. Results are saved to Airtable 31 | 6. A summary is sent back to the user 32 | 33 | ## Workflow Diagram 34 | 35 | ```mermaid 36 | flowchart TD 37 | A[Telegram Trigger] --> B[Extract URL, Tags, Notes] 38 | B --> C{Has URL? OR NOT Reddit} 39 | C -->|Yes| D[Scrape URL with exaAI] 40 | C -->|No| E[Process Notes with AI] 41 | D --> F[Generate Info from URL] 42 | E --> G[Generate Info from Notes] 43 | F --> H[Aggregate Data] 44 | G --> I[Aggregate Data] 45 | H --> J[Save to Airtable] 46 | I --> J 47 | J --> K[Send Confirmation to User] 48 | ``` 49 | 50 | ## Components 51 | 52 | ### Input 53 | 54 | - **Telegram Trigger**: Listens for messages from users 55 | - **Code Node**: Extracts URLs, tags, and notes from messages 56 | 57 | ### Processing 58 | 59 | - **exaAI**: Scrapes content from URLs 60 | - **OpenAI Chat Model**: Processes content to extract information 61 | - **Structured Output Parser**: Formats AI responses into structured data 62 | 63 | ### Storage 64 | 65 | - **Airtable**: Stores all processed information in a structured database 66 | 67 | ### Notification 68 | 69 | - **Telegram Bot**: Replies to the user with a summary of the extracted information 70 | 71 | ## Limitations & Improvements 72 | 73 | - Reddit links currently have some processing issues 74 | - Error handling could be improved 75 | - Alternative scraping methods could be implemented for problematic sites 76 | 77 | ## Usage 78 | 79 | 1. Send a link or note to the Telegram bot 80 | 2. Optionally include hashtags for tagging 81 | 3. Wait for the bot to process and respond 82 | 4. Check Airtable for the stored information 83 | 84 | ## Airtable Schema 85 | 86 | | Column Name | Type | 87 | | --------------- | ----------- | 88 | | Name | Single Text | 89 | | Notes | Long Text | 90 | | URL | url | 91 | | Tags | Single Text | 92 | | Created | ISO Date | 93 | | Content Type | Single Text | 94 | | Quote | Single Text | 95 | | Content Idea | Long Text | 96 | | Automation Idea | Long Text | 97 | | Summary | Long Text | 98 | 99 | ## Getting Started with n8n 100 | 101 | If you're new to n8n, you can sign up and test this workflow directly: 102 | [Get started with n8n](https://n8n.partnerlinks.io/d25fz3175b1l) 103 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # n8n Workflows 2 | 3 | This repository contains n8n workflows for automating various tasks. 4 | 5 | ## Structure 6 | 7 | - Each workflow is stored in its own directory 8 | - Workflows are named descriptively 9 | - Configuration files are stored in the root directory 10 | 11 | ## Usage 12 | 13 | Import workflows into your n8n instance. 14 | 15 | ## Available Workflows 16 | 17 | - [Link Capture System](Link%20Capture%20System/README.md) - Captures links from Telegram messages, processes them using AI, and stores results in Airtable. 18 | - [Video to Text](Video%20to%20Text/README.md) - Transcribes MP4 videos from Google Drive using ElevenLabs' speech-to-text API. 19 | - [AI Powered SEO Keyword Research Automation](AI-Powered%20SEO%20Keyword%20Research%20Automation/README.md) - Automates comprehensive keyword research using AI and data-driven analytics, combining OpenAI with DataForSEO for content strategy generation. 20 | 21 | --- 22 | 23 | ## Getting Started with n8n 24 | 25 | If you're new to n8n, you can sign up and test this workflow directly: 26 | [Sign up for n8n](https://n8n.partnerlinks.io/d25fz3175b1l) 27 | 28 | --- 29 | 30 | ## License 31 | 32 | MIT License 33 | 34 | Copyright (c) 2024 35 | 36 | Permission is hereby granted, free of charge, to any person obtaining a copy 37 | of this software and associated documentation files (the "Software"), to deal 38 | in the Software without restriction, including without limitation the rights 39 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 40 | copies of the Software, and to permit persons to whom the Software is 41 | furnished to do so, subject to the following conditions: 42 | 43 | The above copyright notice and this permission notice shall be included in all 44 | copies or substantial portions of the Software. 45 | 46 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 47 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 48 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 49 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 50 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 51 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 52 | SOFTWARE. 53 | -------------------------------------------------------------------------------- /Video to Text/README.md: -------------------------------------------------------------------------------- 1 | # Video to Text with ElevenLabs 2 | 3 | This n8n workflow automatically transcribes MP4 videos from Google Drive using ElevenLabs' speech-to-text API and saves the transcriptions as Google Docs. 4 | 5 | ## Prerequisites 6 | 7 | - n8n instance 8 | - Google Drive account credentials 9 | - Google Docs account credentials 10 | - ElevenLabs API key 11 | 12 | ## Setup 13 | 14 | 1. Import the workflow JSON file into n8n 15 | 2. Configure credentials: 16 | - Connect Google Drive account 17 | - Connect Google Docs account 18 | - Create an ElevenLabs API key credential 19 | 3. In the "Find mp4 file IDs" node, replace 'PARENT FOLDER ID' with your actual Google Drive folder ID containing the videos 20 | 4. Optionally, adjust the folder ID in the "Create File" node where transcripts will be stored 21 | 22 | ## How It Works 23 | 24 | 1. **Trigger**: Workflow starts manually when clicking "Test workflow" 25 | 2. **Find Videos**: Searches for MP4 files in the specified Google Drive folder (limited to 10 files) 26 | 3. **Download**: Downloads each MP4 file 27 | 4. **Transcribe**: Sends the video to ElevenLabs API for transcription 28 | 5. **Create Document**: Creates a new Google Doc with naming format "Transcript-[filename]" 29 | 6. **Write Content**: Inserts the transcription text into the Google Doc 30 | 31 | ## Workflow Diagram 32 | 33 | ```mermaid 34 | graph TD 35 | A[When clicking 'Test workflow'] --> B[Find mp4 file IDs] 36 | B --> C[Download mp4] 37 | C --> D[Create Transcript] 38 | D --> E[Create File] 39 | E --> F[Write File] 40 | 41 | style A fill:#f9f,stroke:#333,stroke-width:2px 42 | style D fill:#bbf,stroke:#333,stroke-width:2px 43 | style F fill:#bfb,stroke:#333,stroke-width:2px 44 | ``` 45 | 46 | ## Notes 47 | 48 | - Files are processed sequentially 49 | - Transcription quality depends on ElevenLabs' speech recognition capabilities 50 | - The document title automatically removes the .mp4 extension from the original filename 51 | 52 | ## Getting Started with n8n 53 | 54 | If you're new to n8n, you can sign up and test this workflow directly: 55 | [Get started with n8n](https://n8n.partnerlinks.io/d25fz3175b1l) 56 | -------------------------------------------------------------------------------- /Video to Text/Video_to_text_w_ElevenLabs.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Video to text w/ ElevenLabs", 3 | "nodes": [ 4 | { 5 | "parameters": {}, 6 | "id": "6c2ae686-1487-44ae-bb3b-1a3c64072ee2", 7 | "name": "When clicking ‘Test workflow’", 8 | "type": "n8n-nodes-base.manualTrigger", 9 | "position": [ 10 | 380, 11 | 240 12 | ], 13 | "typeVersion": 1 14 | }, 15 | { 16 | "parameters": { 17 | "method": "POST", 18 | "url": "https://api.elevenlabs.io/v1/speech-to-text", 19 | "authentication": "genericCredentialType", 20 | "genericAuthType": "httpCustomAuth", 21 | "sendBody": true, 22 | "contentType": "multipart-form-data", 23 | "bodyParameters": { 24 | "parameters": [ 25 | { 26 | "parameterType": "formBinaryData", 27 | "name": "file", 28 | "inputDataFieldName": "data" 29 | }, 30 | { 31 | "name": "model_id", 32 | "value": "scribe_v1" 33 | } 34 | ] 35 | }, 36 | "options": {} 37 | }, 38 | "id": "99f2b5ea-32bf-4ca3-946f-e3bfc1ca3b90", 39 | "name": "Create Transcript", 40 | "type": "n8n-nodes-base.httpRequest", 41 | "position": [ 42 | 1040, 43 | 240 44 | ], 45 | "typeVersion": 4.2, 46 | "credentials": { 47 | "httpCustomAuth": { 48 | "id": "3ylJeVur9fG6IeIg", 49 | "name": "ElevenLabs" 50 | } 51 | } 52 | }, 53 | { 54 | "parameters": { 55 | "resource": "fileFolder", 56 | "searchMethod": "query", 57 | "queryString": "'PARENT FOLDER ID' in parents and mimeType='video/mp4' and trashed=false", 58 | "limit": 10, 59 | "filter": {}, 60 | "options": {} 61 | }, 62 | "type": "n8n-nodes-base.googleDrive", 63 | "typeVersion": 3, 64 | "position": [ 65 | 600, 66 | 240 67 | ], 68 | "id": "0330576c-9146-40cc-8eb9-ca79ae7ef95d", 69 | "name": "Find mp4 file IDs", 70 | "credentials": { 71 | "googleDriveOAuth2Api": { 72 | "id": "WXa7ptRSm4cclZ8Q", 73 | "name": "Google Drive account" 74 | } 75 | } 76 | }, 77 | { 78 | "parameters": { 79 | "operation": "download", 80 | "fileId": { 81 | "__rl": true, 82 | "value": "={{ $json.id }}", 83 | "mode": "id" 84 | }, 85 | "options": {} 86 | }, 87 | "type": "n8n-nodes-base.googleDrive", 88 | "typeVersion": 3, 89 | "position": [ 90 | 820, 91 | 240 92 | ], 93 | "id": "5900bd56-a66b-4200-8e10-6dfc706d019f", 94 | "name": "Download mp4", 95 | "credentials": { 96 | "googleDriveOAuth2Api": { 97 | "id": "WXa7ptRSm4cclZ8Q", 98 | "name": "Google Drive account" 99 | } 100 | } 101 | }, 102 | { 103 | "parameters": { 104 | "folderId": "1OHvaG1haFilzynMyMCjK0nP7akNLl5ET", 105 | "title": "=Transcript-{{ $('Download mp4').item.json.name.replaceAll('.mp4','') }}" 106 | }, 107 | "type": "n8n-nodes-base.googleDocs", 108 | "typeVersion": 2, 109 | "position": [ 110 | 1260, 111 | 240 112 | ], 113 | "id": "a61eabc2-af16-43df-93e8-0dce03b0e124", 114 | "name": "Create File", 115 | "credentials": { 116 | "googleDocsOAuth2Api": { 117 | "id": "WkxEMoxYVubGbmAv", 118 | "name": "Google Docs account" 119 | } 120 | } 121 | }, 122 | { 123 | "parameters": { 124 | "operation": "update", 125 | "documentURL": "={{ $json.id }}", 126 | "actionsUi": { 127 | "actionFields": [ 128 | { 129 | "action": "insert", 130 | "text": "={{ $('Create Transcript').item.json.text }}" 131 | } 132 | ] 133 | } 134 | }, 135 | "type": "n8n-nodes-base.googleDocs", 136 | "typeVersion": 2, 137 | "position": [ 138 | 1480, 139 | 240 140 | ], 141 | "id": "4df6f6ca-7ec2-4b88-8833-cc86152898b8", 142 | "name": "Write File", 143 | "credentials": { 144 | "googleDocsOAuth2Api": { 145 | "id": "WkxEMoxYVubGbmAv", 146 | "name": "Google Docs account" 147 | } 148 | } 149 | }, 150 | { 151 | "parameters": { 152 | "content": "## Credentials\n\nConnect google drive and create an ElevenLabs API-Key.\n\n## Node - Find mp4 file IDs\n\nIn the node “Find mp4 file IDs” insert the query string\n`'FOLDER ID' in parents and mimeType='video/mp4' and trashed=false`\n\nInsert the FOLDER ID of the parent folder where all video files are located.\n\nIt will then grab all files (limit 10) and will go on with the workflow.\n\n", 153 | "height": 360, 154 | "width": 620 155 | }, 156 | "type": "n8n-nodes-base.stickyNote", 157 | "position": [ 158 | 360, 159 | -180 160 | ], 161 | "typeVersion": 1, 162 | "id": "56184d70-7df1-41c1-9d8c-3e3ef00ad284", 163 | "name": "Sticky Note" 164 | } 165 | ], 166 | "pinData": {}, 167 | "connections": { 168 | "When clicking ‘Test workflow’": { 169 | "main": [ 170 | [ 171 | { 172 | "node": "Find mp4 file IDs", 173 | "type": "main", 174 | "index": 0 175 | } 176 | ] 177 | ] 178 | }, 179 | "Find mp4 file IDs": { 180 | "main": [ 181 | [ 182 | { 183 | "node": "Download mp4", 184 | "type": "main", 185 | "index": 0 186 | } 187 | ] 188 | ] 189 | }, 190 | "Download mp4": { 191 | "main": [ 192 | [ 193 | { 194 | "node": "Create Transcript", 195 | "type": "main", 196 | "index": 0 197 | } 198 | ] 199 | ] 200 | }, 201 | "Create Transcript": { 202 | "main": [ 203 | [ 204 | { 205 | "node": "Create File", 206 | "type": "main", 207 | "index": 0 208 | } 209 | ] 210 | ] 211 | }, 212 | "Create File": { 213 | "main": [ 214 | [ 215 | { 216 | "node": "Write File", 217 | "type": "main", 218 | "index": 0 219 | } 220 | ] 221 | ] 222 | } 223 | }, 224 | "active": false, 225 | "settings": { 226 | "executionOrder": "v1" 227 | }, 228 | "versionId": "519c6ae1-0bf3-465d-9d6c-0ac267822d3e", 229 | "meta": { 230 | "templateId": "3105", 231 | "templateCredsSetupCompleted": true, 232 | "instanceId": "dcb7e9805ce8fe33e4ef843b02947aacc9de2ca8e3594435f3a36d9f33df54fc" 233 | }, 234 | "id": "zKRS69IbqjDF6S5w", 235 | "tags": [ 236 | { 237 | "createdAt": "2025-04-15T19:44:22.741Z", 238 | "updatedAt": "2025-04-15T19:44:22.741Z", 239 | "id": "uwptq6flpj7qr09N", 240 | "name": "share" 241 | } 242 | ] 243 | } --------------------------------------------------------------------------------