This workflow corresponds to n8n.io template #10153 — we link there as the canonical source.
This workflow follows the Form Trigger → Google Drive recipe pattern — see all workflows that pair these two integrations.
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": [
{
"id": "a1b4a7ad-efec-4a7c-a7d0-057b01cae303",
"name": "On form submission",
"type": "n8n-nodes-base.formTrigger",
"position": [
848,
592
],
"parameters": {
"options": {},
"formTitle": "Threads Downloader",
"formFields": {
"values": [
{
"fieldLabel": "URL",
"placeholder": "https://www.threads.net",
"requiredField": true
}
]
},
"formDescription": "Threads Downloader"
},
"typeVersion": 2.2
},
{
"id": "6510719b-49cf-4264-985b-1ed5b98b1a9f",
"name": "Fetch Threads Video Data",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueRegularOutput",
"position": [
1072,
592
],
"parameters": {
"url": "https://threads-downloader1.p.rapidapi.com/threads.php",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "multipart-form-data",
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "url",
"value": "={{ $json.URL }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "x-rapidapi-host",
"value": "threads-downloader1.p.rapidapi.com"
},
{
"name": "x-rapidapi-key",
"value": "your key"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "d069c2dc-7576-478f-8510-4beb55871bff",
"name": "Check If Video Exists",
"type": "n8n-nodes-base.if",
"position": [
1360,
608
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "bcc58e3d-9609-4ec3-adb9-bc6098205818",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.video_urls[0].download_url }}",
"rightValue": "success"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "01d9dd0c-4370-4ecf-8df3-55de50bb09b7",
"name": "Download Threads Video File",
"type": "n8n-nodes-base.httpRequest",
"position": [
1632,
320
],
"parameters": {
"url": "={{ $json.video_urls[0].download_url }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "ddde32c8-f9dc-40cf-8180-b232bb40d6a8",
"name": "Upload Video to Google Drive",
"type": "n8n-nodes-base.googleDrive",
"position": [
1888,
304
],
"parameters": {
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "root",
"cachedResultName": "/ (Root folder)"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "5e5256dd-e767-484d-8b4f-c0dc62b71f9d",
"name": "Set Google Drive Sharing Permissions",
"type": "n8n-nodes-base.googleDrive",
"position": [
2192,
304
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.id }}"
},
"options": {},
"resource": "file",
"operation": "share",
"permissionsUi": {},
"authentication": "oAuth2"
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "da8b91e6-99c7-4d84-abfb-9358f4b1b87e",
"name": "Log Success to Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
2528,
384
],
"parameters": {
"columns": {
"value": {
"URL": "={{ $('On form submission').item.json.URL }}",
"Drive_URL": "={{ $('Upload Video to Google Drive').item.json.webViewLink }}"
},
"schema": [
{
"id": "URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Drive_URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Drive_URL",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"URL"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "url",
"value": ""
},
"documentId": {
"__rl": true,
"mode": "url",
"value": ""
},
"authentication": "serviceAccount"
},
"credentials": {
"googleApi": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "05a6f22b-b42c-4bf8-8ad6-5e671cf33c3e",
"name": "Wait Before Logging Failure",
"type": "n8n-nodes-base.wait",
"position": [
1712,
848
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "a4554ac9-23bb-490f-b6fa-8ed9b923214b",
"name": "Log Failed Download to Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
2192,
848
],
"parameters": {
"columns": {
"value": {
"URL": "{{ $('On form submission').item.json.URL }}",
"Drive_URL": "N/A"
},
"schema": [
{
"id": "URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Drive_URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Drive_URL",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "url",
"value": ""
},
"documentId": {
"__rl": true,
"mode": "url",
"value": ""
},
"authentication": "serviceAccount"
},
"credentials": {
"googleApi": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "4ce0b5c3-f2aa-4a40-8430-5dbda2c4d791",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
768,
464
],
"parameters": {
"height": 272,
"content": "Triggers the workflow when a user submits a URL through the form."
},
"typeVersion": 1
},
{
"id": "24997fd1-523a-46fc-8ef2-294b4fe148f3",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1024,
464
],
"parameters": {
"height": 272,
"content": "Sends the submitted URL to the Threads Downloader API to retrieve video data."
},
"typeVersion": 1
},
{
"id": "6479a5f8-34a8-41aa-b252-150c08be5cb0",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1296,
496
],
"parameters": {
"height": 256,
"content": "Checks if the API returned a valid video download URL."
},
"typeVersion": 1
},
{
"id": "4d12f8a3-6e47-4186-a864-944ac53f20b0",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1568,
240
],
"parameters": {
"height": 240,
"content": " Downloads the video file from the provided download URL."
},
"typeVersion": 1
},
{
"id": "a4c56692-00f3-48ec-8fac-c0fa7d872212",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1840,
240
],
"parameters": {
"height": 240,
"content": "Uploads the downloaded video to a specified Google Drive folder."
},
"typeVersion": 1
},
{
"id": "741dbb91-6575-4ed7-888d-548a81c017f6",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
2112,
240
],
"parameters": {
"height": 240,
"content": "Sets the uploaded file\u2019s sharing settings so it\u2019s accessible via a link."
},
"typeVersion": 1
},
{
"id": "dc7491b4-1fca-4384-b0ad-137baa4f5e42",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
2432,
288
],
"parameters": {
"height": 224,
"content": "Records the original URL and Google Drive link of successfully downloaded videos."
},
"typeVersion": 1
},
{
"id": "655f8026-7973-4fcd-8996-ddb074e1409c",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
1648,
736
],
"parameters": {
"height": 256,
"content": "Adds a pause before logging failed downloads to avoid timing issues."
},
"typeVersion": 1
},
{
"id": "23b570fb-1b5b-4af6-90e9-ff52fa18842f",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
2112,
752
],
"parameters": {
"height": 240,
"content": "Logs the original URL with \u201cN/A\u201d for failed video downloads."
},
"typeVersion": 1
},
{
"id": "72e23121-48bc-47f3-8311-3f1a7259bb5e",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
-256,
256
],
"parameters": {
"width": 800,
"height": 912,
"content": "# Threads Video Downloader & Google Drive Logger\n\n Automates downloading videos from Threads URLs, uploads them to Google Drive, and logs success or failure in Google Sheets.\n\n---\n\n## Workflow Overview\n\n1. **Form Submission** \n User submits a Threads URL via a web form, triggering the workflow.\n\n2. **Fetch Video Data** \n Sends the submitted URL to the Threads Downloader API to retrieve video information.\n\n3. **Check Video Availability** \n Verifies if a valid downloadable video URL is returned.\n\n4. **Download Video** \n Downloads the video from the API-provided URL.\n\n5. **Upload to Google Drive** \n Uploads the video to a designated Google Drive folder.\n\n6. **Set Sharing Permissions** \n Makes the uploaded video accessible via a shareable link.\n\n7. **Log Success** \n Records the original URL and Drive link in Google Sheets for successful downloads.\n\n8. **Handle Failures** \n Waits briefly and logs URLs with \"N/A\" in Google Sheets for failed downloads.\n"
},
"typeVersion": 1
}
],
"connections": {
"On form submission": {
"main": [
[
{
"node": "Fetch Threads Video Data",
"type": "main",
"index": 0
}
]
]
},
"Check If Video Exists": {
"main": [
[
{
"node": "Download Threads Video File",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait Before Logging Failure",
"type": "main",
"index": 0
}
]
]
},
"Fetch Threads Video Data": {
"main": [
[
{
"node": "Check If Video Exists",
"type": "main",
"index": 0
}
]
]
},
"Download Threads Video File": {
"main": [
[
{
"node": "Upload Video to Google Drive",
"type": "main",
"index": 0
}
]
]
},
"Wait Before Logging Failure": {
"main": [
[
{
"node": "Log Failed Download to Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"Upload Video to Google Drive": {
"main": [
[
{
"node": "Set Google Drive Sharing Permissions",
"type": "main",
"index": 0
}
]
]
},
"Set Google Drive Sharing Permissions": {
"main": [
[
{
"node": "Log Success to Google Sheets",
"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.
googleApigoogleDriveOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Automate downloading Threads videos from URLs, upload them to Google Drive, and log results in Google Sheets using n8n.
Source: https://n8n.io/workflows/10153/ — 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.
Description: The Spotify Music Downloader is an automation flow that allows users to easily download music from Spotify tracks. By leveraging the powerful Spotify Downloader API, the flow downloads Sp
n8n can indeed help to solve this challenge by providing the data input interface via its forms and orchestrate AI-powered classification of images using AI nodes. However, in some cases - say you run
Description: This n8n workflow automates the process of downloading videos from any supported platform (like LinkedIn, Facebook, or Instagram) using the RapidAPI best All-In-One Video Downloader. It t
📝 On Form Submission → Displays a form for users to input the Slideshare URL. 🌐 Slideshare Downloader → Sends the submitted URL to the Slideshare Downloader Pro API to fetch a downloadable PDF link. ✅
This workflow turns contract process into a fully automated, production-ready signing pipeline.