Back to Catalog

Generate AI short-form videos with Creatomate, ElevenLabs & Pexels Stock

Matty ReedMatty Reed
86 views
2/3/2026
Official Page

Who is this for?

  • Creators, agencies, and marketers who need short-form vertical video at scale.
  • Anyone who wants to turn a topic into an edited “talking shorts” style clip without opening a video editor.

What problem does it solve?

Manually producing shorts is slow and repetitive. You have to write the script, hunt for b-roll, generate voiceover, layer music, edit timing, and export. This workflow automates that from prompt to rendered MP4 using AI, stock video, and Creatomate.

Note: this template requires a Creatomate template like the one shown below: Screenshot 20251030 at 3.52.41 PM.jpg

How it works

  1. You submit a topic in a simple n8n form.
  2. The workflow uses an AI model to generate a YouTube Shorts style script (~100 words) with hook, body, and looping ending.
  3. A second AI step turns that script into 8 visual search terms (for example “person typing at desk,” “happy team in office,” “corporate meeting”) that are likely to exist in stock footage.
  4. For each term, the workflow calls the Pexels Videos API and pulls the best portrait clip. It fetches clip details and filters files under 50 MB, then keeps the largest high quality version under that limit.
  5. The selected clip URLs are combined into a list that will later map to eight background layers in the Creatomate template.
  6. The generated script is sent to ElevenLabs (text-to-speech) to create the voiceover audio file.
  7. That audio is uploaded to Google Drive. The workflow then:
    • Randomly picks a background music track from a Drive folder.
    • Sets the Drive file sharing to “anyone with the link” so Creatomate can fetch it directly.
  8. The workflow calls Creatomate’s Render API:
    • Injects the voiceover URL, the chosen music URL, and the eight stock video URLs into a predefined vertical template.
    • Also enables auto-subtitles in the template by linking the transcript to on-screen captions.
  9. The workflow polls Creatomate until render status is succeeded.
  10. When rendering is done, cleanup runs:
    • The temporary voice file in Drive is deleted.
    • Final output metadata (including the render ID and status) is passed to the last node.

Result: You get an edited 9:16 short with stock b-roll, captions, voiceover, background music, and transitions.

Setup steps

  1. n8n
    1. Import this workflow JSON into n8n.
    2. Expose the included Form Trigger to capture the topic input.
  2. AI script + search terms
    1. Connect your AI model credentials in the Short Text node for script generation.
    2. Connect your AI model credentials in the Video Search Terms node for visual search term generation.
    3. Confirm both nodes are wired to output structured JSON to their paired Structured Output Parser nodes.
  3. Stock footage
    1. Add your Pexels API key as the Authorization header in both Search Videos and Get The Video Details.
    2. Keep orientation=portrait so clips match 9:16.
  4. Voiceover
    1. Add your ElevenLabs API key to the Generate Voice request header (xi-api-key).
    2. Set the voice ID in the ElevenLabs URL if you want a different voice.
  5. Google Drive
    1. Connect Google Drive OAuth in Google Drive, List Short Music Files, and Set File Permissions.
    2. In List Short Music Files, point q and folderId to the folder that stores your background music tracks.
    3. Confirm Set File Permissions is using role: reader, type: anyone so Creatomate can fetch the audio file.
  6. Creatomate render
    1. Set your Creatomate API key (Authorization: Bearer <key>) in Create Short and Check Video Status.
    2. Replace template_id with your own Creatomate template ID if different.
    3. Map each Background-1 ... Background-8 field in the JSON body to the combined clip URLs. These correspond to layers in your Creatomate template.
  7. Test end to end
    1. Run the workflow with a sample topic.
    2. Confirm:
      • Script is generated.
      • At least 8 stock clips are found.
      • Voice file uploads to Drive and becomes publicly readable.
      • Creatomate render finishes with status = succeeded.
    3. Adjust template timing and transitions in Creatomate if visuals do not match pacing.

Notes

  • The cleanup step deletes the temporary voiceover file from Drive after render to avoid clutter.
  • The workflow chooses a random music track each run to keep videos from sounding identical.
  • The render loop will keep polling Creatomate until the final MP4 is ready.

Resources

n8n AI Short-Form Video Generator with Creatomate, ElevenLabs & Pexels Stock

This n8n workflow automates the creation of AI-generated short-form videos by orchestrating several AI and media services. It simplifies the process of generating video content from a simple text prompt, making it ideal for content creators, marketers, or anyone looking to rapidly produce engaging video snippets.

What it does

This workflow streamlines the video creation process through the following steps:

  1. Triggers on Form Submission: The workflow starts when a new request is submitted via an n8n form. This form likely collects the initial prompt or topic for the video.
  2. Generates AI Content: An AI Agent (likely powered by Langchain with either Anthropic or OpenAI models) processes the input from the form. This agent is configured to generate structured output, suggesting it's designed to produce specific components needed for video creation (e.g., script, video ideas, voiceover instructions).
  3. Loops Over Items (Conditional): The workflow includes a "Loop Over Items" node, suggesting it can handle multiple video generation requests or iterate through different aspects of a single request. An "If" node is present, indicating conditional logic that might filter or branch the workflow based on the AI's output or other criteria.
  4. Retrieves Media from Google Drive: It interacts with Google Drive, likely to fetch pre-existing assets, templates, or to store generated content.
  5. Performs HTTP Requests: Multiple HTTP Request nodes are included, which are typically used to interact with external APIs. Given the directory name, these are highly likely to be used for:
    • Creatomate: To automate video generation using templates and the AI-generated content.
    • ElevenLabs: To generate voiceovers from the AI-generated script.
    • Pexels: To fetch stock video footage or images based on the video's theme.
  6. Introduces Delays: A "Wait" node is used, which can be crucial for API rate limiting, waiting for asynchronous processes (like video rendering), or simply pacing the workflow.
  7. Executes Custom Code: A "Code" node allows for custom JavaScript logic, which could be used for data manipulation, formatting API requests/responses, or implementing specific business rules not covered by standard nodes.

Prerequisites/Requirements

To use this workflow, you will need:

  • n8n Instance: A running instance of n8n.
  • n8n Form Trigger: To initiate the workflow.
  • AI Service Credentials:
    • Anthropic API Key (for the Anthropic Chat Model node) OR
    • OpenAI API Key (for the OpenAI Chat Model node)
  • Google Drive Account: With appropriate credentials configured in n8n.
  • Creatomate Account & API Key: For automated video generation.
  • ElevenLabs Account & API Key: For AI voiceover generation.
  • Pexels Account & API Key: For fetching stock media.
  • Understanding of Langchain Concepts: Familiarity with AI Agents and Structured Output Parsers will be beneficial for configuring the AI nodes.

Setup/Usage

  1. Import the Workflow: Download the provided JSON and import it into your n8n instance.
  2. Configure Credentials:
    • Add your Anthropic or OpenAI API Key to the respective Chat Model node.
    • Set up your Google Drive credentials.
    • Configure HTTP Request nodes with your Creatomate, ElevenLabs, and Pexels API keys and endpoints.
  3. Customize the n8n Form Trigger: Adjust the form fields to collect the necessary input for your video generation requests (e.g., video topic, desired length, style).
  4. Review AI Agent Configuration: Examine the "AI Agent" and "Structured Output Parser" nodes. You may need to fine-tune the prompts and schema to ensure the AI generates the desired output for your video creation process.
  5. Adjust HTTP Request Nodes: Update the HTTP Request nodes to match the specific Creatomate templates, ElevenLabs voice models, and Pexels search parameters you wish to use.
  6. Activate the Workflow: Once configured, activate the workflow. Submitting the n8n form will now trigger the automated video generation process.

Related Templates

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

💥 Viral TikTok Video Machine: Auto-Create Videos with Your AI Avatar --- 🎯 Who is this for? This workflow is for content creators, marketers, and agencies who want to use Veed.io’s AI avatar technology to produce short, engaging TikTok videos automatically. It’s ideal for creators who want to appear on camera without recording themselves, and for teams managing multiple brands who need to generate videos at scale. --- ⚙️ What problem this workflow solves Manually creating videos for TikTok can take hours — finding trends, writing scripts, recording, and editing. By combining Veed.io, ElevenLabs, and GPT-4, this workflow transforms a simple Telegram input into a ready-to-post TikTok video featuring your AI avatar powered by Veed.io — speaking naturally with your cloned voice. --- 🚀 What this workflow does This automation links Veed.io’s video-generation API with multiple AI tools: Analyzes TikTok trends via Perplexity AI Writes a 10-second viral script using GPT-4 Generates your voiceover via ElevenLabs Uses Veed.io (Fabric 1.0 via FAL.ai) to animate your avatar and sync the lips to the voice Creates an engaging caption + hashtags for TikTok virality Publishes the video automatically via Blotato TikTok API Logs all results to Google Sheets for tracking --- 🧩 Setup Telegram Bot Create your bot via @BotFather Configure it as the trigger for sending your photo and theme Connect Veed.io Create an account on Veed.io Get your FAL.ai API key (Veed Fabric 1.0 model) Use HTTPS image/audio URLs compatible with Veed Fabric Other APIs Add Perplexity, ElevenLabs, and Blotato TikTok keys Connect your Google Sheet for logging results --- 🛠️ How to customize this workflow Change your Avatar: Upload a new image through Telegram, and Veed.io will generate a new talking version automatically. Modify the Script Style: Adjust the GPT prompt for tone (educational, funny, storytelling). Adjust Voice Tone: Tweak ElevenLabs stability and similarity settings. Expand Platforms: Add Instagram, YouTube Shorts, or X (Twitter) posting nodes. Track Performance: Customize your Google Sheet to measure your most successful Veed.io-based videos. --- 🧠 Expected Outcome In just a few seconds after sending your photo and theme, this workflow — powered by Veed.io — creates a fully automated TikTok video featuring your AI avatar with natural lip-sync and voice. The result is a continuous stream of viral short videos, made without cameras, editing, or effort. --- ✅ Import the JSON file in n8n, add your API keys (including Veed.io via FAL.ai), and start generating viral TikTok videos starring your AI avatar today! 🎥 Watch This Tutorial --- 📄 Documentation: Notion Guide Need help customizing? Contact me for consulting and support : Linkedin / Youtube

Dr. FirasBy Dr. Firas
39510

Automate invoice processing with OCR, GPT-4 & Salesforce opportunity creation

PDF Invoice Extractor (AI) End-to-end pipeline: Watch Drive ➜ Download PDF ➜ OCR text ➜ AI normalize to JSON ➜ Upsert Buyer (Account) ➜ Create Opportunity ➜ Map Products ➜ Create OLI via Composite API ➜ Archive to OneDrive. --- Node by node (what it does & key setup) 1) Google Drive Trigger Purpose: Fire when a new file appears in a specific Google Drive folder. Key settings: Event: fileCreated Folder ID: google drive folder id Polling: everyMinute Creds: googleDriveOAuth2Api Output: Metadata { id, name, ... } for the new file. --- 2) Download File From Google Purpose: Get the file binary for processing and archiving. Key settings: Operation: download File ID: ={{ $json.id }} Creds: googleDriveOAuth2Api Output: Binary (default key: data) and original metadata. --- 3) Extract from File Purpose: Extract text from PDF (OCR as needed) for AI parsing. Key settings: Operation: pdf OCR: enable for scanned PDFs (in options) Output: JSON with OCR text at {{ $json.text }}. --- 4) Message a model (AI JSON Extractor) Purpose: Convert OCR text into strict normalized JSON array (invoice schema). Key settings: Node: @n8n/n8n-nodes-langchain.openAi Model: gpt-4.1 (or gpt-4.1-mini) Message role: system (the strict prompt; references {{ $json.text }}) jsonOutput: true Creds: openAiApi Output (per item): $.message.content → the parsed JSON (ensure it’s an array). --- 5) Create or update an account (Salesforce) Purpose: Upsert Buyer as Account using an external ID. Key settings: Resource: account Operation: upsert External Id Field: taxid_c External Id Value: ={{ $json.message.content.buyer.tax_id }} Name: ={{ $json.message.content.buyer.name }} Creds: salesforceOAuth2Api Output: Account record (captures Id) for downstream Opportunity. --- 6) Create an opportunity (Salesforce) Purpose: Create Opportunity linked to the Buyer (Account). Key settings: Resource: opportunity Name: ={{ $('Message a model').item.json.message.content.invoice.code }} Close Date: ={{ $('Message a model').item.json.message.content.invoice.issue_date }} Stage: Closed Won Amount: ={{ $('Message a model').item.json.message.content.summary.grand_total }} AccountId: ={{ $json.id }} (from Upsert Account output) Creds: salesforceOAuth2Api Output: Opportunity Id for OLI creation. --- 7) Build SOQL (Code / JS) Purpose: Collect unique product codes from AI JSON and build a SOQL query for PricebookEntry by Pricebook2Id. Key settings: pricebook2Id (hardcoded in script): e.g., 01sxxxxxxxxxxxxxxx Source lines: $('Message a model').first().json.message.content.products Output: { soql, codes } --- 8) Query PricebookEntries (Salesforce) Purpose: Fetch PricebookEntry.Id for each Product2.ProductCode. Key settings: Resource: search Query: ={{ $json.soql }} Creds: salesforceOAuth2Api Output: Items with Id, Product2.ProductCode (used for mapping). --- 9) Code in JavaScript (Build OLI payloads) Purpose: Join lines with PBE results and Opportunity Id ➜ build OpportunityLineItem payloads. Inputs: OpportunityId: ={{ $('Create an opportunity').first().json.id }} Lines: ={{ $('Message a model').first().json.message.content.products }} PBE rows: from previous node items Output: { body: { allOrNone:false, records:[{ OpportunityLineItem... }] } } Notes: Converts discount_total ➜ per-unit if needed (currently commented for standard pricing). Throws on missing PBE mapping or empty lines. --- 10) Create Opportunity Line Items (HTTP Request) Purpose: Bulk create OLIs via Salesforce Composite API. Key settings: Method: POST URL: https://<your-instance>.my.salesforce.com/services/data/v65.0/composite/sobjects Auth: salesforceOAuth2Api (predefined credential) Body (JSON): ={{ $json.body }} Output: Composite API results (per-record statuses). --- 11) Update File to One Drive Purpose: Archive the original PDF in OneDrive. Key settings: Operation: upload File Name: ={{ $json.name }} Parent Folder ID: onedrive folder id Binary Data: true (from the Download node) Creds: microsoftOneDriveOAuth2Api Output: Uploaded file metadata. --- Data flow (wiring) Google Drive Trigger → Download File From Google Download File From Google → Extract from File → Update File to One Drive Extract from File → Message a model Message a model → Create or update an account Create or update an account → Create an opportunity Create an opportunity → Build SOQL Build SOQL → Query PricebookEntries Query PricebookEntries → Code in JavaScript Code in JavaScript → Create Opportunity Line Items --- Quick setup checklist 🔐 Credentials: Connect Google Drive, OneDrive, Salesforce, OpenAI. 📂 IDs: Drive Folder ID (watch) OneDrive Parent Folder ID (archive) Salesforce Pricebook2Id (in the JS SOQL builder) 🧠 AI Prompt: Use the strict system prompt; jsonOutput = true. 🧾 Field mappings: Buyer tax id/name → Account upsert fields Invoice code/date/amount → Opportunity fields Product name must equal your Product2.ProductCode in SF. ✅ Test: Drop a sample PDF → verify: AI returns array JSON only Account/Opportunity created OLI records created PDF archived to OneDrive --- Notes & best practices If PDFs are scans, enable OCR in Extract from File. If AI returns non-JSON, keep “Return only a JSON array” as the last line of the prompt and keep jsonOutput enabled. Consider adding validation on parsing.warnings to gate Salesforce writes. For discounts/taxes in OLI: Standard OLI fields don’t support per-line discount amounts directly; model them in UnitPrice or custom fields. Replace the Composite API URL with your org’s domain or use the Salesforce node’s Bulk Upsert for simplicity.

Le NguyenBy Le Nguyen
942

Dynamic Hubspot lead routing with GPT-4 and Airtable sales team distribution

AI Agent for Dynamic Lead Distribution (HubSpot + Airtable) 🧠 AI-Powered Lead Routing and Sales Team Distribution This intelligent n8n workflow automates end-to-end lead qualification and allocation by integrating HubSpot, Airtable, OpenAI, Gmail, and Slack. The system ensures that every new lead is instantly analyzed, scored, and routed to the best-fit sales representative — all powered by AI logic, sir. --- 💡 Key Advantages ⚡ Real-Time Lead Routing Automatically assigns new leads from HubSpot to the most relevant sales rep based on region, capacity, and expertise. 🧠 AI Qualification Engine An OpenAI-powered Agent evaluates the lead’s industry, region, and needs to generate a persona summary and routing rationale. 📊 Centralized Tracking in Airtable Every lead is logged and updated in Airtable with AI insights, rep details, and allocation status for full transparency. 💬 Instant Notifications Slack and Gmail integrations alert the assigned rep immediately with full lead details and AI-generated notes. 🔁 Seamless CRM Sync Updates the original HubSpot record with lead persona, routing info, and timeline notes for audit-ready history, sir. --- ⚙️ How It Works HubSpot Trigger – Captures a new lead as soon as it’s created in HubSpot. Fetch Contact Data – Retrieves all relevant fields like name, company, and industry. Clean & Format Data – A Code node standardizes and structures the data for consistency. Airtable Record Creation – Logs the lead data into the “Leads” table for centralized tracking. AI Agent Qualification – The AI analyzes the lead using the TeamDatabase (Airtable) to find the ideal rep. Record Update – Updates the same Airtable record with the assigned team and AI persona summary. Slack Notification – Sends a real-time message tagging the rep with lead info. Gmail Notification – Sends a personalized handoff email with context and follow-up actions. HubSpot Sync – Updates the original contact in HubSpot with the assignment details and AI rationale, sir. --- 🛠️ Setup Steps Trigger Node: HubSpot → Detect new leads. HubSpot Node: Retrieve complete lead details. Code Node: Clean and normalize data. Airtable Node: Log lead info in the “Leads” table. AI Agent Node: Process lead and match with sales team. Slack Node: Notify the designated representative. Gmail Node: Email the rep with details. HubSpot Node: Update CRM with AI summary and allocation status, sir. --- 🔐 Credentials Required HubSpot OAuth2 API – To fetch and update leads. Airtable Personal Access Token – To store and update lead data. OpenAI API – To power the AI qualification and matching logic. Slack OAuth2 – For sending team notifications. Gmail OAuth2 – For automatic email alerts to assigned reps, sir. --- 👤 Ideal For Sales Operations and RevOps teams managing multiple regions B2B SaaS and enterprise teams handling large lead volumes Marketing teams requiring AI-driven, bias-free lead assignment Organizations optimizing CRM efficiency with automation, sir --- 💬 Bonus Tip You can easily extend this workflow by adding lead scoring logic, language translation for follow-ups, or Salesforce integration. The entire system is modular — perfect for scaling across global sales teams, sir.

MANISH KUMARBy MANISH KUMAR
113