AutomationFlowsWeb Scraping › Maverick Shorts V13 — Lean Pipeline (voice → Avatar → Gdrive)

Maverick Shorts V13 — Lean Pipeline (voice → Avatar → Gdrive)

Maverick Shorts v13 — Lean Pipeline (Voice → Avatar → GDrive). Uses httpRequest, googleDrive. Webhook trigger; 18 nodes.

Webhook trigger★★★★☆ complexity18 nodesHTTP RequestGoogle Drive
Web Scraping Trigger: Webhook Nodes: 18 Complexity: ★★★★☆ Added:

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 →

Download .json
{
  "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.

Pro

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 →

More Web Scraping workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Web Scraping

AI Background Change – VideoBGRemover + Wan2.2 Vace (fal). Uses httpRequest, googleDrive. Webhook trigger; 32 nodes.

HTTP Request, Google Drive
Web Scraping

Remove Video Background & Compose on Custom Background with Google Drive. Uses httpRequest, googleDrive. Webhook trigger; 25 nodes.

HTTP Request, Google Drive
Web Scraping

• 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

HTTP Request, Google Drive
Web Scraping

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

HTTP Request, Google Drive
Web Scraping

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

Google Drive, Gmail, N8N Nodes Verifiemail +2