Nicht wassermarkierte TikTok-Videos über einen Telegram-Bot herunterladen

Experte

Dies ist ein Social Media-Bereich Automatisierungsworkflow mit 20 Nodes. Hauptsächlich werden If, Set, Code, Telegram, HttpRequest und andere Nodes verwendet. TikTok-Videos ohne Wasserzeichen über einen Telegram-Bot herunterladen

Voraussetzungen
  • Telegram Bot Token
  • Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "meta": {
    "instanceId": "735886904af210643f438394a538e64374f0cb4ab13fd94d97005987482d652a",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "0b75420f-8be7-4da1-bc93-df2877de4adc",
      "name": "Telegram Trigger",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        -288,
        880
      ],
      "webhookId": "85eca1dd-c6bb-4ca5-8679-0e4f783db978",
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "id": "s1d5gRfBoQ9ZZAIM",
          "name": "Video Download Bot"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "ad042de8-2758-4fcd-9887-f015daecbf22",
      "name": "TikTok-URL validieren",
      "type": "n8n-nodes-base.if",
      "position": [
        0,
        880
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "url-check-1",
              "operator": {
                "type": "string",
                "operation": "contains"
              },
              "leftValue": "={{ $json.message.text }}",
              "rightValue": "tiktok.com"
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "fdadd1c3-37d8-4d36-a445-6904705d894e",
      "name": "Ungültige URL-Nachricht senden",
      "type": "n8n-nodes-base.telegram",
      "position": [
        240,
        976
      ],
      "webhookId": "d36fec4f-53f2-43d1-833b-a2aaab8b4ed4",
      "parameters": {
        "text": "❌ Please send a valid TikTok link!\n\nExamples:\n• https://www.tiktok.com/@user/video/123\n• https://vm.tiktok.com/abc123",
        "chatId": "={{ $json.message.from.id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "id": "s1d5gRfBoQ9ZZAIM",
          "name": "Video Download Bot"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "c98646f6-47dd-475d-9625-a90b19f9b246",
      "name": "Chat-Aktion senden",
      "type": "n8n-nodes-base.telegram",
      "position": [
        240,
        784
      ],
      "webhookId": "b0e58cb4-92f5-482f-8675-a8c183020c2c",
      "parameters": {
        "action": "upload_video",
        "chatId": "={{ $json.message.from.id }}",
        "operation": "sendChatAction"
      },
      "credentials": {
        "telegramApi": {
          "id": "s1d5gRfBoQ9ZZAIM",
          "name": "Video Download Bot"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "9c8b5462-99ca-49c6-85ad-069338299d1f",
      "name": "Verarbeitungsnachricht senden",
      "type": "n8n-nodes-base.telegram",
      "position": [
        464,
        784
      ],
      "webhookId": "76ab519a-0865-47d6-b019-59b737f93ae2",
      "parameters": {
        "text": "⏳ Downloading video... Please wait!",
        "chatId": "={{ $('Telegram Trigger').item.json.message.from.id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "id": "s1d5gRfBoQ9ZZAIM",
          "name": "Video Download Bot"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "7a1d2ad9-6007-4797-8320-0f7d21924354",
      "name": "Variablen konfigurieren",
      "type": "n8n-nodes-base.set",
      "position": [
        688,
        784
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "0f5772c0-1f84-45e9-b131-8be1c8dd6d85",
              "name": "share_video_url",
              "type": "string",
              "value": "={{ $json.message.text.trim() }}"
            },
            {
              "id": "781d5f1b-1724-4cd4-9e0d-916de65b43e5",
              "name": "chat_id",
              "type": "string",
              "value": "={{ $json.message.from.id }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "225bfc1b-93fb-4a51-912c-0aff791f98b3",
      "name": "TikTok-Seiten-HTML abrufen",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        864,
        784
      ],
      "parameters": {
        "url": "={{ $('Telegram Trigger').item.json.message.text }}",
        "options": {
          "timeout": 30000,
          "redirect": {
            "redirect": {}
          },
          "response": {
            "response": {
              "fullResponse": true,
              "responseFormat": "text"
            }
          }
        },
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
            },
            {
              "name": "Accept",
              "value": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
            },
            {
              "name": "Accept-Language",
              "value": "en-US,en;q=0.9"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "993c6555-94ec-49dd-97a8-fd03c31ac894",
      "name": "Video-URL extrahieren",
      "type": "n8n-nodes-base.code",
      "onError": "continueErrorOutput",
      "position": [
        1040,
        784
      ],
      "parameters": {
        "jsCode": "const html = $input.first().json.data;\nconst headers = $input.first().json.headers || {};\nconst cookies = headers['set-cookie'] || [];\n\nif (!html) {\n  throw new Error(\"Unable to load TikTok page. Please try again!\");\n}\n\n// Find JSON data from script tag\nconst regex = /<script id=\"__UNIVERSAL_DATA_FOR_REHYDRATION__\" type=\"application\\/json\">([\\s\\S]*?)<\\/script>/;\nconst match = html.match(regex);\n\nif (!match) {\n  throw new Error(\"Video data not found. The link may be deleted or private.\");\n}\n\nconst jsonStr = match[1];\nlet data;\n\ntry {\n  data = JSON.parse(jsonStr);\n} catch (e) {\n  throw new Error(\"Unable to parse video data. Please try again!\");\n}\n\n// Get video URL from multiple possible paths\nconst itemInfo = data?.__DEFAULT_SCOPE__?.[\"webapp.video-detail\"]?.itemInfo?.itemStruct;\nconst videoUrl = itemInfo?.video?.playAddr || itemInfo?.video?.downloadAddr;\n\nif (!videoUrl) {\n  throw new Error(\"Video URL not found. The video may be restricted from downloading.\");\n}\n\nconst videoInfo = {\n  videoUrl: videoUrl,\n  cookies: cookies.join('; '),\n  description: itemInfo?.desc || 'TikTok Video',\n  author: itemInfo?.author?.uniqueId || 'unknown',\n  stats: {\n    plays: itemInfo?.stats?.playCount || 0,\n    likes: itemInfo?.stats?.diggCount || 0,\n    comments: itemInfo?.stats?.commentCount || 0\n  }\n};\n\nreturn [{ json: videoInfo }];"
      },
      "typeVersion": 2
    },
    {
      "id": "a7a82681-5e5d-47ff-b8b2-b06d25a46764",
      "name": "Video-Datei herunterladen",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        1248,
        784
      ],
      "parameters": {
        "url": "={{ $json.videoUrl }}",
        "options": {
          "timeout": 60000,
          "response": {
            "response": {
              "responseFormat": "file"
            }
          },
          "allowUnauthorizedCerts": true
        },
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
            },
            {
              "name": "Referer",
              "value": "https://www.tiktok.com/"
            },
            {
              "name": "Accept",
              "value": "video/mp4,video/webm,video/*;q=0.9,application/octet-stream;q=0.8"
            },
            {
              "name": "Accept-Language",
              "value": "en-US,en;q=0.9"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Cookie",
              "value": "={{ $json.cookies }}"
            },
            {
              "name": "Range",
              "value": "bytes=0-"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "a4d0002b-3bca-41ca-970f-7fb6f00b86af",
      "name": "Video an Benutzer senden",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1504,
        640
      ],
      "webhookId": "e9287d60-0bee-4d5b-9438-31ec9a0aced5",
      "parameters": {
        "chatId": "={{ $('Telegram Trigger').item.json.message.from.id }}",
        "operation": "sendVideo",
        "binaryData": true,
        "additionalFields": {
          "caption": "=✅ Video downloaded successfully!\n\n👤 Author: @{{ $('Extract Video URL').item.json.author }}\n👁 Views: {{ $('Extract Video URL').item.json.stats.plays.toLocaleString() }}\n❤️ Likes: {{ $('Extract Video URL').item.json.stats.likes.toLocaleString() }}"
        }
      },
      "credentials": {
        "telegramApi": {
          "id": "s1d5gRfBoQ9ZZAIM",
          "name": "Video Download Bot"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "1d66e474-5c33-4785-96fe-7cf470e1506a",
      "name": "Fehler formatieren",
      "type": "n8n-nodes-base.code",
      "position": [
        1088,
        1072
      ],
      "parameters": {
        "jsCode": "// Capture and format error message\nconst errorData = $input.first().json;\nconst error = errorData.error || errorData.message || 'Unknown error occurred';\n\nreturn [{\n  json: {\n    error: error,\n    chat_id: $('Configure Variables').first().json.chat_id\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "1b10fdd9-80fd-4387-b8d4-79c38234e397",
      "name": "Fehlermeldung senden",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1488,
        1072
      ],
      "webhookId": "81cf605b-0f05-43dc-8ea4-7896a0bc4b6b",
      "parameters": {
        "text": "=❌ Error: {{ $json.error }}\n\n💡 Possible reasons:\n• Video was deleted or set to private\n• Invalid link\n• TikTok is under maintenance\n• Video is restricted from downloading\n\nPlease try again or use a different link!",
        "chatId": "={{ $json.chat_id }}",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "id": "s1d5gRfBoQ9ZZAIM",
          "name": "Video Download Bot"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "ac4f9ce6-c84f-4bd2-9297-0fca86e6a233",
      "name": "Hinweis - Trigger",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -368,
        592
      ],
      "parameters": {
        "color": 4,
        "width": 272,
        "height": 636,
        "content": "## 📥 TRIGGER\nReceives messages from Telegram users"
      },
      "typeVersion": 1
    },
    {
      "id": "b62ec2e9-f8a4-4fdb-95a0-74784f2134ed",
      "name": "Hinweis - Validierung",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -80,
        592
      ],
      "parameters": {
        "color": 5,
        "height": 636,
        "content": "## ✅ VALIDATION\nChecks if the message contains a valid TikTok URL"
      },
      "typeVersion": 1
    },
    {
      "id": "1335249e-7ceb-4f3d-b442-e7d0e25ef23c",
      "name": "Hinweis - Feedback",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        176,
        592
      ],
      "parameters": {
        "color": 6,
        "width": 460,
        "height": 636,
        "content": "## 💬 USER FEEDBACK\nSends status messages to keep user informed"
      },
      "typeVersion": 1
    },
    {
      "id": "053de0eb-8169-48ce-bae6-d83a3ab5a009",
      "name": "Hinweis - Verarbeitung",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        656,
        592
      ],
      "parameters": {
        "color": 7,
        "width": 1032,
        "height": 348,
        "content": "## 🎬 VIDEO PROCESSING\nFetches HTML → Extracts video URL → Downloads file"
      },
      "typeVersion": 1
    },
    {
      "id": "15ed8c93-95b4-4697-9d66-630e9ff0fdc2",
      "name": "Hinweis - Fehler",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        656,
        960
      ],
      "parameters": {
        "color": 2,
        "width": 1036,
        "height": 268,
        "content": "## ⚠️ ERROR HANDLING\nCatches errors and sends user-friendly messages"
      },
      "typeVersion": 1
    },
    {
      "id": "1c93ba5d-2bfa-460a-902c-7322660760c2",
      "name": "Haftnotiz",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -368,
        192
      ],
      "parameters": {
        "color": 3,
        "width": 528,
        "height": 384,
        "content": "# ▶️ Telegram Bot TikTok Video Downloader (No Watermark)\n**👤 Author:** Nguyễn Thiệu Toàn (n8n Creator)  \n**🌐 Website:** [nguyenthieutoan.com](https://nguyenthieutoan.com)  \n---\n## ✨ What This Workflow Does\nThis powerful automation turns your Telegram bot into a **TikTok video downloader**. Simply send any TikTok link, and the bot will:\n- ✅ Validate the URL automatically  \n- ⚡ Extract video without watermark  \n- 📊 Display video statistics (views, likes, author)  \n- 🚀 Send the clean video file directly to you  \n**No ads. No watermarks. Pure automation magic.**"
      },
      "typeVersion": 1
    },
    {
      "id": "3e3f5f1e-eea9-4ae4-8950-2b277c6337a0",
      "name": "Haftnotiz1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        176,
        192
      ],
      "parameters": {
        "color": 3,
        "width": 464,
        "height": 384,
        "content": "## **Workflow Flow Diagram**\n\n```\n📱 User sends TikTok link\n    ↓\n✅ URL Validation\n    ├─ Valid → Continue\n    └─ Invalid → Send error message\n    ↓\n💬 Send \"Processing...\" status\n    ↓\n🌐 Fetch TikTok page HTML\n    ↓\n🔍 Extract video URL from page data\n    ↓\n⬇️ Download video file (no watermark)\n    ↓\n📤 Send video to user with stats\n```"
      },
      "typeVersion": 1
    },
    {
      "id": "f38ab8fe-2ae9-4257-adda-827c7be950ac",
      "name": "Haftnotiz2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        656,
        192
      ],
      "parameters": {
        "color": 3,
        "width": 1024,
        "height": 384,
        "content": "## **Technical Process**\n1. **Trigger Reception**: Telegram webhook receives user message\n2. **URL Validation**: IF node checks for `tiktok.com` or `vm.tiktok.com` domains\n3. **User Feedback**: Bot sends \"uploading video...\" chat action + status message\n4. **Variable Configuration**: Stores chat ID and video URL for later use\n5. **HTML Fetching**: HTTP request to TikTok with browser-like headers\n6. **Data Extraction**: JavaScript code parses `__UNIVERSAL_DATA_FOR_REHYDRATION__` JSON\n7. **Video Download**: HTTP request with proper cookies and referrer headers\n8. **Delivery**: Telegram sends video file with formatted caption including stats\n\n## **Error Handling Strategy**\nEach critical node (HTTP requests, code execution) has error output enabled:\n- **On Success**: Continues to next processing step\n- **On Error**: Routes to \"Format Error\" → \"Send Error Message\" path\n- **User Experience**: Clear, actionable error messages instead of silent failures"
      },
      "typeVersion": 1
    },
    {
      "id": "7b73bb06-ee9c-4997-9443-8c573f4da365",
      "name": "Verarbeitungsbenachrichtigung löschen",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1504,
        800
      ],
      "webhookId": "9b63981a-be98-4f28-8728-9fe12584e4ed",
      "parameters": {
        "chatId": "={{ $('Telegram Trigger').item.json.message.from.id }}",
        "messageId": "={{ $('Send Processing Message').item.json.result.message_id }}",
        "operation": "deleteMessage"
      },
      "credentials": {
        "telegramApi": {
          "id": "s1d5gRfBoQ9ZZAIM",
          "name": "Video Download Bot"
        }
      },
      "typeVersion": 1.2
    }
  ],
  "pinData": {},
  "connections": {
    "1d66e474-5c33-4785-96fe-7cf470e1506a": {
      "main": [
        [
          {
            "node": "1b10fdd9-80fd-4387-b8d4-79c38234e397",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c98646f6-47dd-475d-9625-a90b19f9b246": {
      "main": [
        [
          {
            "node": "9c8b5462-99ca-49c6-85ad-069338299d1f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0b75420f-8be7-4da1-bc93-df2877de4adc": {
      "main": [
        [
          {
            "node": "ad042de8-2758-4fcd-9887-f015daecbf22",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "993c6555-94ec-49dd-97a8-fd03c31ac894": {
      "main": [
        [
          {
            "node": "a7a82681-5e5d-47ff-b8b2-b06d25a46764",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "1d66e474-5c33-4785-96fe-7cf470e1506a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7a1d2ad9-6007-4797-8320-0f7d21924354": {
      "main": [
        [
          {
            "node": "225bfc1b-93fb-4a51-912c-0aff791f98b3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a7a82681-5e5d-47ff-b8b2-b06d25a46764": {
      "main": [
        [
          {
            "node": "7b73bb06-ee9c-4997-9443-8c573f4da365",
            "type": "main",
            "index": 0
          },
          {
            "node": "a4d0002b-3bca-41ca-970f-7fb6f00b86af",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "1d66e474-5c33-4785-96fe-7cf470e1506a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ad042de8-2758-4fcd-9887-f015daecbf22": {
      "main": [
        [
          {
            "node": "c98646f6-47dd-475d-9625-a90b19f9b246",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "fdadd1c3-37d8-4d36-a445-6904705d894e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7b73bb06-ee9c-4997-9443-8c573f4da365": {
      "main": [
        []
      ]
    },
    "225bfc1b-93fb-4a51-912c-0aff791f98b3": {
      "main": [
        [
          {
            "node": "993c6555-94ec-49dd-97a8-fd03c31ac894",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "1d66e474-5c33-4785-96fe-7cf470e1506a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9c8b5462-99ca-49c6-85ad-069338299d1f": {
      "main": [
        [
          {
            "node": "7a1d2ad9-6007-4797-8320-0f7d21924354",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Experte - Soziale Medien

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Experte
Anzahl der Nodes20
Kategorie1
Node-Typen7
Schwierigkeitsbeschreibung

Für fortgeschrittene Benutzer, komplexe Workflows mit 16+ Nodes

Autor
Nguyen Thieu Toan

Nguyen Thieu Toan

@nguyenthieutoan

An AI Automation consultant and system builder specializing in business workflow optimization with n8n. As the Founder of GenStaff, Toan empowers teams to automate complex processes using no-code/low-code tools and AI Agents, making operations smarter and more efficient. He actively shares expertise and tutorials about n8n, AI, and automation on his blog and social channels.

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34