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 →
{
"nodes": [
{
"name": "Set",
"type": "n8n-nodes-base.set",
"position": [
500,
510
],
"parameters": {
"values": {
"string": [
{
"name": "id",
"value": "={{$node[\"GetVideosYT\"].json[\"id\"][\"videoId\"]}}"
},
{
"name": "url",
"value": "=https://youtu.be/{{$node[\"GetVideosYT\"].json[\"id\"][\"videoId\"]}}"
},
{
"name": "title",
"value": "={{$node[\"GetVideosYT\"].json[\"snippet\"][\"title\"]}}"
}
],
"boolean": []
},
"options": {},
"keepOnlySet": true
},
"typeVersion": 1
},
{
"name": "Function",
"type": "n8n-nodes-base.function",
"position": [
640,
510
],
"parameters": {
"functionCode": "const new_items = [];\nconst data = this.getWorkflowStaticData('node');\n\ndata.ids = data.ids || [];\n\nfor (var i=0; i<items.length; i++) {\n if (data.ids.includes(items[i].json.id)) {\n break;\n } else {\n new_items.push({json: {id: items[i].json.id, url: items[i].json.url, title: items[i].json.title}});\n }\n}\n\ndata.ids = items.map(item => item.json.id)\nreturn new_items;\n"
},
"typeVersion": 1
},
{
"name": "CheckTime",
"type": "n8n-nodes-base.interval",
"position": [
210,
510
],
"parameters": {
"unit": "minutes",
"interval": 30
},
"typeVersion": 1
},
{
"name": "GetVideosYT",
"type": "n8n-nodes-base.youTube",
"position": [
370,
510
],
"parameters": {
"limit": 4,
"filters": {
"channelId": "UCTe5YtigJdZZ3i-za6IkbGQ"
},
"options": {
"order": "date"
},
"resource": "video"
},
"credentials": {
"youTubeOAuth2Api": "<your credential>"
},
"typeVersion": 1
},
{
"name": "SendVideo",
"type": "n8n-nodes-base.telegram",
"position": [
790,
510
],
"parameters": {
"text": "=Nuovo video di almi su YouTube!\n<b>{{$node[\"Function\"].json[\"title\"]}}</b>\n\n{{$node[\"Function\"].json[\"url\"]}}",
"chatId": "-1001178002763",
"additionalFields": {
"parse_mode": "HTML"
}
},
"credentials": {
"telegramApi": "<your credential>"
},
"typeVersion": 1
}
],
"connections": {
"Set": {
"main": [
[
{
"node": "Function",
"type": "main",
"index": 0
}
]
]
},
"Function": {
"main": [
[
{
"node": "SendVideo",
"type": "main",
"index": 0
}
]
]
},
"CheckTime": {
"main": [
[
{
"node": "GetVideosYT",
"type": "main",
"index": 0
}
]
]
},
"GetVideosYT": {
"main": [
[
{
"node": "Set",
"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.
telegramApiyouTubeOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Send New Youtube Channel Videos To Telegram. Uses interval, youTube, telegram. Manual trigger; 5 nodes.
Source: https://github.com/Zie619/n8n-workflows — 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.
A simple node to send new YouTube videos from a channel to a Telegram chat (private, group or channel). CheckTime: set how often videos should be fetched from YouTube. Default is 30 minutes. GetVideos
Youtube:Channel:get getAll update:Playlist:create update getAll get delete:PlaylistItem:add getAll get delete:videoCategory:getAll:Video:rate get upload update delete. Uses start, youTube, httpRequest
Are you a cord-cutter? Do you find yourself looking through the many titles of videos uploaded to Youtube, just to find the ones you want to watch? Even when you subscribe to the channels you like, do
Automated n8n workflow: Receives videos via form, dubs/translates them to the selected languages, and—upon completion—uploads them to multiple social media channels and cloud drives, including Box, Dr
Track Playlist. Uses start, readBinaryFile, spreadsheetFile, youTube. Manual trigger; 6 nodes.