{
  "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,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer {YOUR API KEY}"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "8757190c-895e-4c92-88ef-4315ad65f18a",
      "name": "Create Image4",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -864,
        272
      ],
      "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:\\n\\nYou are a professional data visualization and infographic designer\\ncreating visuals that appear INSIDE long-form LinkedIn articles.\\n\\nThese are NOT header/cover images. They are mid-article illustrations\\nthat explain, visualize, or compare concepts from the article text.\\n\\n---\\n\\n## CORE DISTINCTION FROM HEADER IMAGES\\n\\nHeader image \u2192 Text-heavy, headline is the hero, branding prominent\\nIn-article visual \u2192 Data/concept is the hero, minimal text, insight is visual\\n\\nThe reader has been reading for 2\u20133 minutes. This image must:\\n- Instantly clarify a concept that text alone cannot\\n- Show relationships, comparisons, hierarchies, or flows\\n- Be self-explanatory without reading the surrounding article\\n- Create a \\\"pause moment\\\" \u2014 the reader stops and studies it\\n\\n---\\n\\n## OUTPUT FORMAT\\nSingle self-contained HTML file, all CSS inline.\\nEmbed Poppins font as base64 (no CDN).\\nExport with wkhtmltoimage at exact dimensions.\\n\\n---\\n\\n## COLOR SYSTEM\\nIdentical to header system:\\n\\nBackground: #080510\\n\\n\\nSemantic colors (CRITICAL for data viz):\\n- Green  (#10B981\\n\u2192 #059669\\n): positive, AI, modern, correct, high value\\n- Red\\t(#EF4444\\n\u2192 #DC2626\\n): negative, legacy, wrong, low value, risk\\n- Blue   (#3B82F6\\n\u2192 #2563EB\\n): neutral, traditional, secondary category\\n- Purple (#667EEA\\n\u2192 #764BA2\\n): brand, primary category, featured data\\n- Orange (#F59E0B\\n\u2192 #D97706\\n): warning, transition, mid-stage\\n\\nText:\\n- Labels on dark: #C8CBEA\\n\\n- Axis / helper text: #848386\\n\\n- Values / numbers: #FFFFFF\\nor gradient\\n- Category names: semantic color match\\n\\n---\\n\\n## TYPOGRAPHY (scaled down vs header)\\n\\nFont: Poppins embedded\\n\\nScale for in-article visuals:\\n- Chart title: 22\u201328px, weight 700, white, letter-spacing -0.5px\\n- Axis labels: 11\u201313px, weight 500, #848386\\n, uppercase\\n- Data labels (values on bars): 14\u201318px, weight 700, white or gradient\\n- Legend text: 12\u201314px, weight 500, #C8CBEA\\n\\n- Callout / annotation: 13\u201315px, weight 600, semantic color\\n- Category names: 13\u201316px, weight 600, #C8CBEA\\n\\n- Percentage / big number: 32\u201356px, weight 700, gradient colored\\n\\nRule: Never use more than 3 font sizes in one visual.\\n\\n---\\n\\n## VISUAL TYPES \u2014 CHOOSE ONE PER IMAGE\\n\\n### Type 1 \u2014 Horizontal Bar Chart\\nBest for: Rankings, comparisons, before/after metrics, survey data\\nLayout:\\n  - Title top-left (22\u201326px)\\n  - Bars left-to-right, label on left, value on right\\n  - Bar height: 36\u201350px, track height same, border-radius 25px\\n  - Color bars by category (semantic)\\n  - Optional: callout box highlighting the key insight\\n  - Generous spacing between bars (16\u201324px gap)\\n\\n### Type 2 \u2014 Side-by-Side Comparison\\nBest for: Old vs New, Wrong vs Right, Tool A vs Tool B\\nLayout:\\n  - Two columns, equal width\\n  - Left = Red/negative | Right = Green/positive\\n  - Column headers with colored background pills\\n  - 3\u20135 items per column as cards or list rows\\n  - Optional VS badge in center divider\\n  - Items use icons (text badges) + short label\\n\\n### Type 3 \u2014 Vertical Flow / Process Diagram\\nBest for: Step-by-step processes, architecture layers, decision flows\\nLayout:\\n  - 3\u20136 steps stacked vertically\\n  - Each step: numbered badge (left) + card (right) with title + description\\n  - Connector lines between steps (2px, gradient, 30% opacity)\\n  - Color progression: green \u2192 blue \u2192 purple \u2192 orange (or semantic per step)\\n  - Arrows indicate direction of flow\\n\\n### Type 4 \u2014 Pyramid / Hierarchy\\nBest for: Maturity models, priority stacks, org structures\\nLayout:\\n  - 3\u20135 tiers, widest at bottom\\n  - Each tier: different color, label centered, short descriptor\\n  - Bottom = foundation/basic | Top = advanced/rare\\n  - Width ratio: top 30%, each tier grows 15\u201320%\\n\\n### Type 5 \u2014 2x2 Matrix\\nBest for: Positioning, risk/effort analysis, quadrant models\\nLayout:\\n  - 4 quadrants on X/Y axis\\n  - Axis labels on edges (short, uppercase)\\n  - Each quadrant: title + 1\u20132 line description + colored background\\n  - Center intersection mark\\n  - Items can be dots/circles or labeled cards\\n\\n### Type 6 \u2014 Timeline / Evolution\\nBest for: Historical progression, roadmaps, phase transitions\\nLayout:\\n  - Horizontal or vertical timeline\\n  - Nodes: circles with year/phase label\\n  - Between nodes: connecting line with gradient\\n  - Each node: title above + description below (or card to side)\\n  - Color shifts from left to right (old=muted \u2192 new=bright)\\n\\n### Type 7 \u2014 Split Stat Cards\\nBest for: Key metrics, multiple data points, quick facts\\nLayout:\\n  - 2\u20134 large stat cards in a row or 2x2 grid\\n  - Each card: big number (48\u201372px, gradient) + label below + context line\\n  - Cards have subtle border, same size\\n  - One card can be \\\"featured\\\" (slightly larger or highlighted border)\\n\\n### Type 8 \u2014 Architecture / System Diagram\\nBest for: Tech stacks, workflow systems, integration maps\\nLayout:\\n  - Boxes/layers representing system components\\n  - Arrows or lines showing data/signal flow\\n  - Color-coded by layer type (input/process/output)\\n  - Labels inside boxes, connection labels on arrows\\n  - Group related components with subtle background regions\\n\\n---\\n\\n## LAYOUT RULES FOR IN-ARTICLE VISUALS\\n\\nPadding: 40\u201360px all sides (less than header, more room for data)\\nTitle: Always top-left, never centered (unless Type 4/5)\\nLegend: Bottom-center, horizontal, icon + label pairs\\nCallout box: Bottom-right or top-right, highlighted insight\\n  Style: border-left 3px solid semantic-color; background rgba(color,0.08); padding 12\u201316px\\n\\nData density:\\n  - Minimum: 3 data points (otherwise use text)\\n  - Maximum: 8\u201310 items (otherwise split into two visuals)\\n\\nWhitespace:\\n  - Between chart and edges: 40px minimum\\n  - Between bars/rows: 16\u201324px\\n  - Between legend items: 20\u201328px\\n\\n---\\n\\n## ANNOTATION & CALLOUT PATTERNS\\n\\nInsight callout box (always include one per visual):\\n  position: bottom-right or standalone section\\n  background: rgba(semantic-color, 0.08)\\n  border-left: 3px solid semantic-color\\n  border-radius: 0 8px 8px 0\\n  padding: 14px 18px\\n  content: one bold insight sentence (max 12 words)\\n\\nData annotation (on specific bar or node):\\n  Small pill tag floating above/beside element\\n  background: gradient; padding 3px 10px; border-radius 12px\\n  font-size: 11px; font-weight: 700; color: white\\n\\nAxis helper lines:\\n  Horizontal: 1px, rgba(255,255,255,0.06), full width\\n  No vertical grid lines (too noisy)\\n\\n---\\n\\n## WHAT TO MINIMIZE (vs header images)\\n\\n- Branding: Logo smaller (11px), bottom-right only, very low opacity\\n- Text: Only data labels, category names, title, legend \u2014 nothing else\\n- Decorative blobs: Max 1, very low opacity (0.08\u20130.12), don't compete with data\\n- Background texture: Optional, very subtle (0.02\u20130.03 opacity)\\n- No pipeline steps, no tag rows, no subtitle paragraphs\\n\\n---\\n\\n## WHAT TO MAXIMIZE (vs header images)\\n\\n- Data density: Show actual numbers, percentages, ratios\\n- Visual encoding: Bar length, color, size all carry meaning\\n- Contrast between categories: Make the comparison obvious instantly\\n- Annotation: Explicitly label the key insight (don't make reader guess)\\n- Precision: Exact values on every bar, node, or card\\n\\n---\\n\\n## ANTI-PATTERNS FOR IN-ARTICLE VISUALS\\n\\n- Pie charts (hard to compare, use bars instead)\\n- 3D effects on any chart element\\n- More than 5 colors in one visual\\n- Unlabeled axes or bars (always show values)\\n- Decorative elements that compete with data\\n- Text blocks longer than 10 words per label\\n- Inconsistent bar heights or card sizes\\n- Missing legend when using color encoding\\n- Gradient text on data labels (use white, reserve gradient for titles/numbers)\\n\\n---\\n\\n## QUALITY CHECKLIST\\n\\n[ ] One clear insight communicated in under 5 seconds\\n[ ] Every bar/node/card has a visible value or label\\n[ ] Semantic colors used correctly and consistently\\n[ ] Legend present if more than 2 colors used\\n[ ] One callout box highlighting the KEY insight\\n[ ] Poppins embedded (no CDN)\\n[ ] Exact dimensions (1200x627 or 800x800)\\n[ ] Minimum 40px padding from all edges\\n[ ] Background #080510\\n\\n[ ] Branding minimal (logo small, low opacity, bottom corner)\\n[ ] No element touching another element (breathing room)\\n[ ] Visual works without reading surrounding article text\\n\\n---\\n\\n## WORKFLOW FOR EACH IN-ARTICLE VISUAL\\n\\n1. Identify the ONE insight from the article section this image supports\\n2. Choose visual type: bar / comparison / flow / pyramid / matrix / timeline / stats / architecture\\n3. Extract 3\u20138 data points or concepts from the article text\\n4. Assign semantic colors (what is positive? what is negative? what is neutral?)\\n5. Build with data as the dominant element, title as secondary\\n6. Add one callout annotation that states the key insight explicitly\\n7. Verify: can someone understand this without reading the article?\\n8. Export PNG at exact dimensions\\n\",\n    \"aspect_ratio\": \"16:9\",\n    \"resolution\": \"1K\"\n  }\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer {YOUR API KEY}"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "a1be6404-cb0c-4e4a-a311-3202314c105c",
      "name": "HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        240,
        -192
      ],
      "parameters": {
        "url": "={{ $json.image }}",
        "options": {}
      },
      "typeVersion": 4.3
    },
    {
      "id": "de0add94-2ca1-4fdb-aadb-8928c05e3bc1",
      "name": "HTTP Request1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        256,
        176
      ],
      "parameters": {
        "url": "={{ $json.image }}",
        "options": {}
      },
      "typeVersion": 4.3
    },
    {
      "id": "878ca2f1-7337-4ff6-ae58-a867bfe8f955",
      "name": "Get row(s) in sheet2",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1056,
        736
      ],
      "parameters": {
        "options": {},
        "filtersUI": {
          "values": [
            {
              "lookupValue": "={{ $('Edit Fields3').item.json.body.rowData['AI Blog Title'] }}",
              "lookupColumn": "AI Blog Title"
            }
          ]
        },
        "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>"
        }
      },
      "executeOnce": true,
      "typeVersion": 4.7
    },
    {
      "id": "af7a171f-d421-41c2-a6c7-eafda9200697",
      "name": "Basic LLM Chain",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "onError": "continueErrorOutput",
      "position": [
        208,
        -480
      ],
      "parameters": {
        "text": "=Blog Text:\n\n{{ $('Write Blog1').item.json.output }}",
        "batching": {},
        "messages": {
          "messageValues": [
            {
              "message": "You are a part of an article writing system. When a blog gets published, you are getting all the content of the blog and you are formatting a short LinkedIn post that will have the link to the article below. Here is an example output:\n\n\nStop Duct-Taping. Start Architecting.\n\nThe agencies winning in 2026 are treating marketing as an engineering discipline. They map the exact path a data point takes from an ad click to CRM, and they automate every single touchpoint in between.\n\n\u2192 Full breakdown in the article below."
            }
          ]
        },
        "promptType": "define"
      },
      "retryOnFail": true,
      "typeVersion": 1.9,
      "waitBetweenTries": 5000
    },
    {
      "id": "97b14633-9eaa-4380-b039-364c1a8551c2",
      "name": "OpenAI Chat Model3",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        272,
        -304
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "6accc7e4-942a-4739-b1a6-8ad8048a1265",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2256,
        -64
      ],
      "parameters": {
        "color": 7,
        "width": 464,
        "height": 256,
        "content": "## 1. Trigger and prepare input\n   This workflow starts from a selected row in Google Sheets. It cleans the incoming data so the rest of the flow knows which topic to write about and where to save the result."
      },
      "typeVersion": 1
    },
    {
      "id": "69ad16e8-4e5a-4bc6-a669-239bd683c46a",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1776,
        -64
      ],
      "parameters": {
        "color": 7,
        "width": 528,
        "height": 256,
        "content": " ## 2. Research the topic and generate the blog\n   Tavily searches the web for relevant context on the topic. That research, along with the title, is sent to the AI writer to generate the full blog draft."
      },
      "typeVersion": 1
    },
    {
      "id": "71d4892b-fa34-4590-a1de-bfc47fd7f0f8",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1200,
        -576
      ],
      "parameters": {
        "color": 7,
        "width": 1328,
        "height": 256,
        "content": "## 3. Format and save the article document\n Cleans the AI\u2019s raw article, converts it from markdown to HTML, and uses file and JavaScript nodes to build a nicely formatted Google Doc. \nIt then uploads the document to Google Drive and removes any temporary files."
      },
      "typeVersion": 1
    },
    {
      "id": "679b0757-75bd-4db7-b04c-67db6ce9512c",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        176,
        -608
      ],
      "parameters": {
        "color": 7,
        "width": 672,
        "height": 304,
        "content": " ## 4. Generate LinkedIn post and update sheet\n   Once the blog is ready, this note asks another AI model to write a short LinkedIn post that promotes the article. It then updates the original Google Sheets row with the Google Doc link, the LinkedIn text, and a status flag, so everyone can see that this idea has been fully processed."
      },
      "typeVersion": 1
    },
    {
      "id": "c2be5196-6640-4144-bcae-48851c673588",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -960,
        -240
      ],
      "parameters": {
        "color": 7,
        "width": 1872,
        "height": 384,
        "content": "## 5. Create and store the cover image\n   Generates the main cover image for the blog. It sends a prompt based on the blog topic to kia.ai, \nwaits and polls until the image is ready,downloads it, uploads it to Google Drive, and writes the cover image link \nback into the same Google Sheets row so you can use it when publishing."
      },
      "typeVersion": 1
    },
    {
      "id": "dc7ff849-fde0-46fd-881a-135a5cfd7343",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -960,
        160
      ],
      "parameters": {
        "color": 7,
        "width": 1872,
        "height": 384,
        "content": "## 6. Create and store an inline image\n Generates an inline illustration that appears inside the article, uploads it to Google Drive, \nand saves the inline image link in Google Sheets"
      },
      "typeVersion": 1
    },
    {
      "id": "33b7ea9c-40c9-4f95-99da-46d2be18fdf4",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1120,
        576
      ],
      "parameters": {
        "color": 7,
        "width": 528,
        "height": 304,
        "content": "## 7. Fetch the updated row and notify on Slack \n   The workflow reads the updated Google Sheets row with the blog link, images, and LinkedIn copy. It then sends a Slack notification to let the team know the article package is ready."
      },
      "typeVersion": 1
    },
    {
      "id": "9291a276-ec29-44f2-bb8a-486021ef7d93",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3024,
        -352
      ],
      "parameters": {
        "color": 7,
        "width": 720,
        "height": 992,
        "content": "# Article assistant for LinkedIn and Medium\n\nTurns ideas from a single row in Google Sheets into a draft article, images, and a LinkedIn post so you spend time editing and publishing, not doing manual busy work. \n\n----\n## What this flow gives you\n\n- **No more research rabbit holes**  \n  Automatically pulls relevant context from the web for the topic in your selected row. [web:41]\n\n- **You always start from a draft**  \n  Instead of a blank page, you get a readable, structured article you can tweak, cut, or rewrite in your own voice. \n\n- **Clean Google Doc without formatting pain**  \n  The text is formatted and sent to Google Docs, ready for Medium or your blog, without manual fixing of headings and spacing.\n\n- **Two images without opening a design tool**  \n  Generates a cover image and an inline image, links them to the same Sheets row, and uploads them to Drive.\n\n- **A LinkedIn post ready to publish**  \n  Creates a short LinkedIn update based on the article, so you always have a promo snippet ready. \n\n- **Everything tracked in one row**  \n  Links to the doc, images, and LinkedIn copy all live in the same Google Sheets row, so you can see what\u2019s done at a glance.\n\n- **A ping when the package is done**  \n  Sends a notification when the whole bundle is ready for review and publishing.\n\n---\n\n## Why this helps your content process\n\n- Offloads the repetitive parts: research, formatting, visuals, and promo copy.  \n- Keeps you focused on what only you can do: adding stories, opinions, and brand voice. \n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "callerPolicy": "workflowsFromSameOwner",
    "errorWorkflow": "YF2ufwiwj6PRqjflqHtC5",
    "timeSavedMode": "fixed",
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "b60d19d7-e464-4066-9a38-d64c4c2dbfb8",
  "connections": {
    "Wait3": {
      "main": [
        [
          {
            "node": "Get Image3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait4": {
      "main": [
        [
          {
            "node": "Get Image4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Result3": {
      "main": [
        [
          {
            "node": "HTTP Request1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Result4": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search1": {
      "main": [
        [
          {
            "node": "Write Blog1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch3": {
      "main": [
        [
          {
            "node": "Result3",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait3",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait3",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Check as completed on Sheets5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch4": {
      "main": [
        [
          {
            "node": "Result4",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait4",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait4",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Check as completed on Sheets4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Markdown1": {
      "main": [
        [
          {
            "node": "Create file from text1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Image3": {
      "main": [
        [
          {
            "node": "Switch3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Image4": {
      "main": [
        [
          {
            "node": "Switch4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Write Blog1": {
      "main": [
        [
          {
            "node": "Markdown1",
            "type": "main",
            "index": 0
          },
          {
            "node": "Edit Fields5",
            "type": "main",
            "index": 0
          },
          {
            "node": "Get row(s) in sheet2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields3": {
      "main": [
        [
          {
            "node": "Search1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields5": {
      "main": [
        [
          {
            "node": "Create Image4",
            "type": "main",
            "index": 0
          },
          {
            "node": "Create Image3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request": {
      "main": [
        [
          {
            "node": "Upload file2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload file1": {
      "main": [
        [
          {
            "node": "Delete a file1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload file2": {
      "main": [
        [
          {
            "node": "Check as completed on Sheets2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload file3": {
      "main": [
        [
          {
            "node": "Check as completed on Sheets3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Image3": {
      "main": [
        [
          {
            "node": "Wait4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Image4": {
      "main": [
        [
          {
            "node": "Wait3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request1": {
      "main": [
        [
          {
            "node": "Upload file3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Delete a file1": {
      "main": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download file1": {
      "main": [
        [
          {
            "node": "Code in JavaScript4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Basic LLM Chain": {
      "main": [
        [
          {
            "node": "Check as completed on Sheets1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model3": {
      "ai_languageModel": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Code in JavaScript4": {
      "main": [
        [
          {
            "node": "Upload file1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get row(s) in sheet2": {
      "main": [
        [
          {
            "node": "Send a message1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Receive Blog Request": {
      "main": [
        [
          {
            "node": "Edit Fields3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create file from text1": {
      "main": [
        [
          {
            "node": "Download file1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Write Blog1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Check as completed on Sheets1": {
      "main": [
        []
      ]
    },
    "Check as completed on Sheets2": {
      "main": [
        []
      ]
    },
    "Check as completed on Sheets3": {
      "main": [
        []
      ]
    }
  }
}