{
  "name": "Auto-translate YouTube videos to Japanese with DeepL and post to Slack",
  "nodes": [
    {
      "id": "8908066f-105b-4a8c-a642-921c10e16d25",
      "name": "RSS Trigger",
      "type": "n8n-nodes-base.rssFeedRead",
      "position": [
        -128,
        -160
      ]
    },
    {
      "id": "23e0fa4a-a16e-4e11-b9b5-879c1001f324",
      "name": "Send to Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        1616,
        -256
      ]
    },
    {
      "id": "ebff7150-ee6d-4dad-ad03-a29944fcf28a",
      "name": "Get a video",
      "type": "n8n-nodes-base.youTube",
      "position": [
        496,
        -256
      ]
    },
    {
      "id": "a461efd7-0ffc-4a56-b270-a064b0a91d3e",
      "name": "Send a message",
      "type": "n8n-nodes-base.slack",
      "position": [
        496,
        -64
      ]
    },
    {
      "id": "bfd54f44-77e7-4ba0-a523-e6cd2b8d432f",
      "name": "Sticky Note",
      "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 Japa"
      }
    },
    {
      "id": "dd5f0eef-4159-40db-a27d-02f318ea467a",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        512,
        112
      ],
      "parameters": {
        "width": null,
        "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(Opt"
      }
    },
    {
      "id": "988d0c76-7f0c-4992-bae8-f3bb51369203",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        768,
        -32
      ],
      "parameters": {
        "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"
      }
    },
    {
      "id": "f790cfce-8057-4636-baee-7dc5939c045b",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        256,
        -368
      ],
      "parameters": {
        "width": null,
        "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."
      }
    },
    {
      "id": "81f79bc3-f47d-4e9d-81d1-cd3bc0255351",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -176,
        -32
      ],
      "parameters": {
        "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."
      }
    },
    {
      "id": "85c85131-fbd2-4345-a74c-1caf63f8d270",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1168,
        -64
      ],
      "parameters": {
        "width": null,
        "height": 208,
        "content": "## Merge\n\n🔗 Combine Original + Translated Data\nJoins DeepL translation results with YouTube metadata.\nOutput: unified object ready for Slack posting."
      }
    },
    {
      "id": "f20df73e-1c72-4847-9a03-8488349b73a5",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        976,
        -512
      ],
      "parameters": {
        "width": null,
        "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"
      }
    },
    {
      "id": "8194a237-a490-4354-bb0e-9fe885ac6824",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        528,
        -480
      ],
      "parameters": {
        "width": null,
        "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 processin"
      }
    },
    {
      "id": "6b5e5ef1-b928-43fb-aab7-64b2414c3ea0",
      "name": "Language Filter",
      "type": "n8n-nodes-base.if",
      "position": [
        272,
        -160
      ]
    },
    {
      "id": "239c591d-0625-4257-8f27-1c087058736f",
      "name": "Format YouTube Data for DeepL",
      "type": "n8n-nodes-base.code",
      "position": [
        720,
        -256
      ]
    },
    {
      "id": "468941d1-78ab-4a00-a539-d86b81c2c7c7",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -432,
        -480
      ],
      "parameters": {
        "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 k"
      }
    },
    {
      "id": "c2cc4803-9017-4fef-82ad-b1023eace6d6",
      "name": "Translate a language",
      "type": "n8n-nodes-base.deepL",
      "position": [
        944,
        -192
      ]
    },
    {
      "id": "494aff32-6c93-4623-bc66-0138e5cf0694",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1648,
        -48
      ],
      "parameters": {
        "width": null,
        "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:"
      }
    },
    {
      "id": "a0179356-9df6-4628-aee6-418cda343144",
      "name": "Merge YouTube + DeepL Results1",
      "type": "n8n-nodes-base.merge",
      "position": [
        1168,
        -256
      ]
    },
    {
      "id": "63f64775-51e9-4e31-aa66-8662a9f2f6dc",
      "name": "Format Translated Output",
      "type": "n8n-nodes-base.code",
      "position": [
        1392,
        -256
      ]
    },
    {
      "id": "24384f42-e32b-4ec0-b5de-66c754faa639",
      "name": "Sticky Note12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1344,
        -704
      ],
      "parameters": {
        "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- Ori"
      }
    }
  ],
  "connections": {
    "Get a video": {
      "main": [
        [
          {
            "node": "Format YouTube Data for DeepL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "RSS Trigger": {
      "main": [
        [
          {
            "node": "Language Filter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send a message": {
      "main": [
        []
      ]
    },
    "Language Filter": {
      "main": [
        [
          {
            "node": "Get a video",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Translate a language": {
      "main": [
        [
          {
            "node": "Merge YouTube + DeepL Results1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Translated Output": {
      "main": [
        [
          {
            "node": "Send to Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format YouTube Data for DeepL": {
      "main": [
        [
          {
            "node": "Translate a language",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge YouTube + DeepL Results1",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Merge YouTube + DeepL Results1": {
      "main": [
        [
          {
            "node": "Format Translated Output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}