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
使用ノード (21)
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下の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
作成者
Xavier Tai
@xaviertaiHey 👋 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で表示 →
このワークフローを共有