template in store

Automate your social media video publishing pipeline with this powerful workflow. This template streamlines the process of taking a video from Google Drive, extracting its audio, generating AI-powered descriptions, and then publishing it to both TikTok and Instagram. When a new video is added to a designated folder in Google Drive, the workflow is manually triggered to read the video file. OpenAI's advanced AI then generates a compelling description tailored for both TikTok and Instagram, leveraging the video's audio content. Subsequently, the workflow uploads the video and its newly generated description to both TikTok via an HTTP request and Instagram, also through an HTTP request, ensuring your content reaches a wider audience efficiently. This workflow is ideal for content creators, social media managers, and marketing teams looking to save significant time and effort in their daily content distribution, eliminating manual description writing and separate uploads to multiple platforms. It solves the problem of repetitive, time-consuming social media posting, allowing you to focus on content creation rather than the mechanics of publishing.

13 nodesmanual trigger80 views0 copiesProductivity
Google DriveTikTokOpenAIInstagramTelegram

Workflow JSON

{"id": "cZPEH5aMMZNy61xs", "meta": {"instanceId": "3378b0d68c3b7ebfc71b79896d94e1a044dec38e99a1160aed4e9c323910fbe2", "templateCredsSetupCompleted": true}, "name": "template in store", "tags": [], "nodes": [{"id": "14f93cdb-72cb-419a-b8d7-a68ae9383290", "name": "Google Drive Trigger", "type": "n8n-nodes-base.googleDriveTrigger", "position": [440, 320], "parameters": {"event": "fileCreated", "options": {}, "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"}}, "credentials": {"googleDriveOAuth2Api": {"id": "", "name": "[Your googleDriveOAuth2Api]"}}, "typeVersion": 1}, {"id": "d4ab0d11-b110-46fa-9cd2-6091737c302e", "name": "Google Drive", "type": "n8n-nodes-base.googleDrive", "position": [620, 320], "parameters": {"fileId": {"__rl": true, "mode": "", "value": "={{ $json.id || $json.data[0].id }}"}, "options": {}, "operation": "download", "authentication": "oAuth2"}, "credentials": {"googleDriveOAuth2Api": {"id": "", "name": "[Your googleDriveOAuth2Api]"}}, "retryOnFail": true, "typeVersion": 1, "waitBetweenTries": 5000}, {"id": "fde9df88-3f9e-4732-bb1c-72eb33ce6826", "name": "Error Trigger", "type": "n8n-nodes-base.errorTrigger", "position": [840, 660], "parameters": {}, "typeVersion": 1}, {"id": "ecfe1ad1-6887-492b-a2f7-f9b6c43f9b91", "name": "Telegram", "type": "n8n-nodes-base.telegram", "position": [1180, 640], "webhookId": "f6729386-9905-45f1-800f-4fe01a06ac9c", "parameters": {"text": "=\ud83d\udd14 ERROR SUBIENDO VIDEOS", "chatId": "-4127128831", "additionalFields": {"appendAttribution": false}}, "credentials": {"telegramApi": {"id": "", "name": "[Your telegramApi]"}}, "retryOnFail": true, "typeVersion": 1.2, "waitBetweenTries": 5000}, {"id": "6ed274c7-726f-40aa-92b0-70768dc053a5", "name": "If", "type": "n8n-nodes-base.if", "position": [980, 660], "parameters": {"options": {}, "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"}]}}, "typeVersion": 2.1}, {"id": "dd4b2dfa-ccba-45d8-b388-755888343b4c", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [0, 0], "parameters": {"width": 860, "height": 260, "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 and TikTok.\n\n## How to Use\n1. Generate an API token at upload-post.com and add to Upload to Tiktok and Upload to Instagram nodes\n2. Configure your Google Drive folder\n3. Customize the OpenAI prompt for your specific use case\n4. Optional: Configure Telegram for error notifications\n\n## Requirements\n- upload-post.com account\n- Google Drive account\n- OpenAI API key\n"}, "typeVersion": 1}, {"id": "299e3e95-dbcb-4798-b843-a4424ce3f3bf", "name": "Get Audio from Video", "type": "@n8n/n8n-nodes-langchain.openAi", "notes": "Extract the audio from video for generate the description", "position": [1080, 320], "parameters": {"options": {}, "resource": "audio", "operation": "transcribe"}, "credentials": {"openAiApi": {"id": "", "name": "[Your openAiApi]"}}, "notesInFlow": true, "retryOnFail": true, "typeVersion": 1, "waitBetweenTries": 5000}, {"id": "da9048ce-542e-44e0-ba67-ab853822c428", "name": "Read video from Google Drive", "type": "n8n-nodes-base.writeBinaryFile", "position": [800, 320], "parameters": {"options": {}, "fileName": "={{ $json.originalFilename.replaceAll(\" \", \"_\") }}"}, "typeVersion": 1}, {"id": "5977baf1-d4a2-439f-aafe-14745201d3d8", "name": "Generate Description for Videos in Tiktok and Instagram", "type": "@n8n/n8n-nodes-langchain.openAi", "notes": "Request to OpenAi for generate description with the audio extracted from the video", "position": [1280, 320], "parameters": {"modelId": {"__rl": true, "mode": "list", "value": "gpt-4o", "cachedResultName": "GPT-4O"}, "options": {}, "messages": {"values": [{"role": "system", "content": "You are an expert assistant in creating engaging social media video titles."}, {"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."}]}}, "credentials": {"openAiApi": {"id": "", "name": "[Your openAiApi]"}}, "notesInFlow": true, "retryOnFail": true, "typeVersion": 1.4, "waitBetweenTries": 5000}, {"id": "a139c8b0-b934-492b-8f85-e42c9c345af4", "name": "Read Video from Google Drive", "type": "n8n-nodes-base.readBinaryFile", "position": [1840, 100], "parameters": {"filePath": "={{ $('Read video from Google Drive').item.json.originalFilename.replaceAll(\" \", \"_\") }}", "dataPropertyName": "datavideo"}, "typeVersion": 1}, {"id": "63230edb-8346-4441-929f-1f6403507501", "name": "Read Video from Google Drive2", "type": "n8n-nodes-base.readBinaryFile", "position": [1840, 460], "parameters": {"filePath": "={{ $('Read video from Google Drive').item.json.originalFilename.replaceAll(\" \", \"_\") }}", "dataPropertyName": "datavideo"}, "typeVersion": 1}, {"id": "5d6e26ef-1bb4-43d6-a282-151c95856905", "name": "Upload Video and Description to Tiktok", "type": "n8n-nodes-base.httpRequest", "notes": "Generate in upload-post.com the token and add to the credentials in the header-> Authorization: Apikey (token here)", "position": [2100, 100], "parameters": {"url": "https://api.upload-post.com/api/upload", "method": "POST", "options": {}, "sendBody": true, "contentType": "multipart-form-data", "authentication": "genericCredentialType", "bodyParameters": {"parameters": [{"name": "title", "value": "={{ $('Generate Description for Videos in Tiktok and Instagram').item.json.message.content.replaceAll(\"\\\"\", \"\") }}"}, {"name": "platform[]", "value": "tiktok"}, {"name": "video", "parameterType": "formBinaryData", "inputDataFieldName": "datavideo"}, {"name": "user", "value": "Add user generated in upload-post"}]}, "genericAuthType": "httpHeaderAuth"}, "credentials": {"httpHeaderAuth": {"id": "", "name": "[Your httpHeaderAuth]"}}, "notesInFlow": true, "typeVersion": 4.2}, {"id": "ed785663-50e4-43cc-9dc0-a340d0360b38", "name": "Upload Video and Description to Instagram", "type": "n8n-nodes-base.httpRequest", "notes": "Generate in upload-post.com the token and add to the credentials in the header-> Authorization: Apikey (token here)", "position": [2100, 460], "parameters": {"url": "https://api.upload-post.com/api/upload", "method": "POST", "options": {}, "sendBody": true, "contentType": "multipart-form-data", "authentication": "genericCredentialType", "bodyParameters": {"parameters": [{"name": "title", "value": "={{ $('Generate Description for Videos in Tiktok and Instagram').item.json.message.content.replaceAll(\"\\\"\", \"\") }}"}, {"name": "platform[]", "value": "instagram"}, {"name": "video", "parameterType": "formBinaryData", "inputDataFieldName": "datavideo"}, {"name": "user", "value": "Add user generated in upload-post"}]}, "genericAuthType": "httpHeaderAuth"}, "credentials": {"httpHeaderAuth": {"id": "", "name": "[Your httpHeaderAuth]"}}, "notesInFlow": true, "typeVersion": 4.2}], "active": false, "pinData": {}, "settings": {"executionOrder": "v1"}, "versionId": "fdcd0643-0958-426c-ab1d-16fb061b4e38", "connections": {"If": {"main": [[{"node": "Telegram", "type": "main", "index": 0}]]}, "Google Drive": {"main": [[{"node": "Read video from Google Drive", "type": "main", "index": 0}]]}, "Error Trigger": {"main": [[{"node": "If", "type": "main", "index": 0}]]}, "Get Audio from Video": {"main": [[{"node": "Generate Description for Videos in Tiktok and Instagram", "type": "main", "index": 0}]]}, "Google Drive Trigger": {"main": [[{"node": "Google Drive", "type": "main", "index": 0}]]}, "Read Video from Google Drive": {"main": [[{"node": "Upload Video and Description to Tiktok", "type": "main", "index": 0}]]}, "Read video from Google Drive": {"main": [[{"node": "Get Audio from Video", "type": "main", "index": 0}]]}, "Read Video from Google Drive2": {"main": [[{"node": "Upload Video and Description to Instagram", "type": "main", "index": 0}]]}, "Generate Description for Videos in Tiktok and Instagram": {"main": [[{"node": "Read Video from Google Drive", "type": "main", "index": 0}, {"node": "Read Video from Google Drive2", "type": "main", "index": 0}]]}}}

How to Import This Workflow

  1. 1Copy the workflow JSON above using the Copy Workflow JSON button.
  2. 2Open your n8n instance and go to Workflows.
  3. 3Click Import from JSON and paste the copied workflow.

Don't have an n8n instance? Start your free trial at n8nautomation.cloud

Related Templates

Auto-create TikTok videos with VEED.io AI avatars, ElevenLabs & GPT-4

Automate the creation and distribution of trending TikTok videos using AI avatars. This workflow connects Telegram, Perplexity, OpenAI, ElevenLabs, VEED.io, and BLOTATO to generate scripts, synthesize voice, create video, and publish across multiple social platforms. Content creators and marketers can rapidly produce engaging short-form video content without manual editing.

35 nodes

Create childrens AI story videos from drawings and auto-publish to YouTube with Blotato

💥 From Drawing to Story: Auto-Publish AI Video to YouTube with Blotato Overview Transform a hand-drawn character sketch into a fully animated, narrated video story — automatically. This 3-part pipeline uses Claude AI, image generation, and video synthesis to go from a simple drawing to a publish-ready video, with no manual editing required. Perfect for: indie creators, educators, storytellers, and anyone who wants to bring hand-drawn characters to life at scale. How It Works Part 1 — From Drawing to Story: Bringing Characters to Life A form submission triggers the workflow with an uploaded drawing The image is analyzed by Claude AI to extract characters and traits Character images are generated via Nano Banana (image generation API) A full story is written by Claude AI, split into scenes, and passed to Part 2 Part 2 — From Characters to Scenes: Rendering the Visual Story Character images are downloaded and converted to Base64 references Scene images are generated using Nano Banana with character consistency Scene image URLs are mapped and the video pipeline is triggered Part 3 — From Scenes to Screen: Video, Narration & Final Render Video prompts and narration context are generated by Claude AI Videos are generated via AtlasCloud (Kling Pro 3.0) with polling loop Narration audio is created with ElevenLabs and uploaded Shotstack assembles the final video with audio sync Final video is published to YouTube (and optionally TikTok) > ⚠️ Important — Workflow Structure > > This template is split into 3 separate workflows. > Each part must be imported and deployed in its own workflow in n8n. > > 📺 Watch the step-by-step tutorial to set everything up correctly: > > @youtube Requirements Credentials needed Blotato API credentials (YouTube/TikTok publishing) AtlasCloud API (Kling Pro 3.0 video generation) Anthropic API key (Claude AI for story & prompts) ElevenLabs API key (narration audio) Shotstack API key (video assembly) Nano Banana API key (image generation) Setup steps Configure credentials for each service above in n8n Set up a form trigger with a file upload field for the drawing Deploy the 3 workflows in order and connect them via webhooks Run a test submission with a simple sketch to validate the full pipeline 🎥 Watch This Tutorial 👋 Need help or want to customize this? 📩 Contact: LinkedIn 📺 YouTube: @DRFIRASS 🚀 Workshops: Mes Ateliers n8n Need help customizing? Contact me for consulting and support : Linkedin / Youtube / 🚀 Mes Ateliers n8n

71 nodes

Automate LinkedIn Posts with AI

Automate your LinkedIn content creation and publishing by leveraging AI with this powerful workflow. This n8n automation connects LinkedIn, OpenAI, and Notion to streamline your social media presence. A Schedule Trigger initiates the process daily, querying your Notion database for today's scheduled posts. For each post, the workflow fetches all content from its Notion page, including text blocks and an image URL, then uses OpenAI to reformat the post text for optimal engagement. The workflow then combines the rephrased text and fetched image, publishing the complete post directly to LinkedIn. Finally, it updates the post's status in Notion to "Done," ensuring your content calendar remains accurate. This workflow is ideal for content creators, marketers, and businesses looking to maintain a consistent and engaging LinkedIn presence without manual effort, saving significant time on content preparation and publishing while ensuring high-quality, AI-enhanced posts.

11 nodes

Ready to automate with n8n?

Get affordable managed n8n hosting with 24/7 support.