TikTok カルーセル自動複製&翻訳

上級

これはContent Creation, Multimodal AI分野の自動化ワークフローで、21個のノードを含みます。主にIf, Wait, Gmail, SplitOut, Aggregateなどのノードを使用。 Gemini VisionとMidjourneyを使用して TikTokカルーセルを自動翻訳し再作成

前提条件
  • Googleアカウント + Gmail API認証情報
  • ターゲットAPIの認証情報が必要な場合あり
  • Google Sheets API認証情報
  • OpenAI API Key
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "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": "フィルター: 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": "q1mooBuhMbhVtbDj",
          "name": "Gemini_ES_Demo"
        }
      },
      "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": "dA4yXmsPbiF3QzqQ",
          "name": "OpenAi Xtwl"
        }
      },
      "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": "待機 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": "bNNrQVyG0f0LvHLl",
          "name": "xavtwl"
        }
      },
      "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": "🎨 New TikTok Carousel Ready for Review"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "EPh4P9lc8dnWzrou",
          "name": "XavDemo"
        }
      },
      "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": "## 📱 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": "## 🔍 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": "## 🌐 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": "## 🎨 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": "## ✅ Review & Deliver\nOrganize results for client approval"
      },
      "typeVersion": 1
    },
    {
      "id": "65f6dd0c-458d-46c1-bd66-0ed90967a665",
      "name": "設定up Guide",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -544,
        0
      ],
      "parameters": {
        "color": 7,
        "width": 528,
        "height": 1700,
        "content": "## 🎨 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**—complete 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—without spending hours in Canva every day.\n\n### Time Saved\n**From 3+ hours of manual work → 2 minutes of review** per carousel set.\n\n### Workflow Breakdown\n**Monitor** → **Extract & Analyze** → **Translate** → **Generate** → **Review & Deliver**\n\nEach section runs automatically, processing images sequentially and delivering organized results to your review dashboard with email notifications.\n\n## 🚀 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": "dA4yXmsPbiF3QzqQ",
          "name": "OpenAi Xtwl"
        }
      },
      "typeVersion": 1.8
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "57a0dde8-1ac1-4e44-9c15-933fdb097944",
  "connections": {
    "fc9b7717-b143-4e7c-b2dc-b6287a329d88": {
      "ai_languageModel": [
        [
          {
            "node": "e6140758-3349-4944-8c6a-830fff40d768",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "9ae70971-c546-46eb-8c2e-3e59aa5da694": {
      "main": [
        [
          {
            "node": "bfb111ff-7b4a-4826-9dfb-eab08413fff3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "bfb111ff-7b4a-4826-9dfb-eab08413fff3": {
      "main": [
        [
          {
            "node": "492fa7f6-32aa-4047-a8c4-15a519875608",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ca4a910c-c14c-42be-97aa-dbd351446141": {
      "main": [
        [
          {
            "node": "Filter: Only 3-Image Posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1571ebe4-03e0-462e-add0-eb822bf47eab": {
      "main": [
        [
          {
            "node": "e86bf189-f18b-4989-a3dd-de0a5493dde1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e4fd6e4d-dcaf-4f3d-9a43-a5d4c9a4cbff": {
      "main": [
        [
          {
            "node": "0f6cc537-4250-4bbe-a1d6-b3d664e91b0a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e86bf189-f18b-4989-a3dd-de0a5493dde1": {
      "main": [
        [
          {
            "node": "79815f6e-db2e-4eef-8922-bf56d3b9f452",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e7a07314-0b19-4289-bdb2-9d43ff500014": {
      "main": [
        [
          {
            "node": "e6140758-3349-4944-8c6a-830fff40d768",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0f6cc537-4250-4bbe-a1d6-b3d664e91b0a": {
      "main": [
        [
          {
            "node": "ca4a910c-c14c-42be-97aa-dbd351446141",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e6140758-3349-4944-8c6a-830fff40d768": {
      "main": [
        [
          {
            "node": "aa71c972-0469-4858-a2dd-ac52602ca9b9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait for Image Generation": {
      "main": [
        [
          {
            "node": "1571ebe4-03e0-462e-add0-eb822bf47eab",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter: Only 3-Image Posts": {
      "main": [
        [
          {
            "node": "9ae70971-c546-46eb-8c2e-3e59aa5da694",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "aa71c972-0469-4858-a2dd-ac52602ca9b9": {
      "main": [
        [
          {
            "node": "Wait for Image Generation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "492fa7f6-32aa-4047-a8c4-15a519875608": {
      "main": [
        [
          {
            "node": "e7a07314-0b19-4289-bdb2-9d43ff500014",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

このワークフローの使い方は?

上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。

このワークフローはどんな場面に適していますか?

上級 - コンテンツ作成, マルチモーダルAI

有料ですか?

このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。

関連ワークフロー

再生リスト詳細設定ボットコピー
Suno、GPT-4、Runway、Creatomate を使って AI 生成の YouTube ミュージックプレイリストを作成
If
Set
Code
+
If
Set
Code
203 ノードJoseph
コンテンツ作成
WordPressブログの自動化プロフェッショナル版(先端研究)v2.1マーケットプラグイン
GPT-4o、Perplexity AI、そして多言語対応を使ったSEO最適化ブログ作成の自動化
If
Set
Xml
+
If
Set
Xml
125 ノードDaniel Ng
コンテンツ作成
WordPress、OpenAI、Perplexityを活用した自動化SEOブログ公開
WordPress、OpenAI、Perplexityを活用した自動化SEOブログ公開
Set
Limit
Split Out
+
Set
Limit
Split Out
43 ノードLukaszB
コンテンツ作成
最新のAIニュースを使用してDumpling AIとHeyGenからバーチャルキャラクター動画を生成
Dumpling AI、GPT-4o、HeyGenを使ってAIニュースバーチャルアイドビデオを作成
If
Wait
Limit
+
If
Wait
Limit
15 ノードYang
コンテンツ作成
OpenAI-Gemini を使って Dev.to 記事の作成 - AI による画像付きコンテンツ生成
OpenAI / Gemini を使用して Dev.to 記事を作成 - AI が画像付きコンテンツを生成
Set
Limit
Split Out
+
Set
Limit
Split Out
30 ノードLukaszB
コンテンツ作成
💥 NanoBanana、Seedream 4、ChatGPT Image、Veo 3 を使って動画広告を自動化 - VIDEO
AI(NanoBanana、Seedream、GPT-4o、Veo 3)を使って動画広告キャンペーンを自動化し公開
Set
Code
Wait
+
Set
Code
Wait
63 ノードDr. Firas
コンテンツ作成
ワークフロー情報
難易度
上級
ノード数21
カテゴリー2
ノードタイプ14
難易度説明

上級者向け、16ノード以上の複雑なワークフロー

作成者
Xavier Tai

Xavier Tai

@xaviertai

Hey 👋 I'm Xavier, founder of EasyScalers. I build AI automation systems with N8N for B2B companies. Check out my templates or hit me up in the forums if you need help with your workflows!

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34