Traduire automatiquement les vidéos YouTube en japonais avec DeepL et publier sur Slack

Avancé

Ceci est unSocial Media, Multimodal AIworkflow d'automatisation du domainecontenant 20 nœuds.Utilise principalement des nœuds comme If, Code, DeepL, Merge, Slack. Traduire automatiquement les vidéos YouTube en japonais avec DeepL et les publier sur Slack

Prérequis
  • Token Bot Slack ou URL Webhook
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "id": "iNkDWkBewhVKUVWf",
  "meta": {
    "instanceId": "15d6057a37b8367f33882dd60593ee5f6cc0c59310ff1dc66b626d726083b48d",
    "templateCredsSetupCompleted": true
  },
  "name": "Auto-Translate YouTube Videos to Japanese with DeepL and Post to Slack",
  "tags": [],
  "nodes": [
    {
      "id": "8908066f-105b-4a8c-a642-921c10e16d25",
      "name": "Déclencheur RSS",
      "type": "n8n-nodes-base.rssFeedRead",
      "position": [
        -128,
        -160
      ],
      "parameters": {
        "url": "https://www.youtube.com/feeds/videos.xml?channel_id=UCYO_jab_esuFRV4b17AJtAw",
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "23e0fa4a-a16e-4e11-b9b5-879c1001f324",
      "name": "Envoyer vers Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        1616,
        -256
      ],
      "parameters": {
        "text": "=🎥 *New YouTube Video!*  \n━━━━━━━━━━━━━━━  \n📌 *タイトル*  \n{{ $json.title }}\n\n📝 *説明*  \n{{ $json.description }}\n\n🌍 *Original Title*  \n{{ $('Merge YouTube + DeepL Results1').item.json.title }}\n\n🗒️ *Original Description*  \n{{ $('Merge YouTube + DeepL Results1').item.json.description }}\n\n🔗 *Link*  \n<{{ $('Format YouTube Data for DeepL').item.json.link }}|Watch on YouTube>",
        "channel": "=#general",
        "attachments": [],
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "id": "2kyw7TSL5VT4S3md",
          "name": "Slack account 8"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "ebff7150-ee6d-4dad-ad03-a29944fcf28a",
      "name": "Obtenir une vidéo",
      "type": "n8n-nodes-base.youTube",
      "position": [
        496,
        -256
      ],
      "parameters": {
        "part": [
          "snippet"
        ],
        "options": {},
        "videoId": "={{ String($json.YT_CHANNEL_ID || $json.id || $json.link || '')\n    .replace(/^yt:video:/,'')\n    .replace(/^.*(?:v=|shorts\\/|youtu\\.be\\/)/,'')\n    .split(/[?&]/)[0] }}",
        "resource": "video",
        "operation": "get"
      },
      "credentials": {
        "youTubeOAuth2Api": {
          "id": "CMyE0HrVEaStWZgG",
          "name": "YouTube account 2"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a461efd7-0ffc-4a56-b270-a064b0a91d3e",
      "name": "Envoyer un message",
      "type": "n8n-nodes-base.slack",
      "position": [
        496,
        -64
      ],
      "webhookId": "8c1cfac1-12a9-4ef9-9b98-5fa9b8504772",
      "parameters": {
        "text": "= *スキップされた動画を検出しました* 📺 タイトル: {{$json.title || $json.snippet.title}} 🔗 URL: {{$json.link || `https://www.youtube.com/watch?v=${$json.id}`}} ⚠️ 理由: 英語タイトルではないため、翻訳対象外としました",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "CKUCBTG0H",
          "cachedResultName": "general"
        },
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "id": "2kyw7TSL5VT4S3md",
          "name": "Slack account 8"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "bfd54f44-77e7-4ba0-a523-e6cd2b8d432f",
      "name": "Note adhésive",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -960,
        -592
      ],
      "parameters": {
        "width": 432,
        "height": 1232,
        "content": "## Overview\nAuto-translate YouTube uploads to Japanese and post to Slack (DeepL + Slack)\n\n## Who’s it for\nMarketing or community teams that follow English-speaking creators but share updates with Japanese audiences; language learners who want JP summaries of newly released videos; internal comms teams curating industry channels for a JP workspace.\n\n## What it does\nThis workflow detects new YouTube uploads, retrieves full metadata, translates the title and description into Japanese using DeepL, and posts a formatted message to a Slack channel. It also skips non-English titles to avoid unnecessary translation.\n## How it works\n・RSS watches a channel for new items.\n・YouTube API fetches the full snippet (title/description).\n・Text is combined into a single payload and sent to DeepL.\n・The translated result + original metadata is merged and posted to Slack.\n\n## Requirements\n・YouTube OAuth (for reliable snippet retrieval)\n・DeepL API key (Free or Pro)\n・Slack OAuth\n\n## How to set up\n・Duplicate this template.\n・Open the Config (Set) node and fill in YT_CHANNEL_ID, TARGET_LANG, SLACK_CHANNEL.\n・Connect credentials for YouTube, DeepL, and Slack (don’t hardcode API keys in HTTP nodes).\n・Click Execute workflow and verify one sample post.\n\n## How to customize\n・Change TARGET_LANG to any language supported by DeepL.\n・Add filters (exclude Shorts, skip videos under N characters).\n・Switch to Slack Blocks for richer formatting or thread replies.\n・Add a fallback translator or retry logic on HTTP errors.\n## Notes & limits\nDeepL Free/Pro have different endpoints/quotas and monthly character limits. YouTube and Slack also enforce rate limits. Keep credentials in n8n’s credential store; do not commit keys into templates. Rotate keys if you accidentally exposed them."
      },
      "typeVersion": 1
    },
    {
      "id": "dd5f0eef-4159-40db-a27d-02f318ea467a",
      "name": "Note adhésive1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        512,
        112
      ],
      "parameters": {
        "color": 7,
        "height": 304,
        "content": "## Send a Message (Skipped)\n📘 Setup Steps\n1️⃣ Connect YouTube, DeepL, and Slack credentials\n2️⃣ Update the RSS channel ID\n3️⃣ Adjust Slack channel name if needed\n4️⃣ Test with one video manually\n\n(Optional) Embed a quick Loom video for reviewers."
      },
      "typeVersion": 1
    },
    {
      "id": "988d0c76-7f0c-4992-bae8-f3bb51369203",
      "name": "Note adhésive4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        768,
        -32
      ],
      "parameters": {
        "color": 7,
        "width": 256,
        "height": 288,
        "content": "## Format YouTube Data for DeepL\n\n🧠 Prepare Translation Input\nCombines YouTube data into a single formatted text:\n【Title】\n{title}\n\n【Description】\n{description}\n"
      },
      "typeVersion": 1
    },
    {
      "id": "f790cfce-8057-4636-baee-7dc5939c045b",
      "name": "Note adhésive5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        256,
        -368
      ],
      "parameters": {
        "color": 7,
        "height": 192,
        "content": "## Language Filter\n🔎 Filter English Titles Only\nSkips non-English titles based on regex (^[A-Za-z0-9\\\\s\\\\W]+$).\nIf true → proceed to translation.\nIf false → send “skipped” message to Slack."
      },
      "typeVersion": 1
    },
    {
      "id": "81f79bc3-f47d-4e9d-81d1-cd3bc0255351",
      "name": "Note adhésive6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -176,
        -32
      ],
      "parameters": {
        "color": 7,
        "width": 224,
        "height": 224,
        "content": "## RSS Trigger\n\n⏰ Trigger for new uploads\nChecks the target YouTube channel RSS feed for new video posts.\nAutomatically passes new entries to the next node."
      },
      "typeVersion": 1
    },
    {
      "id": "85c85131-fbd2-4345-a74c-1caf63f8d270",
      "name": "Note adhésive7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1168,
        -64
      ],
      "parameters": {
        "color": 7,
        "height": 208,
        "content": "## Merge\n\n🔗 Combine Original + Translated Data\nJoins DeepL translation results with YouTube metadata.\nOutput: unified object ready for Slack posting."
      },
      "typeVersion": 1
    },
    {
      "id": "f20df73e-1c72-4847-9a03-8488349b73a5",
      "name": "Note adhésive8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        976,
        -512
      ],
      "parameters": {
        "color": 7,
        "height": 272,
        "content": "## Translate with DeepL\n\n🌍 Translate text into Japanese\nUses the DeepL API (POST request).\nTranslates the combined YouTube text.\nReturns JSON with translated output.\n⚠️ Never hardcode API keys — store in credentials."
      },
      "typeVersion": 1
    },
    {
      "id": "8194a237-a490-4354-bb0e-9fe885ac6824",
      "name": "Note adhésive9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        528,
        -480
      ],
      "parameters": {
        "color": 7,
        "height": 192,
        "content": "## Get a Video\n🎬 Retrieve Full Video Details\nUses the YouTube API to fetch snippet information such as title and description.\nInput: video ID from RSS.\nOutput: structured JSON for downstream processing."
      },
      "typeVersion": 1
    },
    {
      "id": "6b5e5ef1-b928-43fb-aab7-64b2414c3ea0",
      "name": "Filtre de langue",
      "type": "n8n-nodes-base.if",
      "position": [
        272,
        -160
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "00af14f6-2d40-4fb3-bdb1-a16438529179",
              "operator": {
                "type": "string",
                "operation": "regex"
              },
              "leftValue": "={{ String($('RSS Trigger').item.json?.title ?? '') }}",
              "rightValue": "^[A-Za-z0-9\\s\\W]+$"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "239c591d-0625-4257-8f27-1c087058736f",
      "name": "Formater les données YouTube pour DeepL",
      "type": "n8n-nodes-base.code",
      "position": [
        720,
        -256
      ],
      "parameters": {
        "jsCode": "// --- YouTubeデータの取得 ---\nconst item = $json;\n\n// RSS からは title / link だけ、YouTubeノードからは snippet 構造を想定\nconst title = item.snippet?.title || item.title || \"No title\";\nconst description = item.snippet?.description || item.description || \"No description\";\nconst videoId = item.id?.videoId || item.id?.replace(\"yt:video:\", \"\") || \"unknown\";\nconst link = item.link || `https://www.youtube.com/watch?v=${videoId}`;\n\n// --- 整形(DeepLに渡す形) ---\nconst textToTranslate = `\n【Title】\n${title}\n\n【Description】\n${description}\n`;\n\n// --- DeepLに渡すJSON形式で出力 ---\nreturn [\n  {\n    json: {\n      title,\n      description,\n      videoId,\n      link,\n      textToTranslate,\n    }\n  }\n];"
      },
      "typeVersion": 2
    },
    {
      "id": "468941d1-78ab-4a00-a539-d86b81c2c7c7",
      "name": "Note adhésive10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -432,
        -480
      ],
      "parameters": {
        "color": 7,
        "width": 224,
        "height": 352,
        "content": "## Setup checklist\n1) Connect: YouTube OAuth / DeepL / Slack\n2) Open “Set (Config)” and fill: YT_CHANNEL_ID, TARGET_LANG, SLACK_CHANNEL\n3) Replace DeepL HTTP node with DeepL credential (no hardcoded key)\n4) Run once with a recent video to validate\n5) Optional: turn on Error Trigger → Slack #alerts\n"
      },
      "typeVersion": 1
    },
    {
      "id": "c2cc4803-9017-4fef-82ad-b1023eace6d6",
      "name": "Traduire une langue",
      "type": "n8n-nodes-base.deepL",
      "position": [
        944,
        -192
      ],
      "parameters": {
        "text": "={{ $json.textToTranslate }}",
        "translateTo": "JA",
        "additionalFields": {}
      },
      "credentials": {
        "deepLApi": {
          "id": "BzWijzgd9hLwECP0",
          "name": "DeepL account 4"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "494aff32-6c93-4623-bc66-0138e5cf0694",
      "name": "Note adhésive3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1648,
        -48
      ],
      "parameters": {
        "color": 7,
        "height": 192,
        "content": "## Send to Slack\n💬 Post Translated Message to Slack\nSends formatted message to a selected channel.\nIncludes both translated and original texts with a video link.\nExample output:"
      },
      "typeVersion": 1
    },
    {
      "id": "a0179356-9df6-4628-aee6-418cda343144",
      "name": "Fusionner YouTube + Résultats DeepL1",
      "type": "n8n-nodes-base.merge",
      "position": [
        1168,
        -256
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineAll"
      },
      "typeVersion": 3.2
    },
    {
      "id": "63f64775-51e9-4e31-aa66-8662a9f2f6dc",
      "name": "Formater la sortie traduite",
      "type": "n8n-nodes-base.code",
      "position": [
        1392,
        -256
      ],
      "parameters": {
        "jsCode": "// 入力データ取得\nconst text = $json.text || '';\n\n// タイトル行を抽出\nconst titleMatch = text.match(/タイトル[^\\n]*\\n(.*?)\\n/);\nconst title = titleMatch ? titleMatch[1].trim() : '';\n\n// 説明行を抽出\nconst descMatch = text.match(/説明[^\\n]*\\n([\\s\\S]*)/);\nconst description = descMatch ? descMatch[1].trim() : '';\n\n// Slackで見やすいように成形\nreturn {\n  json: {\n    title,\n    description\n  }\n};\n"
      },
      "typeVersion": 2
    },
    {
      "id": "24384f42-e32b-4ec0-b5de-66c754faa639",
      "name": "Note adhésive12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1344,
        -704
      ],
      "parameters": {
        "color": 7,
        "width": 320,
        "height": 416,
        "content": "##  Format Translated Output\n\nThis Code node formats the DeepL translation result into a clean JSON object \nthat can be sent to Slack or other integrations.\nInput:\n- Translated text (from DeepL)\n- Original title and description\nOutput:\n{\n  \"translated_title\": \"...\",\n  \"translated_description\": \"...\",\n  \"original_title\": \"...\",\n  \"url\": \"...\"\n}\n\nTip:\nIf you modify the Slack message format, adjust field names here."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "dc7904c4-4ad8-43fe-a3a4-87b66973cf02",
  "connections": {
    "ebff7150-ee6d-4dad-ad03-a29944fcf28a": {
      "main": [
        [
          {
            "node": "239c591d-0625-4257-8f27-1c087058736f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8908066f-105b-4a8c-a642-921c10e16d25": {
      "main": [
        [
          {
            "node": "6b5e5ef1-b928-43fb-aab7-64b2414c3ea0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a461efd7-0ffc-4a56-b270-a064b0a91d3e": {
      "main": [
        []
      ]
    },
    "6b5e5ef1-b928-43fb-aab7-64b2414c3ea0": {
      "main": [
        [
          {
            "node": "ebff7150-ee6d-4dad-ad03-a29944fcf28a",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "a461efd7-0ffc-4a56-b270-a064b0a91d3e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c2cc4803-9017-4fef-82ad-b1023eace6d6": {
      "main": [
        [
          {
            "node": "a0179356-9df6-4628-aee6-418cda343144",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "63f64775-51e9-4e31-aa66-8662a9f2f6dc": {
      "main": [
        [
          {
            "node": "23e0fa4a-a16e-4e11-b9b5-879c1001f324",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "239c591d-0625-4257-8f27-1c087058736f": {
      "main": [
        [
          {
            "node": "c2cc4803-9017-4fef-82ad-b1023eace6d6",
            "type": "main",
            "index": 0
          },
          {
            "node": "a0179356-9df6-4628-aee6-418cda343144",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "a0179356-9df6-4628-aee6-418cda343144": {
      "main": [
        [
          {
            "node": "63f64775-51e9-4e31-aa66-8662a9f2f6dc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Foire aux questions

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é - Réseaux sociaux, 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

Détection d'anomalies des prix d'actions et workflow de notification automatique des actualités connexes
Détection des anomalies boursières et envoi d'alertes d'actualités avec Marketstack, HackerNews et DeepL
If
Set
Code
+
If
Set
Code
26 Nœudsnoda
Trading crypto
Automatisation de la publication RSS vers Medium avec Groq, Gemini et un système d'approbation Slack
Automatisation du flux de publication de RSS vers Medium avec Groq, Gemini et le système d'approbation Slack
If
Set
Code
+
If
Set
Code
41 NœudsObisDev
Création de contenu
Publication automatique RSS vers LinkedIn
Utiliser RSS + Gemini AI + Templated.io pour planifier et publier automatiquement sur la page entreprise LinkedIn
If
Code
Linked In
+
If
Code
Linked In
19 NœudsShrishti S Nagar
Réseaux sociaux
Réponses automatiques aux commentaires Instagram pilotées par l'IA
Suivre automatiquement les réponses aux commentaires Instagram avec OpenAI et Redis
If
Code
Merge
+
If
Code
Merge
27 NœudsOneclick AI Squad
Réseaux sociaux
Automatisation du monitoring de la marque et des réponses sur Reddit avec GPT-4o-mini, Sheets et Slack
Automatisation de la surveillance de la marque et des réponses sur Reddit avec GPT-4o-mini, Sheets et Slack
If
Code
Slack
+
If
Code
Slack
20 NœudsDaniel Shashko
Réseaux sociaux
Générer des communiqués de presse et des matériaux rédigés par l'IA pour les contacts HubSpot et SharePoint
Créer des communiqués de presse bilingues pour HubSpot et SharePoint avec GPT-4o, images et vidéos IA
If
Set
Code
+
If
Set
Code
49 Nœudsplemeo
Réseaux sociaux
Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds20
Catégorie2
Types de nœuds8
Description de la difficulté

Adapté aux utilisateurs avancés, avec des workflows complexes contenant 16+ nœuds

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34