This workflow corresponds to n8n.io template #10070 — we link there as the canonical source.
This workflow follows the Agent → Chainllm recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"meta": {
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "61107d11-7270-4882-956b-49ad972a342f",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2944,
720
],
"parameters": {
"color": 5,
"width": 528,
"height": 640,
"content": "## Muhammad Farooq Iqbal - Automation Expert & n8n Creator\n\nI am a passionate automation expert and recognized n8n Creator specializing in intelligent workflow automation. With extensive experience in n8n, AI automation, Zapier, and Make.com, I have created innovative workflow templates with 500+ downloads across the global automation community\n\n### Expertise\n- **Workflow Automation**: n8n, Zapier, Make.com, AI automation\n- **AI Integration**: Gemini AI, API integration, data processing\n- **Platform Mastery**: Google Sheets, Google Drive, custom scripts\n\n## Need Help with This Workflow?\n\nIf you face any issues with this workflow or need customization support, feel free to reach out:\n\n**\ud83d\udce7 Email**: mfarooqiqbal143@gmail.com \n**\ud83d\udcf1 Phone**: +923036991118 \n**\ud83d\udcbc LinkedIn**: [Connect with me](https://linkedin.com/in/muhammadfarooqiqbal) \n**\ud83c\udf10 Portfolio**: [View my work](https://mfarooqone.github.io/n8n/)\n\n*I'm always excited to help with automation challenges and workflow optimization!*\n"
},
"typeVersion": 1
},
{
"id": "b7032772-7423-43f9-b6af-1b7abe7e06d3",
"name": "PROMPT PRODUK REVIEW",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
-1808,
1280
],
"parameters": {
"text": "=Your task: Create an image prompt as guided by your system guidelines.\n\nYou shall make sure that the reference image is depicted as ACCURATELY as possible in the resulting images, especially all text.\n\nDescription of the reference image:\n{{ $json.content }}\n\n# Output\n- Dalam bahasa English\n- Berikan output TANPA tambahan kata atau simbol apapun termasuk tanda kutip\n- Tanda kutip ganti dengan simbol -",
"batching": {},
"messages": {
"messageValues": [
{
"message": "=Buat satu fotografi testimoni produk profesional berdasarkan foto produk yang diberikan, saiz output gambar mestilah menggunakan aspect_ratio 9:16 sesuai dengan phone view\n\n\nPastikan sentiasa sertakan grain halus untuk kesan sinematik.\n\n#Arahan Utama\n\nTentukan terlebih dahulu sama ada produk tersebut boleh dipakai atau tidak.\n\n#Tetapan Asas\n\nHasilkan 1 babak unik review produk oleh watak utama.\n\nWatak ialah orang Malaysia sebenar yang kelihatan natural.\n\nWatak sedang memberi testimoni penggunaan produk dengan ekspresi jujur.\n\nTiada sebarang teks atau sarikata dalam gambar (nyatakan dalam prompt).\n\n#Watak\n\nJika watak tidak jelas, tambahkan keterangan berikut:\n\nLelaki atau perempuan berusia 25\u201330 tahun cantik atau handsome, pilih jantina yang sesuai dengan produk.\n\nGaya dan gerak-geri natural.\nPastikan dalam gambar akhir, watak seolah-olah memegang, menyentuh, atau menggunakan produk yang sedang diulas.\n\n#Jenis Produk\n\nFesyen: Tunjukkan model memakai pakaian atau aksesori tersebut.\n\nPerhiasan / Aksesori: Fokus pada model memakai perhiasan itu (close-up bahagian relevan).\n\nProduk yang tidak boleh dipakai: Watak hanya memegang atau membawa produk secara natural.\n\nHaiwan: Watak berdiri di sebelah haiwan dengan ekspresi ceria dan tenang.\n\nPerabot / alatan rumah: Watak menggunakan perabot atau alat tersebut mengikut fungsi sebenarnya.\n\n#Sudut & Gaya Foto\n\nPastikan keseluruhan gambar produk kelihatan jelas dan utuh seperti asalnya.\n\nGunakan sekurang-kurangnya 2\u20133 arahan kamera berikut:\n\nPaparan telefon iPhone terbaru,framing genggam,komposisi tidak simetri,cahaya semula jadi,bayangan lembut,sedikit blur pergerakan,auto exposure,tampilan tidak dipoles,grain halus\n\n#Suasana & Realisme\n\nTerima ketidaksempurnaan seperti:\n\ntekstur kulit semula jadi\n\nrambut sedikit berterabur\n\nlatar belakang agak sibuk\n\nGaya seolah-olah gambar sebenar, bukan hasil studio.\n\nWatak kelihatan tulus, santai, dan tidak berlebihan.\n\nTiada orang lain yang memegang kamera.\n\nDeskripsi produk akan dikirimkan kepada Anda. Balas hanya dengan prompt akhir, tidak ada yang lain, wajib TANPA / TIDAK BOLEH ADA SIMBOL tanda kutip ganda. \n"
}
]
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.7
},
{
"id": "80172961-c769-47cb-ab89-92d6b38d18a2",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-928,
1504
],
"parameters": {
"autoFix": true,
"jsonSchemaExample": "{\n\t\"caption\": \"caption\",\n\t\"textospeech\": \"text\"\n}"
},
"typeVersion": 1.3
},
{
"id": "8b28affe-3dbe-45a9-920b-d3163be8be47",
"name": "TTS & CAPTION1",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-992,
1280
],
"parameters": {
"text": "=anda akan diberikan data description produk ini :\n\n{{ $('Analyze YAML').item.json.content }}",
"options": {
"systemMessage": "=Anda adalah **Sosial Media Manager**. anda akan diberikan **description produk dan karakter**.\n\n# Buatkan Text To Speech dan wajib dalam bahasa Malaysia mix english natural\n\n* **Konsep Automatic** (Anda yang buatkan secara kreatif tetapi mestilah masuk akal).\n* Durasi maximum **10 Saat Sahaja**.\n* Isi Text To Speech adalah **testimoni singkat atau review** yang menggambarkan pengalaman menggunakan produk di description, terasa **penuh emosi**, dan **memujuk orang lain untuk mencuba**.\n* Gunakan gaya percakapan yang **natural, menunjukkan expresi jelas, dan bersemangat**, seolah-olah anda betul-betul berpuas hati dengan produk tersebut.\n\n# Output\n\nTulis **Hantar terus hasil akhir tanpa tambahan lain**, **tanpa tambahan kata, simbol, atau tanda kutip** di awal mahupun akhir output.\n\n"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.2
},
{
"id": "cbf9ec2a-2d03-44e6-9e74-7b323fe9678f",
"name": "Analyze YAML",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-976,
752
],
"parameters": {
"text": "=Analisis gambar yang diberikan dan tentukan apakah gambar tersebut terutama menggambarkan sebuah produk atau karakter, atau KEDUANYA.\n\n# Jika gambar adalah sebuah produk, kembalikan analisis dalam format YAML dengan field berikut:\n\nbrand_name: (Nama brand yang terlihat di gambar, jika ada atau dapat disimpulkan)\ncolor_scheme:\n\nhex: (Kode hex dari setiap warna utama yang digunakan)\nname: (Nama description dari warna tersebut)\nfont_style: (Jelaskan jenis font atau gaya yang digunakan: serif/sans-serif, tebal/tipis, dll.)\nvisual_description: (Satu atau dua kata ringkas yang merangkumi apa yang terlihat pada gambar, abaikan latar belakang)\n\n# Jika gambar adalah sebuah karakter, kembalikan analisis dalam format YAML dengan field berikut:\n\ncharacter_name: (Nama karakter jika terlihat atau dapat disimpulkan)\ncolor_scheme:\n\nhex: (Kode hex dari setiap warna utama yang digunakan pada karakter)\nname: (Nama description dari warna tersebut)\noutfit_style: (description gaya pakaian, aksesori, atau feature menonjol yang lain)\nvisual_description: (Satu atau dua kata ringkas yang merangkum terlihat pada karakter, abaikan latar belakang)\n\nkenalpasti produk sesuai untuk lelakki atau perempuan, dan juga adakah produk tersebut unisex\n\nHanya kembalikan YAML. Jangan menjelaskan atau menambahkan kata, simbol atau komentar lain.\nOutput dalam bahasa English\n\nJika gambar adalah KEDUANYA, kembalikan kedua deskripsi seperti panduan di atas dalam format YAML",
"modelId": {
"__rl": true,
"mode": "list",
"value": "chatgpt-4o-latest",
"cachedResultName": "CHATGPT-4O-LATEST"
},
"options": {},
"resource": "image",
"imageUrls": "=https://api.telegram.org/file/bot{{ $('Set Bot Token').item.json['bot id'] }}/{{ $json.result.file_path }}",
"operation": "analyze"
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "24335a64-d6d8-4bcd-88a7-5f290a78a4e3",
"name": "OpenAI Chat Model4",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-1376,
1600
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o",
"cachedResultName": "gpt-4o"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "19a41615-17ca-477c-983d-877b5345c78a",
"name": "Wait5",
"type": "n8n-nodes-base.wait",
"position": [
-1456,
1280
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "45bff024-ce1e-4677-8e1e-d5433035c492",
"name": "If3",
"type": "n8n-nodes-base.if",
"position": [
-1136,
2976
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "or",
"conditions": [
{
"id": "9835b082-c46b-4a11-a27e-7079cd2c3771",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.data.status }}",
"rightValue": "completed"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "4dbe6920-2390-4c86-a903-e46e26577a3f",
"name": "Extract ElevenLabs Audio Data",
"type": "n8n-nodes-base.extractFromFile",
"position": [
-1360,
2256
],
"parameters": {
"options": {},
"operation": "binaryToPropery",
"destinationKey": "=data"
},
"typeVersion": 1
},
{
"id": "f048b919-ebad-44c4-b6de-18887898c3c5",
"name": "Convert Audio to WAV Format (Female Voice)",
"type": "n8n-nodes-base.convertToFile",
"position": [
-1136,
2256
],
"parameters": {
"options": {
"mimeType": "audio/wav"
},
"operation": "toBinary",
"sourceProperty": "data",
"binaryPropertyName": "=data"
},
"typeVersion": 1.1
},
{
"id": "dc2012ab-984e-4825-862a-6f07707bc132",
"name": "Switch GENDER",
"type": "n8n-nodes-base.switch",
"position": [
-1808,
2352
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "perempuan",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "38d1a55f-6aa5-4963-9e48-fb7533e465b4",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.content }}",
"rightValue": "perempuan"
}
]
},
"renameOutput": true
},
{
"outputKey": "lelaki",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "ae933594-4a20-4946-b550-03732f266124",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.content }}",
"rightValue": "lelaki"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "e225d3b3-fd2e-46b2-bd18-0b0e454d367f",
"name": "CLONING AUDIO CE",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1584,
2256
],
"parameters": {
"url": "https://api.elevenlabs.io/v1/text-to-speech/UcqZLa941Kkt8ZhEEybf",
"method": "POST",
"options": {},
"jsonBody": "={\n \"text\": \"{{ $('TTS & CAPTION1').item.json.output.textospeech }}\",\n \"model_id\": \"eleven_multilingual_v2\"\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "xi-api-key",
"value": "YOUR_ELEVENLABS_API_KEY"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "590c6447-7681-4076-82d1-039a4f009a44",
"name": "Extract ElevenLabs Audio Data (Male)",
"type": "n8n-nodes-base.extractFromFile",
"position": [
-1360,
2448
],
"parameters": {
"options": {},
"operation": "binaryToPropery",
"destinationKey": "=data"
},
"typeVersion": 1
},
{
"id": "b4fb1721-f909-407f-a0ce-473261914ad9",
"name": "Convert Audio to WAV Format (Male Voice)",
"type": "n8n-nodes-base.convertToFile",
"position": [
-1136,
2448
],
"parameters": {
"options": {
"mimeType": "audio/wav"
},
"operation": "toBinary",
"sourceProperty": "data",
"binaryPropertyName": "=data"
},
"typeVersion": 1.1
},
{
"id": "5723ded8-b897-4a95-b6c0-b3ffb267fb89",
"name": "CLONING AUDIO CO",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1584,
2448
],
"parameters": {
"url": "https://api.elevenlabs.io/v1/text-to-speech/lMSqoJeA0cBBNA9FeHAs",
"method": "POST",
"options": {},
"jsonBody": "={\n \"text\": \"{{ $('TTS & CAPTION1').item.json.output.textospeech }}\",\n \"model_id\": \"eleven_multilingual_v2\"\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "xi-api-key",
"value": "YOUR_ELEVENLABS_API_KEY"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "86f1b593-97e0-482a-9eb5-3baba3a9228f",
"name": "UPLOAD AUDIO LIPSYNC",
"type": "n8n-nodes-base.httpRequest",
"position": [
-912,
2352
],
"parameters": {
"url": "https://api.cloudinary.com/v1_1/YOUR_CLOUDINARY_CLOUD_NAME/auto/upload",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "multipart-form-data",
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "file",
"parameterType": "formBinaryData",
"inputDataFieldName": "data"
},
{
"name": "upload_preset",
"value": "Picture"
}
]
},
"genericAuthType": "httpBasicAuth"
},
"credentials": {
"httpBasicAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "be462716-ca7b-4f48-b3b8-28911cef578d",
"name": "If4",
"type": "n8n-nodes-base.if",
"position": [
-1232,
1280
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "7e6516d2-b83b-47ad-b481-12329ad95d93",
"operator": {
"type": "string",
"operation": "notContains"
},
"leftValue": "={{ $('PROMPT PRODUK REVIEW').item.json.text }}",
"rightValue": "\""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "8b51c9ce-fa77-4151-8353-886c07eb33b9",
"name": "Wait 140s",
"type": "n8n-nodes-base.wait",
"position": [
-1584,
2976
],
"parameters": {
"amount": 140
},
"typeVersion": 1.1
},
{
"id": "c415ece3-4275-4d3d-bce4-c02072c66a25",
"name": "If5",
"type": "n8n-nodes-base.if",
"position": [
-640,
1280
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "f956c9c4-79e8-4f55-a227-d7c6a5365c6b",
"operator": {
"type": "string",
"operation": "notContains"
},
"leftValue": "={{ $json.output.caption }}",
"rightValue": "\""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "a98e088d-bd9a-46ac-8de2-a9b12c0a8b59",
"name": "CREATE LIPSYNC V1",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1808,
2976
],
"parameters": {
"url": "https://api.wavespeed.ai/api/v3/wavespeed-ai/infinitetalk",
"method": "POST",
"options": {
"redirect": {
"redirect": {}
}
},
"sendBody": true,
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "audio",
"value": "={{ $('UPLOAD AUDIO LIPSYNC').item.json.secure_url }}"
},
{
"name": "image",
"value": "={{ $('UPLOAD NEW IMG V1').item.json.secure_url }}"
},
{
"name": "prompt",
"value": "=Natural everyday motion, subtle realistic actions.. kadang-kadang melihat, menyentuh dengan satu atau dua tangan mengikut kesuaian kegunaan produk, character juga boleh menunjuk ke produk sambil tetap melihat ke arah kamera hadapan"
},
{
"name": "resolution",
"value": "480p"
},
{
"name": "seed",
"value": "-1"
},
{}
]
},
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_TOKEN_HERE"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "e05a370a-3414-4b36-a16b-b3a78543cb12",
"name": "UPLOAD VIDEO REVIEW V1",
"type": "n8n-nodes-base.httpRequest",
"position": [
-912,
2960
],
"parameters": {
"url": "https://api.cloudinary.com/v1_1/YOUR_CLOUDINARY_CLOUD_NAME/auto/upload",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "multipart-form-data",
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "file",
"value": "={{ $json.data.outputs[0] }}"
},
{
"name": "upload_preset",
"value": "Picture"
}
]
},
"genericAuthType": "httpBasicAuth"
},
"credentials": {
"httpBasicAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "f70d9c8e-57fc-4e2f-9ebd-5c7d39e4d62a",
"name": "Wait",
"type": "n8n-nodes-base.wait",
"position": [
-752,
752
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "2f208089-21ba-44c2-81c7-f8e70d0902f6",
"name": "CREATE NEW IMG1",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1808,
1824
],
"parameters": {
"url": "https://api.wavespeed.ai/api/v3/google/nano-banana/edit",
"method": "POST",
"options": {
"redirect": {
"redirect": {}
}
},
"jsonBody": "={\n \"aspect_ratio\": \"9:16\",\n \"enable_base64_output\": false,\n \"enable_sync_mode\": false,\n \"images\": [\n \"https://api.telegram.org/file/bot{{ $('Set Bot Token').item.json['bot id'] }}/{{ $('Image Path (getFile)').item.json.result.file_path }}\"\n ],\n \"output_format\": \"jpeg\",\n \"prompt\": \"{{ $('PROMPT PRODUK REVIEW').item.json.text }}\"\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_TOKEN_HERE"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "ac00d570-f904-4200-a519-9f905374246a",
"name": "Wait 65s1",
"type": "n8n-nodes-base.wait",
"position": [
-1584,
1824
],
"parameters": {
"amount": 65
},
"typeVersion": 1.1
},
{
"id": "3e3d0500-359c-425d-b2e0-6a206b23310e",
"name": "If1",
"type": "n8n-nodes-base.if",
"position": [
-1136,
1824
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "or",
"conditions": [
{
"id": "9835b082-c46b-4a11-a27e-7079cd2c3771",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.data.status }}",
"rightValue": "completed"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "87481d57-6f97-4c92-b4bf-d59e230cd702",
"name": "GET STATUS NEW IMG1",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1360,
1824
],
"parameters": {
"url": "=https://api.wavespeed.ai/api/v3/predictions/{{ $json.data.id }}/result",
"options": {
"redirect": {
"redirect": {}
}
},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_TOKEN_HERE"
}
]
}
},
"retryOnFail": false,
"typeVersion": 4.2,
"waitBetweenTries": 3000
},
{
"id": "601d1712-c1d8-4035-bb5b-3f186bee3a8f",
"name": "UPLOAD NEW IMG V1",
"type": "n8n-nodes-base.httpRequest",
"position": [
-912,
1920
],
"parameters": {
"url": "https://api.cloudinary.com/v1_1/YOUR_CLOUDINARY_CLOUD_NAME/auto/upload",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "multipart-form-data",
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "file",
"value": "={{ $json.data.outputs[0] }}"
},
{
"name": "upload_preset",
"value": "Picture"
}
]
},
"genericAuthType": "httpBasicAuth"
},
"credentials": {
"httpBasicAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "b68551d3-4fa5-462a-9523-9b95682cd47d",
"name": "GET STATUS LIPSYNC V1",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1360,
2976
],
"parameters": {
"url": "=https://api.wavespeed.ai/api/v3/predictions/{{ $json.data.id }}/result",
"options": {
"redirect": {
"redirect": {}
}
},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_TOKEN_HERE"
}
]
}
},
"retryOnFail": false,
"typeVersion": 4.2,
"waitBetweenTries": 3000
},
{
"id": "f64964fb-e44d-43f0-8a94-30ad128bd8bb",
"name": "Telegram Trigger",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
-1872,
752
],
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "97029fa3-d4da-4507-9bfa-505dcbff8295",
"name": "Set Bot Token",
"type": "n8n-nodes-base.set",
"position": [
-1648,
752
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "e4524d93-d12a-47aa-a6bf-c15e6d1b29c1",
"name": "bot id",
"type": "string",
"value": "YOUR_TELEGRAM_BOT_TOKEN"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "28386600-e8dc-4ecd-92cc-7cab0249ba6f",
"name": "Image Path (getFile)",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1424,
752
],
"parameters": {
"url": "=https://api.telegram.org/bot{{ $json['bot id'] }}/getFile?file_id={{ $('Telegram Trigger').item.json.message.photo[0].file_id }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "4ab95eb8-27f8-47eb-8ac6-e912d7866a4f",
"name": "Download File \u2192 Gambar",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1200,
752
],
"parameters": {
"url": "=https://api.telegram.org/file/bot{{ $('Set Bot Token').item.json['bot id'] }}/{{ $json.result.file_path }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "aca9fc24-cd9d-4f59-a419-e262af880e13",
"name": "Send a video",
"type": "n8n-nodes-base.telegram",
"position": [
-688,
2960
],
"parameters": {
"file": "={{ $json.url }}",
"chatId": "52664079",
"operation": "sendVideo",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "dc3e4287-cfef-43be-bd56-0a9a9349d189",
"name": "Send a photo message",
"type": "n8n-nodes-base.telegram",
"position": [
-912,
1728
],
"parameters": {
"file": "={{ $json.data.outputs[0] }}",
"chatId": "52664079",
"operation": "sendPhoto",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "13229295-84ec-43be-a374-d597b41cb0dc",
"name": "Analyze IMG NEW2",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-688,
1920
],
"parameters": {
"text": "=Analisis gambar yang diberikan dan tentukan gender dari karakter yang ada di gambar adakah : \n\n- Lelaki \natau \n- Perempuan\n\n# Output\nHuruf kecil semua \nKembalikan output tanpa ada tambahan kata atau simbol apapun",
"modelId": {
"__rl": true,
"mode": "list",
"value": "chatgpt-4o-latest",
"cachedResultName": "CHATGPT-4O-LATEST"
},
"options": {},
"resource": "image",
"imageUrls": "={{ $json.secure_url }}",
"operation": "analyze"
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "4377c00f-f918-484a-970b-6c99f6563ac4",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2368,
1376
],
"parameters": {
"width": 400,
"height": 992,
"content": "## \ud83d\udd27 Complete Setup & Integration Guide\n\n**\ud83d\udccb Required API Keys & Services:**\n\n1. **OpenAI API**\n \u2022 Get from: https://platform.openai.com/api-keys\n \u2022 Used for: GPT-4 Vision image analysis\n \u2022 Add to: OpenAI Chat Model4 & Analyze YAML nodes\n\n2. **ElevenLabs API**\n \u2022 Get from: https://elevenlabs.io/app/settings/api-keys\n \u2022 Used for: Voice cloning & text-to-speech\n \u2022 Replace 'YOUR_ELEVENLABS_API_KEY' in CLONING AUDIO nodes\n \u2022 Voice IDs: Male (UcqZLa941Kkt8ZhEEybf), Female (lMSqoJeA0cBBNA9FeHAs)\n\n3. **WaveSpeed AI API**\n \u2022 Get from: https://wavespeed.ai/\n \u2022 Used for: Image generation & lip-sync video creation\n \u2022 Replace 'YOUR_WAVESPEED_API_KEY' in CREATE nodes\n\n4. **Cloudinary API**\n \u2022 Get from: https://cloudinary.com/console\n \u2022 Used for: File hosting & storage\n \u2022 Replace 'YOUR_CLOUDINARY_CLOUD_NAME' in UPLOAD nodes\n \u2022 Set upload preset to 'Picture'\n\n5. **Telegram Bot Token**\n \u2022 Create bot via @BotFather on Telegram\n \u2022 Replace 'YOUR_TELEGRAM_BOT_TOKEN' in Set Bot Token node\n \u2022 Set chat ID for final delivery\n\n**\u26a1 Quick Setup Steps:**\n1. Copy all API keys to respective nodes\n2. Configure Cloudinary upload preset\n3. Test with a product image via Telegram bot\n4. Monitor processing times (65s for images, 140s for videos)\n\n**\ud83d\udce4 Expected Output:** Professional testimonial video delivered via Telegram"
},
"typeVersion": 1
},
{
"id": "41c2a2fa-dd68-4bb1-9c8a-af4c7d721ff7",
"name": "Sticky Note10",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2384,
720
],
"parameters": {
"color": 5,
"width": 420,
"height": 640,
"content": "## \ud83c\udfac Create Authentic UGC Video Ads with GPT-4o, ElevenLabs & WaveSpeed Lip-Sync\n\n**What it does:** AI-powered workflow to create authentic-looking customer testimonial videos with voice synthesis and lip-sync technology\n\n**How it works:**\n1. \ud83d\udcf1 Receives product image via Telegram bot\n2. \ud83e\udd16 GPT-4o Vision analyzes product, colors, brand, demographics\n3. \ud83d\udcdd AI generates authentic testimonial scripts and prompts\n4. \ud83c\udfa8 WaveSpeed AI creates realistic customer review images\n5. \ud83c\udfa4 ElevenLabs generates natural voice-over (Malay/English)\n6. \ud83d\udc44 WaveSpeed AI syncs audio with character lip movements\n7. \ud83d\udce4 Delivers final UGC video via Telegram\n\n**Tech Stack:** GPT-4o, ElevenLabs, WaveSpeed AI, Cloudinary\n**Processing Time:** ~3-5 minutes per video\n**Output:** 480p testimonial videos ready for TikTok/Instagram"
},
"typeVersion": 1
},
{
"id": "592a4409-86eb-4a19-bcf2-a16cc9a07cbb",
"name": "Sticky Note13",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2368,
2384
],
"parameters": {
"color": 3,
"width": 400,
"height": 688,
"content": "## \u2696\ufe0f Ethical AI Content Generation\n\n**\ud83e\udded Responsible AI Use Guidelines:**\n\n**\u2705 DO:**\n\u2022 Clearly label AI-generated content as synthetic\n\u2022 Use for legitimate marketing and advertising\n\u2022 Respect platform terms of service\n\u2022 Ensure content is honest about product claims\n\u2022 Comply with local advertising regulations\n\n**\u274c DON'T:**\n\u2022 Mislead viewers about product authenticity\n\u2022 Create false or deceptive reviews\n\u2022 Generate content without proper disclosure\n\u2022 Violate copyright or impersonate individuals\n\u2022 Use for misinformation or scams\n\n**\ud83d\udccb Compliance Checklist:**\n\u2022 [ ] Content complies with platform policies\n\u2022 [ ] Synthetic content is clearly disclosed\n\u2022 [ ] Product claims are truthful and verifiable\n\u2022 [ ] You have rights to use product imagery\n\u2022 [ ] Voice cloning complies with ElevenLabs TOS\n\u2022 [ ] Generated faces don't resemble real people\n\n**\ud83c\udf0d Platform-Specific Requirements:**\n\u2022 TikTok: #Ad disclosure required\n\u2022 Instagram: Paid Partnership label\n\u2022 YouTube: Sponsored content disclosure\n\u2022 Facebook: Ad transparency requirements\n\n**\ud83d\udcac When in doubt:** Consult legal counsel for advertising compliance in your jurisdiction."
},
"typeVersion": 1
}
],
"connections": {
"If1": {
"main": [
[
{
"node": "UPLOAD NEW IMG V1",
"type": "main",
"index": 0
},
{
"node": "Send a photo message",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait 65s1",
"type": "main",
"index": 0
}
]
]
},
"If3": {
"main": [
[
{
"node": "UPLOAD VIDEO REVIEW V1",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait 140s",
"type": "main",
"index": 0
}
]
]
},
"If4": {
"main": [
[
{
"node": "TTS & CAPTION1",
"type": "main",
"index": 0
}
],
[
{
"node": "PROMPT PRODUK REVIEW",
"type": "main",
"index": 0
}
]
]
},
"If5": {
"main": [
[
{
"node": "CREATE NEW IMG1",
"type": "main",
"index": 0
}
],
[
{
"node": "TTS & CAPTION1",
"type": "main",
"index": 0
}
]
]
},
"Wait": {
"main": [
[
{
"node": "PROMPT PRODUK REVIEW",
"type": "main",
"index": 0
}
]
]
},
"Wait5": {
"main": [
[
{
"node": "If4",
"type": "main",
"index": 0
}
]
]
},
"Wait 140s": {
"main": [
[
{
"node": "GET STATUS LIPSYNC V1",
"type": "main",
"index": 0
}
]
]
},
"Wait 65s1": {
"main": [
[
{
"node": "GET STATUS NEW IMG1",
"type": "main",
"index": 0
}
]
]
},
"Analyze YAML": {
"main": [
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"Set Bot Token": {
"main": [
[
{
"node": "Image Path (getFile)",
"type": "main",
"index": 0
}
]
]
},
"Switch GENDER": {
"main": [
[
{
"node": "CLONING AUDIO CE",
"type": "main",
"index": 0
}
],
[
{
"node": "CLONING AUDIO CO",
"type": "main",
"index": 0
}
]
]
},
"TTS & CAPTION1": {
"main": [
[
{
"node": "If5",
"type": "main",
"index": 0
}
]
]
},
"CREATE NEW IMG1": {
"main": [
[
{
"node": "Wait 65s1",
"type": "main",
"index": 0
}
]
]
},
"Analyze IMG NEW2": {
"main": [
[
{
"node": "Switch GENDER",
"type": "main",
"index": 0
}
]
]
},
"CLONING AUDIO CE": {
"main": [
[
{
"node": "Extract ElevenLabs Audio Data",
"type": "main",
"index": 0
}
]
]
},
"CLONING AUDIO CO": {
"main": [
[
{
"node": "Extract ElevenLabs Audio Data (Male)",
"type": "main",
"index": 0
}
]
]
},
"Telegram Trigger": {
"main": [
[
{
"node": "Set Bot Token",
"type": "main",
"index": 0
}
]
]
},
"CREATE LIPSYNC V1": {
"main": [
[
{
"node": "Wait 140s",
"type": "main",
"index": 0
}
]
]
},
"UPLOAD NEW IMG V1": {
"main": [
[
{
"node": "Analyze IMG NEW2",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model4": {
"ai_languageModel": [
[
{
"node": "PROMPT PRODUK REVIEW",
"type": "ai_languageModel",
"index": 0
},
{
"node": "TTS & CAPTION1",
"type": "ai_languageModel",
"index": 0
},
{
"node": "Structured Output Parser",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"GET STATUS NEW IMG1": {
"main": [
[
{
"node": "If1",
"type": "main",
"index": 0
}
]
]
},
"Image Path (getFile)": {
"main": [
[
{
"node": "Download File \u2192 Gambar",
"type": "main",
"index": 0
}
]
]
},
"PROMPT PRODUK REVIEW": {
"main": [
[
{
"node": "Wait5",
"type": "main",
"index": 0
}
]
]
},
"UPLOAD AUDIO LIPSYNC": {
"main": [
[
{
"node": "CREATE LIPSYNC V1",
"type": "main",
"index": 0
}
]
]
},
"GET STATUS LIPSYNC V1": {
"main": [
[
{
"node": "If3",
"type": "main",
"index": 0
}
]
]
},
"UPLOAD VIDEO REVIEW V1": {
"main": [
[
{
"node": "Send a video",
"type": "main",
"index": 0
}
]
]
},
"Download File \u2192 Gambar": {
"main": [
[
{
"node": "Analyze YAML",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "TTS & CAPTION1",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Extract ElevenLabs Audio Data": {
"main": [
[
{
"node": "Convert Audio to WAV Format (Female Voice)",
"type": "main",
"index": 0
}
]
]
},
"Extract ElevenLabs Audio Data (Male)": {
"main": [
[
{
"node": "Convert Audio to WAV Format (Male Voice)",
"type": "main",
"index": 0
}
]
]
},
"Convert Audio to WAV Format (Male Voice)": {
"main": [
[
{
"node": "UPLOAD AUDIO LIPSYNC",
"type": "main",
"index": 0
}
]
]
},
"Convert Audio to WAV Format (Female Voice)": {
"main": [
[
{
"node": "UPLOAD AUDIO LIPSYNC",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
httpBasicAuthopenAiApitelegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This n8n template demonstrates how to create authentic-looking User Generated Content (UGC) advertisements using AI image generation, voice synthesis, and lip-sync technology. The workflow transforms product images into realistic customer testimonial videos that mimic genuine…
Source: https://n8n.io/workflows/10070/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Generate AI viral videos with NanoBanana & VEO3, shared on socials via Blotato 2. Uses @blotato/n8n-nodes-blotato, googleSheets, lmChatOpenAi, toolThink. Event-driven trigger; 94 nodes.
RAG CHATBOT Main. Uses telegram, telegramTrigger, lmChatOpenAi, n8n-nodes-mcp. Event-driven trigger; 87 nodes.
The best content automation template in the market is now even better—with “deep research” on time-sensitive topics\! Unlike most n8n content automation templates that are mainly for “demo purposes,”
Digital marketers, content creators, social media managers, and businesses who want to use AI marketing automation for YouTube Shorts without spending hours on production. This AI workflow helps anyon
Transform your salon/service business with this streamlined Telegram automation system featuring Claude integration, zero-setup database management, and intelligent conversation handling. Claude MCP I