{
  "name": "Bulk TikTok video download without watermark to Google Drive with tracking",
  "nodes": [
    {
      "id": "d8e13620-5f29-402d-a816-5df35fd547f8",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        760,
        -100
      ]
    },
    {
      "id": "f073c57a-a84e-4ccd-8659-26c5c93d4b71",
      "name": "When clicking ‘Execute workflow’",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -280,
        -120
      ]
    },
    {
      "id": "4af76036-000e-4810-8f9c-9e2140e17e91",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        240,
        -120
      ]
    },
    {
      "id": "e3b8f1ff-2d24-4da8-87e5-488f00a29540",
      "name": "Get Data From Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        0,
        -120
      ]
    },
    {
      "id": "0720d3ae-e6ca-408b-a1dc-8e8849689362",
      "name": "Update Row In Google Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1840,
        240
      ]
    },
    {
      "id": "8ccbdb10-a104-4222-899b-3c933c3caa09",
      "name": "Set Public Permission Google Drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1600,
        -100
      ]
    },
    {
      "id": "2b0243db-ef2f-4dcc-b3ea-bd47a33b648c",
      "name": "Upload File In Google Drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1300,
        -100
      ]
    },
    {
      "id": "a144ebf4-7c58-460e-98fc-c4096af53a76",
      "name": "Download File",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1000,
        -100
      ]
    },
    {
      "id": "173c8163-89bb-4bee-bf2f-ada26ac54686",
      "name": "Call TikTok Downloader",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        500,
        -100
      ]
    },
    {
      "id": "f8802a61-f2bc-4253-aacb-b505305c366b",
      "name": "Sleep",
      "type": "n8n-nodes-base.wait",
      "position": [
        100,
        180
      ]
    },
    {
      "id": "c4525392-469c-48e4-aa1d-f8e48f8f5b1f",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1100,
        -400
      ],
      "parameters": {
        "width": 560,
        "height": 1280,
        "content": "# 📥 Bulk TikTok Video Downloader & Google Drive Uploader\n\n## 🔄 What This Flow Does\n> **Automatically downloads TikTok videos from a list of URLs in a Google Sheet, uploads them to Google Drive, makes "
      }
    },
    {
      "id": "c16eae53-3bf3-4bb3-b597-48529db0eb66",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -340,
        -260
      ],
      "parameters": {
        "width": null,
        "height": 300,
        "content": "## 🟢 When clicking ‘Execute workflow’\nManually triggers the workflow for testing or running on-demand."
      }
    },
    {
      "id": "74b004c2-cb7b-44ad-8f37-4b81035b0aef",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -80,
        -260
      ],
      "parameters": {
        "width": null,
        "height": 300,
        "content": "## 📄 Get Data From Google Sheets\nReads all rows from a specific Google Sheet containing TikTok video URLs."
      }
    },
    {
      "id": "2f07afba-7af0-4886-996a-3229220e97ac",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        180,
        -260
      ],
      "parameters": {
        "width": null,
        "height": 300,
        "content": "## 🔁 Loop Over Items\nProcesses each row from the sheet one-by-one (batch looping).\n"
      }
    },
    {
      "id": "6a2f0708-f5ea-4899-beaf-e9b1cb2eee2d",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        440,
        -260
      ],
      "parameters": {
        "width": null,
        "height": 300,
        "content": "## 🌐 Call TikTok Downloader\nSends each TikTok URL to the RapidAPI TikTok downloader to get a direct video download link."
      }
    },
    {
      "id": "225452d1-8be6-4822-ba27-2f179c36a509",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        700,
        -260
      ],
      "parameters": {
        "width": null,
        "height": 300,
        "content": "## ⏳ Wait\nAdds a short pause before downloading the file (helps prevent rate-limiting)."
      }
    },
    {
      "id": "f7da773d-d280-4bc9-b9cd-a3359ec0853d",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        960,
        -260
      ],
      "parameters": {
        "width": null,
        "height": 300,
        "content": "## ⬇️ Download File\nDownloads the video from the `medias[1].url` provided by the TikTok downloader API."
      }
    },
    {
      "id": "d10bb3cd-edc4-4362-b053-ba3aa227ffda",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1220,
        -260
      ],
      "parameters": {
        "width": null,
        "height": 300,
        "content": "## ☁️ Upload File In Google Drive\nUploads the downloaded video to Google Drive in the root folder."
      }
    },
    {
      "id": "769120e2-9a9e-46a1-a259-936c8825d6fb",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1480,
        -260
      ],
      "parameters": {
        "width": null,
        "height": 300,
        "content": "## 🔓 Set Public Permission Google Drive\nMakes the uploaded video file publicly accessible by setting sharing permissions.\n"
      }
    },
    {
      "id": "bccf0a40-54df-4a80-9f55-3383d78e4d58",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1780,
        80
      ],
      "parameters": {
        "width": null,
        "height": 300,
        "content": "## ✏️ Update Row In Google Sheet\nUpdates the same row in the sheet by matching `url`, adding the new Drive `webViewLink` in the `driveurl` column.\n\n"
      }
    },
    {
      "id": "f9278864-e0bf-4d6d-8841-3ce87c2e1546",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        80
      ],
      "parameters": {
        "width": null,
        "height": 260,
        "content": "## 💤 Sleep\nPauses briefly and loops back to process the next TikTok URL in the list."
      }
    }
  ],
  "connections": {
    "Wait": {
      "main": [
        [
          {
            "node": "Download File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sleep": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download File": {
      "main": [
        [
          {
            "node": "Upload File In Google Drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Call TikTok Downloader",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Call TikTok Downloader": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Row In Google Sheet": {
      "main": [
        [
          {
            "node": "Sleep",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Data From Google Sheets": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload File In Google Drive": {
      "main": [
        [
          {
            "node": "Set Public Permission Google Drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Public Permission Google Drive": {
      "main": [
        [
          {
            "node": "Update Row In Google Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking ‘Execute workflow’": {
      "main": [
        [
          {
            "node": "Get Data From Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}