AutomationFlowsAI & RAG › Multi-agent SEO Optimized Blog Writing System with Hyperlinks for E-commmerce

Multi-agent SEO Optimized Blog Writing System with Hyperlinks for E-commmerce

ByGloria @gloria on n8n.io

What if AI didn't just write content—but actually thought about how to write it? This n8n workflow revolutionizes content creation by deploying multiple specialized AI agents that handle every aspect of blog writing—from research to publication-ready posts.

Webhook trigger★★★★★ complexityAI-powered75 nodesTool Http RequestAnthropic ChatAirtableAgentOpenAI ChatGoogle DriveGoogle DocsOpenAI
AI & RAG Trigger: Webhook Nodes: 75 Complexity: ★★★★★ AI nodes: yes Added:

This workflow corresponds to n8n.io template #8654 — we link there as the canonical source.

This workflow follows the Agent → Airtable recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "6BWdxf2GdoYg7sSo",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Blog Writing",
  "tags": [
    {
      "id": "AZvUGDdqsfK0AaPB",
      "name": "Content Creation",
      "createdAt": "2025-09-09T14:22:23.903Z",
      "updatedAt": "2025-09-09T14:22:23.903Z"
    }
  ],
  "nodes": [
    {
      "id": "64d82138-6bde-4519-b624-a827c26185c5",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        528,
        -144
      ],
      "parameters": {
        "color": 3,
        "width": 420,
        "content": "## Good Opportunity for Human in the loop\nCreate 5 titles and have the human pick one."
      },
      "typeVersion": 1
    },
    {
      "id": "8e85775d-6d22-435a-9415-0e0eb2d1f1ff",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -1456,
        -112
      ],
      "parameters": {
        "path": "9c054bb1-4446-4502-be98-ffd3c8ca1f2d",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 2
    },
    {
      "id": "092dd840-5261-4d34-9759-8b49612ee350",
      "name": "Tavily search results",
      "type": "@n8n/n8n-nodes-langchain.toolHttpRequest",
      "position": [
        160,
        560
      ],
      "parameters": {
        "url": "https://api.tavily.com/search",
        "method": "POST",
        "sendBody": true,
        "authentication": "genericCredentialType",
        "parametersBody": {
          "values": [
            {
              "name": "api_key",
              "value": "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",
              "valueProvider": "fieldValue"
            },
            {
              "name": "query",
              "value": "={{ $json.Keyword }}",
              "valueProvider": "fieldValue"
            }
          ]
        },
        "genericAuthType": "httpHeaderAuth",
        "toolDescription": "Tavily SERP Results Tool"
      },
      "credentials": {
        "httpBasicAuth": {
          "name": "<your credential>"
        },
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "7ccfc896-4bdb-4fa4-899f-75a08e755c87",
      "name": "Anthropic Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "position": [
        -48,
        560
      ],
      "parameters": {
        "model": "claude-3-5-sonnet-20241022",
        "options": {}
      },
      "credentials": {
        "anthropicApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "f4d5e013-191f-4811-8b05-6681cf5674d9",
      "name": "Airtable Get Article Data",
      "type": "n8n-nodes-base.airtable",
      "position": [
        -1072,
        -112
      ],
      "parameters": {
        "id": "={{ $('Webhook').item.json.body.recordID }}",
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "apprrQ0Dv1cJOfMi9",
          "cachedResultUrl": "https://airtable.com/apprrQ0Dv1cJOfMi9",
          "cachedResultName": "KW Research The Bucket Hat"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblVTpv8JG5lZRiF2",
          "cachedResultUrl": "https://airtable.com/apprrQ0Dv1cJOfMi9/tblVTpv8JG5lZRiF2",
          "cachedResultName": "Article Writer"
        },
        "options": {}
      },
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "bec7f1dd-048f-4db5-bec3-d25abafa8038",
      "name": "Set Airtable Fields for Agents",
      "type": "n8n-nodes-base.set",
      "position": [
        -224,
        336
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "3cc01dbf-7718-49ae-a463-c0e848a78cc6",
              "name": "id",
              "type": "string",
              "value": "={{ $('Airtable Get Article Data').item.json.id }}"
            },
            {
              "id": "7dbd7d60-2454-47ee-b02a-3ffddd588009",
              "name": "Title",
              "type": "string",
              "value": "={{ $('Airtable Get Article Data').item.json.Title }}"
            },
            {
              "id": "bf205dfc-ce10-40fe-b868-0bebd4de3d33",
              "name": "Description",
              "type": "string",
              "value": "={{ $('Airtable Get Article Data').item.json.Description }}"
            },
            {
              "id": "ccce37af-f230-4d5d-bf74-9e69d965be08",
              "name": "Keyword",
              "type": "string",
              "value": "={{ $('Airtable Get Article Data').item.json.Keyword }}"
            },
            {
              "id": "88bcf3a6-b18b-4b66-85ca-170b32202cfa",
              "name": "URL list",
              "type": "string",
              "value": "={{ $json[\"best matching urls\"] }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "edb677d2-72f2-4541-abe9-4028a8dcf3f2",
      "name": "Set KWs and Insights fields",
      "type": "n8n-nodes-base.set",
      "position": [
        480,
        336
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "7e444c83-3d2b-4bd3-a23b-6fb5ca68e670",
              "name": "writing_style",
              "type": "string",
              "value": "={{ $json.writing_style }}"
            },
            {
              "id": "e16b5d65-587d-49d8-af5d-4ff1930633a8",
              "name": "writing_tone",
              "type": "string",
              "value": "={{ $json.writing_tone }}"
            },
            {
              "id": "ab756373-0186-454a-8e98-d5a5f96cba87",
              "name": "search_intent",
              "type": "string",
              "value": "={{ $json.search_intent }}"
            },
            {
              "id": "a14b7657-038a-4b08-911d-314336261a0c",
              "name": "hidden_insight",
              "type": "string",
              "value": "={{ $json.hidden_insight }}"
            },
            {
              "id": "19ef4221-5a5d-4321-8a07-4e04f5dcaf44",
              "name": "target_audience",
              "type": "string",
              "value": "={{ $json.target_audience }}"
            },
            {
              "id": "0ab17e84-4a2e-4df3-b0a3-91e9ce26cb72",
              "name": "article_goal",
              "type": "string",
              "value": "={{ $json.goal_of_article }}"
            },
            {
              "id": "84e7f6a4-48b2-43b2-92cc-7e0337311661",
              "name": "semantic_analysis",
              "type": "string",
              "value": "={{ $json.semantic_analysis }}"
            },
            {
              "id": "5e943a46-bb03-438d-b6da-2a6ec414f5af",
              "name": "keywords",
              "type": "string",
              "value": "={{ $json.keywords }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "6a88a634-5150-4984-b70e-f05ac727cff2",
      "name": "Refine the Title",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        848,
        336
      ],
      "parameters": {
        "text": "=Revise the blog post title. Consider:\nPrimary Keyword: {{ $('Set Airtable Fields for Agents').item.json.Keyword }}\nWorking title: {{ $('Set Airtable Fields for Agents').item.json.Title }}\nSearch intent: {{ $('Set KWs and Insights fields').item.json.search_intent }}\nSemantic analysis: {{ $('Set KWs and Insights fields').item.json.semantic_analysis }}\nSecondary keywords: {{ $('Set KWs and Insights fields').item.json.keywords }}\nWriting style: {{ $('Set KWs and Insights fields').item.json.writing_style }}\nWriting tone: {{ $('Set KWs and Insights fields').item.json.writing_tone }}\nArticle goal: {{ $('Set KWs and Insights fields').item.json.article_goal }}\n\n\nOutput only JSON\nIMPORTANT: Do not add extra spaces, extra characters or include any additional text.\n",
        "options": {
          "systemMessage": "You are an expert in crafting highly engaging, SEO-optimized article titles that drive clicks and rank well in search engines like Google. Write in Dutch.\n\nYour goal is to refine the **initial working title** into a **clear, compelling, and search-friendly title** that aligns with:\n- **Primary and Secondary Keywords** \u2192 Ensure relevance for search engines.\n- **Search Intent** \u2192 Match the intent behind the keyword (informational, transactional, navigational, or commercial).\n- **Common Subtopics & Related Questions** \u2192 Reflect what users want to learn.\n- **Writing Style & Tone** \u2192 Ensure consistency with the article's voice.\n- **Click-Worthiness** \u2192 Make the title engaging and appealing for readers.\n\n### **Your Task:**\n1. **Analyze the given input data**, including the working title, primary keyword, and supporting data.\n2. **Refine the title** to be more **SEO-friendly, engaging, and aligned with search intent**.\n3. **Incorporate relevant keywords naturally**, without keyword stuffing.\n4. **Ensure clarity and readability**\u2014avoid overly complex or vague titles.\n5. **Return only the final refined title as a plain text string.**\n\n---\n### **Title Guidelines:**\n- Keep it **between 50-60 characters** (ideal for SEO).\n- Use **power words** or numbers when appropriate (e.g., \"10 Proven Ways,\" \"Ultimate Guide\").\n- Avoid unnecessary words or fluff.\n- Ensure it **reads naturally** and **appeals to human curiosity**.\n\n---\n### **Example Inputs & Outputs:**\n\n#### **Example 1**\n**Working Title:** \"Hoe draag je een Bucket Hat ?\"  \n**Primary Keyword:** \"Hoe draag je een bucket hat\"  \n**Search Intent:** Informational  \n**Refined Title Output:** **Hoe draag je een Bucket Hat ? Z\u00f3 draag je de bucket hat**\n\n---\n#### **Example 2**\n**Working Title:** \"Vissershoedjes zijn trendy\"  \n**Primary Keyword:** \"zijn vissershoedjes trendy?\"  \n**Search Intent:** Commercial  \n**Refined Title Output:** **6 Redenen Waarom Vissershoedjes Een Must-Have Zijn**\n\n---\n### **Output Format:**\nReturn only the value of \"refined_title\" as plain text. Do not include JSON, quotes, braces, or any other formatting. Output the title exactly as a string.\n\n"
        },
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "b6c3afbe-d5f9-4d23-940a-6c6178f5daa2",
      "name": "Set Key Takeaways",
      "type": "n8n-nodes-base.set",
      "position": [
        2048,
        336
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "eafbe44d-f811-4660-9f89-0ebe61febdcc",
              "name": "key_takeaways",
              "type": "string",
              "value": "={{ $json.output }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "8b3829ff-e406-490e-9a0c-4a68b437f792",
      "name": "Key Takeaways AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1648,
        336
      ],
      "parameters": {
        "text": "=Create Key Takeaways using:\n\n- **Title**: {{ $('Sets New Title Field').item.json.new_title }}\nPrimary Keyword: {{ $('Set Airtable Fields for Agents').item.json.Keyword }}\nTitle: {{ $('Set Airtable Fields for Agents').item.json.Title }}\nHidden Insight: {{ $json.fields['Hidden Insight'] }}\nSearch intent: {{ $('Set KWs and Insights fields').item.json.search_intent }}\nSemantic analysis: {{ $('Set KWs and Insights fields').item.json.semantic_analysis }}\nSecondary keywords: {{ $('Set KWs and Insights fields').item.json.keywords }}\nWriting style: {{ $('Set KWs and Insights fields').item.json.writing_style }}\nWriting tone: {{ $('Set KWs and Insights fields').item.json.writing_tone }}\nArticle goal: {{ $('Set KWs and Insights fields').item.json.article_goal }}\n\n\n\n\n",
        "options": {
          "systemMessage": "You are an expert content strategist specializing in crafting structured, insightful, and engaging **key takeaways** for articles. Your goal is to summarize the most important information while ensuring the takeaways are **concise, impactful, and easy to digest**. Write in Dutch.\n\n### **Your Task:**\n1. **Generate an introductory paragraph** that sets up the key takeaways and provides context for the reader.\n2. **Extract the most valuable takeaways** from the provided data:\n   - **Key concepts** covered in the article.\n   - **Relevant semantic subtopics** that align with the topic.\n   - **Hidden insights** (if applicable) that add unique value.\n3. **Format each takeaway in markdown** as:\n[Action-driven bolded heading]: Concise explanation inline.\n- The **bolded heading** should be **engaging and impactful** (not generic).  \n- The **explanation should be concise and inline with the heading**.  \n- **No section headers, extra spaces, or dividers**.  \n4. **Ensure takeaways provide substantial knowledge** but are not overwhelming:\n- If the **hidden insight** adds value, incorporate it as a **dedicated takeaway** or **enhance an existing one**.\n- If the **hidden insight does not fit naturally**, exclude it.\n5. **Write an outro paragraph** that smoothly leads into the main body of the article.\n\n### **Formatting & Style Guidelines**\n\u2705 Write the blog text in clean HTML format, ready to paste into Shopify. \n- Use <h2> for main sections and <h3> for subsections, <p> for paragraphs, <strong> for bold text, <ul><li> for lists. \n- Add <a href=\"URL\">anchor text</a> links naturally inside the text whenever a product or collection is mentioned. \n- Anchor text should match the product or collection name. \n- Use only the URLs provided; do not invent new URLs. \n- Do not use Markdown (##, **, -) or raw line breaks (\\n). \n- Make sure all paragraphs are wrapped in <p> tags, headings in <h2> or <h3>, lists in <ul><li>, and bold text in <strong>. \n- Output clean, valid, minimal HTML, ready to paste into Shopify.\n\n\u2705 **Use bold H2 for main sections, H3 for subsections and make important keywords bold**  \n\u2705 **Bullet points with inline bolded headings**  \n\u2705 **No extra section headers, dividers, or spaces**  \n\u2705 **Use engaging, action-driven takeaway headers** (e.g., \"Beyond fixed rules: AI adapts in real time\" instead of \"A paradigm shift from traditional automation\")  \n\u2705 **Ensure takeaways are concise yet informative**  \n\u2705 The whole blog post will be at least 2900 words and maximum 3500 words.\n\n\n### **Example Inputs & Outputs**\n---\n#### **Input Example**\n**Article Title:** `\"AI Automation for Small Businesses: How to Save Time & Boost Revenue\"`  \n**Primary Keyword:** `\"AI automation for small businesses\"`  \n**Hidden Insight:** `\"Most AI automation content focuses on efficiency, but a major benefit is reducing decision fatigue.\"`  \n**Common Subtopics:** `[\"What is AI automation?\", \"How small businesses can use AI\", \"Best AI tools for automation\"]`\n\n---\n#### **Output Example**\n```markdown\nAI automation is transforming small businesses by optimizing workflows, improving efficiency, and enhancing decision-making. Below are the key takeaways highlighting its potential.\n\n- **AI enables true autonomy through adaptive learning:** Unlike traditional systems, AI learns and evolves over time, reducing human supervision by refining its decision-making processes independently.  \n- **Beyond fixed rules: AI adapts in real time:** Traditional AI follows static rules, whereas AI-driven automation dynamically adjusts to changing environments, solving complex, unsupervised tasks.  \n- **AI agents optimize complex workflows effortlessly:** These intelligent systems manage intricate processes with greater efficiency, improving operations like customer support, supply chain management, and fraud detection.  \n- **Seamless integration into business operations:** AI integrates with existing systems like CRMs and ERP platforms, allowing businesses to modernize workflows without overhauling infrastructure.  \n- **Scalability without added complexity:** AI systems manage process complexity and expand capabilities, enabling businesses to scale efficiently without requiring proportional increases in resources.  \n- **AI minimizes decision fatigue, maximizing human focus:** By handling routine and complex decisions autonomously, AI reduces cognitive load on human teams, allowing them to focus on high-value tasks.  \n- **AI ensures resilience through continuous optimization:** Through machine learning, AI refines its models over time, ensuring consistent performance even in dynamic and unpredictable environments.  \n- **AI innovation transforming industries:** Sectors like manufacturing, healthcare, and finance leverage AI for predictive maintenance, personalized care, and risk assessment.  \n\nAI-driven automation offers a new frontier for workflow innovation by replacing static rule-based automation with intelligent, adaptive systems. In the sections ahead, we\u2019ll explore its core components, industry applications, and strategies for seamless business integration.\n\nOutput Format:\nReturn the final takeaways in HTML format and in dutch, structured as:\n\nIntro paragraph\nBullet points with inline bolded headings and concise explanations\nOutro paragraph\n\n"
        },
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "5d86e162-c089-4cc4-a579-485de98427c7",
      "name": "Set Introduction Field",
      "type": "n8n-nodes-base.set",
      "position": [
        2608,
        336
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "fe43bcff-a163-4cac-aca8-cf97241b834b",
              "name": "introduction",
              "type": "string",
              "value": "={{ $json.output }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "34620bee-5aff-4507-9c3f-ae6e2622c4ec",
      "name": "Outline Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -1120,
        912
      ],
      "parameters": {
        "text": "=Generate a detailed outline for a blog postof 3000 - 3500 words with the following details:\n\n- **Title**: {{ $('Sets New Title Field').item.json.new_title }}\n- **Key Takeaways**: {{ $('Set Key Takeaways').item.json.key_takeaways }}\n- **Introduction**: {{ $json.introduction }}\nPrimary Keyword: {{ $('Set Airtable Fields for Agents').item.json.Keyword }}\nTitle: {{ $('Set Airtable Fields for Agents').item.json.Title }}\nSearch intent: {{ $('Set KWs and Insights fields').item.json.search_intent }}\nSemantic analysis: {{ $('Set KWs and Insights fields').item.json.semantic_analysis }}\nSecondary keywords: {{ $('Set KWs and Insights fields').item.json.keywords }}\nWriting style: {{ $('Set KWs and Insights fields').item.json.writing_style }}\nWriting tone: {{ $('Set KWs and Insights fields').item.json.writing_tone }}\nArticle goal: {{ $('Set KWs and Insights fields').item.json.article_goal }}\nURL List for hyperlinks: {{ $('Set best urls').item.json[\"best matching urls\"] }}\n\nFormatting Instructions:\n\nOutput must be in Markdown format and structured correctly.\nDo NOT add any commentary, explanations, or extra text about what the agent did.\nDo NOT include dividers (---), line breaks (\\n), or unnecessary whitespace.\nOnly return the required Markdown content\u2014nothing more.\n",
        "options": {
          "systemMessage": "You are an expert content strategist specializing in structuring articles for clarity, engagement, and SEO effectiveness. Your goal is to generate a **detailed, logical outline** that ensures a smooth reading experience and maximizes content relevance. Write in Dutch.\n\n### **Your Task:**\n1. **Analyze the provided inputs**, including the article title, primary keyword, key takeaways, semantic analysis, secondary keywords, and hidden insights (if applicable).\n2. **Generate an optimized outline** by:\n   - Structuring the article with a **clear hierarchy of sections**.\n   - Aligning with **SEO best practices** and **user intent**.\n   - Ensuring **logical progression** from start to finish.\n   - Incorporating **hidden insights** if they enhance the content.\n   - **Using secondary keywords and semantic elements (common subtopics & related questions) naturally in headings/subheadings** for SEO.\n3. **Ensure the outline includes:**\n   - **Main sections covering key aspects of the topic**\n   - **Logical sub-sections** that break down complex ideas\n4. **The article title, introduction, and conclusion should be used as references but NOT included in the outline.**\n\n### **Formatting & Style Guidelines**\n\u2705 Write the blog text in clean HTML format, ready to paste into Shopify. \n- Use <h2> for main sections and <h3> for subsections, <p> for paragraphs, <strong> for bold text, <ul><li> for lists. \n- Add <a href=\"URL\">anchor text</a> links naturally inside the text whenever a product or collection is mentioned. \n- Anchor text should match the product or collection name. \n- Use only the URLs provided; do not invent new URLs. \n- Do not use Markdown (##, **, -) or raw line breaks (\\n). \n- Make sure all paragraphs are wrapped in <p> tags, headings in <h2> or <h3>, lists in <ul><li>, and bold text in <strong>. \n- Output clean, valid, minimal HTML, ready to paste into Shopify.\n\u2705 **Ensure a logical, structured progression from start to finish.**  \n\u2705 **Incorporate hidden insights if they enhance the outline.**  \n\u2705 **Use secondary keywords and semantic elements naturally in headings.**  \n\u2705 **Exclude the article title, introduction, and conclusion from the final outline.**  \n\u2705 **Use concise but descriptive section explanations.**  \n\u2705 **Hyperlinks**  \nAdd links related to the topic to promote collections, blog posts and products from The Bucket Hat.\n\n\n### **Example Inputs & Outputs**\n---\n#### **Input Example**\n**Article Title:** `\"AI Automation for Small Businesses: How to Save Time & Boost Revenue\"`  \n**Primary Keyword:** `\"AI automation for small businesses\"`  \n**Secondary Keywords:** `[\"AI workflow automation\", \"small business AI tools\", \"automating business operations\"]`  \n**Key Takeaways:** `[\"AI automation reduces decision fatigue.\", \"It improves operational efficiency and workflow management.\", \"Small businesses can implement AI affordably.\"]`  \n**Hidden Insight:** `\"Most discussions on AI automation focus on efficiency, but its real impact is on business adaptability\u2014helping companies pivot faster in changing markets.\"`  \n**Semantic Analysis:**  \n- **Common Subtopics:** `[\"What is AI automation?\", \"How small businesses can use AI\", \"Best AI tools for automation\"]`  \n- **Related Questions:** `[\"What are the best AI automation tools for small businesses?\", \"How does AI improve small business efficiency?\"]`  \n\n---\n#### **Output Example** markdown\n## What is AI Automation?  \n### Understanding AI-powered business automation *(Secondary Keyword Applied)*  \n- Definition of AI automation and its key components.  \n- How AI-powered automation differs from traditional workflow automation.  \n\n### Why small businesses need AI workflow automation *(Semantic & SEO Applied)*  \n- How AI helps small businesses optimize time and improve operations.  \n- Examples of industries benefiting from AI-driven efficiency.  \n\n## Key Benefits of AI in Small Business Operations  \n### Reducing decision fatigue in business owners *(Key Takeaway Applied)*  \n- How AI automation minimizes repetitive decision-making.  \n- Freeing up business owners to focus on strategy and innovation.  \n\n### Boosting efficiency with small business AI tools *(Secondary Keyword Applied)*  \n- The role of AI in automating workflows, customer interactions, and task management.  \n- How automation tools improve productivity.  \n\n### Improving business adaptability with AI *(Hidden Insight Applied)*  \n- How AI enables businesses to pivot quickly in response to market changes.  \n- Case studies on AI-driven adaptability.  \n\n## Implementing AI for Small Business Growth  \n### Choosing the best AI automation tools *(Semantic & SEO Applied)*  \n- Factors to consider when selecting AI-powered solutions.  \n- Overview of top AI tools for small businesses.  \n\n### Automating business operations without disrupting workflows *(Secondary Keyword Applied)*  \n- Best practices for integrating AI seamlessly into existing processes.  \n- How to ensure a smooth transition without disrupting operations.  \n\n\n"
        },
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "538289c4-c18b-40f6-b7c0-b4edd95daca5",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -1152,
        1088
      ],
      "parameters": {
        "model": "gpt-4o-2024-11-20",
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "d7116b98-9418-4bf3-b000-350f9a5cdd3d",
      "name": "Set Outline Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        -752,
        912
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "5b6a40be-b640-4caf-a531-50a45df07be8",
              "name": "outline",
              "type": "string",
              "value": "={{ $json.output }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "e9de1a7a-8240-4629-a0d9-9e78b169f1f2",
      "name": "Content Writer Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -112,
        912
      ],
      "parameters": {
        "text": "={{ $json.output }}\nURL List for hyperlinks: {{ $('Set best urls').item.json[\"best matching urls\"] }}",
        "options": {
          "systemMessage": "You are an AI writing agent responsible for generating only the main body of an article based on a structured prompt. Your writing must be well-formatted in HTML, insightful, logically structured, and engaging for the target audience. Write in Dutch.\n\nGuidelines\n\u2705 Follow the provided prompt exactly. Ensure adherence to the user-provided outline and structure.\n\u2705 Write the blog text in clean HTML format, ready to paste into Shopify. \n- Use <h2> for main sections and <h3> for subsections, <p> for paragraphs, <strong> for bold text, <ul><li> for lists. \n- Add <a href=\"URL\">anchor text</a> links naturally inside the text whenever a product or collection is mentioned. \n- Anchor text should match the product or collection name. \n- Use only the URLs provided; do not invent new URLs. \n- Do not use Markdown (##, **, -) or raw line breaks (\\n). \n- Make sure all paragraphs are wrapped in <p> tags, headings in <h2> or <h3>, lists in <ul><li>, and bold text in <strong>. \n- Output clean, valid, minimal HTML, ready to paste into Shopify.\n\u2705 Ensure smooth transitions between sections.\nEnd sections with a transition sentence that leads into the next topic.\nAvoid abrupt shifts\u2014maintain logical flow.\n\u2705 Enhance depth with real-world case studies.\nProvide real measurable outcomes (e.g., \"A 20% efficiency gain led to $5M in annual savings\").\nDetail implementation challenges, solutions, and business results.\n\u2705 Balance readability with a mix of paragraphs & lists.\nUse bullet points sparingly\u2014convert them into mini-paragraphs where needed.\nLists should highlight key takeaways, not dominate sections.\n\u2705 Ensure keyword optimization.\nNaturally integrate primary and secondary keywords within the article.\nAvoid overuse\u2014prioritize readability over keyword stuffing.\n\u2705 Fact-driven & logically structured.\nAvoid redundant explanations\u2014each section should introduce new insights.\nEnsure distinctions between related topics (e.g., \u201cManaging Complexity\u201d should not repeat \u201cAdaptive Learning\u201d).\n\u2705 No introduction or conclusion.\nFocus only on the main body sections based on the structured prompt.\n\u2705 This part should be at least 1800 words and maximum 2400 words. If you can't write this many words in one message, write the first 1000-1200 words in a message followed by a second message with 1000-1400 words.\n\u2705 Hyperlinks \nAdd links related to the topic to promote collections, blog posts and products from The Bucket Hat."
        },
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "9c4907bb-4365-4f51-90d1-6addb93c0d07",
      "name": "Introduction Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        2272,
        336
      ],
      "parameters": {
        "text": "=Write an engaging introduction for a blog post with the following details:\n\n- **Title**: {{ $('Sets New Title Field').item.json.new_title }}\n- **Key Takeaways**: {{ $json.key_takeaways }} \nPrimary Keyword: {{ $('Set Airtable Fields for Agents').item.json.Keyword }}\nTitle: {{ $('Set Airtable Fields for Agents').item.json.Title }}\nSearch intent: {{ $('Set KWs and Insights fields').item.json.search_intent }}\nSemantic analysis: {{ $('Set KWs and Insights fields').item.json.semantic_analysis }}\nSecondary keywords: {{ $('Set KWs and Insights fields').item.json.keywords }}\nWriting style: {{ $('Set KWs and Insights fields').item.json.writing_style }}\nWriting tone: {{ $('Set KWs and Insights fields').item.json.writing_tone }}\nArticle goal: {{ $('Set KWs and Insights fields').item.json.article_goal }}\nURL List for hyperlinks: {{ $('Set best urls').item.json[\"best matching urls\"] }}\n\n\nThe introduction should:\n- Hook the reader with a surprising fact, question, or statement.\n- Explain why the topic matters and how it benefits the reader.\n- Transition naturally into the body of the article.\n- Use keywords naturally but sparingly.\n- Be between 400 and 450 words long\n\nExample Introduction:\nImagine having an extra pair of hands to handle your business's repetitive tasks while you focus on the big picture\u2014growing your company. It might sound like a luxury, but AI agents are making it a reality for small businesses everywhere.\n\nSmall business owners often juggle countless responsibilities, from managing operations to engaging customers. AI agents provide a way to streamline routine tasks, improve productivity, and even elevate customer experiences, all while saving time and resources.\n\nThis article dives into how AI agents can transform your business, helping you scale operations, save time, and stay competitive. Whether you\u2019re seeking efficiency or growth, you\u2019ll discover how this powerful technology can work for you.\n\nFormatting Instructions:\n\nOutput must be in Markdown format and structured correctly.\nDo NOT add any commentary, explanations, or extra text about what the agent did.\nDo NOT include dividers (---), line breaks (\\n), or unnecessary whitespace.\nOnly return the required Markdown content\u2014nothing more.",
        "options": {
          "systemMessage": "You are an expert content writer specializing in crafting compelling introductions for articles. Your goal is to **hook the reader, set expectations, and establish relevance** while maintaining clarity and engagement. Write in Dutch.\n\n### **Your Task:**\n1. **Analyze the provided inputs**, including the article title, primary keyword, key takeaways, and target audience.\n2. **Write a compelling introduction** that:\n   - **Opens with a direct, concise statement** that immediately presents the topic.\n   - **Avoids generic phrases** like *\"In today\u2019s fast-paced world...\"* or *\"Businesses are constantly evolving...\"*.\n   - **Clearly states the article\u2019s purpose** and what the reader will learn.\n   - **Flows naturally into the main body** without being overly long.\n3. **Match the article\u2019s writing style and tone** to ensure consistency.\n4. **Incorporate the primary keyword naturally** for SEO without forcing it.\n5. **Ensure readability and engagement**:\n   - Keep the introduction concise (2-3 short paragraphs).\n   - Avoid fluff\u2014make every sentence valuable.\n   - **Use streamlined transition sentences** (e.g., *\"Let\u2019s explore how...\"* instead of *\"In this article, we will explore...\"*).\n\n### **Formatting & Style Guidelines**\n\u2705 Write the blog text in clean HTML format, ready to paste into Shopify. \n- Use <h2> for main sections and <h3> for subsections, <p> for paragraphs, <strong> for bold text, <ul><li> for lists. \n- Add <a href=\"URL\">anchor text</a> links naturally inside the text whenever a product or collection is mentioned. \n- Anchor text should match the product or collection name. \n- Use only the URLs provided; do not invent new URLs. \n- Do not use Markdown (##, **, -) or raw line breaks (\\n). \n- Make sure all paragraphs are wrapped in <p> tags, headings in <h2> or <h3>, lists in <ul><li>, and bold text in <strong>. \n- Output clean, valid, minimal HTML, ready to paste into Shopify.\n\u2705 **Use HTML formatting.**  \n\u2705 **Start with a direct, engaging opening sentence.**  \n\u2705 **Avoid generic phrases or overused business clich\u00e9s.**  \n\u2705 **Keep it concise yet informative (2-3 paragraphs).**  \n\u2705 **Ensure a smooth transition into the main body.**  \n\u2705 **Maintain a natural, compelling flow that matches the writing tone & style.**  \n\u2705 **Hyperlinks**  \nAdd links related to the topic to promote collections, blog posts and products from The Bucket Hat.\n\n\n### **Example Inputs & Outputs**\n---\n#### **Input Example**\n**Article Title:** `\"Hoe draag je een Bucket Hat ? Z\u00f3 draag je de bucket hat\"`  \n**Primary Keyword:** `\"Bucket Hat stylen\"`  \n**Key Takeaways:** `[\"De Bucket Hat is een veelzijdig mode-icoon dat terug is van weggeweest.\", \"Je kunt hem dragen in verschillende stijlen: casual, sportief, bohemian of edgy streetwear.\", \"Onderhoud en seizoensgebonden keuzes zorgen ervoor dat je hoed langer meegaat en altijd stijlvol blijft.\"]`  \n**Writing Style:** `\"Engaging and storytelling\"`  \n**Writing Tone:** `\"Friendly and conversational\"`  \n\n---\n#### **Output Example** markdown\n<h2>De Bucket Hat: Tijdloos Stijlicoon</h2>\n\n<p>De Bucket Hat is veel meer dan een simpele hoed; het is een stukje modegeschiedenis dat opnieuw zijn plek heeft veroverd in de garderobes van trendsetters wereldwijd. Ooit begonnen als vissershoedje in de jaren \u201940, is dit tijdloze accessoire uitgegroeid tot een stijlstatement dat veelzijdigheid en persoonlijkheid uitstraalt.</p>\n\n<h3>Veelzijdigheid en Aanpassingsvermogen</h3>\n<p>Wat de Bucket Hat zo bijzonder maakt, is zijn aanpassingsvermogen. Of je nu kiest voor een casual chic look met mom jeans en sneakers, een sportieve flair met een trainingspak, bohemian vibes met een flowy jurk, of edgy streetwear met leer en distressed denim\u2014deze hoed past zich moeiteloos aan jouw stijl aan.</p>\n\n<h3>Geschikt voor Elk Seizoen</h3>\n<p>Bovendien is hij geschikt voor elk seizoen. In de zomer biedt hij bescherming tegen de zon met lichte stoffen zoals katoen of linnen, terwijl je in herfst en winter kunt kiezen voor waterbestendige of gevoerde varianten. Met de juiste zorg\u2014zoals voorzichtig wassen en correct opbergen\u2014gaat je Bucket Hat jarenlang mee.</p>\n\n<h3>Een Blijvend Stijlicoon</h3>\n<p>Ge\u00efnspireerd door beroemdheden en streetstyle, blijft de Bucket Hat een blijvend stijlicoon dat steeds opnieuw wordt heruitgevonden met nieuwe materialen, prints en duurzame ontwerpen. Het is een accessoire dat niet alleen je outfit compleet maakt, maar ook een stukje van je persoonlijkheid laat zien.</p>\n\n"
        },
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "c9b28fd8-7f55-473a-a21d-2e56d6376eb1",
      "name": "OpenAI Chat Model2",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        480,
        1088
      ],
      "parameters": {
        "model": "gpt-4o-2024-11-20",
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "38951dc9-cc84-4cea-8d9d-30a10472b18f",
      "name": "OpenAI Chat Model3",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1344,
        2000
      ],
      "parameters": {
        "model": "gpt-4o-2024-11-20",
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "f428be45-2d9d-4e9b-9f9d-80f4cc2633d8",
      "name": "Create Article Folder",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -1168,
        1376
      ],
      "parameters": {
        "name": "={{ $('Sets New Title Field').item.json.new_title }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive",
          "cachedResultUrl": "https://drive.google.com/drive/my-drive",
          "cachedResultName": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "id",
          "value": "1AViQ9PVYtVdrC68iImpTr0kl1pEtS6aR"
        },
        "resource": "folder"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "cc02b819-0ac0-4951-b06f-3d15ad9d7322",
      "name": "Google Drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        144,
        1376
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.documentId }}"
        },
        "options": {},
        "operation": "share",
        "permissionsUi": {
          "permissionsValues": {
            "role": "writer",
            "type": "anyone"
          }
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "1dcbe7b4-45e3-41c7-94be-28a1af2a12d0",
      "name": "Edit Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        336,
        1376
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "b5d2b743-090c-4432-a7e7-c25b2e4bd76f",
              "name": "url",
              "type": "string",
              "value": "=https://docs.google.com/document/d/{{ $('Add Final Article').item.json.documentId }}/edit"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "27aecd35-2d91-4aca-9e87-50fe99d9b454",
      "name": "Airtable",
      "type": "n8n-nodes-base.airtable",
      "position": [
        560,
        1376
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "apprrQ0Dv1cJOfMi9",
          "cachedResultUrl": "https://airtable.com/apprrQ0Dv1cJOfMi9",
          "cachedResultName": "KW Research The Bucket Hat"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblVTpv8JG5lZRiF2",
          "cachedResultUrl": "https://airtable.com/appuvbLPrnVBj88Eb/tblVTpv8JG5lZRiF2",
          "cachedResultName": "Article Writer"
        },
        "columns": {
          "value": {
            "id": "={{ $('Webhook').item.json.body.recordID }}",
            "Google Doc URL": "={{ $json.url }}"
          },
          "schema": [
            {
              "id": "id",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "id",
              "defaultMatch": true
            },
            {
              "id": "Title",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Description",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Create Article",
              "type": "options",
              "display": true,
              "options": [
                {
                  "name": "Write Article",
                  "value": "Write Article"
                },
                {
                  "name": "Keep",
                  "value": "Keep"
                }
              ],
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Create Article",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Keyword",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Keyword",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Primary Keyword",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Primary Keyword",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Category",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Category",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Google Doc URL",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Google Doc URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Writing Style",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Writing Style",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Tone",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Tone",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Target Audience",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Target Audience",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Goal of Article",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Goal of Article",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Title Options",
              "type": "options",
              "display": true,
              "options": [
                {
                  "name": "Original Title",
                  "value": "Original Title"
                }
              ],
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Title Options",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "id"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update"
      },
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "3f6d8d9c-39b5-45af-ae4b-0aa1419cf37b",
      "name": "Edit Fields1",
      "type": "n8n-nodes-base.set",
      "position": [
        288,
        912
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "7c282be5-3020-44b9-bf77-61639e3dd763",
              "name": "main body",
              "type": "string",
              "value": "={{ $json.output }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "c9245e5a-5deb-4f4c-af14-ad14b4260a06",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2160,
        112
      ],
      "parameters": {
        "width": 1620,
        "height": 480,
        "content": "## Get Working Title, Description, Keywords from Airtable Article Writer\n\nGet's this data for use in the first agent that creates the writing style, tone, target audience/persona and goal.\n\nTriggered by status field in the Article Writer table. Create Article = Write Article"
      },
      "typeVersion": 1
    },
    {
      "id": "99fb5ffa-f886-4af2-abae-5b0a89180a1a",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -496,
        96
      ],
      "parameters": {
        "width": 780,
        "height": 600,
        "content": "## Dynamic Writing Guidelines and Hidden Insights\nBased on real-world search results and competitor analysis, ensuring that your AI-generated articles align with user intent better than static SEO methods.\n\nUses working title, description (both from keyword categorization), and top 5 search results to generate writing style and tone, goal of the article, hidden insights from AI analysis, semantic insights and keywords. All for use throughout the workflow. "
      },
      "typeVersion": 1
    },
    {
      "id": "0037503d-a1e0-4d66-85f5-31842f4f7cde",
      "name": "SERPs, Writing, KWs, Insights",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -32,
        336
      ],
      "parameters": {
        "text": "=Use the given:\nTitle: {{ $json.Title }}\nDescription: {{ $json.Description }}\nURL List for hyperlinks: {{ $json[\"URL list\"] }}\nAnd the Tavily SERP Results tool to perform research for the primary keyword, {{ $('Airtable Get Article Data').item.json.Keyword }}. \nFormat your response as a JSON object:\nIMPORTANT: Do not include extra text, introduction messages, line breaks \\n, or any additional characters.\nJSON Output\n{\n  \"search_intent\": \"<string: informational | transactional | navigational | commercial>\",\n  \"writing_style\": \"<string: concise and professional | engaging and storytelling | data-driven and technical | etc.>\",\n  \"writing_tone\": \"<string: friendly and conversational | formal and authoritative | persuasive and compelling | etc.>\",\n  \"hidden_insight\": \"<string: unique insight if found, otherwise 'No significant insights detected beyond existing content trends.'>\",\n  \"target_audience\": \"<string: who this article is for, e.g., small business owners, tech enthusiasts, marketers, etc.>\",\n  \"goal_of_article\": \"<string: main objective of the article based on search results and insights>\",\n  \"semantic_analysis\": {\n    \"common_subtopics\": [\n      \"<string: subtopic 1>\",\n      \"<string: subtopic 2>\",\n      \"<string: subtopic 3>\"\n    ],\n    \"related_questions\": [\n      \"<string: question 1>\",\n      \"<string: question 2>\",\n      \"<string: question 3>\"\n    ]\n  },\n  \"keywords\": {\n    \"primary_keyword\": \"<string: main focus keyword>\",\n    \"secondary_keywords\": [\n      \"<string: related keyword 1>\",\n      \"<string: related keyword 2>\",\n      \"<string: related keyword 3>\"\n    ],\n    \"semantic_keywords\": [\n      \"<string: semantic keyword 1>\",\n      \"<string: semantic keyword 2>\",\n      \"<string: semantic keyword 3>\"\n    ],\n    \"long_tail_keywords\": [\n      \"<string: long-tail keyword 1>\",\n      \"<string: long-tail keyword 2>\",\n      \"<string: long-tail keyword 3>\"\n    ]\n  }\n}\n\n\nExample JSON Output with Hidden Insight\n{\n  \"search_intent\": \"informational\",\n  \"writing_style\": \"engaging and storytelling\",\n  \"writing_tone\": \"friendly and conversational\",\n  \"hidden_insight\": \"Most content focuses on efficiency and cost savings, but small business owners struggle with decision fatigue. AI automation is not just a time-saver\u2014it helps reduce stress by eliminating repetitive decisions.\",\n  \"target_audience\": \"small business owners, solopreneurs, and startup founders\",\n  \"goal_of_article\": \"Educate small business owners on how AI automation reduces decision fatigue while increasing efficiency and revenue.\",\n  \"semantic_analysis\": {\n    \"common_subtopics\": [\n      \"What is AI automation?\",\n      \"How small businesses can use AI\",\n      \"Best AI tools for business automation\",\n      \"Cost vs. benefit analysis of AI automation\"\n    ],\n    \"related_questions\": [\n      \"How does AI reduce decision fatigue?\",\n      \"What\u2019s the easiest way for small businesses to start using AI?\",\n      \"Is AI automation worth the cost for small businesses?\"\n    ]\n  },\n  \"keywords\": {\n    \"primary_keyword\": \"AI automation for small businesses\",\n    \"secondary_keywords\": [\n      \"AI-powered automation tools\",\n      \"best AI software for small businesses\",\n      \"workflow automation for entrepreneurs\"\n    ],\n    \"semantic_keywords\": [\n      \"business process automation\",\n      \"machine learning in small business\",\n      \"how AI helps efficiency\"\n    ],\n    \"long_tail_keywords\": [\n      \"how can AI help small businesses save time?\",\n      \"best AI automation tools for startups\",\n      \"AI vs manual workflow optimization\"\n    ]\n  }\n}\n\n\nExample JSON Output No Hidden Insight\n{\n  \"search_intent\": \"commercial\",\n  \"writing_style\": \"concise and professional\",\n  \"writing_tone\": \"informative and trustworthy\",\n  \"hidden_insight\": \"No significant insights detected beyond existing content trends.\",\n  \"target_audience\": \"cycling enthusiasts, winter sport athletes, and outdoor adventurers\",\n  \"goal_of_article\": \"Provide an in-depth comparison of the best winter cycling gear and help cyclists choose the right products based on weather conditions.\",\n  \"semantic_analysis\": {\n    \"common_subtopics\": [\n      \"What to look for in winter cycling gear\",\n      \"Top-rated winter cycling jackets and gloves\",\n      \"How to layer clothing for winter rides\",\n      \"Cycling safety tips for cold-weather conditions\"\n    ],\n    \"related_questions\": [\n      \"What is the warmest winter cycling jacket?\",\n      \"Are insulated cycling gloves worth it?\",\n      \"How do I stay warm on long winter bike rides?\"\n    ]\n  },\n  \"keywords\": {\n    \"primary_keyword\": \"best winter gear for cyclists\",\n    \"secondary_keywords\": [\n      \"winter cycling jackets\",\n      \"best gloves for cold weather cycling\",\n      \"waterproof cycling gear\"\n    ],\n    \"semantic_keywords\": [\n      \"insulated bike clothing\",\n      \"cold-weather cycling apparel\",\n      \"bike safety in winter\"\n    ],\n    \"long_tail_keywords\": [\n      \"how to choose winter cycling gloves?\",\n      \"best winter cycling gear for long-distance rides\",\n      \"how to keep hands warm while biking in winter\"\n    ]\n  }\n}\n\n",
        "options": {
          "systemMessage": "You are an advanced AI content strategist trained to analyze search results and generate precise writing guidelines for an SEO-optimized blog post for the website The Bucket Hat. Your goal is to ensure that the article aligns with **search intent**, **semantic relevance**, and **audience expectations** while also uncovering **hidden insights** that may provide a unique angle. Write in Dutch.\n\n### **Your Task:**\nYou will be given:\n- A **working title**\n- An **article description**\n- A **primary keyword**\n- A **set of search results** (retrieved via the Tavily search results tool)\n- All the links of the website The Bucket Hat (products, collections, blog posts etc.)\n\nYour job is to analyze the data and generate **optimized writing guidelines** with the following structured JSON output:\n\n### **1\ufe0f\u20e3 Search Intent Detection**  \nDetermine whether the primary intent of the keyword is:  \n- **informational** (learning about a topic)  \n- **transactional** (considering a purchase or service)  \n- **navigational** (finding a specific brand/website)  \n- **commercial** (comparing options before making a decision)  \n\n### **2\ufe0f\u20e3 Writing Style & Tone**  \n- Identify the best **writing style** based on search results (e.g., \u201cconcise and professional,\u201d \u201cengaging and storytelling,\u201d \u201cdata-driven and technical,\u201d etc.).  \n- Identify the **appropriate tone** (e.g., \u201cfriendly and conversational,\u201d \u201cformal and authoritative,\u201d \u201cpersuasive and compelling,\u201d etc.).  \n\n### **3\ufe0f\u20e3 Hidden Insight Extraction**  \n- Analyze **patterns in competitor content** to identify **an insight that is not immediately obvious** but could provide a unique angle.  \n- If no meaningful insight is found, return `\"hidden_insight\": \"No significant insights detected beyond existing content trends.\"`  \n- If an insight is found, clearly explain it.  \n- **Do NOT modify writing style or tone based on the insight**\u2014insights should be separate observations, not tone/style adjustments.  \n\n### **4\ufe0f\u20e3 Semantic Analysis (Content Structuring)**  \n- Extract the **common subtopics** frequently covered in top-ranking pages.  \n- Identify **related questions** users ask.  \n\n### **5\ufe0f\u20e3 Keyword Extraction**  \n- Categorize keywords based on **how they should be used** later in the workflow.  \n- Format them as follows:  \n  - **Primary Keyword** \u2192 The main topic focus.  \n  - **Secondary Keywords** \u2192 Variations of the primary keyword that should be used naturally in the content.  \n  - **Semantic Keywords** \u2192 Contextually related terms that improve topic relevance.  \n  - **Long-Tail Keywords** \u2192 Natural search queries and phrases that match user questions.  \n\n\n### **Format your response strictly in valid JSON. Divide the sections**\n\n"
        },
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "b7d1727f-669a-4867-a0f3-401a2989c946",
      "name": "Update Article Writer table",
      "type": "n8n-nodes-base.airtable",
      "position": [
        656,
        336
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "apprrQ0Dv1cJOfMi9",
          "cachedResultUrl": "https://airtable.com/apprrQ0Dv1cJOfMi9",
          "cachedResultName": "KW Research The Bucket Hat"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblVTpv8JG5lZRiF2",
          "cachedResultUrl": "https://airtable.com/appuvbLPrnVBj88Eb/tblVTpv8JG5lZRiF2",
          "cachedResultName": "Article Writer"
        },
        "columns": {
          "value": {
            "id": "={{ $('Airtable Get Article Data').item.json.id }}",
            "Tone": "={{ $json.writing_tone }}",
            "Keyword": "={{ $('Set Airtable Fields for Agents').item.json.Keyword }}",
            "Search Intent": "={{ $json.search_intent }}",
            "Writing Style": "={{ $json.writing_style }}",
            "Hidden Insight": "={{ $json.hidden_insight }}",
            "Goal of Article": "={{ $json.article_goal }}",
            "Primary Keyword": "={{ $('Set Airtable Fields for Agents').item.json.Primary.Keyword }}",
            "Target Audience": "={{ $json.target_audience }}",
            "Semantic Analysis": "={{ $json.semantic_analysis }}"
          },
          "schema": [
            {
              "id": "id",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "id",
              "defaultMatch": true
            },
            {
              "id": "Title",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Final Title",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Final Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Description",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Create Article",
              "type": "options",
              "display": true,
              "options": [
                {
                  "name": "Write Article",
                  "value": "Write Article"
                },
                {
                  "name": "Keep",
                  "value": "Keep"
                }
              ],
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Create Article",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Keyword",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Keyword",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Primary Keyword",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": 

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

How this works

This workflow deploys several specialised AI agents that research, plan, write and optimise blog posts for e-commerce stores, turning product data into publication-ready articles complete with relevant hyperlinks. It suits marketing teams and store owners who need consistent, SEO-focused content without managing every research and drafting step themselves. The process pulls article briefs from Airtable, uses Tavily to gather current search results, then routes each stage through dedicated agents powered by Anthropic and OpenAI models.

Use it when you require a repeatable pipeline that produces multiple articles per week from structured briefs; avoid it for one-off posts or when you need full creative control over tone. Common variations include swapping the final publishing step for direct Google Drive uploads or adding extra review agents before the content reaches the CMS.

About this workflow

What if AI didn't just write content—but actually thought about how to write it? This n8n workflow revolutionizes content creation by deploying multiple specialized AI agents that handle every aspect of blog writing—from research to publication-ready posts.

Source: https://n8n.io/workflows/8654/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

L&D_AgentsAI_ATIVO. Uses httpRequest, agent, googleCalendarTool, toolSerpApi. Webhook trigger; 93 nodes.

HTTP Request, Agent, Google Calendar Tool +9
AI & RAG

Whatsapp Lead Agent. Uses httpRequest, hunter, @tavily/n8n-nodes-tavily, @mendable/n8n-nodes-firecrawl. Webhook trigger; 35 nodes.

HTTP Request, Hunter, @Tavily/N8N Nodes Tavily +11
AI & RAG

The best content automation template in the market is now even better—with “deep research” on time-sensitive topics\! Unlike most n8n content automation templates that are mainly for “demo purposes,”

OpenAI, HTTP Request, XML +11
AI & RAG

This workflow is for beauty salons who want consistent, high‑quality social media content without writing every post manually. It also suits agencies and automation builders who manage multiple beauty

Telegram, Google Sheets Trigger, Agent +26
AI & RAG

This workflow is designed for marketers, content creators, agencies, and solo founders who want to publish long‑form posts with visuals on autopilot using n8n and AI agents. ​

Tool Http Request, Agent, HTTP Request +27