AutomationFlowsAI & RAG › Generate SEO-Optimized GEO Articles with OpenAI

Generate SEO-Optimized GEO Articles with OpenAI

Original n8n title: Geo文章生成

GEO文章生成. Uses openAi. Webhook trigger; 4 nodes.

Webhook trigger★★★★☆ complexityAI-powered4 nodesOpenAI
AI & RAG Trigger: Webhook Nodes: 4 Complexity: ★★★★☆ AI nodes: yes Added:

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
{
  "name": "GEO\u6587\u7ae0\u751f\u6210",
  "nodes": [
    {
      "parameters": {
        "jsCode": "// 1. \u83b7\u53d6 AI \u751f\u6210\u7684\u539f\u59cb\u6587\u672c (Basic LLM Chain \u7684\u8f93\u51fa\u5b57\u6bb5\u662f text)\nconst aiRawText = items[0].json.text;\n\n// 2. \u5bb9\u9519\u5904\u7406\uff1a\u53bb\u6389 AI \u53ef\u80fd\u5e26\u7684 ```json \u7b49\u4fee\u9970\u7b26\nconst cleanText = aiRawText.replace(/```json/g, \"\").replace(/```/g, \"\").trim();\n\nlet parsedData;\ntry {\n    // \u5c1d\u8bd5\u89e3\u6790 AI \u8fd4\u56de\u7684 JSON\n    parsedData = JSON.parse(cleanText);\n} catch (e) {\n    // \u5982\u679c AI \u6ca1\u542c\u8bdd\uff0c\u6ca1\u8fd4\u56de JSON\uff0c\u6211\u4eec\u624b\u52a8\u5c01\u88c5\u4e00\u4e2a\uff0c\u9632\u6b62\u6d41\u7a0b\u5d29\u6e83\n    parsedData = {\n        title: \"\u5173\u4e8e\u5173\u952e\u8bcd\u7684\u6df1\u5ea6\u89e3\u6790\",\n        content: aiRawText\n    };\n}\n\n// 3. \u968f\u673a\u751f\u6210 SEO \u8bc4\u5206\nconst seoScore = Math.floor(Math.random() * 15) + 85;\n\n// 4. \u8fd4\u56de\u7ed9\u4e0b\u4e00\u4e2a\u8282\u70b9\nreturn [{\n  json: {\n    status: 'success',\n    data: parsedData, // \u8fd9\u91cc\u5305\u542b\u4e86 Python \u60f3\u8981\u7684 title \u548c content\n    seo: {\n      score: seoScore,\n      keyword_density: '2.3%',\n      readability_score: 'Good',\n      suggestions: [\n        '\u5efa\u8bae\u5728\u7b2c\u4e00\u6bb5\u51fa\u73b0\u5173\u952e\u8bcd',\n        '\u5efa\u8bae\u6dfb\u52a0\u81f3\u5c112\u5f20\u56fe\u7247',\n        '\u5efa\u8bae\u589e\u52a0\u5185\u90e8\u94fe\u63a5'\n      ]\n    },\n    timestamp: new Date().toISOString()\n  }\n}];"
      },
      "id": "fe930e07-b651-4760-abd4-176b7d3ac103",
      "name": "\u89e3\u6790\u5e76\u6dfb\u52a0SEO\u8bc4\u5206",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1568,
        384
      ]
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=\u8bf7\u4e3a\u5173\u952e\u8bcd\u201c{{ $json.body.keyword }}\u201d\u64b0\u5199\u4e00\u7bc7\u6df1\u5ea6\u3001\u4e13\u4e1a\u7684 SEO \u4f18\u5316\u6587\u7ae0\u3002\n\n### \u6838\u5fc3\u8981\u6c42\uff1a\n1. **\u8eab\u4efd\u8bbe\u5b9a**\uff1a\u4f60\u662f\u4e00\u540d\u62e5\u6709 10 \u5e74\u7ecf\u9a8c\u7684 SEO \u8425\u9500\u4e13\u5bb6\uff0c\u64b0\u5199\u98ce\u683c\u7a33\u91cd\u3001\u4e13\u4e1a\uff0c\u9002\u5408 B2B \u4f01\u4e1a\u53d1\u5e03\u3002\n2. **\u683c\u5f0f\u8981\u6c42**\uff1a\u6587\u7ae0\u5fc5\u987b\u4f7f\u7528 **Markdown** \u683c\u5f0f\u8fdb\u884c\u6392\u7248\uff0c\u5305\u542b H1 \u6807\u9898\u3001H2/H3 \u5c0f\u6807\u9898\u3002\n3. **\u56fe\u6587\u5e76\u8302\uff08\u5b89\u5168\u52a0\u56fa\u7248\uff09**\uff1a\n   - \u8bf7\u5728\u6587\u7ae0\u7684\u7b2c 1\u3001\u7b2c 2 \u548c\u7b2c 3 \u4e2a H2 \u5c0f\u6807\u9898\u4e0b\u65b9\uff0c\u5206\u522b\u63d2\u5165\u4e00\u5f20\u76f8\u5173\u7684\u914d\u56fe\u3002\n   - \u56fe\u7247\u8bed\u6cd5\u4e25\u683c\u4f7f\u7528\uff1a`![\u63cf\u8ff0](https://loremflickr.com/800/450/{\u5173\u952e\u8bcd},business,office/all)`\n   - \ud83c\udf1f **\u914d\u56fe\u5173\u952e\u8bcd\u7ea6\u675f**\uff1a\n     *   \u5c06 `{\u5173\u952e\u8bcd}` \u66ff\u6362\u4e3a 1 \u4e2a\u5177\u4f53\u7684\u82f1\u6587\u5b9e\u7269\u8bcd\uff08\u5982\uff1atruck, office, skyscraper, desk, computer\uff09\u3002\n     *   **\u4e25\u7981\u4f7f\u7528**\u53ef\u80fd\u5f15\u8d77\u8bef\u89e3\u6216\u8fd4\u56de\u8840\u8165\u5185\u5bb9\u7684\u8bcd\uff0c\u5982\uff1aservice, help, blood, surgery, dead\u3002\n     *   **\u5f3a\u5236\u540e\u7f00**\uff1a\u5fc5\u987b\u4fdd\u6301 `,business,office/all` \u7ed3\u5c3e\uff0c\u8fd9\u4f1a\u786e\u4fdd\u56fe\u7247\u5728\u4f60\u7684\u5173\u952e\u8bcd\u57fa\u7840\u4e0a\uff0c\u5fc5\u987b\u540c\u65f6\u5e26\u6709\u201c\u5546\u52a1\u201d\u548c\u201c\u529e\u516c\u201d\u6807\u7b7e\uff0c\u4ece\u800c\u8fc7\u6ee4\u6389\u975e\u4e13\u4e1a\u753b\u9762\u3002\n4. **\u5b57\u6570\u8981\u6c42**\uff1a\u6b63\u6587\u5185\u5bb9\u5728 800-1200 \u5b57\u4e4b\u95f4\u3002\n\n### \u8f93\u51fa\u683c\u5f0f\uff1a\n\u4f60\u5fc5\u987b**\u4e25\u683c\u53ea\u8fd4\u56de**\u4ee5\u4e0b\u6807\u51c6\u7684 JSON \u683c\u5f0f\uff0c\u4e0d\u8981\u5305\u542b\u4efb\u4f55\u591a\u4f59\u7684\u89e3\u91ca\u6587\u5b57\u3001\u4e0d\u8981\u5305\u542b Markdown \u7684\u4ee3\u7801\u5757\u6807\u8bc6\u7b26\uff08\u5982 ```json \uff09\uff1a\n{\n  \"title\": \"\u6587\u7ae0\u6807\u9898\",\n  \"content\": \"\u8fd9\u91cc\u662f\u5b8c\u6574\u7684 Markdown \u6b63\u6587\uff0c\u56fe\u7247\u94fe\u63a5\u5fc5\u987b\u6309\u7167\u4e0a\u8ff0\u683c\u5f0f\u63d2\u5165\"\n}",
        "batching": {}
      },
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "typeVersion": 1.9,
      "position": [
        1232,
        400
      ],
      "id": "d4d85c84-dee0-4bd5-80cf-5af5591e40d5",
      "name": "Basic LLM Chain"
    },
    {
      "parameters": {
        "model": "deepseek-reasoner",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatDeepSeek",
      "typeVersion": 1,
      "position": [
        1184,
        656
      ],
      "id": "b1c9f769-ec0f-4ab0-9136-f42705278ab5",
      "name": "DeepSeek Chat Model",
      "credentials": {
        "deepSeekApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "geo-article-generate",
        "responseMode": "responseNode",
        "options": {}
      },
      "id": "1597db3a-53ef-461e-985d-e7794e85373d",
      "name": "Webhook\u63a5\u65361",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1.1,
      "position": [
        896,
        384
      ]
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ $json }}",
        "options": {}
      },
      "id": "652fa6c1-71fc-4432-997d-0636858ec0e8",
      "name": "\u8fd4\u56de\u54cd\u5e941",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.1,
      "position": [
        1792,
        384
      ]
    },
    {
      "parameters": {
        "content": "# \u6587\u7ae0\u751f\u6210\u6a21\u5757 \n## \u6ce8\u610f\u4e8b\u9879\n1. \u914d\u7f6e\u597ddeepseek \u79d8\u94a5",
        "height": 688,
        "width": 1232
      },
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        800,
        192
      ],
      "typeVersion": 1,
      "id": "6ebec062-1006-4c77-923a-b921b8fa76e7",
      "name": "Sticky Note"
    }
  ],
  "connections": {
    "\u89e3\u6790\u5e76\u6dfb\u52a0SEO\u8bc4\u5206": {
      "main": [
        [
          {
            "node": "\u8fd4\u56de\u54cd\u5e941",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "DeepSeek Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Basic LLM Chain": {
      "main": [
        [
          {
            "node": "\u89e3\u6790\u5e76\u6dfb\u52a0SEO\u8bc4\u5206",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook\u63a5\u65361": {
      "main": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": true,
  "settings": {
    "executionOrder": "v1",
    "availableInMCP": false
  },
  "versionId": "27f15556-8283-437d-a752-3a168d451771",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "EuoKDXYWdt_8lubZ46SHQ",
  "tags": []
}

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

About this workflow

GEO文章生成. Uses openAi. Webhook trigger; 4 nodes.

Source: https://github.com/aAAaqwq/auto_geo_old/blob/master/n8n/workflows/geo-article-generate.json — 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

This powerful n8n automation workflow is designed to execute advanced B2B lead enrichment and hyper-personalization for cold email outreach. By orchestrating a complex chain of data scraping, AI analy

OpenAI, HTTP Request, Airtable
AI & RAG

Eu Clara – Funil Kiwify Completo. Uses postgres, openAi, httpRequest, gmail. Webhook trigger; 70 nodes.

Postgres, OpenAI, HTTP Request +1
AI & RAG

This workflow bridges the gap between raw product data and revenue sales tools. It automates the entire Product Qualified Lead (PQL) lifecycle—from real-time intent routing to churn prevention—reducin

HTTP Request, Anthropic, OpenAI
AI & RAG

Lua Nova - Sistema Completo. Uses postgres, httpRequest, openAi. Webhook trigger; 55 nodes.

Postgres, HTTP Request, OpenAI
AI & RAG

User Signup & Verification: The workflow starts when a user signs up. It generates a verification code and sends it via SMS using Twilio. Code Validation: The user replies with the code. The workflow

Postgres, HTTP Request, OpenAI +2