{
  "name": "Generate SEO blog posts from a keyword list and publish to Webflow    ",
  "nodes": [
    {
      "id": "6c19a117-9bac-4598-9618-432ca067a02f",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -5712,
        64
      ]
    },
    {
      "id": "9081f1d4-5dac-4350-b910-e17ad918208f",
      "name": "Simple Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        -5632,
        352
      ]
    },
    {
      "id": "13743c5a-d649-49a3-8cd6-4c03494d9749",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -5760,
        352
      ]
    },
    {
      "id": "97ed3faa-f65c-4b47-a024-9800c24763fd",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -6528,
        -528
      ],
      "parameters": {
        "width": 576,
        "height": 448,
        "content": "### 📋 Automated SEO Content Generation for Webflow\n\nThis workflow generates SEO-optimized articles and saves them as Webflow drafts.\n\n**What it does:**\n- Reads keywords from Google Sheets (status = \"p"
      }
    },
    {
      "id": "d10c11b9-0cbe-4725-ae66-fe4c381666c5",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -6432,
        64
      ]
    },
    {
      "id": "85a2baaf-7fd0-4cb9-b200-7f56d3781275",
      "name": "Load Pending Keywords",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -6208,
        64
      ]
    },
    {
      "id": "3474f5e5-84e7-44c5-8751-e53ffedffd1e",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -5984,
        64
      ]
    },
    {
      "id": "3403fae8-07ba-4faf-9db5-0ad221b1360e",
      "name": "Content Quality Check",
      "type": "n8n-nodes-base.if",
      "position": [
        -5072,
        64
      ]
    },
    {
      "id": "ebe7106d-a3bb-4396-989c-5aba594e828d",
      "name": "Process Agent Output",
      "type": "n8n-nodes-base.code",
      "position": [
        -5296,
        64
      ]
    },
    {
      "id": "457c8c37-c678-4299-8676-4ec41c2ba56d",
      "name": "Expand Content",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        -4848,
        160
      ]
    },
    {
      "id": "6a7bc453-cf01-4bed-88a9-7b8d478793a2",
      "name": "Format Agent Output",
      "type": "n8n-nodes-base.code",
      "position": [
        -4496,
        160
      ]
    },
    {
      "id": "0a272acd-2853-45c9-bdc6-c69d876648f8",
      "name": "Merge Content Paths",
      "type": "n8n-nodes-base.merge",
      "position": [
        -4272,
        64
      ]
    },
    {
      "id": "7554230a-0c6b-4654-ab87-5f527675912f",
      "name": "Convert to HTML",
      "type": "n8n-nodes-base.markdown",
      "position": [
        -4048,
        64
      ]
    },
    {
      "id": "a3f5e05d-a525-4fdd-a214-998806a344b0",
      "name": "Create New Post",
      "type": "n8n-nodes-base.webflow",
      "position": [
        -3760,
        64
      ]
    },
    {
      "id": "4755da23-5ea0-4420-b5a2-7976e41411d1",
      "name": "Check Success",
      "type": "n8n-nodes-base.if",
      "position": [
        -3200,
        64
      ]
    },
    {
      "id": "a013bc1b-70af-4c27-9c88-c5df8a913bd1",
      "name": "Mark as Complete",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -2976,
        -48
      ]
    },
    {
      "id": "d833be28-654b-41f1-af4d-bcf18e8aa3ec",
      "name": "Log Error",
      "type": "n8n-nodes-base.code",
      "position": [
        -2976,
        160
      ]
    },
    {
      "id": "ab10a761-91e4-4b64-8164-c87134bcbb45",
      "name": "Save Success Results",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -2752,
        -48
      ]
    },
    {
      "id": "632a7c39-687c-4ea9-95e0-dd57b302c191",
      "name": "Save Error",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -2752,
        160
      ]
    },
    {
      "id": "5f4abc50-4c29-4424-9668-b3eb1494fb66",
      "name": "Wait a few seconds",
      "type": "n8n-nodes-base.wait",
      "position": [
        -2528,
        160
      ]
    },
    {
      "id": "af480c9a-5086-45af-9d1e-0b403a387463",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -6464,
        240
      ],
      "parameters": {
        "width": 400,
        "height": null,
        "content": "## STEP 1\n\nLoads all keywords with status='pending' from Google Sheets"
      }
    },
    {
      "id": "7747856f-3922-46a8-8f09-ecc007cabeb0",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -5728,
        -128
      ],
      "parameters": {
        "width": 416,
        "height": 144,
        "content": "## STEP 2\n\nAgent creates full article + generates featured image via tool call. Content is checked for 600+ words."
      }
    },
    {
      "id": "99d5b7cd-b330-4519-b166-76c3fdd1ac51",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -4896,
        384
      ],
      "parameters": {
        "width": 416,
        "height": 144,
        "content": "## STEP 3\n\nQuality Control\nIf under 600 words → expand content\nIf 600+ words → proceed to publishing"
      }
    },
    {
      "id": "2100b5a6-2e31-42d5-bbe1-259b81f38933",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -4096,
        -128
      ],
      "parameters": {
        "width": 192,
        "height": 144,
        "content": "## STEP 4\n\n\nConverts markdown to HTML and merges with image data"
      }
    },
    {
      "id": "57f327c8-15c0-4d61-a2bc-afe23897add6",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3792,
        -96
      ],
      "parameters": {
        "width": 176,
        "height": 112,
        "content": "## STEP 6\n\nCreates new one"
      }
    },
    {
      "id": "c444b15e-d08f-474d-a10b-30414590af77",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3168,
        -224
      ],
      "parameters": {
        "width": 528,
        "height": 144,
        "content": "## STEP 7\n\n- saves to content_created sheet\n- Error → logs to webflow_error_logs sheet"
      }
    },
    {
      "id": "af2bab6c-5315-4c8a-9ebe-e0d71b2def54",
      "name": "No Keywords Available",
      "type": "n8n-nodes-base.noOp",
      "position": [
        -5760,
        -336
      ]
    },
    {
      "id": "bc529bba-49c5-4ba7-95f2-9388f4440ede",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3920,
        416
      ],
      "parameters": {
        "width": 704,
        "height": 400,
        "content": "\n### ⚙️ Webflow OAuth Setup Required\n\n**Before running this workflow, configure Webflow OAuth2 credentials in n8n:**\n\n1. **In n8n:** Credentials → Create new → Webflow OAuth2 API → Copy the OAuth Redi"
      }
    },
    {
      "id": "c3becf95-359b-4a4a-8dc7-4e9faacf5b81",
      "name": "AI Image Generation Tool",
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "position": [
        -5504,
        352
      ]
    },
    {
      "id": "4aa37110-3c5b-4086-bf30-3c3f0c2b47c7",
      "name": "When Executed by Another Workflow",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        -6208,
        1616
      ]
    },
    {
      "id": "4828babb-1f1c-4e19-86a3-effc98f5e4f4",
      "name": "Result",
      "type": "n8n-nodes-base.set",
      "position": [
        -4624,
        1600
      ]
    },
    {
      "id": "9830cce4-9d2f-450f-a61a-2937b3d9831c",
      "name": "Upload to Google Drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -5088,
        1600
      ]
    },
    {
      "id": "4c611c1f-8a67-482f-a8c2-3faccc234d84",
      "name": "Get Download Links",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -4848,
        1600
      ]
    },
    {
      "id": "281da2fe-0d6e-47c7-9073-ada1b0f83343",
      "name": "Generate Image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -5936,
        1616
      ]
    },
    {
      "id": "057b7038-0135-486c-9d85-e58c420280a2",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -4368,
        1376
      ],
      "parameters": {
        "width": 528,
        "height": 496,
        "content": "### 🎨 AI Image Generation Sub-Workflow\n\nGenerates custom AI images for SEO posts.\n\n**How it works:**\n1. Called by parent workflow with image parameters\n2. Gemini 2.5 Flash creates image from prompt\n3."
      }
    },
    {
      "id": "610f756e-b237-4712-b602-4fae1cf0d842",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -6000,
        1424
      ],
      "parameters": {
        "width": null,
        "height": 352,
        "content": "## Step 1\n\nCalls OpenRouter with Gemini 2.5 Flash to create image based on prompt. You can modify based on your own tools and preference."
      }
    },
    {
      "id": "6051dd14-fc03-4a39-b781-67c7a8c405e4",
      "name": "Sticky Note11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -5728,
        1424
      ],
      "parameters": {
        "width": 208,
        "height": 352,
        "content": "## Step 2\n\nGets the image file from the response"
      }
    },
    {
      "id": "f6299361-eb86-4f48-86cf-8d4c661d198d",
      "name": "Sticky Note12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -5440,
        1424
      ],
      "parameters": {
        "width": 208,
        "height": 352,
        "content": "## Step 3\n\n\nConverts file for upload"
      }
    },
    {
      "id": "7cfff106-510f-46d9-aed2-f8d5cde4369b",
      "name": "Sticky Note16",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -4688,
        1408
      ],
      "parameters": {
        "width": 208,
        "height": 352,
        "content": "## Step 5\n\nFormats final output with image URL, alt text, and confirmation message"
      }
    },
    {
      "id": "8a0e7ba0-5c3d-4c72-a5c6-10318074769c",
      "name": "Sticky Note18",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -6224,
        1216
      ],
      "parameters": {
        "width": 2896,
        "height": 144,
        "content": "\n# Important\nThis workflow should be created as an individual one. Then, in the Agent Tool node, you need to select it as the tool. DON'T try to run it inside the same workflow."
      }
    },
    {
      "id": "7f20a1aa-3b62-460c-afc7-05f4910f3aad",
      "name": "Get Image URL",
      "type": "n8n-nodes-base.set",
      "position": [
        -5680,
        1600
      ]
    },
    {
      "id": "784ba28b-cdde-4950-99dd-414d0c695a7c",
      "name": "Convert File",
      "type": "n8n-nodes-base.convertToFile",
      "position": [
        -5392,
        1600
      ]
    },
    {
      "id": "b743d732-0624-4572-b286-f30e6839784b",
      "name": "Sticky Note15",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -5152,
        1424
      ],
      "parameters": {
        "width": 208,
        "height": 352,
        "content": "## Step 4\n\n\nUploads image to Google Drive with descriptive filename"
      }
    }
  ],
  "connections": {
    "AI Agent": {
      "main": [
        [
          {
            "node": "Process Agent Output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Log Error": {
      "main": [
        [
          {
            "node": "Save Error",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save Error": {
      "main": [
        [
          {
            "node": "Wait a few seconds",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert File": {
      "main": [
        [
          {
            "node": "Upload to Google Drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Success": {
      "main": [
        [
          {
            "node": "Mark as Complete",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Log Error",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Image URL": {
      "main": [
        [
          {
            "node": "Convert File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "AI Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Expand Content": {
      "main": [
        [
          {
            "node": "Format Agent Output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Image": {
      "main": [
        [
          {
            "node": "Get Image URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert to HTML": {
      "main": [
        [
          {
            "node": "Create New Post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create New Post": {
      "main": [
        [
          {
            "node": "Check Success",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [
          {
            "node": "No Keywords Available",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Mark as Complete": {
      "main": [
        [
          {
            "node": "Save Success Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Load Pending Keywords",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Get Download Links": {
      "main": [
        [
          {
            "node": "Result",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait a few seconds": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Agent Output": {
      "main": [
        [
          {
            "node": "Merge Content Paths",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Merge Content Paths": {
      "main": [
        [
          {
            "node": "Convert to HTML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Process Agent Output": {
      "main": [
        [
          {
            "node": "Content Quality Check",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save Success Results": {
      "main": [
        [
          {
            "node": "Wait a few seconds",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Content Quality Check": {
      "main": [
        [
          {
            "node": "Merge Content Paths",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Expand Content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Load Pending Keywords": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload to Google Drive": {
      "main": [
        [
          {
            "node": "Get Download Links",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Image Generation Tool": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "When Executed by Another Workflow": {
      "main": [
        [
          {
            "node": "Generate Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}