AutomationFlowsAI & RAG › Create Blog Drafts, Images, and Linkedin Posts with Tavily, Gemini, and Openai

Create Blog Drafts, Images, and Linkedin Posts with Tavily, Gemini, and Openai

Byn8n Lab @n8n-lab on n8n.io

This workflow receives a blog request via webhook, researches the topic with Tavily, generates a long-form HTML article using Google Gemini, creates two images via the kie.ai API, stores assets in Google Drive, updates a Google Sheets tracker, and notifies a Slack user with…

Webhook trigger★★★★★ complexityAI-powered43 nodesAgent@Tavily/N8N Nodes TavilyGoogle Gemini ChatGoogle SheetsGoogle DriveSlackHTTP RequestChain Llm
AI & RAG Trigger: Webhook Nodes: 43 Complexity: ★★★★★ AI nodes: yes Added:
Create Blog Drafts, Images, and Linkedin Posts with Tavily, Gemini, and Openai — n8n workflow card showing Agent, @Tavily/N8N Nodes Tavily, Google Gemini Chat integration

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

This workflow follows the Agent → Chainllm 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": "FDZr5ABDa4BCNC8Q",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "AI writing assistant for LinkedIn and Medium",
  "tags": [],
  "nodes": [
    {
      "id": "41fd1b64-987c-4232-aa8c-833c07c590c5",
      "name": "Receive Blog Request",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -2176,
        48
      ],
      "parameters": {
        "path": "0ac2a994-3f80-4833-8a41-045ad7437037",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 2.1
    },
    {
      "id": "43614248-e64b-417b-9f66-8173aeae972a",
      "name": "Write Blog1",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -1488,
        48
      ],
      "parameters": {
        "text": "=TITLE (topic):\n{{ $('Edit Fields3').item.json.body.rowData['AI Blog Title'] }}\n\nRESEARCH:\n{{ JSON.stringify($('Search1').item.json.results) }}",
        "options": {
          "systemMessage": "=### SYSTEM PROMPT: CONTENT ARCHITECT (OPTIMIZED FOR MEDIUM COPY-PASTE)\n\nYou are a Senior Technical Content Engineer. Your task is to generate a deep-dive, technical listicle or article based on the provided Topic and Research data. \n\n---\n\n## 1. OUTPUT REQUIREMENTS & FORMATTING (STRICT)\n- **Format:** Return ONLY the full HTML content of the article. Do not include JSON wrappers, markdown code blocks, intro text, or meta-commentary. Start with the first HTML tag and end with the last.\n- **Punctuation:** NEVER use em-dashes (`\u2014`). Use a standard hyphen (`-`) or a colon where appropriate.\n- **NO TABLES:** Do not generate HTML tables anywhere in the document. Summaries or comparisons must be completely converted into highly structured text sections using descriptive headings instead.\n- **Medium Paragraph Padding Fix:** When rendering raw HTML elements, Medium collapses regular consecutive `<p>` tags, making them look clumped together. To force a crisp, empty row between paragraphs, you must explicitly separate every consecutive paragraph element by injecting an empty spacer block: `<div style=\"height: 20px;\"></div>`. Do not put this spacer inside the `<p>` tags.\n- **Medium Bullet-Point Fix (Eliminate Empty Rows):** When copying standard `<ul>` or `<ol>` lists to Medium, empty space rows are often automatically injected because of hidden whitespace or formatting breaks between `<li>` tags. To fix this, write all list components compactly on a single compressed line without carriage returns or spaces between the tags. Example layout: `<ul><li>Item 1</li><li>Item 2</li></ul>`. Do not add trailing periods or line breaks after the closing `</li>` tag.\n\n---\n\n## 2. ARTICLE STRUCTURE\nThe article must be no more than 2,500-3,000 words and follow this exact sequence:\n\n1. **Introduction:** Define the business problem and the high-level automation strategy. Make it incredibly sharp, optimistic, and strategic. Avoid clich\u00e9 AI hooks. Ensure consecutive `<p>` blocks use the explicit `<div>` spacer.\n2. **Overview of Automation Patterns:** A textual description highlighting the patterns covered in the article, structured with clean text blocks and the Medium bullet-point layout rules. No tables.\n3. **Detailed Sections:** For each item in the listicle, you must include:\n    * **Workflow Overview:** The business logic and objective.\n    * **Technical Stack:** Specific n8n nodes and 3rd party integrations used (formatted using the tight, single-line list layout).\n    * **Implementation Steps:** Numbered list (`<ol>`) of the build process (formatted using the tight, single-line list layout).\n    * **ROI Metrics:** Concrete business outcomes (time, cost, or efficiency) formatted cleanly using single-line items.\n4. **Architecture Capabilities Matrix:** A descriptive summary section using subsections (`<h3>`) to compare complexity, setup time, and scalability across the solutions. No tables.\n5. **FAQ Section:** 5-10 technical and strategic Q&A pairs using clean paragraph and `<h3>` tags with explicit padding.\n6. **Conclusion:** Final summary and a clear call to action for our services.\n\n---\n\n## 3. HTML TAG RULES\n- **Headers:** Use `<h2>` for main sections and `<h3>` for subsections.\n- **Lists:** Use `<ul>` or `<ol>` for all technical steps, features, and stacks. Ensure they are written compactly on a single flat line to avoid Medium double-spacing errors: `<ul><li>Text</li><li>Text</li></ul>`.\n- **Callouts:** Wrap \"Pro-Tips\" or \"Key Insights\" in a `<div style=\"background-color: #f8fafc; padding: 20px; border-radius: 8px; border: 1px solid #e2e8f0; margin: 25px 0; line-height: 1.6;\">`. Do not use nested paragraphs inside callout blocks.\n- **Cleanliness:** Do not use inline CSS except for the explicit `<div style=\"height: 20px;\"></div>` paragraph spacers and the callout boxes specified above.\n\n---\n\n## 4. EXECUTION GUIDELINES\n- **Research Integration:** You must incorporate all technical details, tool names, and data points provided in the Tavily research input.\n- **Context:** Focus exclusively on n8n.io, custom AI agents, and advanced workflow orchestration.\n- **Technical Accuracy:** Ensure node names and logic (e.g., \"HTTP Request node,\" \"Wait node,\" \"Code node\") are accurate to the n8n ecosystem.\n- **Banned AI Phrases:** Never use pessimistic, arrogant, or robotic transition phrases. Completely avoid:\n    * \"Most teams don't know what they are doing\"\n    * \"Here's what actually happens...\"\n    * \"The reality:...\"\n    * \"Here is exactly how to...\"\n- **Tone:** Be optimistic, authoritative, and builder-focused.\n\n---"
        },
        "promptType": "define"
      },
      "retryOnFail": true,
      "typeVersion": 3.1,
      "waitBetweenTries": 5000
    },
    {
      "id": "64f9c2e3-faac-4dc5-a154-1e2b0c16a330",
      "name": "Search1",
      "type": "@tavily/n8n-nodes-tavily.tavily",
      "position": [
        -1728,
        48
      ],
      "parameters": {
        "query": "={{ $json.body.rowData[\"AI Blog Title\"] }}",
        "options": {
          "max_results": 10,
          "search_depth": "advanced",
          "include_answer": "basic"
        }
      },
      "credentials": {
        "tavilyApi": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 1,
      "alwaysOutputData": true,
      "waitBetweenTries": 5000
    },
    {
      "id": "be686544-1a67-4ac2-a8ee-4bb3440cb07b",
      "name": "Edit Fields3",
      "type": "n8n-nodes-base.set",
      "position": [
        -1952,
        48
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "249926b4-e70c-4821-b0bc-2006aa80358d",
              "name": "body.rowNumber",
              "type": "number",
              "value": "={{ $json.body.rowNumber }}"
            },
            {
              "id": "188dab13-4784-4912-90ec-d286a49b5568",
              "name": "body.rowData[\"AI Blog Title\"]",
              "type": "string",
              "value": "={{ $json.body.rowData[\"AI Blog Title\"] }}"
            },
            {
              "id": "481c1319-9407-43ee-ad25-e78d48f8417a",
              "name": "body.rowData[\"Key Points\"]",
              "type": "string",
              "value": "={{ $json.body.rowData[\"Key Points\"] }}"
            },
            {
              "id": "5cbed60f-3032-4834-87e5-1f43ae6bed5d",
              "name": "body.rowData.type",
              "type": "string",
              "value": "={{ $json.body.rowData.type }}"
            },
            {
              "id": "ab15358b-9097-474a-94e3-456d0e84af3c",
              "name": "body.rowData.Author",
              "type": "string",
              "value": "={{ $json.body.rowData.Author }}"
            },
            {
              "id": "81c15140-f21c-414c-8d30-f4d0b86b39d3",
              "name": "body.rowData['Type of work ']",
              "type": "string",
              "value": "={{ $json.body.rowData['Type of work '] }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "9141a723-984e-4270-a000-d9a17c6c6f3d",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        -1424,
        240
      ],
      "parameters": {
        "options": {
          "maxOutputTokens": 50000
        },
        "modelName": "models/gemini-3.1-pro-preview"
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "d04f474d-0820-4074-8f9f-7670381c15c1",
      "name": "Check as completed on Sheets1",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        544,
        -480
      ],
      "parameters": {
        "columns": {
          "value": {
            "Done ": "1",
            "ARTICLE": "https://drive.google.com/drive/u/1/folders/13fs1LjROnEv7FK_Hwwgzu9N6s56S8KNh",
            "LN Post": "={{ $json.text }}",
            "row_number": "={{ $('Edit Fields3').item.json.body.rowNumber }}"
          },
          "schema": [
            {
              "id": "AI Blog Title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "AI Blog Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Key Points",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Key Points",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Trigger",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Trigger",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Done ",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Done ",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ARTICLE",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ARTICLE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Image 1",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Image 1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Image 2",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Image 2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Author",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Author",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Published",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Published",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "LN Post",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "LN Post",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "row_number"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/18xPvb21ErxlUTMRz-o4aSwcOU5NJskOUFMEiFkZGNTM/edit#gid=0",
          "cachedResultName": "AI Titles"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "18xPvb21ErxlUTMRz-o4aSwcOU5NJskOUFMEiFkZGNTM",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/18xPvb21ErxlUTMRz-o4aSwcOU5NJskOUFMEiFkZGNTM/edit?usp=drivesdk",
          "cachedResultName": "n8n lab AI content distribution"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "1092f89f-da9a-499c-a93c-16f161dcf984",
      "name": "Markdown1",
      "type": "n8n-nodes-base.markdown",
      "position": [
        -1120,
        -480
      ],
      "parameters": {
        "mode": "markdownToHtml",
        "options": {},
        "markdown": "={{ $json.output }}"
      },
      "typeVersion": 1
    },
    {
      "id": "548534a0-55ad-4353-8cc7-768e11b004ac",
      "name": "Create file from text1",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -896,
        -480
      ],
      "parameters": {
        "name": "=html-{{ $('Edit Fields3').item.json.body.rowData['AI Blog Title'] }}-{{ $now.setLocale('sr-latn').toLocaleString(DateTime.DATE_SHORT) }}.html",
        "content": "={{ $json.data }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive",
          "cachedResultUrl": "https://drive.google.com/drive/my-drive",
          "cachedResultName": "My Drive"
        },
        "options": {
          "convertToGoogleDocument": false
        },
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "13fs1LjROnEv7FK_Hwwgzu9N6s56S8KNh",
          "cachedResultUrl": "https://drive.google.com/drive/folders/13fs1LjROnEv7FK_Hwwgzu9N6s56S8KNh",
          "cachedResultName": "n8n lab blogs"
        },
        "operation": "createFromText"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "8e5e1c6f-84ad-4a0b-bb6b-a12c4d6ee120",
      "name": "Download file1",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -672,
        -480
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "options": {
          "fileName": "=html-{{ $('Edit Fields3').item.json.body.rowData['AI Blog Title'] }}-{{ $now.setLocale('sr-latn').toLocaleString(DateTime.DATE_SHORT) }}.html"
        },
        "operation": "download"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "005d5830-4c31-492f-b542-06c1c26cc3da",
      "name": "Upload file1",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -224,
        -480
      ],
      "parameters": {
        "name": "=html-{{ $('Edit Fields3').item.json.body.rowData['AI Blog Title'] }} ({{ $now.setLocale('sr-latn').toLocaleString(DateTime.DATE_SHORT) }})",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {
          "simplifyOutput": true,
          "useContentAsIndexableText": true
        },
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "13fs1LjROnEv7FK_Hwwgzu9N6s56S8KNh",
          "cachedResultUrl": "https://drive.google.com/drive/folders/13fs1LjROnEv7FK_Hwwgzu9N6s56S8KNh",
          "cachedResultName": "n8n lab blogs"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "d9ac19a3-a89b-4b61-a615-d8ec9fa9c6df",
      "name": "Delete a file1",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        0,
        -480
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Create file from text1').item.json.id }}"
        },
        "options": {},
        "operation": "deleteFile"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "295f4ad5-d39f-4d05-a2e3-771c81fe9cb6",
      "name": "Code in JavaScript4",
      "type": "n8n-nodes-base.code",
      "position": [
        -448,
        -480
      ],
      "parameters": {
        "jsCode": "// This Function node expects input from a \"Download a file\" node\n// and changes the mimeType from text/plain to text/html\n\nreturn items.map(item => {\n  if (item.binary && item.binary.data) {\n    // force mimeType to text/html\n    item.binary.data.mimeType = 'text/html';\n  }\n  return item;\n});"
      },
      "typeVersion": 2
    },
    {
      "id": "4627039a-d8a0-49cb-a401-a3f2bbf4dca5",
      "name": "Upload file2",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        464,
        -192
      ],
      "parameters": {
        "name": "={{ $('Edit Fields3').item.json.body.rowData['AI Blog Title'] }}_headline_img.png",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive",
          "cachedResultUrl": "https://drive.google.com/drive/my-drive",
          "cachedResultName": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "1ZsRoLFFrDNjgZRXMEWK-wCOmZLuGXCUV",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1ZsRoLFFrDNjgZRXMEWK-wCOmZLuGXCUV",
          "cachedResultName": "n8n Lab Articles - images"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "cdbe1185-14b6-4019-9add-6b59cda559a8",
      "name": "Check as completed on Sheets2",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        688,
        -192
      ],
      "parameters": {
        "columns": {
          "value": {
            "Done ": "1",
            "Image 1": "={{ $json.webViewLink }}",
            "row_number": "={{ $('Edit Fields3').item.json.body.rowNumber }}"
          },
          "schema": [
            {
              "id": "AI Blog Title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "AI Blog Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Key Points",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Key Points",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Trigger",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Trigger",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Done ",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Done ",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ARTICLE",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ARTICLE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Image 1",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Image 1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Image 2",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Image 2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Author",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Author",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Published",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Published",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Note",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Note",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "row_number"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/18xPvb21ErxlUTMRz-o4aSwcOU5NJskOUFMEiFkZGNTM/edit#gid=0",
          "cachedResultName": "AI Titles"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "18xPvb21ErxlUTMRz-o4aSwcOU5NJskOUFMEiFkZGNTM",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/18xPvb21ErxlUTMRz-o4aSwcOU5NJskOUFMEiFkZGNTM/edit?usp=drivesdk",
          "cachedResultName": "n8n lab AI content distribution"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "de3a681a-f9dd-4125-b7c3-20cc05e49a59",
      "name": "Edit Fields5",
      "type": "n8n-nodes-base.set",
      "position": [
        -1104,
        160
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3.4
    },
    {
      "id": "e6405c75-aa24-482f-99dd-52e762f962f2",
      "name": "Upload file3",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        480,
        176
      ],
      "parameters": {
        "name": "={{ $('Edit Fields3').item.json.body.rowData['AI Blog Title'] }}_inside_img.png",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive",
          "cachedResultUrl": "https://drive.google.com/drive/my-drive",
          "cachedResultName": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "1ZsRoLFFrDNjgZRXMEWK-wCOmZLuGXCUV",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1ZsRoLFFrDNjgZRXMEWK-wCOmZLuGXCUV",
          "cachedResultName": "n8n Lab Articles - images"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "8e75c22b-dfae-4de8-8ff1-dad8912950cc",
      "name": "Check as completed on Sheets3",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        704,
        176
      ],
      "parameters": {
        "columns": {
          "value": {
            "Done ": "1",
            "Image 2": "={{ $json.webViewLink }}",
            "row_number": "={{ $('Edit Fields3').item.json.body.rowNumber }}"
          },
          "schema": [
            {
              "id": "AI Blog Title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "AI Blog Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Key Points",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Key Points",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Trigger",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Trigger",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Done ",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Done ",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ARTICLE",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ARTICLE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Image 1",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Image 1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Image 2",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Image 2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Author",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Author",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Published",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Published",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Note",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Note",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "row_number"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/18xPvb21ErxlUTMRz-o4aSwcOU5NJskOUFMEiFkZGNTM/edit#gid=0",
          "cachedResultName": "AI Titles"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "18xPvb21ErxlUTMRz-o4aSwcOU5NJskOUFMEiFkZGNTM",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/18xPvb21ErxlUTMRz-o4aSwcOU5NJskOUFMEiFkZGNTM/edit?usp=drivesdk",
          "cachedResultName": "n8n lab AI content distribution"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "d70c51c9-bef9-4699-bd47-28dd911b3963",
      "name": "Send a message1",
      "type": "n8n-nodes-base.slack",
      "position": [
        -848,
        736
      ],
      "parameters": {
        "text": "=*### \ud83d\ude80 New AI Article Created!*\n\nTopic: <https://drive.google.com/drive/u/1/folders/13fs1LjROnEv7FK_Hwwgzu9N6s56S8KNh|{{ $('Edit Fields3').item.json.body.rowData['AI Blog Title'] }}>\nStatus: Ready for Review\n---\n*\ud83d\udcf8 Visual Assets:*\n\u2022 <{{ $json['Image 1'] }}|Header Image>\n\u2022 <{{ $json['Image 2'] }}|In-Article Infographic>\n---\n*\ud83d\udd17 Quick Access:*\n\ud83d\udc49 <https://docs.google.com/spreadsheets/d/18xPvb21ErxlUTMRz-o4aSwcOU5NJskOUFMEiFkZGNTM/edit#gid=0|Open Google Sheet Dashboard>",
        "user": {
          "__rl": true,
          "mode": "list",
          "value": "U0AMDGTLHSN",
          "cachedResultName": "m.mateja003"
        },
        "select": "user",
        "otherOptions": {
          "includeLinkToWorkflow": false
        }
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.4
    },
    {
      "id": "8b59ba0d-3831-4d3e-831d-bcb266342389",
      "name": "Wait3",
      "type": "n8n-nodes-base.wait",
      "position": [
        -640,
        272
      ],
      "parameters": {
        "amount": 10
      },
      "typeVersion": 1.1
    },
    {
      "id": "f0d01499-7339-4e58-a44d-9f49fb16ebfa",
      "name": "Get Image3",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -432,
        272
      ],
      "parameters": {
        "url": "https://api.kie.ai/api/v1/jobs/recordInfo",
        "options": {},
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "taskId",
              "value": "={{ $json.data.taskId }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer {YOUR API KEY}"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "c71a8c70-8638-4e95-8d37-0b17edb70f9c",
      "name": "Result3",
      "type": "n8n-nodes-base.set",
      "position": [
        32,
        176
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "b5346dc9-b2c3-405d-aa78-a844b4332cd9",
              "name": "image",
              "type": "string",
              "value": "={{ JSON.parse($json.data.resultJson).resultUrls[0] }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "66610389-e52e-4734-91bb-ee0e4ec7ff96",
      "name": "Switch3",
      "type": "n8n-nodes-base.switch",
      "position": [
        -192,
        240
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "success",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "5d365e2d-6c1d-48fd-b1e1-dc6ed403e684",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.data.state }}",
                    "rightValue": "success"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "waiting",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "a7ba453c-072e-401c-a4e9-7d9d3c7349d1",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.data.state }}",
                    "rightValue": "waiting"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "generating",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "b233b687-f81c-428e-bce7-459684a6a34b",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.data.state }}",
                    "rightValue": "generating"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "fail",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "69d8ccbf-d327-4705-9159-b7be48f99e73",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.data.state }}",
                    "rightValue": "fail"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.3
    },
    {
      "id": "cfad1c11-ebaa-4355-a237-e3a4f489700f",
      "name": "Wait4",
      "type": "n8n-nodes-base.wait",
      "position": [
        -656,
        -96
      ],
      "parameters": {
        "amount": 10
      },
      "typeVersion": 1.1
    },
    {
      "id": "7a2f593e-41cf-41ad-8ca9-a9ec276d3f86",
      "name": "Get Image4",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -448,
        -96
      ],
      "parameters": {
        "url": "https://api.kie.ai/api/v1/jobs/recordInfo",
        "options": {},
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "taskId",
              "value": "={{ $json.data.taskId }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer {YOUR API KEY}"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "821d57a1-4037-4e8f-a0c4-d7edebf754cb",
      "name": "Result4",
      "type": "n8n-nodes-base.set",
      "position": [
        16,
        -192
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "b5346dc9-b2c3-405d-aa78-a844b4332cd9",
              "name": "image",
              "type": "string",
              "value": "={{ JSON.parse($json.data.resultJson).resultUrls[0] }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "16bfd0e2-3325-4ecb-a4c8-8603f247e868",
      "name": "Switch4",
      "type": "n8n-nodes-base.switch",
      "position": [
        -208,
        -128
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "success",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "5d365e2d-6c1d-48fd-b1e1-dc6ed403e684",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.data.state }}",
                    "rightValue": "success"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "waiting",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "99d8bd2d-1a2a-4556-898e-7a97783a58be",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.data.state }}",
                    "rightValue": "waiting"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "generating",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "b233b687-f81c-428e-bce7-459684a6a34b",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.data.state }}",
                    "rightValue": "generating"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "fail",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "69d8ccbf-d327-4705-9159-b7be48f99e73",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.data.state }}",
                    "rightValue": "fail"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.3
    },
    {
      "id": "acad3de0-837e-4063-8a45-53f06b57b2f7",
      "name": "Check as completed on Sheets4",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        16,
        0
      ],
      "parameters": {
        "columns": {
          "value": {
            "Image 1": "=ERROR - Image 1",
            "row_number": "={{ $('Edit Fields3').item.json.body.rowNumber }}"
          },
          "schema": [
            {
              "id": "AI Blog Title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "AI Blog Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Key Points",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Key Points",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Trigger",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Trigger",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Done ",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Done ",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ARTICLE",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ARTICLE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Image 1",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Image 1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Image 2",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Image 2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Author",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Author",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Published",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Published",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Note",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Note",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "row_number"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/18xPvb21ErxlUTMRz-o4aSwcOU5NJskOUFMEiFkZGNTM/edit#gid=0",
          "cachedResultName": "AI Titles"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "18xPvb21ErxlUTMRz-o4aSwcOU5NJskOUFMEiFkZGNTM",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/18xPvb21ErxlUTMRz-o4aSwcOU5NJskOUFMEiFkZGNTM/edit?usp=drivesdk",
          "cachedResultName": "n8n lab AI content distribution"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "40bfbe77-9bb1-49c6-8a83-6259e3a2fe9f",
      "name": "Check as completed on Sheets5",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        32,
        368
      ],
      "parameters": {
        "columns": {
          "value": {
            "Image 1": "=ERROR - Image 2",
            "row_number": "={{ $('Edit Fields3').item.json.body.rowNumber }}"
          },
          "schema": [
            {
              "id": "AI Blog Title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "AI Blog Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Key Points",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Key Points",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Trigger",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Trigger",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Done ",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Done ",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ARTICLE",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ARTICLE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Image 1",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Image 1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Image 2",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Image 2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Author",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Author",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Published",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Published",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Note",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Note",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "row_number"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/18xPvb21ErxlUTMRz-o4aSwcOU5NJskOUFMEiFkZGNTM/edit#gid=0",
          "cachedResultName": "AI Titles"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "18xPvb21ErxlUTMRz-o4aSwcOU5NJskOUFMEiFkZGNTM",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/18xPvb21ErxlUTMRz-o4aSwcOU5NJskOUFMEiFkZGNTM/edit?usp=drivesdk",
          "cachedResultName": "n8n lab AI content distribution"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "b99ed6b6-6208-4768-a0ff-8a7c0bce0c3e",
      "name": "Create Image3",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -880,
        -96
      ],
      "parameters": {
        "url": "https://api.kie.ai/api/v1/jobs/createTask",
        "method": "POST",
        "options": {
          "redirect": {
            "redirect": {}
          }
        },
        "jsonBody": "={\n  \"model\": \"gpt-image-2-text-to-image\",\n  \"callBackUrl\": \"https://your-domain.com/api/callback\",\n  \"input\": {\n    \"prompt\": \"TITLE FOR THE IMAGE TODAY:{{ $('Edit Fields3').item.json.body.rowData['AI Blog Title'] }} \\n\\nSYSTEM PROMT:\\nYou are a professional visual designer creating LinkedIn content visuals.\\nFollow this exact design system for every image.\\n---\\n\\n## OUTPUT FORMAT\\nCreate as a single self-contained HTML file with all CSS inline.\\nEmbed fonts as base64 (do not use Google Fonts CDN links).\\nUse wkhtmltoimage to export to PNG at exact dimensions.\\n\\n---\\n\\n## COLOR SYSTEM\\n\\nBackground: #080510 (deep dark purple-black) \u2014 ALWAYS dark, never light.\\n\\nBrand gradient (headers, key UI): linear-gradient(135deg, #667EEA 0%, #764BA2 100%)\\n\\nSemantic colors:\\n- AI / Modern / Positive (Green): #10B981 \u2192 #059669\\n- Warning / Old approach / Wrong (Red): #EF4444 \u2192 #DC2626\\n- Traditional / Secondary (Blue): #3B82F6 \u2192 #2563EB\\n- Accent Purple: #8B5CF6 \u2192 #7C3AED\\n- Accent Orange: #F59E0B \u2192 #D97706\\n\\nText:\\n- Primary: #FFFFFF\\n- Secondary: #C8CBEA\\n- Muted / subtitles: #848386\\n\\nUI elements:\\n- Card background: rgba(255, 255, 255, 0.04\u20130.06)\\n- Borders: rgba(102, 126, 234, 0.12\u20130.20)\\n- Glassmorphic: backdrop-filter: blur(10px)\\n\\nAll gradients use 135deg angle \u2014 never mix angles.\\n\\n---\\n\\n## TYPOGRAPHY\\n\\nFont: Poppins (embedded locally, not from CDN)\\nWeights used: 300 (Light), 400 (Regular), 500 (Medium), 600 (SemiBold), 700 (Bold)\\n\\nScale:\\n- Main headline: 48\u201372px, weight 700, letter-spacing -1px to -2.5px, line-height 1.0\u20131.15\\n- Section headers: 28\u201336px, weight 700, letter-spacing -0.5px\\n- Body text: 15\u201318px, weight 400, color #C8CBEA, line-height 1.55\u20131.65\\n- Labels / tags: 10\u201312px, weight 600\u2013700, UPPERCASE, letter-spacing 1\u20132px\\n- Data / numbers: 28\u201372px, weight 700, gradient colored\\n\\n---\\n\\n## LAYOUT & SPACING\\n\\nPadding: 48\u201380px horizontal, 48\u201360px vertical\\nTop space: 80\u2013140px for logo placement (leave blank)\\nMax items per section: 3\u20135 (cognitive load rule)\\nCard border-radius: 12\u201316px\\nPill/tag border-radius: 4px (sharp) or 20px (rounded) \u2014 pick one style per visual\\nShadows: 0 4px 12px rgba(0,0,0,0.1) for cards; 0 0 8\u201310px rgba(color, 0.6) for glows\\n\\n---\\n\\n## BACKGROUND ELEMENTS (always include at least 2)\\n\\nAmbient blobs:\\n  position: absolute; border-radius: 50%; filter: blur(80\u2013100px); opacity: 0.15\u20130.28\\n  Colors: use brand gradient colors, place off-screen edges\\n\\nChoose one texture:\\n  Option A \u2014 Grid: background-image: linear-gradient(rgba(102,126,234,0.04) 1px, transparent 1px),\\n             linear-gradient(90deg, rgba(102,126,234,0.04) 1px, transparent 1px); background-size: 60px 60px\\n  Option B \u2014 Diagonal lines: repeating-linear-gradient(-45deg, transparent, transparent 40px,\\n             rgba(102,126,234,0.025) 40px, rgba(102,126,234,0.026) 41px)\\n\\nOptional accent elements:\\n  - Left vertical bar: width 4\u20135px, full height, gradient (purple \u2192 green)\\n  - Top/bottom hairlines: height 1px, gradient from rgba(102,126,234,0.6) to transparent\\n\\n---\\n\\n## COMPONENT PATTERNS\\n\\nCard:\\n  background: rgba(255,255,255,0.04);\\n  border: 1px solid rgba(102,126,234,0.15\u20130.20);\\n  border-radius: 12\u201316px;\\n  padding: 18\u201324px;\\n\\nTag / Pill:\\n  background: rgba(color, 0.10); border: 1px solid rgba(color, 0.22);\\n  padding: 6\u20138px 14\u201318px; border-radius: 4px or 20px;\\n  font-size: 10\u201312px; font-weight: 700; text-transform: uppercase; letter-spacing: 1\u20132px;\\n\\nNumbered badge:\\n  width/height: 24\u201360px; border-radius: 50%;\\n  background: gradient; font-weight: 700; color: white;\\n  box-shadow: 0 0 10px rgba(color, 0.5);\\n\\nProgress bar:\\n  Track: height 8px; background rgba(255,255,255,0.06); border-radius 10px;\\n  Fill: gradient; border-radius 10px;\\n\\nArrow connector (pipeline):\\n  width 24\u201328px; height 2px; background gradient;\\n  ::after pseudo-element for arrowhead (border trick)\\n\\nVertical connector (between stacked cards):\\n  width 1\u20132px; height 12\u201316px; background gradient top-to-bottom; opacity 0.4\\n\\n---\\n\\n## BRANDING ELEMENTS\\n\\nLogo placement: top-right corner, font-size 13\u201314px, weight 700\\n  Format: \\\"n8nLab\\\" where \\\"n8n\\\" is rgba(200,203,234,0.4) and \\\"Lab\\\" is rgba(102,126,234,0.6)\\n\\nStatus indicator (top-left):\\n  Green dot (7\u20138px, box-shadow glow) + uppercase label text in rgba(200,203,234,0.45)\\n\\nFooter (optional):\\n  Muted text, bottom-center or bottom-left, font-size 12px, color #848386\\n\\n---\\n\\n## LAYOUT TEMPLATES\\n\\n### Template A \u2014 Side by Side (Comparison)\\nGrid: 1fr 1fr | Left = Red semantic | Right = Green semantic\\nVS divider badge in center (optional)\\nUse for: wrong vs right, before vs after, old vs new\\n\\n### Template B \u2014 Vertical Progression\\nStack 3\u20135 cards with connector lines between them\\nNumbered badges on left, content on right\\nColor progression per stage: green \u2192 blue \u2192 purple \u2192 orange \u2192 red\\nUse for: stages, maturity models, step-by-step processes\\n\\n### Template C \u2014 Left Content + Right Visual\\nLeft 55\u201360%: headline, subtitle, tags, pipeline steps\\nRight 35\u201340%: decorative cards with stats/bars/values\\nUse for: article banners, newsletter covers, tool showcases\\n\\n### Template D \u2014 Centered Hero\\nFull-width centered layout, large typography dominant\\nSubtitle below, tags at bottom\\nUse for: bold statements, single-insight posts, cover images\\n\\n### Template E \u2014 Data Visualization\\nHorizontal bar charts with labels and percentage values\\nLegend at bottom, callout box for key insight\\nUse for: statistics, attribution data, survey results\\n\\n---\\n\\n## VISUAL HIERARCHY RULES\\n\\n1. Most important info \u2192 Largest, boldest, highest contrast (white or gradient text)\\n2. Supporting info \u2192 Medium, #C8CBEA\\n3. Context / labels \u2192 Smallest, uppercase, #848386\\n4. Max 3 font sizes visible at once\\n5. Gradient text only for 1\u20132 key words per visual, not entire paragraphs\\n6. White space is intentional \u2014 never fill every pixel\\n\\n---\\n\\n## ANTI-PATTERNS \u2014 NEVER DO THESE\\n\\n- Light or white backgrounds\\n- More than 3 semantic colors in one visual\\n- Gradient angles other than 135deg\\n- Decorative elements with no informational purpose\\n- Text touching edges (always respect padding)\\n- More than 5 items in any list\\n- Inconsistent card sizes in the same section\\n- Random font sizes (always follow the scale)\\n- Emoji as primary icons (use styled divs or text badges instead)\\n- Google Fonts CDN (always embed locally)\\n\\n---\\n\\n## QUALITY CHECKLIST (verify before export)\\n\\n[ ] Background is exactly #080510\\n[ ] All gradients at 135deg\\n[ ] Poppins font embedded, not CDN\\n[ ] Minimum 48px padding from all edges\\n[ ] Logo/branding space included\\n[ ] No more than 3\u20135 items per section\\n[ ] Key insight readable in under 3 seconds\\n[ ] Dimensions exact (no approximations)\\n[ ] All text sufficient contrast (never below #848386 for body)\\n[ ] Semantic colors used correctly (green=AI/good, red=warning/old)\\n\\n---\\n\\n## WORKFLOW FOR EACH NEW VISUAL\\n\\n1. Define: What is the ONE key insight this visual communicates?\\n2. Choose template: A (comparison) / B (progression) / C (content+visual) / D (hero) / E (data)\\n3. Pick semantic colors: What does green mean here? What does red mean?\\n4. Write copy: Headline (max 8 words), subtitle (max 2 lines), 3\u20135 items max\\n5. Build HTML with embedded fonts and all CSS inline\\n6. Export PNG at exact dimensions using wkhtmltoimage\\n\\n\",\n    \"aspect_ratio\": \"16:9\",\n    \"resolution\": \"1K\"\n  }\n}",
        "sendBody": true,
        "sendHeaders": true,
        "

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

This workflow receives a blog request via webhook, researches the topic with Tavily, generates a long-form HTML article using Google Gemini, creates two images via the kie.ai API, stores assets in Google Drive, updates a Google Sheets tracker, and notifies a Slack user with…

Source: https://n8n.io/workflows/16676/ — 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 n8n workflow orchestrates a powerful suite of AI Agents and automations to manage and optimize various aspects of an e-commerce operation, particularly for platforms like Shopify. It leverages La

Google Sheets, HTTP Request, Slack +10
AI & RAG

Resume Screening & Behavioral Interviews with Gemini, Elevenlabs, & Notion ATS copy. Uses outputParserStructured, chainLlm, googleDrive, stickyNote. Webhook trigger; 67 nodes.

Output Parser Structured, Chain Llm, Google Drive +9
AI & RAG

Candidate Engagement | Resume Screening | AI Voice Interviews | Applicant Insights

Output Parser Structured, Chain Llm, Google Drive +9
AI & RAG

leads. Uses supabase, gmail, formTrigger, httpRequest. Webhook trigger; 62 nodes.

Supabase, Gmail, Form Trigger +13
AI & RAG

Tired of grinding out YouTube content? This n8n workflow turns AI into your personal video factory—creating engaging, faceless shorts on autopilot. Perfect for creators, marketers, or side-hustlers lo

HTTP Request, Google Drive, Google Sheets +6