This workflow follows the Google Drive → HTTP Request 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 →
{
"name": "Maverick Shorts v13 \u2014 Lean Pipeline (Voice \u2192 Avatar \u2192 GDrive)",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "maverick-shorts-start",
"responseMode": "responseNode",
"options": {}
},
"id": "9107dea7-0fe9-4ffd-b590-0652f39b7f09",
"name": "Webhook - Maverick Start",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [
-3600,
-32
]
},
{
"parameters": {
"jsCode": "// Extract and validate incoming payload\nconst body = $input.first().json.body;\n\nif (!body.title || !body.script) {\n throw new Error('Missing required fields: title and script');\n}\n\nconst VOICE_ID = body.voice_id || 'qhMcm2elFccLZnvdmStP';\nconst HEDRA_MODEL_ID = body.hedra_model_id || 'd1dd37a3-e39a-4854-a298-6510289f9cf2';\nconst FORMAT = 'short';\nconst ASPECT_RATIO = '16:9';\nconst DAY_NUMBER = body.day_number || 1;\n\n// Maverick image rotation \u2014 cycle through uploaded Hedra character images\nconst HEDRA_IMAGES = [\n 'cfff1216-77fa-495b-a6d7-89d659f52330', // Original Maverick - navy blazer showroom\n 'f8201c9e-88a0-4438-9d51-d08637ed03db', // Maverick podcast photo\n '6df0ce6e-5ddb-4b8b-a228-75c158c0880c', // Maverick pointing at camera\n '75f7fb4f-6cb9-4798-8ec4-7d89aa1e727d', // Maverick thinking pose\n 'a929b642-265c-485b-b5b5-6ba8f7d18846', // Maverick leather jacket outdoor\n '5076e541-562a-4d28-aabc-bc7f83e37db7', // Gemini Maverick pose 1\n '572687ae-8a2b-46d0-a6d1-20b1db63f6f9', // Gemini Maverick pose 2\n 'e22cdbd7-fa37-4837-b192-8253da6277ac' // Gemini Maverick pose 3\n];\nconst HEDRA_IMAGE_ASSET_ID = HEDRA_IMAGES[(DAY_NUMBER - 1) % HEDRA_IMAGES.length];\n\nreturn [{\n json: {\n title: body.title,\n script: body.script,\n format: FORMAT,\n aspect_ratio: ASPECT_RATIO,\n voice_id: VOICE_ID,\n hedra_image_asset_id: HEDRA_IMAGE_ASSET_ID,\n hedra_model_id: HEDRA_MODEL_ID,\n day_number: DAY_NUMBER,\n duration_ms: null,\n started_at: new Date().toISOString()\n }\n}];"
},
"id": "0d89d904-b93d-4003-924b-26ad32bc77b9",
"name": "Parse & Validate Input",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-3360,
-32
]
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ JSON.stringify({ status: 'accepted', message: 'Maverick Shorts v13 lean pipeline started' }) }}",
"options": {
"responseCode": 200,
"responseHeaders": {
"entries": [
{
"name": "Content-Type",
"value": "application/json"
}
]
}
}
},
"id": "9d95505b-ee49-47a1-8142-2d6c028f3b10",
"name": "Respond Accepted",
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.1,
"position": [
-3120,
-192
]
},
{
"parameters": {
"method": "POST",
"url": "=https://api.elevenlabs.io/v1/text-to-speech/{{ $('Parse & Validate Input').first().json.voice_id }}",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "elevenLabsApi",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Accept",
"value": "audio/mpeg"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify({ text: $('Parse & Validate Input').first().json.script, model_id: 'eleven_multilingual_v2', voice_settings: { stability: 0.5, similarity_boost: 0.75 } }) }}",
"options": {
"response": {
"response": {
"responseFormat": "file",
"outputPropertyName": "voice_audio"
}
}
}
},
"id": "c87dc1fe-5b4b-4fa4-9910-506a0eaf7da3",
"name": "ElevenLabs - Generate Voice",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-3120,
-32
],
"credentials": {
"elevenLabsApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"method": "POST",
"url": "https://api.hedra.com/web-app/public/assets",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify({ name: 'maverick-voice-' + Date.now() + '.mp3', type: 'audio' }) }}",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
}
},
"id": "8eda4dc4-4c56-42e2-b51b-713412bf5124",
"name": "Hedra - Create Audio Asset",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-2880,
-32
],
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"mode": "combine",
"combineBy": "combineAll",
"options": {}
},
"id": "172256aa-cb88-4130-9a4b-5d525545eb5e",
"name": "Merge Audio Binary + Asset ID",
"type": "n8n-nodes-base.merge",
"typeVersion": 3,
"position": [
-2640,
-32
]
},
{
"parameters": {
"method": "POST",
"url": "=https://api.hedra.com/web-app/public/assets/{{ $json.id }}/upload",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"contentType": "multipart-form-data",
"bodyParameters": {
"parameters": [
{
"parameterType": "formBinaryData",
"name": "file",
"inputDataFieldName": "voice_audio"
}
]
},
"options": {
"response": {
"response": {
"responseFormat": "json"
}
},
"timeout": 300000
}
},
"id": "23c181ab-485c-4a2d-8b23-c076a62c423c",
"name": "Hedra - Upload Audio",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-2400,
-32
],
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "// Build Hedra generation request\nconst audioUpload = $input.first().json;\nconst inputData = $('Parse & Validate Input').first().json;\n\nconst audioId = audioUpload.id;\nconst imageAssetId = inputData.hedra_image_asset_id;\nconst modelId = inputData.hedra_model_id;\n\nreturn [{\n json: {\n type: 'video',\n ai_model_id: modelId,\n start_keyframe_id: imageAssetId,\n audio_id: audioId,\n generated_video_inputs: {\n text_prompt: 'Professional man speaking directly to camera with confident authority, dealership showroom background',\n resolution: '720p',\n aspect_ratio: inputData.aspect_ratio,\n ...(inputData.duration_ms ? { duration_ms: inputData.duration_ms } : {})\n },\n _title: inputData.title,\n _script: inputData.script,\n _day_number: inputData.day_number,\n _started_at: inputData.started_at\n }\n}];"
},
"id": "f21b0242-386b-4572-a01b-d481f4fd6c79",
"name": "Prep Hedra Generation",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-2160,
-32
]
},
{
"parameters": {
"method": "POST",
"url": "https://api.hedra.com/web-app/public/generations",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify({ type: $json.type, ai_model_id: $json.ai_model_id, start_keyframe_id: $json.start_keyframe_id, audio_id: $json.audio_id, generated_video_inputs: $json.generated_video_inputs }) }}",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
}
},
"id": "9085d176-b881-4d77-9caa-7b55114fd95b",
"name": "Hedra - Generate Avatar Video",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-1920,
-32
],
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "const hedraGen = $('Hedra - Generate Avatar Video').first().json;\nconst inputData = $('Prep Hedra Generation').first().json;\nif (!hedraGen.id) throw new Error('Hedra did not return a generation ID: ' + JSON.stringify(hedraGen));\nreturn [{\n json: {\n hedra_generation_id: hedraGen.id,\n hedra_status: hedraGen.status || 'queued',\n poll_count: 0,\n max_polls: 80,\n title: inputData._title,\n script: inputData._script,\n day_number: inputData._day_number,\n started_at: inputData._started_at\n }\n}];"
},
"id": "993b899a-b539-4a56-ba2d-4800fe756650",
"name": "Collect Generation ID",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-1680,
-32
]
},
{
"parameters": {
"amount": 15
},
"id": "d8abf572-d97a-4625-bb21-3bc8409a8290",
"name": "Wait 15s",
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
-1440,
-32
]
},
{
"parameters": {
"url": "=https://api.hedra.com/web-app/public/generations/{{ $json.hedra_generation_id }}/status",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
}
},
"id": "4320179d-082f-4d39-8fc8-f44e716fe408",
"name": "Poll Hedra Status",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-1200,
-32
],
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "const hedraPoll = $input.first().json;\nconst prev = $('Wait 15s').first().json;\nconst hedraStatus = hedraPoll.status || 'processing';\nconst pollCount = (prev.poll_count || 0) + 1;\nif (hedraStatus === 'error') {\n throw new Error('Hedra generation failed: ' + (hedraPoll.error_message || hedraPoll.error || 'unknown'));\n}\nif (pollCount >= prev.max_polls) {\n throw new Error('Hedra polling timeout after ' + pollCount + ' attempts (~' + (pollCount * 15) + 's).');\n}\nconst hedraDone = hedraStatus === 'complete';\nconst hedraVideoUrl = hedraDone ? (hedraPoll.download_url || hedraPoll.url || null) : null;\nreturn [{\n json: {\n hedra_generation_id: prev.hedra_generation_id,\n hedra_status: hedraStatus,\n hedra_done: hedraDone,\n hedra_video_url: hedraVideoUrl,\n poll_count: pollCount,\n max_polls: prev.max_polls,\n title: prev.title,\n script: prev.script,\n day_number: prev.day_number,\n started_at: prev.started_at\n }\n}];"
},
"id": "46339494-e500-4f8a-a687-e2b8d39a8a12",
"name": "Evaluate Poll",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-960,
-32
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"leftValue": "={{ $json.hedra_done }}",
"rightValue": true,
"operator": {
"type": "boolean",
"operation": "equals"
}
}
]
},
"options": {}
},
"id": "eb08edce-6a1b-45cb-af56-03b67b658f61",
"name": "Hedra Done?",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
-720,
-32
]
},
{
"parameters": {
"url": "={{ $json.hedra_video_url }}",
"options": {
"response": {
"response": {
"responseFormat": "file",
"outputPropertyName": "data"
}
},
"timeout": 120000
}
},
"id": "0b2c6d9b-9fbf-4140-a2f4-2b3729fda39d",
"name": "Download Avatar Video",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-480,
-32
]
},
{
"parameters": {
"operation": "upload",
"name": "=Maverick Day {{ $('Evaluate Poll').first().json.day_number }} - {{ $('Evaluate Poll').first().json.title.toUpperCase() }}.mp4",
"driveId": {
"__rl": true,
"value": "My Drive",
"mode": "list",
"cachedResultName": "My Drive",
"cachedResultUrl": "https://drive.google.com/drive/my-drive"
},
"folderId": {
"__rl": true,
"value": "1Zoebrsj163lZz8oMaHGDkYS_LckQkfk3",
"mode": "id"
},
"options": {}
},
"id": "gdrive-upload-001",
"name": "Google Drive Upload",
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
-240,
-32
],
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"continueOnFail": true
},
{
"parameters": {
"method": "POST",
"url": "https://lane.echorange.app/api/chat",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify({ message: 'Maverick Day ' + $('Parse & Validate Input').item.json.day_number + ' complete! ' + ($('Google Drive Upload').item.json.id ? ('GDrive: https://drive.google.com/file/d/' + $('Google Drive Upload').item.json.id) : 'GDrive: upload pending (check creds)') + ' | Hedra: ' + $('Evaluate Poll').item.json.hedra_video_url }) }}",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
}
},
"id": "ebf7bd6d-422a-415a-bd46-5ef391b426cc",
"name": "Notify Lane",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
0,
-32
],
"continueOnFail": true
},
{
"parameters": {
"jsCode": "const evalData = $('Evaluate Poll').first().json;\nconst elapsedSeconds = Math.round((new Date() - new Date(evalData.started_at)) / 1000);\nlet googleDriveFileId = null;\nlet googleDriveUrl = null;\ntry {\n googleDriveFileId = $('Google Drive Upload').first().json.id || null;\n googleDriveUrl = googleDriveFileId ? ('https://drive.google.com/file/d/' + googleDriveFileId) : null;\n} catch(e) {}\nreturn [{\n json: {\n status: 'complete',\n day_number: evalData.day_number,\n title: evalData.title,\n hedra_video_url: evalData.hedra_video_url,\n google_drive_file_id: googleDriveFileId,\n google_drive_url: googleDriveUrl,\n elapsed_seconds: elapsedSeconds,\n started_at: evalData.started_at,\n completed_at: new Date().toISOString()\n }\n}];"
},
"id": "2d3cbe8b-ca29-4c87-a1af-b80275ee51b8",
"name": "Final Output",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
240,
-32
]
}
],
"connections": {
"Webhook - Maverick Start": {
"main": [
[
{
"node": "Parse & Validate Input",
"type": "main",
"index": 0
}
]
]
},
"Parse & Validate Input": {
"main": [
[
{
"node": "Respond Accepted",
"type": "main",
"index": 0
},
{
"node": "ElevenLabs - Generate Voice",
"type": "main",
"index": 0
}
]
]
},
"ElevenLabs - Generate Voice": {
"main": [
[
{
"node": "Hedra - Create Audio Asset",
"type": "main",
"index": 0
},
{
"node": "Merge Audio Binary + Asset ID",
"type": "main",
"index": 1
}
]
]
},
"Hedra - Create Audio Asset": {
"main": [
[
{
"node": "Merge Audio Binary + Asset ID",
"type": "main",
"index": 0
}
]
]
},
"Merge Audio Binary + Asset ID": {
"main": [
[
{
"node": "Hedra - Upload Audio",
"type": "main",
"index": 0
}
]
]
},
"Hedra - Upload Audio": {
"main": [
[
{
"node": "Prep Hedra Generation",
"type": "main",
"index": 0
}
]
]
},
"Prep Hedra Generation": {
"main": [
[
{
"node": "Hedra - Generate Avatar Video",
"type": "main",
"index": 0
}
]
]
},
"Hedra - Generate Avatar Video": {
"main": [
[
{
"node": "Collect Generation ID",
"type": "main",
"index": 0
}
]
]
},
"Collect Generation ID": {
"main": [
[
{
"node": "Wait 15s",
"type": "main",
"index": 0
}
]
]
},
"Wait 15s": {
"main": [
[
{
"node": "Poll Hedra Status",
"type": "main",
"index": 0
}
]
]
},
"Poll Hedra Status": {
"main": [
[
{
"node": "Evaluate Poll",
"type": "main",
"index": 0
}
]
]
},
"Evaluate Poll": {
"main": [
[
{
"node": "Hedra Done?",
"type": "main",
"index": 0
}
]
]
},
"Hedra Done?": {
"main": [
[
{
"node": "Download Avatar Video",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait 15s",
"type": "main",
"index": 0
}
]
]
},
"Download Avatar Video": {
"main": [
[
{
"node": "Google Drive Upload",
"type": "main",
"index": 0
}
]
]
},
"Google Drive Upload": {
"main": [
[
{
"node": "Notify Lane",
"type": "main",
"index": 0
}
]
]
},
"Notify Lane": {
"main": [
[
{
"node": "Final Output",
"type": "main",
"index": 0
}
]
]
}
},
"active": true,
"settings": {
"executionOrder": "v1",
"binaryMode": "separate",
"timeSavedMode": "fixed",
"callerPolicy": "workflowsFromSameOwner",
"availableInMCP": true
},
"id": "maverick-shorts-v13-lean",
"tags": []
}
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.
elevenLabsApigoogleDriveOAuth2ApihttpHeaderAuth
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Maverick Shorts v13 — Lean Pipeline (Voice → Avatar → GDrive). Uses httpRequest, googleDrive. Webhook trigger; 18 nodes.
Source: https://gist.github.com/chad-nethery/ac126942c6d041b2fae38e7c7c68ece5 — 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.
AI Background Change – VideoBGRemover + Wan2.2 Vace (fal). Uses httpRequest, googleDrive. Webhook trigger; 32 nodes.
Remove Video Background & Compose on Custom Background with Google Drive. Uses httpRequest, googleDrive. Webhook trigger; 25 nodes.
• Upload foreground video (AI actors, product demos, webcam footage) • Provide custom background video URL • API removes video background with videobgremover.com • Composites foreground onto backgroun
Automated workflow to remove video backgrounds and composite foreground video on static image backgrounds. Perfect for creating branded content, professional presentations, and consistent visual brand
A comprehensive n8n workflow template that completely automates the startup pitch deck submission process for accelerators, incubators, VC firms, and startup competitions. This workflow validates foun