This workflow corresponds to n8n.io template #12383 — we link there as the canonical source.
This workflow follows the Agent → Agenttool 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 →
{
"id": "A1XYVkxsCFjoVQHi",
"name": "Multilingual Speech Localization and Audio Generation Pipeline",
"tags": [],
"nodes": [
{
"id": "0e987100-f6be-49c3-9be6-ec1929861c32",
"name": "Start Workflow",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-1856,
72
],
"parameters": {},
"typeVersion": 1
},
{
"id": "f4ac7a86-a052-4355-acb9-600acaf83356",
"name": "Workflow Configuration",
"type": "n8n-nodes-base.set",
"position": [
-1632,
72
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "chineseText",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Chinese text to localize__>"
},
{
"id": "id-2",
"name": "targetLanguages",
"type": "string",
"value": "English,Spanish,French,German,Japanese"
},
{
"id": "id-3",
"name": "elevenLabsApiKey",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__ElevenLabs API Key__>"
},
{
"id": "id-4",
"name": "elevenLabsVoiceId",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__ElevenLabs Voice ID__>"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "9582a6b6-714c-4d7f-9c1f-04efaca5f710",
"name": "Localization Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-1128,
72
],
"parameters": {
"text": "={{ $json.chineseText }}",
"options": {
"systemMessage": "=You are a multilingual localization expert specializing in adapting content for different languages and cultures.\n\nYour task is to:\n1. Analyze the provided Chinese text\n2. Generate localized versions for each target language: {{ $json.targetLanguages }}\n3. Ensure cultural appropriateness and natural phrasing for each language\n4. Optimize the translations for speech delivery (natural rhythm, clear pronunciation)\n5. Return the translations in the structured JSON format\n\nFor each language, provide:\n- language: The target language name\n- languageCode: ISO 639-1 code (e.g., en, es, fr, de, ja)\n- translatedText: The localized text optimized for speech\n- culturalNotes: Any cultural adaptations made"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 3.1
},
{
"id": "070d90fc-8871-43a3-9730-5236da381627",
"name": "OpenAI Model - Localization",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-1408,
296
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {},
"builtInTools": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "a5eec64b-a120-45c1-ab07-4ad9c9187789",
"name": "Structured Output - Translations",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-704,
296
],
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"translations\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"items\": {\n\t\t\t\t\"type\": \"object\",\n\t\t\t\t\"properties\": {\n\t\t\t\t\t\"language\": {\n\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t},\n\t\t\t\t\t\"languageCode\": {\n\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t},\n\t\t\t\t\t\"translatedText\": {\n\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t},\n\t\t\t\t\t\"culturalNotes\": {\n\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}"
},
"typeVersion": 1.3
},
{
"id": "23a86e64-2a51-47cb-9d71-39e353ab7359",
"name": "Prepare Languages Array",
"type": "n8n-nodes-base.set",
"position": [
-592,
80
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "languages",
"type": "array",
"value": "={{ $json.translations }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "edc16b25-380f-4995-8f8f-241c1d23327b",
"name": "Loop Over Languages",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-256,
80
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "48d9e15c-a5e1-437c-89c0-2eedf8ddd769",
"name": "Speech Optimization Agent Tool",
"type": "@n8n/n8n-nodes-langchain.agentTool",
"position": [
-1280,
296
],
"parameters": {
"text": "={{ $fromAI(\"text_to_optimize\") }}",
"options": {
"systemMessage": "You are a speech optimization specialist.\n\nYour task is to refine text for natural, human-like speech delivery:\n1. Adjust sentence structure for natural rhythm and pacing\n2. Add appropriate pauses and emphasis markers\n3. Simplify complex phrases for clear pronunciation\n4. Ensure the text flows naturally when spoken aloud\n5. Maintain the original meaning and tone\n\nReturn ONLY the optimized text, ready for text-to-speech conversion."
},
"toolDescription": "Optimizes text for natural speech delivery by adjusting phrasing, rhythm, and pronunciation"
},
"typeVersion": 3
},
{
"id": "51bba671-bdf1-4a52-8d5f-38ffd9f4269b",
"name": "OpenAI Model - Speech Optimization",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-1200,
504
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {},
"builtInTools": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "e64078b3-10d9-412e-9df2-b8c866c9dfc2",
"name": "Voice Parameter Agent Tool",
"type": "@n8n/n8n-nodes-langchain.agentTool",
"position": [
-992,
296
],
"parameters": {
"text": "={{ $fromAI(\"language\") }}",
"options": {
"systemMessage": "You are a voice parameter optimization expert for text-to-speech systems.\n\nYour task is to determine optimal ElevenLabs voice parameters based on the target language and content type:\n\n1. Analyze the language characteristics\n2. Consider cultural speech patterns\n3. Recommend optimal parameters:\n - stability: 0.0-1.0 (higher = more consistent, lower = more expressive)\n - similarity_boost: 0.0-1.0 (higher = closer to original voice)\n - style: 0.0-1.0 (higher = more exaggerated)\n - use_speaker_boost: true/false\n\nReturn the parameters in structured JSON format."
},
"hasOutputParser": true,
"toolDescription": "Determines optimal voice parameters (stability, similarity, style, boost) for the target language and content"
},
"typeVersion": 3
},
{
"id": "b8189bc4-4193-423f-8fe6-eac10a53e8f1",
"name": "OpenAI Model - Voice Parameters",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-992,
504
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {},
"builtInTools": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "7e2c8466-a590-404a-aed3-dbc6829dfbc5",
"name": "Structured Output - Voice Params",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-848,
504
],
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"stability\": {\n\t\t\t\"type\": \"number\"\n\t\t},\n\t\t\"similarity_boost\": {\n\t\t\t\"type\": \"number\"\n\t\t},\n\t\t\"style\": {\n\t\t\t\"type\": \"number\"\n\t\t},\n\t\t\"use_speaker_boost\": {\n\t\t\t\"type\": \"boolean\"\n\t\t}\n\t}\n}"
},
"typeVersion": 1.3
},
{
"id": "5268beb9-e02f-45cc-a58b-e1e81056dfe9",
"name": "Generate Audio with ElevenLabs",
"type": "n8n-nodes-base.httpRequest",
"position": [
-16,
64
],
"parameters": {
"url": "=https://api.elevenlabs.io/v1/text-to-speech/{{ $('Workflow Configuration').first().json.elevenLabsVoiceId }}",
"method": "POST",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
},
"sendBody": true,
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "text",
"value": "={{ $json.translatedText }}"
},
{
"name": "model_id",
"value": "eleven_multilingual_v2"
},
{
"name": "voice_settings",
"value": "={{ { stability: $json.stability, similarity_boost: $json.similarity_boost, style: $json.style, use_speaker_boost: $json.use_speaker_boost } }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "xi-api-key",
"value": "={{ $('Workflow Configuration').first().json.elevenLabsApiKey }}"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.3
},
{
"id": "4452a623-bdf6-40aa-b810-ec60c3af82b5",
"name": "Process Audio Response",
"type": "n8n-nodes-base.code",
"position": [
208,
64
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "// Process the binary audio response and add metadata\nconst item = $input.item;\n\n// Get the current language data from the loop\nconst languageCode = item.json.languageCode;\nconst language = item.json.language;\n\n// Create filename for the audio file\nconst filename = `audio_${languageCode}.mp3`;\n\n// Return the item with metadata and binary data\nreturn {\n json: {\n language: language,\n languageCode: languageCode,\n filename: filename,\n success: true\n },\n binary: item.binary\n};"
},
"typeVersion": 2
},
{
"id": "a52e04a9-1f49-4106-b4ac-3f242fdf515a",
"name": "Aggregate Results",
"type": "n8n-nodes-base.set",
"position": [
416,
64
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "audioFile",
"type": "string",
"value": "={{ $binary.data }}"
},
{
"id": "id-2",
"name": "language",
"type": "string",
"value": "={{ $json.language }}"
},
{
"id": "id-3",
"name": "languageCode",
"type": "string",
"value": "={{ $json.languageCode }}"
},
{
"id": "id-4",
"name": "filename",
"type": "string",
"value": "={{ $json.filename }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "f3504fcd-16f0-4c60-b9cf-00a9b45b3d97",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1232,
-320
],
"parameters": {
"width": 368,
"height": 240,
"content": "## Setup Steps\n1. Configure OpenAI API credentials in all AI agent nodes \n2. Set up ElevenLabs account, obtain API key \n3. Define target languages list in \"Workflow Configuration\" node using ISO language codes\n4. Customize localization prompts in AI agents to match brand voice and content type\n5. Adjust voice parameter ranges and optimization criteria based on audio requirements\n"
},
"typeVersion": 1
},
{
"id": "e36a00ab-bdc0-4be3-9f49-fc72edf9a527",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1984,
-368
],
"parameters": {
"width": 672,
"height": 288,
"content": "## How It Works\nThis workflow delivers intelligent multilingual audio content creation for global marketing teams, e-learning providers, and content production studios. It solves the complex challenge of generating culturally adapted, professionally voiced translations optimized for each target language. The system begins with AI-powered localization that adapts source content for cultural context, idioms, and regional preferences rather than literal translation. Specialized AI agents then optimize speech parameters (pace, tone, emphasis) and voice characteristics (pitch, timbre, style) specific to each language's phonetic requirements. The workflow prepares language arrays and loops through each target language, generating optimized audio via ElevenLabs with customized voice parameters. All audio files are processed, formatted with metadata, and aggregated into a complete deliverable package, transforming single-source content into publication-ready multilingual audio assets."
},
"typeVersion": 1
},
{
"id": "076283ad-e110-448c-85ec-05a09e090bde",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-800,
-432
],
"parameters": {
"color": 6,
"width": 448,
"height": 352,
"content": "## Prerequisites\nOpenAI API access with GPT-4 capabilities, active ElevenLabs subscription with multi-voice access. \n## Use Cases\nGlobal product launch campaigns, international e-learning course production\n## Customization\nModify AI prompts for industry-specific terminology, add quality validation checkpoints\n## Benefits\nAchieves native-quality audio across languages, reduces production time by 80%"
},
"typeVersion": 1
},
{
"id": "482add16-8e42-4d10-83f0-ae948a0d943f",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-384,
-48
],
"parameters": {
"color": 7,
"width": 960,
"height": 400,
"content": "## Multilingual Audio Generation Loop\n**What:** Loop processes each language with optimized ElevenLabs settings\n**Why:** Generates consistent-quality audio across all languages with appropriate vocal characteristics"
},
"typeVersion": 1
},
{
"id": "909258db-4f31-49e6-bc4f-b38d9ebbf5c0",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1424,
-48
],
"parameters": {
"color": 7,
"width": 1024,
"height": 752,
"content": "## Cultural Localization & Adaptation\n**What:** Localization agent adapts content for cultural context per language\n**Why:** Ensures messages resonate authentically rather than sounding mechanically translated"
},
"typeVersion": 1
},
{
"id": "fcf9d67c-afea-4a59-a827-ebe778c1df49",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2000,
-48
],
"parameters": {
"color": 7,
"width": 560,
"height": 752,
"content": "## Controlled Workflow Initiation\n**What:** Manual trigger initiates workflow with source content configuration\n**Why:** Allows controlled execution with customizable input parameters and language selections"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"availableInMCP": false,
"executionOrder": "v1"
},
"versionId": "36d2fe1a-5e85-4b32-aaa6-b1be601e9951",
"connections": {
"Start Workflow": {
"main": [
[
{
"node": "Workflow Configuration",
"type": "main",
"index": 0
}
]
]
},
"Aggregate Results": {
"main": [
[
{
"node": "Loop Over Languages",
"type": "main",
"index": 0
}
]
]
},
"Localization Agent": {
"main": [
[
{
"node": "Prepare Languages Array",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Languages": {
"main": [
[
{
"node": "Generate Audio with ElevenLabs",
"type": "main",
"index": 0
}
]
]
},
"Process Audio Response": {
"main": [
[
{
"node": "Aggregate Results",
"type": "main",
"index": 0
}
]
]
},
"Workflow Configuration": {
"main": [
[
{
"node": "Localization Agent",
"type": "main",
"index": 0
}
]
]
},
"Prepare Languages Array": {
"main": [
[
{
"node": "Loop Over Languages",
"type": "main",
"index": 0
}
]
]
},
"Voice Parameter Agent Tool": {
"ai_tool": [
[
{
"node": "Localization Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"OpenAI Model - Localization": {
"ai_languageModel": [
[
{
"node": "Localization Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Generate Audio with ElevenLabs": {
"main": [
[
{
"node": "Process Audio Response",
"type": "main",
"index": 0
}
]
]
},
"Speech Optimization Agent Tool": {
"ai_tool": [
[
{
"node": "Localization Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"OpenAI Model - Voice Parameters": {
"ai_languageModel": [
[
{
"node": "Voice Parameter Agent Tool",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Structured Output - Translations": {
"ai_outputParser": [
[
{
"node": "Localization Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Structured Output - Voice Params": {
"ai_outputParser": [
[
{
"node": "Voice Parameter Agent Tool",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"OpenAI Model - Speech Optimization": {
"ai_languageModel": [
[
{
"node": "Speech Optimization Agent Tool",
"type": "ai_languageModel",
"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.
openAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow delivers intelligent multilingual audio content creation for global marketing teams, e-learning providers, and content production studios. It solves the complex challenge of generating culturally adapted, professionally voiced translations optimized for each target…
Source: https://n8n.io/workflows/12383/ — 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.
🧠 Automate end-to-end SEO blog creation and WordPress publishing using a GPT-5 multi-agent workflow with real-time research, metadata generation, and optional featured images.
This workflow provides enterprise-grade translation and text-to-speech automation for international communication teams, content publishers, and localization services. It addresses producing high-qual
🎯 Create viral TikToks, Shorts, Reels, podcasts, and ASMR videos in minutes — all on autopilot.
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.
The AI-Powered Shopify SEO Content Automation is an enterprise-grade workflow that transforms product content creation for e-commerce stores. This sophisticated multi-agent system integrates GPT-4o, C