{
  "name": "Download TikTok videos without watermarks via Telegram bot",
  "nodes": [
    {
      "id": "0b75420f-8be7-4da1-bc93-df2877de4adc",
      "name": "Telegram Trigger",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        -288,
        880
      ]
    },
    {
      "id": "ad042de8-2758-4fcd-9887-f015daecbf22",
      "name": "Validate TikTok URL",
      "type": "n8n-nodes-base.if",
      "position": [
        0,
        880
      ]
    },
    {
      "id": "fdadd1c3-37d8-4d36-a445-6904705d894e",
      "name": "Send Invalid URL Message",
      "type": "n8n-nodes-base.telegram",
      "position": [
        240,
        976
      ]
    },
    {
      "id": "c98646f6-47dd-475d-9625-a90b19f9b246",
      "name": "Send Chat Action",
      "type": "n8n-nodes-base.telegram",
      "position": [
        240,
        784
      ]
    },
    {
      "id": "9c8b5462-99ca-49c6-85ad-069338299d1f",
      "name": "Send Processing Message",
      "type": "n8n-nodes-base.telegram",
      "position": [
        464,
        784
      ]
    },
    {
      "id": "7a1d2ad9-6007-4797-8320-0f7d21924354",
      "name": "Configure Variables",
      "type": "n8n-nodes-base.set",
      "position": [
        688,
        784
      ]
    },
    {
      "id": "225bfc1b-93fb-4a51-912c-0aff791f98b3",
      "name": "Get TikTok Page HTML",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        864,
        784
      ]
    },
    {
      "id": "993c6555-94ec-49dd-97a8-fd03c31ac894",
      "name": "Extract Video URL",
      "type": "n8n-nodes-base.code",
      "position": [
        1040,
        784
      ]
    },
    {
      "id": "a7a82681-5e5d-47ff-b8b2-b06d25a46764",
      "name": "Download Video File",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1248,
        784
      ]
    },
    {
      "id": "a4d0002b-3bca-41ca-970f-7fb6f00b86af",
      "name": "Send Video to User",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1504,
        640
      ]
    },
    {
      "id": "1d66e474-5c33-4785-96fe-7cf470e1506a",
      "name": "Format Error",
      "type": "n8n-nodes-base.code",
      "position": [
        1088,
        1072
      ]
    },
    {
      "id": "1b10fdd9-80fd-4387-b8d4-79c38234e397",
      "name": "Send Error Message",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1488,
        1072
      ]
    },
    {
      "id": "ac4f9ce6-c84f-4bd2-9297-0fca86e6a233",
      "name": "Note - Trigger",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -368,
        592
      ],
      "parameters": {
        "width": 272,
        "height": 636,
        "content": "## 📥 TRIGGER\nReceives messages from Telegram users"
      }
    },
    {
      "id": "b62ec2e9-f8a4-4fdb-95a0-74784f2134ed",
      "name": "Note - Validation",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -80,
        592
      ],
      "parameters": {
        "width": null,
        "height": 636,
        "content": "## ✅ VALIDATION\nChecks if the message contains a valid TikTok URL"
      }
    },
    {
      "id": "1335249e-7ceb-4f3d-b442-e7d0e25ef23c",
      "name": "Note - Feedback",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        176,
        592
      ],
      "parameters": {
        "width": 460,
        "height": 636,
        "content": "## 💬 USER FEEDBACK\nSends status messages to keep user informed"
      }
    },
    {
      "id": "053de0eb-8169-48ce-bae6-d83a3ab5a009",
      "name": "Note - Processing",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        656,
        592
      ],
      "parameters": {
        "width": 1048,
        "height": 348,
        "content": "## 🎬 VIDEO PROCESSING\nFetches HTML → Extracts video URL → Downloads file"
      }
    },
    {
      "id": "15ed8c93-95b4-4697-9d66-630e9ff0fdc2",
      "name": "Note - Error",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        656,
        960
      ],
      "parameters": {
        "width": 1036,
        "height": 268,
        "content": "## ⚠️ ERROR HANDLING\nCatches errors and sends user-friendly messages"
      }
    },
    {
      "id": "1c93ba5d-2bfa-460a-902c-7322660760c2",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -368,
        16
      ],
      "parameters": {
        "width": 528,
        "height": 560,
        "content": "## ▶️ Telegram Bot TikTok Video Downloader (No Watermark)\n---\n### ✨ What This Workflow Does\nThis powerful automation turns your Telegram bot into a **TikTok video downloader**. Simply send any TikTok "
      }
    },
    {
      "id": "3e3f5f1e-eea9-4ae4-8950-2b277c6337a0",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1296,
        16
      ],
      "parameters": {
        "width": 400,
        "height": 560,
        "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 "
      }
    },
    {
      "id": "7b73bb06-ee9c-4997-9443-8c573f4da365",
      "name": "Delete Process Notif",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1504,
        800
      ]
    },
    {
      "id": "6511cc24-db6e-4300-9f8a-ad3e060771a2",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        176,
        256
      ],
      "parameters": {
        "width": 464,
        "height": 320,
        "content": "### 📌 More Useful Workflows from Nguyen Thieu Toan (Jay Nguyen)\n- [Search Flights via Telegram + SerpAPI Price Alerts](https://n8n.io/workflows/12971): Automates flight search with Gemini and sends pr"
      }
    },
    {
      "id": "f38ab8fe-2ae9-4257-adda-827c7be950ac",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        656,
        16
      ],
      "parameters": {
        "width": 624,
        "height": 560,
        "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 s"
      }
    },
    {
      "id": "68276bca-f9c6-4dd1-b806-1f4d1d822031",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        176,
        16
      ],
      "parameters": {
        "width": 464,
        "height": 224,
        "content": "## ☕BUY ME A COFFEE?\nHi! I am  **Nguyễn Thiệu Toàn (or you can call me Jay / Jay Nguyen)** - a Verified n8n Creator. Thank you for using this template!\nThis workflow is shared with you for free. If it"
      }
    }
  ],
  "connections": {
    "Format Error": {
      "main": [
        [
          {
            "node": "Send Error Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Chat Action": {
      "main": [
        [
          {
            "node": "Send Processing Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Telegram Trigger": {
      "main": [
        [
          {
            "node": "Validate TikTok URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Video URL": {
      "main": [
        [
          {
            "node": "Download Video File",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Format Error",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Configure Variables": {
      "main": [
        [
          {
            "node": "Get TikTok Page HTML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Video File": {
      "main": [
        [
          {
            "node": "Delete Process Notif",
            "type": "main",
            "index": 0
          },
          {
            "node": "Send Video to User",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Format Error",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Validate TikTok URL": {
      "main": [
        [
          {
            "node": "Send Chat Action",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send Invalid URL Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Delete Process Notif": {
      "main": [
        []
      ]
    },
    "Get TikTok Page HTML": {
      "main": [
        [
          {
            "node": "Extract Video URL",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Format Error",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Processing Message": {
      "main": [
        [
          {
            "node": "Configure Variables",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}