{
  "id": 9305,
  "name": "Auto-Translate & Recreate TikTok Carousels with Gemini Vision & Midjourney",
  "description": "## \ud83c\udfa8 TikTok Carousel Replicator & Translator\nAn end-to-end automation system that monitors TikTok accounts for new 3-image carousel posts, extracts text overlays and visual layouts using AI vision analysis, translates content into English, and automatically regenerates brand-new carousel images ready for review and posting.\n\n### What It Does\nThis workflow eliminates the manual process of:\n- Daily monitoring for new carousel content\n- Screenshot capture and image extraction\n- Text transcription and translation\n- Layout recreation in design tools\n- Manual formatting and brand consistency checks\n\nInstead, it delivers **3 production-ready images to your inbox every morning**\u2014complete with translated text, matched composition, and side-by-side comparisons for quick approval.\n\n### Key Features\n- **Automated Daily Monitoring** - Checks target TikTok accounts on schedule\n- **AI-Powered Vision Analysis** - Extracts text, layout, and composition with Gemini Vision\n- **Smart Translation** - Converts text to natural English while preserving intent\n- **Intelligent Image Generation** - Recreates carousels with Midjourney/DALL-E based on analyzed layouts\n- **Review Dashboard** - Organized Google Sheets with original vs. new comparisons\n- **Email Notifications** - Morning digest with clickable previews\n\n### Who It's For\nContent creators, social media managers, and marketing teams who need to adapt high-performing carousel content from other languages into English\u2014without spending hours in Canva every day.\n\n### Time Saved\n**From 3+ hours of manual work \u2192 2 minutes of review** per carousel set.\n\n### Workflow Breakdown\n**Monitor** \u2192 **Extract & Analyze** \u2192 **Translate** \u2192 **Generate** \u2192 **Review & Deliver**\n\nEach section runs automatically, processing images sequentially and delivering organized results to your review dashboard with email notifications.\n\n## \ud83d\ude80 SETUP INSTRUCTIONS\n### Required Credentials:\n1. **Google Gemini API** - For vision analysis\n2. **Midjourney API** (or alternative: DALL-E, Stable Diffusion)\n3. **OpenAI API** - For prompt generation and translation enhancement\n4. **Google Sheets** - For review dashboard\n5. **Gmail** - For notifications\n\n### Configuration Steps:\n1. Replace `@USERNAME` in TikTok RSS node with target account\n2. Set your Google Sheet ID in \"Save to Review Sheet\" node\n3. Update email addresses in notification node\n4. Test with a single post before enabling daily schedule\n\n### Alternative Approaches:\n- Can use TikTok API instead of RSS (if available)\n- Can use Canva API instead of Midjourney for generation\n- Can integrate with Airtable for more advanced review workflows\n- Can add approval workflow with interactive buttons",
  "categories": [
    {
      "id": 31,
      "name": "Content Creation"
    },
    {
      "id": 51,
      "name": "Multimodal AI"
    }
  ],
  "totalViews": 293,
  "createdAt": "2025-10-06T11:58:48.219Z",
  "workflow": {
    "id": "X6VDrKCPuYTJ0C2N",
    "meta": {
      "instanceId": "f450cd0986d5bfb741d4d1b31068440b1642915c91f795fd72913ef923830e67",
      "templateCredsSetupCompleted": true
    },
    "name": "TikTok Carousel Replicator & Translator",
    "tags": [],
    "nodes": [
      {
        "id": "e4fd6e4d-dcaf-4f3d-9a43-a5d4c9a4cbff",
        "name": "Daily TikTok Check",
        "type": "n8n-nodes-base.scheduleTrigger",
        "position": [
          64,
          144
        ],
        "parameters": {
          "rule": {
            "interval": [
              {}
            ]
          }
        },
        "typeVersion": 1.2
      },
      {
        "id": "0f6cc537-4250-4bbe-a1d6-b3d664e91b0a",
        "name": "Fetch TikTok RSS Feed",
        "type": "n8n-nodes-base.httpRequest",
        "notes": "Replace USERNAME with target account. Alternative: use TikTok API if available",
        "position": [
          336,
          144
        ],
        "parameters": {
          "url": "https://www.tiktok.com/@USERNAME/rss",
          "options": {
            "response": {
              "response": {
                "responseFormat": "text"
              }
            }
          }
        },
        "typeVersion": 4.2
      },
      {
        "id": "ca4a910c-c14c-42be-97aa-dbd351446141",
        "name": "Parse RSS Feed",
        "type": "n8n-nodes-base.moveBinaryData",
        "position": [
          656,
          144
        ],
        "parameters": {
          "mode": "jsonToBinary",
          "options": {}
        },
        "typeVersion": 1.1
      },
      {
        "id": "b4aed3a0-d173-4cde-b9af-069b11de4d3d",
        "name": "Filter: Only 3-Image Posts",
        "type": "n8n-nodes-base.if",
        "position": [
          928,
          144
        ],
        "parameters": {
          "options": {},
          "conditions": {
            "options": {
              "version": 2,
              "leftValue": "",
              "caseSensitive": true,
              "typeValidation": "strict"
            },
            "combinator": "and",
            "conditions": [
              {
                "id": "condition-carousel",
                "operator": {
                  "type": "number",
                  "operation": "equals"
                },
                "leftValue": "={{ $json.imageCount }}",
                "rightValue": 3
              }
            ]
          }
        },
        "typeVersion": 2.2
      },
      {
        "id": "9ae70971-c546-46eb-8c2e-3e59aa5da694",
        "name": "Split Images",
        "type": "n8n-nodes-base.splitOut",
        "position": [
          48,
          560
        ],
        "parameters": {
          "options": {},
          "fieldToSplitOut": "images"
        },
        "typeVersion": 1
      },
      {
        "id": "bfb111ff-7b4a-4826-9dfb-eab08413fff3",
        "name": "Download Image",
        "type": "n8n-nodes-base.httpRequest",
        "position": [
          480,
          560
        ],
        "parameters": {
          "url": "={{ $json.imageUrl }}",
          "options": {
            "response": {
              "response": {
                "responseFormat": "file"
              }
            }
          }
        },
        "typeVersion": 4.2
      },
      {
        "id": "492fa7f6-32aa-4047-a8c4-15a519875608",
        "name": "Extract Text & Layout (Gemini Vision)",
        "type": "@n8n/n8n-nodes-langchain.googleGemini",
        "position": [
          928,
          560
        ],
        "parameters": {
          "text": "Analyze this image and extract:\n1. All visible text overlays (exact text)\n2. Text position (top/center/bottom)\n3. Text style (bold, font size relative to image)\n4. Image type (emotional scene / product mockup / text excerpt)\n5. Main visual elements\n6. Color scheme\n\nReturn as structured JSON.",
          "modelId": {
            "__rl": true,
            "mode": "list",
            "value": "models/gemini-2.5-flash"
          },
          "options": {},
          "resource": "image",
          "inputType": "binary",
          "operation": "analyze"
        },
        "credentials": {
          "googlePalmApi": {
            "id": "credential-id",
            "name": "googlePalmApi Credential"
          }
        },
        "typeVersion": 1
      },
      {
        "id": "e6140758-3349-4944-8c6a-830fff40d768",
        "name": "Create Midjourney Prompt",
        "type": "@n8n/n8n-nodes-langchain.agent",
        "position": [
          464,
          944
        ],
        "parameters": {
          "text": "=Original Image Analysis:\n{{ $('Extract Text & Layout (Gemini Vision)').item.json.analysis }}\n\nTranslated Text:\n{{ $json.translatedText }}\n\nImage Type: {{ $('Extract Text & Layout (Gemini Vision)').item.json.imageType }}\n\nGenerate a Midjourney v6 prompt to recreate this image with:\n- Same composition and layout\n- Same emotional tone\n- Translated English text overlay in the same position\n- High quality, realistic style\n- Text should be: {{ $json.translatedText }}",
          "options": {
            "systemMessage": "You are an expert at creating detailed Midjourney prompts. Generate prompts that recreate the exact layout, emotion, and text positioning from the original image analysis."
          },
          "promptType": "define"
        },
        "typeVersion": 2.2
      },
      {
        "id": "fc9b7717-b143-4e7c-b2dc-b6287a329d88",
        "name": "OpenAI GPT-4",
        "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
        "position": [
          464,
          1088
        ],
        "parameters": {
          "model": {
            "__rl": true,
            "mode": "list",
            "value": "gpt-4o"
          },
          "options": {}
        },
        "credentials": {
          "openAiApi": {
            "id": "credential-id",
            "name": "openAiApi Credential"
          }
        },
        "typeVersion": 1.2
      },
      {
        "id": "aa71c972-0469-4858-a2dd-ac52602ca9b9",
        "name": "Generate New Image (Midjourney)",
        "type": "n8n-nodes-base.httpRequest",
        "position": [
          736,
          944
        ],
        "parameters": {
          "url": "https://api.midjourney.com/v1/imagine",
          "method": "POST",
          "options": {},
          "jsonBody": "={\n  \"prompt\": {{ JSON.stringify($json.output) }},\n  \"aspect_ratio\": \"9:16\"\n}",
          "sendBody": true,
          "specifyBody": "json",
          "authentication": "genericCredentialType",
          "genericAuthType": "httpHeaderAuth"
        },
        "typeVersion": 4.2
      },
      {
        "id": "299b4233-3d17-4978-bbc7-0bf702cf4f7b",
        "name": "Wait for Image Generation",
        "type": "n8n-nodes-base.wait",
        "position": [
          928,
          944
        ],
        "webhookId": "midjourney-callback-webhook",
        "parameters": {
          "resume": "webhook",
          "options": {},
          "httpMethod": "POST",
          "resumeUnit": "minutes",
          "resumeAmount": 5,
          "limitWaitTime": true
        },
        "typeVersion": 1.1
      },
      {
        "id": "1571ebe4-03e0-462e-add0-eb822bf47eab",
        "name": "Combine 3 Images",
        "type": "n8n-nodes-base.aggregate",
        "position": [
          48,
          1376
        ],
        "parameters": {
          "options": {},
          "fieldsToAggregate": {
            "fieldToAggregate": [
              {
                "fieldToAggregate": "generatedImageUrl"
              },
              {
                "fieldToAggregate": "originalImageUrl"
              },
              {
                "fieldToAggregate": "translatedText"
              },
              {
                "fieldToAggregate": "imageType"
              }
            ]
          }
        },
        "typeVersion": 1
      },
      {
        "id": "e86bf189-f18b-4989-a3dd-de0a5493dde1",
        "name": "Save to Review Sheet",
        "type": "n8n-nodes-base.googleSheets",
        "position": [
          432,
          1376
        ],
        "parameters": {
          "columns": {
            "value": {
              "Date": "={{ $now.format('yyyy-MM-dd') }}",
              "Status": "Ready for Review",
              "Post URL": "={{ $json.originalPostUrl }}",
              "Image 1 - New": "={{ $json.generatedImageUrl[0] }}",
              "Image 2 - New": "={{ $json.generatedImageUrl[1] }}",
              "Image 3 - New": "={{ $json.generatedImageUrl[2] }}",
              "Image 1 - Text": "={{ $json.translatedText[0] }}",
              "Image 1 - Type": "={{ $json.generatedImageUrl[0].imageType }}",
              "Image 2 - Text": "={{ $json.translatedText[1] }}",
              "Image 2 - Type": "={{ $json.generatedImageUrl[1].imageType }}",
              "Image 3 - Text": "={{ $json.translatedText[2] }}",
              "Image 3 - Type": "={{ $json.generatedImageUrl[2].imageType }}",
              "Image 1 - Original": "={{ $json.originalImageUrl[0] }}",
              "Image 2 - Original": "={{ $json.originalImageUrl[1] }}",
              "Image 3 - Original": "={{ $json.originalImageUrl[2] }}"
            },
            "schema": [
              {
                "id": "Date",
                "type": "string",
                "display": true,
                "required": false,
                "displayName": "Date",
                "defaultMatch": false,
                "canBeUsedToMatch": true
              }
            ],
            "mappingMode": "defineBelow",
            "matchingColumns": []
          },
          "options": {},
          "operation": "append",
          "sheetName": {
            "__rl": true,
            "mode": "list",
            "value": "gid=0"
          },
          "documentId": {
            "__rl": true,
            "mode": "id",
            "value": "YOUR_GOOGLE_SHEET_ID"
          }
        },
        "credentials": {
          "googleSheetsOAuth2Api": {
            "id": "credential-id",
            "name": "googleSheetsOAuth2Api Credential"
          }
        },
        "typeVersion": 4.7
      },
      {
        "id": "79815f6e-db2e-4eef-8922-bf56d3b9f452",
        "name": "Send Review Notification",
        "type": "n8n-nodes-base.gmail",
        "position": [
          832,
          1376
        ],
        "webhookId": "d1a92491-cde4-4629-aa05-e18fc0b7b34e",
        "parameters": {
          "message": "=<h2>Daily TikTok Carousel Generation Complete</h2>\n<p>A new 3-image carousel has been generated and is ready for your review.</p>\n<p><strong>View in Google Sheets:</strong> <a href=\"https://docs.google.com/spreadsheets/d/YOUR_SHEET_ID\">Review Dashboard</a></p>\n<hr>\n<h3>Preview:</h3>\n<ul>\n<li><strong>Image 1 ({{ $json.generatedImageUrl[0].imageType }}):</strong><br><img src=\"{{ $json.generatedImageUrl[0] }}\" width=\"300\"><br>Text: {{ $json.translatedText[0] }}</li>\n<li><strong>Image 2 ({{ $json.generatedImageUrl[1].imageType }}):</strong><br><img src=\"{{ $json.generatedImageUrl[1] }}\" width=\"300\"><br>Text: {{ $json.translatedText[1] }}</li>\n<li><strong>Image 3 ({{ $json.generatedImageUrl[2].imageType }}):</strong><br><img src=\"{{ $json.generatedImageUrl[2] }}\" width=\"300\"><br>Text: {{ $json.translatedText[2] }}</li>\n</ul>",
          "options": {},
          "subject": "\ud83c\udfa8 New TikTok Carousel Ready for Review"
        },
        "credentials": {
          "gmailOAuth2": {
            "id": "credential-id",
            "name": "gmailOAuth2 Credential"
          }
        },
        "typeVersion": 2.1
      },
      {
        "id": "abe01273-a4ef-4926-9d77-5d7873786742",
        "name": "Monitor Section",
        "type": "n8n-nodes-base.stickyNote",
        "position": [
          0,
          0
        ],
        "parameters": {
          "color": 2,
          "width": 1076,
          "height": 400,
          "content": "## \ud83d\udcf1 TikTok Monitor\nDaily check for new carousel posts"
        },
        "typeVersion": 1
      },
      {
        "id": "cfc5514f-2172-46d4-9348-e94a7e484e35",
        "name": "Analysis Section",
        "type": "n8n-nodes-base.stickyNote",
        "position": [
          0,
          416
        ],
        "parameters": {
          "color": 3,
          "width": 1076,
          "height": 400,
          "content": "## \ud83d\udd0d Extract & Analyze\nOCR + Vision AI to extract text overlays and layout"
        },
        "typeVersion": 1
      },
      {
        "id": "a542ce25-2347-4792-8609-93af68f1e95d",
        "name": "Translation Section",
        "type": "n8n-nodes-base.stickyNote",
        "position": [
          0,
          832
        ],
        "parameters": {
          "color": 4,
          "width": 388,
          "height": 400,
          "content": "## \ud83c\udf10 Translate\nAutomatic translation to English"
        },
        "typeVersion": 1
      },
      {
        "id": "a1b30c21-29d4-46ee-91ad-75ede44d0cfd",
        "name": "Generation Section",
        "type": "n8n-nodes-base.stickyNote",
        "position": [
          400,
          832
        ],
        "parameters": {
          "color": 5,
          "width": 676,
          "height": 400,
          "content": "## \ud83c\udfa8 Generate New Images\nAI-powered recreation with translated text"
        },
        "typeVersion": 1
      },
      {
        "id": "305f6492-6e4f-43f7-9695-23cf24218372",
        "name": "Delivery Section",
        "type": "n8n-nodes-base.stickyNote",
        "position": [
          0,
          1248
        ],
        "parameters": {
          "color": 6,
          "width": 1076,
          "height": 448,
          "content": "## \u2705 Review & Deliver\nOrganize results for client approval"
        },
        "typeVersion": 1
      },
      {
        "id": "65f6dd0c-458d-46c1-bd66-0ed90967a665",
        "name": "Setup Guide",
        "type": "n8n-nodes-base.stickyNote",
        "position": [
          -544,
          0
        ],
        "parameters": {
          "color": 7,
          "width": 528,
          "height": 1700,
          "content": "## \ud83c\udfa8 TikTok Carousel Replicator & Translator\nAn end-to-end automation system that monitors TikTok accounts for new 3-image carousel posts, extracts text overlays and visual layouts using AI vision analysis, translates content into English, and automatically regenerates brand-new carousel images ready for review and posting.\n\n### What It Does\nThis workflow eliminates the manual process of:\n- Daily monitoring for new carousel content\n- Screenshot capture and image extraction\n- Text transcription and translation\n- Layout recreation in design tools\n- Manual formatting and brand consistency checks\n\nInstead, it delivers **3 production-ready images to your inbox every morning**\u2014complete with translated text, matched composition, and side-by-side comparisons for quick approval.\n\n### Key Features\n- **Automated Daily Monitoring** - Checks target TikTok accounts on schedule\n- **AI-Powered Vision Analysis** - Extracts text, layout, and composition with Gemini Vision\n- **Smart Translation** - Converts text to natural English while preserving intent\n- **Intelligent Image Generation** - Recreates carousels with Midjourney/DALL-E based on analyzed layouts\n- **Review Dashboard** - Organized Google Sheets with original vs. new comparisons\n- **Email Notifications** - Morning digest with clickable previews\n\n### Who It's For\nContent creators, social media managers, and marketing teams who need to adapt high-performing carousel content from other languages into English\u2014without spending hours in Canva every day.\n\n### Time Saved\n**From 3+ hours of manual work \u2192 2 minutes of review** per carousel set.\n\n### Workflow Breakdown\n**Monitor** \u2192 **Extract & Analyze** \u2192 **Translate** \u2192 **Generate** \u2192 **Review & Deliver**\n\nEach section runs automatically, processing images sequentially and delivering organized results to your review dashboard with email notifications.\n\n## \ud83d\ude80 SETUP INSTRUCTIONS\n### Required Credentials:\n1. **Google Gemini API** - For vision analysis\n2. **Midjourney API** (or alternative: DALL-E, Stable Diffusion)\n3. **OpenAI API** - For prompt generation and translation enhancement\n4. **Google Sheets** - For review dashboard\n5. **Gmail** - For notifications\n\n### Configuration Steps:\n1. Replace `@USERNAME` in TikTok RSS node with target account\n2. Set your Google Sheet ID in \"Save to Review Sheet\" node\n3. Update email addresses in notification node\n4. Test with a single post before enabling daily schedule\n\n### Alternative Approaches:\n- Can use TikTok API instead of RSS (if available)\n- Can use Canva API instead of Midjourney for generation\n- Can integrate with Airtable for more advanced review workflows\n- Can add approval workflow with interactive buttons"
        },
        "typeVersion": 1
      },
      {
        "id": "e7a07314-0b19-4289-bdb2-9d43ff500014",
        "name": "Translate to English",
        "type": "@n8n/n8n-nodes-langchain.openAi",
        "position": [
          48,
          1008
        ],
        "parameters": {
          "modelId": {
            "__rl": true,
            "mode": "list",
            "value": "gpt-4",
            "cachedResultName": "GPT-4"
          },
          "options": {},
          "messages": {
            "values": [
              {
                "content": "=Translate {{ JSON.stringify($json.extractedText) }} to english "
              }
            ]
          }
        },
        "credentials": {
          "openAiApi": {
            "id": "credential-id",
            "name": "openAiApi Credential"
          }
        },
        "typeVersion": 1.8
      }
    ],
    "active": false,
    "pinData": {},
    "settings": {
      "executionOrder": "v1"
    },
    "versionId": "57a0dde8-1ac1-4e44-9c15-933fdb097944",
    "connections": {
      "OpenAI GPT-4": {
        "ai_languageModel": [
          [
            {
              "node": "Create Midjourney Prompt",
              "type": "ai_languageModel",
              "index": 0
            }
          ]
        ]
      },
      "Split Images": {
        "main": [
          [
            {
              "node": "Download Image",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Download Image": {
        "main": [
          [
            {
              "node": "Extract Text & Layout (Gemini Vision)",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Parse RSS Feed": {
        "main": [
          [
            {
              "node": "Filter: Only 3-Image Posts",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Combine 3 Images": {
        "main": [
          [
            {
              "node": "Save to Review Sheet",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Daily TikTok Check": {
        "main": [
          [
            {
              "node": "Fetch TikTok RSS Feed",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Save to Review Sheet": {
        "main": [
          [
            {
              "node": "Send Review Notification",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Translate to English": {
        "main": [
          [
            {
              "node": "Create Midjourney Prompt",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Fetch TikTok RSS Feed": {
        "main": [
          [
            {
              "node": "Parse RSS Feed",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Create Midjourney Prompt": {
        "main": [
          [
            {
              "node": "Generate New Image (Midjourney)",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Wait for Image Generation": {
        "main": [
          [
            {
              "node": "Combine 3 Images",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Filter: Only 3-Image Posts": {
        "main": [
          [
            {
              "node": "Split Images",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Generate New Image (Midjourney)": {
        "main": [
          [
            {
              "node": "Wait for Image Generation",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Extract Text & Layout (Gemini Vision)": {
        "main": [
          [
            {
              "node": "Translate to English",
              "type": "main",
              "index": 0
            }
          ]
        ]
      }
    }
  },
  "workflowInfo": {
    "nodeCount": 21,
    "nodeTypes": {
      "n8n-nodes-base.if": {
        "count": 1
      },
      "n8n-nodes-base.wait": {
        "count": 1
      },
      "n8n-nodes-base.gmail": {
        "count": 1
      },
      "n8n-nodes-base.splitOut": {
        "count": 1
      },
      "n8n-nodes-base.aggregate": {
        "count": 1
      },
      "n8n-nodes-base.stickyNote": {
        "count": 6
      },
      "n8n-nodes-base.httpRequest": {
        "count": 3
      },
      "n8n-nodes-base.googleSheets": {
        "count": 1
      },
      "n8n-nodes-base.moveBinaryData": {
        "count": 1
      },
      "@n8n/n8n-nodes-langchain.agent": {
        "count": 1
      },
      "n8n-nodes-base.scheduleTrigger": {
        "count": 1
      },
      "@n8n/n8n-nodes-langchain.openAi": {
        "count": 1
      },
      "@n8n/n8n-nodes-langchain.googleGemini": {
        "count": 1
      },
      "@n8n/n8n-nodes-langchain.lmChatOpenAi": {
        "count": 1
      }
    }
  },
  "nodes": [
    "Daily TikTok Check",
    "Fetch TikTok RSS Feed",
    "Parse RSS Feed",
    "Filter: Only 3-Image Posts",
    "Split Images",
    "Download Image",
    "Extract Text & Layout (Gemini Vision)",
    "Create Midjourney Prompt",
    "OpenAI GPT-4",
    "Generate New Image (Midjourney)",
    "Wait for Image Generation",
    "Combine 3 Images",
    "Save to Review Sheet",
    "Send Review Notification",
    "Monitor Section",
    "Analysis Section",
    "Translation Section",
    "Generation Section",
    "Delivery Section",
    "Setup Guide",
    "Translate to English"
  ],
  "nodeTypes": [
    "n8n-nodes-base.splitOut",
    "@n8n/n8n-nodes-langchain.agent",
    "n8n-nodes-base.httpRequest",
    "n8n-nodes-base.gmail",
    "n8n-nodes-base.aggregate",
    "n8n-nodes-base.wait",
    "n8n-nodes-base.stickyNote",
    "@n8n/n8n-nodes-langchain.openAi",
    "n8n-nodes-base.if",
    "n8n-nodes-base.moveBinaryData",
    "n8n-nodes-base.scheduleTrigger",
    "@n8n/n8n-nodes-langchain.googleGemini",
    "n8n-nodes-base.googleSheets",
    "@n8n/n8n-nodes-langchain.lmChatOpenAi"
  ]
}