- Get link
- X
- Other Apps
- Get link
- X
- Other Apps
⚡ From Google Drive to Instagram, TikTok & YouTube with AI Descriptions & Airtable Tracking
This workflow seamlessly connects your content stored in Google Drive with Instagram, TikTok, and YouTube, using AI to generate optimized descriptions and Airtable for tracking all uploads. Perfect for creators and social media managers who want consistent, automated posting while monitoring performance, engagement, and content reach across multiple platforms.
Overview
The system fetches files from Google Drive, generates AI-powered captions, hashtags, and descriptions for each video or image, and publishes them automatically to Instagram, TikTok, and YouTube. Every action is logged into Airtable, giving you a clear overview of what has been posted, engagement metrics, and scheduling history.
Key Features
- Automatic file detection from Google Drive folders.
- AI-generated descriptions, captions, and hashtags tailored for engagement.
- Scheduled posting to Instagram, TikTok, and YouTube simultaneously.
- Airtable integration for full tracking, reporting, and analytics.
- Supports video, image, and multi-format content uploads.
- Customizable workflow for creators or agencies managing multiple accounts.
How It Works
This workflow continuously monitors your designated Google Drive folders. Once new content is detected, an AI model generates optimized captions and descriptions based on platform best practices. The content is then published to your selected social media platforms, while Airtable logs every post with metadata such as posting time, platform, engagement metrics, and status, giving you complete control and analytics in one dashboard.
Benefits
- Streamlines multi-platform content distribution with minimal manual effort.
- Boosts engagement with AI-generated descriptions and hashtags.
- Provides real-time tracking and reporting through Airtable.
- Saves time for creators, agencies, and social media managers.
- Ensures consistent posting schedules for optimal audience reach.
Example Outcomes
• 50+ automated posts per month across Instagram, TikTok, and YouTube.
• Consistent engagement growth and improved reach metrics.
• Centralized dashboard for tracking all content and AI-generated captions.
• Efficient content pipeline reducing manual publishing workload.
{
"nodes": [
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "cd270863-aa35-418c-a0ae-1b5878eee2ed",
"name": "airtable_app_id",
"type": "string",
"value": "add_airtable_app_id"
},
{
"id": "00ef91b2-8a4c-42bb-a46f-f7eb06e861e8",
"name": "airtable_table_id",
"type": "string",
"value": "add_airtable_table_id"
},
{
"id": "21b5d3ad-ff81-407e-8c4e-53bda8a16e0e",
"name": "upload_post_user",
"type": "string",
"value": "test2"
}
]
},
"options": {}
},
"id": "b8885dc4-76bc-4b56-9c4e-0d731a7f3ed5",
"name": "Set Variables",
"type": "n8n-nodes-base.set",
"position": [
2112,
592
],
"typeVersion": 3.4
},
{
"parameters": {
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"triggerOn": "specificFolder",
"folderToWatch": {
"__rl": true,
"mode": "list",
"value": "18m0i341QLQuyWuHv_FBdz8-r-QDtofYm",
"cachedResultUrl": "https://drive.google.com/drive/folders/18m0i341QLQuyWuHv_FBdz8-r-QDtofYm",
"cachedResultName": "Influencersde"
},
"event": "fileCreated",
"options": {}
},
"id": "d2c433ef-4270-421c-888b-799aff78ed4e",
"name": "Google Drive Trigger",
"type": "n8n-nodes-base.googleDriveTrigger",
"position": [
720,
592
],
"typeVersion": 1,
"credentials": {}
},
{
"parameters": {
"authentication": "oAuth2",
"operation": "download",
"fileId": {
"__rl": true,
"mode": "",
"value": "={{ $json.id || $json.data[0].id }}"
},
"options": {}
},
"id": "f4d2437f-c71d-41d7-bb2e-0fa5c65f4d73",
"name": "Google Drive",
"type": "n8n-nodes-base.googleDrive",
"position": [
880,
592
],
"retryOnFail": true,
"typeVersion": 1,
"waitBetweenTries": 5000,
"credentials": {}
},
{
"parameters": {
"authentication": "airtableTokenApi",
"operation": "append",
"application": {
"__rl": true,
"mode": "id",
"value": "={{ $('Set Variables').item.json.airtable_app_id }}"
},
"table": {
"__rl": true,
"mode": "id",
"value": "={{ $('Set Variables').item.json.airtable_table_id }}"
},
"addAllFields": false,
"fields": [
"Video Name"
],
"options": {}
},
"id": "076df93e-a62e-43e2-9ddd-0e37f90970e3",
"name": "Create Airtable Record",
"type": "n8n-nodes-base.airtable",
"position": [
2320,
592
],
"typeVersion": 1,
"credentials": {}
},
{
"parameters": {},
"id": "df8cde79-4733-4ece-980e-2358cf7d46e5",
"name": "Error Trigger",
"type": "n8n-nodes-base.errorTrigger",
"position": [
1216,
928
],
"typeVersion": 1
},
{
"parameters": {
"text": "=🔔 ERROR SUBIENDO VIDEOS",
"additionalFields": {
"appendAttribution": false
}
},
"id": "849ca263-1ef0-4efb-9560-4794ba79e385",
"name": "Telegram",
"type": "n8n-nodes-base.telegram",
"position": [
1552,
912
],
"webhookId": "f6729386-9905-45f1-800f-4fe01a06ac9c",
"retryOnFail": true,
"typeVersion": 1.2,
"waitBetweenTries": 5000,
"credentials": {}
},
{
"parameters": {
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "9fadb3fd-2547-42bd-8f40-f410a97dcf57",
"operator": {
"type": "string",
"operation": "notContains"
},
"leftValue": "={{ $json.trigger.error.message }}",
"rightValue": "The DNS server returned an error, perhaps the server is offline"
}
]
},
"options": {}
},
"id": "190073de-a9a0-43b7-bab3-5e67bb2c0592",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
1360,
928
],
"typeVersion": 2.1
},
{
"parameters": {
"content": "## Description\nThis automation allows you to upload a video to a configured Google Drive folder, and it will automatically create descriptions and upload it to Instagram, TikTok, and YouTube with Airtable tracking.\n\n## How to Use\n1. Configure your Airtable base and table IDs in the Set Variables node\n2. Set up Airtable fields: Video Name, Google Drive Link, File ID, Instagram Status, TikTok Status, YouTube Status, Upload Date, Description\n3. Generate an API token at upload-post.com and add to Upload nodes\n4. Configure your Google Drive folder\n5. Customize the OpenAI prompt for your specific use case\n6. Optional: Configure Telegram for error notifications\n\n## Requirements\n- Airtable account with configured base\n- upload-post.com account\n- Google Drive account\n- OpenAI API key\n",
"height": 300,
"width": 860
},
"id": "a7e3b33c-1235-49a8-b761-3ff2aa5444b4",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
368,
240
],
"typeVersion": 1
},
{
"parameters": {
"resource": "audio",
"operation": "transcribe",
"options": {}
},
"id": "ef2cd154-331a-47d6-b785-5354b3a4f952",
"name": "Get Audio from Video",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1520,
592
],
"notesInFlow": true,
"retryOnFail": true,
"typeVersion": 1,
"waitBetweenTries": 5000,
"credentials": {},
"notes": "Extract the audio from video for generate the description"
},
{
"parameters": {
"fileName": "={{ $json.originalFilename.replaceAll(\" \", \"_\") }}",
"options": {}
},
"id": "7b877a93-99ac-4c9b-a0f0-ea6188755723",
"name": "Read video from Google Drive",
"type": "n8n-nodes-base.writeBinaryFile",
"position": [
1088,
592
],
"typeVersion": 1
},
{
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o",
"cachedResultName": "GPT-4O"
},
"messages": {
"values": [
{
"content": "You are an expert assistant in creating engaging social media video titles.",
"role": "system"
},
{
"content": "=I'm going to upload a video to social media. Here are some examples of descriptions that have worked well on Instagram:\n\nFollow and save for later. Discover InfluencersDe, the AI tool that automates TikTok creation and publishing to drive traffic to your website. Perfect for entrepreneurs and brands.\n#digitalmarketing #ugc #tiktok #ai #influencersde #contentcreation\n\nDiscover the video marketing revolution with InfluencersDe!\n.\n.\n.\n#socialmedia #videomarketing #ai #tiktok #influencersde #growthhacking\n\nDon't miss InfluencersDe, the tool that transforms your marketing strategy with just one click!\n.\n.\n.\n#ugc #ai #tiktok #digitalmarketing #influencersde #branding\n\nCan you create another title for the Instagram post based on this recognized audio from the video?\n\nAudio: {{ $('Get Audio from Video').item.json.text }}\n\nIMPORTANT: Reply only with the description, don't add anything else."
}
]
},
"options": {}
},
"id": "9b7f3002-88c4-4d08-bdf4-2bede89f6057",
"name": "Generate Description for Videos",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1728,
592
],
"notesInFlow": true,
"retryOnFail": true,
"typeVersion": 1.4,
"waitBetweenTries": 5000,
"credentials": {},
"notes": "Request to OpenAi for generate description with the audio extracted from the video"
},
{
"parameters": {
"authentication": "airtableTokenApi",
"operation": "update",
"application": {
"__rl": true,
"mode": "",
"value": "={{ $('Set Variables').item.json.airtable_app_id }}"
},
"table": {
"__rl": true,
"mode": "",
"value": "={{ $('Set Variables').item.json.airtable_table_id }}"
},
"id": "={{ $('Create Airtable Record').item.json.id }}",
"updateAllFields": false,
"fields": [
"Description",
"Video Name",
"Google Drive Links",
"Upload Date"
],
"options": {}
},
"id": "acca4940-d172-427a-acf1-1e110c020e64",
"name": "Update Airtable with Description",
"type": "n8n-nodes-base.airtable",
"position": [
2688,
592
],
"typeVersion": 1,
"credentials": {}
},
{
"parameters": {
"filePath": "={{ $('Read video from Google Drive').item.json.originalFilename.replaceAll(\" \", \"_\") }}",
"dataPropertyName": "datavideo"
},
"id": "d4a58a14-173a-4354-aa80-1c3948ae1062",
"name": "Read Video for TikTok",
"type": "n8n-nodes-base.readBinaryFile",
"position": [
3216,
352
],
"typeVersion": 1
},
{
"parameters": {
"filePath": "={{ $('Read video from Google Drive').item.json.originalFilename.replaceAll(\" \", \"_\") }}",
"dataPropertyName": "datavideo"
},
"id": "a9478d0d-4498-4259-be7c-650624e9d519",
"name": "Read Video for Instagram",
"type": "n8n-nodes-base.readBinaryFile",
"position": [
3200,
640
],
"typeVersion": 1
},
{
"parameters": {
"filePath": "={{ $('Read video from Google Drive').item.json.originalFilename.replaceAll(\" \", \"_\") }}",
"dataPropertyName": "datavideo"
},
"id": "4b67d5d9-2f33-4a18-a1f1-65834e0f6eeb",
"name": "Read Video for YouTube",
"type": "n8n-nodes-base.readBinaryFile",
"position": [
3200,
912
],
"typeVersion": 1
},
{
"parameters": {
"method": "POST",
"url": "https://api.upload-post.com/api/upload",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"contentType": "multipart-form-data",
"bodyParameters": {
"parameters": [
{
"name": "title",
"value": "={{ $('Generate Description for Videos').item.json.message.content.replaceAll(\"\\\"\", \"\") }}"
},
{
"name": "platform[]",
"value": "tiktok"
},
{
"parameterType": "formBinaryData",
"name": "video",
"inputDataFieldName": "datavideo"
},
{
"name": "user",
"value": "={{ $('Set Variables').item.json.upload_post_user }}"
}
]
},
"options": {}
},
"id": "584ec208-3ccb-451c-9210-75c1e5845321",
"name": "Upload Video to TikTok",
"type": "n8n-nodes-base.httpRequest",
"position": [
3456,
352
],
"notesInFlow": true,
"typeVersion": 4.2,
"credentials": {},
"notes": "Generate in upload-post.com the token and add to the credentials in the header-> Authorization: Apikey (token here)"
},
{
"parameters": {
"method": "POST",
"url": "https://api.upload-post.com/api/upload",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"contentType": "multipart-form-data",
"bodyParameters": {
"parameters": [
{
"name": "title",
"value": "={{ $('Generate Description for Videos').item.json.message.content.replaceAll(\"\\\"\", \"\") }}"
},
{
"name": "platform[]",
"value": "instagram"
},
{
"parameterType": "formBinaryData",
"name": "video",
"inputDataFieldName": "datavideo"
},
{
"name": "user",
"value": "={{ $('Set Variables').item.json.upload_post_user }}"
}
]
},
"options": {}
},
"id": "879624f9-6067-4a8d-b4d0-b06a56c2ed0b",
"name": "Upload Video to Instagram",
"type": "n8n-nodes-base.httpRequest",
"position": [
3456,
640
],
"notesInFlow": true,
"typeVersion": 4.2,
"credentials": {},
"notes": "Generate in upload-post.com the token and add to the credentials in the header-> Authorization: Apikey (token here)"
},
{
"parameters": {
"method": "POST",
"url": "https://api.upload-post.com/api/upload",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"contentType": "multipart-form-data",
"bodyParameters": {
"parameters": [
{
"name": "title",
"value": "={{ $('Generate Description for Videos').item.json.message.content.replaceAll(\"\\\"\", \"\").substring(0, 70) }}\n"
},
{
"name": "platform[]",
"value": "youtube"
},
{
"parameterType": "formBinaryData",
"name": "video",
"inputDataFieldName": "datavideo"
},
{
"name": "user",
"value": "={{ $('Set Variables').item.json.upload_post_user }}"
}
]
},
"options": {}
},
"id": "468fb5c3-9893-43ad-a6e4-95fc35eca6d4",
"name": "Upload Video to YouTube",
"type": "n8n-nodes-base.httpRequest",
"position": [
3456,
912
],
"notesInFlow": true,
"typeVersion": 4.2,
"credentials": {},
"notes": "Generate in upload-post.com the token and add to the credentials in the header-> Authorization: Apikey (token here)"
},
{
"parameters": {
"authentication": "airtableTokenApi",
"operation": "update",
"application": {
"__rl": true,
"mode": "",
"value": "={{ $('Set Variables').item.json.airtable_app_id }}"
},
"table": {
"__rl": true,
"mode": "",
"value": "={{ $('Set Variables').item.json.airtable_table_id }}"
},
"id": "={{ $('Create Airtable Record').item.json.id }}",
"updateAllFields": false,
"fields": [
"YouTube Status",
"Youtube URL"
],
"options": {}
},
"id": "b273600b-08e4-4b8f-a4a6-7fbb0a3139a2",
"name": "Update YouTube Status - Success",
"type": "n8n-nodes-base.airtable",
"position": [
3920,
912
],
"typeVersion": 1,
"credentials": {}
},
{
"parameters": {
"authentication": "airtableTokenApi",
"operation": "update",
"application": {
"__rl": true,
"mode": "",
"value": "={{ $('Set Variables').item.json.airtable_app_id }}"
},
"table": {
"__rl": true,
"mode": "",
"value": "={{ $('Set Variables').item.json.airtable_table_id }}"
},
"id": "={{ $('Create Airtable Record').item.json.id }}",
"updateAllFields": false,
"fields": [
"TikTok Status",
"Tiktok URL"
],
"options": {}
},
"id": "e636c387-c4e5-4e07-b9f0-dec0bf7fdb39",
"name": "Update TikTok Status",
"type": "n8n-nodes-base.airtable",
"position": [
3920,
352
],
"typeVersion": 1,
"credentials": {}
},
{
"parameters": {
"authentication": "airtableTokenApi",
"operation": "update",
"application": {
"__rl": true,
"mode": "",
"value": "={{ $('Set Variables').item.json.airtable_app_id }}"
},
"table": {
"__rl": true,
"mode": "",
"value": "={{ $('Set Variables').item.json.airtable_table_id }}"
},
"id": "={{ $('Create Airtable Record').item.json.id }}",
"updateAllFields": false,
"fields": [
"Instagram Status",
"Instagram URL"
],
"options": {}
},
"id": "2f1ffb8b-1157-4934-a828-5bb136a51b4b",
"name": "Update Instagram Status",
"type": "n8n-nodes-base.airtable",
"position": [
3920,
640
],
"typeVersion": 1,
"credentials": {}
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "e611aba1-e55c-4221-b03b-04008a04fa9c",
"name": "ID",
"type": "string",
"value": "={{ $('Update Airtable with Description').item.json.id }}"
},
{
"id": "47f61cd2-6dd6-4714-b772-3e0537accecd",
"name": "TikTok Status",
"type": "string",
"value": "=success: {{ $json.results.tiktok.success }}"
},
{
"id": "12829ca5-2780-4779-be0c-ff1712c012d8",
"name": "Tiktok URL",
"type": "string",
"value": "={{ $json.results.tiktok?.url || \"error\" }}"
}
]
},
"options": {}
},
"id": "4047b86a-517c-497f-8ae0-c46fa8ad9353",
"name": "Edit Airtable Fields",
"type": "n8n-nodes-base.set",
"position": [
3696,
352
],
"typeVersion": 3.4
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "e611aba1-e55c-4221-b03b-04008a04fa9c",
"name": "ID",
"type": "string",
"value": "={{ $('Update Airtable with Description').item.json.id }}"
},
{
"id": "47f61cd2-6dd6-4714-b772-3e0537accecd",
"name": "Instagram Status",
"type": "string",
"value": "=success: {{ $json.results.instagram.success }}"
},
{
"id": "12829ca5-2780-4779-be0c-ff1712c012d8",
"name": "Instagram URL",
"type": "string",
"value": "={{ $json.results.instagram?.url || \"error\" }}"
}
]
},
"options": {}
},
"id": "561a0b10-4677-46c7-957b-0356e93ffa51",
"name": "Edit Airtable Fields 2",
"type": "n8n-nodes-base.set",
"position": [
3696,
640
],
"typeVersion": 3.4
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "e611aba1-e55c-4221-b03b-04008a04fa9c",
"name": "ID",
"type": "string",
"value": "={{ $('Update Airtable with Description').item.json.id }}"
},
{
"id": "47f61cd2-6dd6-4714-b772-3e0537accecd",
"name": "YouTube Status",
"type": "string",
"value": "=success: {{ $json.results.youtube.success }}"
},
{
"id": "12829ca5-2780-4779-be0c-ff1712c012d8",
"name": "Youtube URL",
"type": "string",
"value": "={{ $json.results.youtube?.url || \"error\" }}"
}
]
},
"options": {}
},
"id": "d2ddd2ab-ba45-423c-842a-ad9d7c20a08e",
"name": "Edit Airtable Fields 3",
"type": "n8n-nodes-base.set",
"position": [
3696,
912
],
"typeVersion": 3.4
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "e611aba1-e55c-4221-b03b-04008a04fa9c",
"name": "ID",
"type": "string",
"value": "={{ $json.id }}"
},
{
"id": "47f61cd2-6dd6-4714-b772-3e0537accecd",
"name": "Description",
"type": "string",
"value": "={{ $('Generate Description for Videos').item.json.message.content }}"
},
{
"id": "f44cc764-ed17-48c3-80e4-c320c6c67a7c",
"name": "Video Name",
"type": "string",
"value": "={{ $('Google Drive').item.json.originalFilename }}"
},
{
"id": "432688c0-d430-4e83-852c-91aad7b4ea79",
"name": "Google Drive Links",
"type": "string",
"value": "={{ $('Google Drive').item.json.webViewLink }}"
},
{
"id": "8804ac95-05d7-48e2-a49d-60213131ec62",
"name": "Upload Date",
"type": "string",
"value": "={{ $now }}"
},
{
"id": "12829ca5-2780-4779-be0c-ff1712c012d8",
"name": "",
"type": "string",
"value": ""
}
]
},
"options": {}
},
"id": "ca1d31c4-cc41-4f6b-9d59-3c1a90abfac5",
"name": "Edit Airtable Fields1",
"type": "n8n-nodes-base.set",
"position": [
2512,
592
],
"typeVersion": 3.4
}
],
"connections": {
"Set Variables": {
"main": [
[
{
"node": "Create Airtable Record",
"type": "main",
"index": 0
}
]
]
},
"Google Drive Trigger": {
"main": [
[
{
"node": "Google Drive",
"type": "main",
"index": 0
}
]
]
},
"Google Drive": {
"main": [
[
{
"node": "Read video from Google Drive",
"type": "main",
"index": 0
}
]
]
},
"Create Airtable Record": {
"main": [
[
{
"node": "Edit Airtable Fields1",
"type": "main",
"index": 0
}
]
]
},
"Error Trigger": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"If": {
"main": [
[
{
"node": "Telegram",
"type": "main",
"index": 0
}
]
]
},
"Get Audio from Video": {
"main": [
[
{
"node": "Generate Description for Videos",
"type": "main",
"index": 0
}
]
]
},
"Read video from Google Drive": {
"main": [
[
{
"node": "Get Audio from Video",
"type": "main",
"index": 0
}
]
]
},
"Generate Description for Videos": {
"main": [
[
{
"node": "Set Variables",
"type": "main",
"index": 0
}
]
]
},
"Update Airtable with Description": {
"main": [
[
{
"node": "Read Video for TikTok",
"type": "main",
"index": 0
},
{
"node": "Read Video for Instagram",
"type": "main",
"index": 0
},
{
"node": "Read Video for YouTube",
"type": "main",
"index": 0
}
]
]
},
"Read Video for TikTok": {
"main": [
[
{
"node": "Upload Video to TikTok",
"type": "main",
"index": 0
}
]
]
},
"Read Video for Instagram": {
"main": [
[
{
"node": "Upload Video to Instagram",
"type": "main",
"index": 0
}
]
]
},
"Read Video for YouTube": {
"main": [
[
{
"node": "Upload Video to YouTube",
"type": "main",
"index": 0
}
]
]
},
"Upload Video to TikTok": {
"main": [
[
{
"node": "Edit Airtable Fields",
"type": "main",
"index": 0
}
]
]
},
"Upload Video to Instagram": {
"main": [
[
{
"node": "Edit Airtable Fields 2",
"type": "main",
"index": 0
}
]
]
},
"Upload Video to YouTube": {
"main": [
[
{
"node": "Edit Airtable Fields 3",
"type": "main",
"index": 0
}
]
]
},
"Edit Airtable Fields": {
"main": [
[
{
"node": "Update TikTok Status",
"type": "main",
"index": 0
}
]
]
},
"Edit Airtable Fields 2": {
"main": [
[
{
"node": "Update Instagram Status",
"type": "main",
"index": 0
}
]
]
},
"Edit Airtable Fields 3": {
"main": [
[
{
"node": "Update YouTube Status - Success",
"type": "main",
"index": 0
}
]
]
},
"Edit Airtable Fields1": {
"main": [
[
{
"node": "Update Airtable with Description",
"type": "main",
"index": 0
}
]
]
}
},
"pinData": {},
"meta": {
"instanceId": "9349cc98dea3abf7245849c8a8f331aa3dfe32f70617122f3e9e818da0e131b3",
"templateId": "2894",
"templateCredsSetupCompleted": true
}
}

Comments
Post a Comment