Copieur et traducteur de carrousels TikTok
Ceci est unContent Creation, Multimodal AIworkflow d'automatisation du domainecontenant 21 nœuds.Utilise principalement des nœuds comme If, Wait, Gmail, SplitOut, Aggregate. Traduire et recréer automatiquement le contenu carrousel TikTok en utilisant Gemini Vision et Midjourney
- •Compte Google et informations d'identification Gmail API
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
- •Informations d'identification Google Sheets API
- •Clé API OpenAI
Nœuds utilisés (21)
Catégorie
{
"id": "X6VDrKCPuYTJ0C2N",
"meta": {
"instanceId": "f450cd0986d5bfb741d4d1b31068440b1642915c91f795fd72913ef923830e67",
"templateCredsSetupCompleted": true
},
"name": "TikTok Carousel Replicator & Translator",
"tags": [],
"nodes": [
{
"id": "e4fd6e4d-dcaf-4f3d-9a43-a5d4c9a4cbff",
"name": "Vérification quotidienne TikTok",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
64,
144
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.2
},
{
"id": "0f6cc537-4250-4bbe-a1d6-b3d664e91b0a",
"name": "Récupérer le flux RSS TikTok",
"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": "Analyser le flux RSS",
"type": "n8n-nodes-base.moveBinaryData",
"position": [
656,
144
],
"parameters": {
"mode": "jsonToBinary",
"options": {}
},
"typeVersion": 1.1
},
{
"id": "b4aed3a0-d173-4cde-b9af-069b11de4d3d",
"name": "Filtre : publications à 3 images uniquement",
"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": "Séparer les images",
"type": "n8n-nodes-base.splitOut",
"position": [
48,
560
],
"parameters": {
"options": {},
"fieldToSplitOut": "images"
},
"typeVersion": 1
},
{
"id": "bfb111ff-7b4a-4826-9dfb-eab08413fff3",
"name": "Télécharger l'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": "Extraire texte et mise en page (Vision Gemini)",
"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": "Créer un prompt Midjourney",
"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": "Générer une nouvelle 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": "Attendre la génération d'image",
"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": "Combiner 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": "Enregistrer dans la feuille de révision",
"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": "Envoyer une notification de révision",
"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": "Section de surveillance",
"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": "Section d'analyse",
"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": "Section de traduction",
"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": "Section de génération",
"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": "Section de livraison",
"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": "Guide d'installation",
"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": "Traduire en anglais",
"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": "b4aed3a0-d173-4cde-b9af-069b11de4d3d",
"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
}
]
]
},
"299b4233-3d17-4978-bbc7-0bf702cf4f7b": {
"main": [
[
{
"node": "1571ebe4-03e0-462e-add0-eb822bf47eab",
"type": "main",
"index": 0
}
]
]
},
"b4aed3a0-d173-4cde-b9af-069b11de4d3d": {
"main": [
[
{
"node": "9ae70971-c546-46eb-8c2e-3e59aa5da694",
"type": "main",
"index": 0
}
]
]
},
"aa71c972-0469-4858-a2dd-ac52602ca9b9": {
"main": [
[
{
"node": "299b4233-3d17-4978-bbc7-0bf702cf4f7b",
"type": "main",
"index": 0
}
]
]
},
"492fa7f6-32aa-4047-a8c4-15a519875608": {
"main": [
[
{
"node": "e7a07314-0b19-4289-bdb2-9d43ff500014",
"type": "main",
"index": 0
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé - Création de contenu, IA Multimodale
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
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!
Partager ce workflow