Alchemy RecipeBeginnerworkflow

Onboarding video creation with talking avatars

Published

Creating onboarding videos for every new employee or customer is tedious work. You record a script, book studio time, edit footage, add captions, then finally upload somewhere accessible. By the time the first person watches it, you've spent six hours on a fifteen-minute video.......

What if you could generate a polished onboarding video with a talking avatar in under five minutes, with zero manual steps between tools? A new employee gets added to your system, a workflow triggers automatically, and by the time they receive their welcome email, a personalised onboarding video is already waiting for them.

This is exactly what this workflow does. We'll combine three AI video tools—ElevenLabs for natural-sounding voiceovers, HeyGen for avatar video generation, and Hour One for video assembly and branding—along with an orchestration platform to tie everything together. No clicking between tabs, no copying and pasting URLs, no manual uploads.

The Automated Workflow

Choose Your Orchestration Platform

For this workflow, I'd recommend n8n if you're self-hosting or want the most control over API calls. It handles the API rate limiting gracefully and lets you debug each step easily. If you prefer a managed service with less setup, Make (formerly Integromat) works well for most use cases. Zapier is simpler but more expensive at scale. Claude Code is overkill for this specific task unless you're running it on a custom backend.

I'll walk through the n8n approach, but the principles apply to any orchestration tool.

Step 1: Trigger on New Employee Data

Your workflow needs a starting point. This could be a new row in a Google Sheet, a Slack message, a form submission, or a webhook from your HR system.


GET /webhooks/v1/incoming

{
  "employee_name": "Sarah Chen",
  "department": "Engineering",
  "start_date": "2025-01-20",
  "role": "Senior Developer",
  "company_name": "Acme Corp"
}

In n8n, create a webhook node and give it a publicly accessible URL. Your HR system POSTs employee data to this URL whenever someone is hired. The workflow immediately triggers with that employee's information.

Step 2: Generate a Script Using Claude or Prompt Engineering

Before the AI tools can work, you need a script tailored to each person. Don't hardcode the same script for everyone; that defeats the purpose.

Use an HTTP Request node in n8n to call Claude's API (or GPT-4, or any LLM):


POST https://api.anthropic.com/v1/messages

{
  "model": "claude-3-5-sonnet-20241022",
  "max_tokens": 1024,
  "messages": [
    {
      "role": "user",
      "content": "Write a 60-second onboarding script for Sarah Chen, who is a Senior Developer joining the Engineering team at Acme Corp. The script should be warm, professional, and mention their specific role. Keep it under 150 words."
    }
  ]
}

The LLM returns a personalised script. Store this response in a variable for the next steps.

Step 3: Generate the Voiceover with ElevenLabs

With a script in hand, send it to ElevenLabs to create natural speech. ElevenLabs offers several voices; choose one that matches your brand tone.


POST https://api.elevenlabs.io/v1/text-to-speech/{VOICE_ID}

{
  "text": "Hello Sarah, and welcome to Acme Corp. We're thrilled to have you join the Engineering team as a Senior Developer.",
  "model_id": "eleven_monolingual_v1",
  "voice_settings": {
    "stability": 0.5,
    "similarity_boost": 0.75
  }
}

Replace {VOICE_ID} with an actual voice ID from ElevenLabs. Your API key goes in the Authorization header. The response contains a URL to an MP3 file of the voiceover.

Store this MP3 URL in a variable. ElevenLabs keeps the file available for 30 days, which is plenty of time for the next step.

Step 4: Generate Avatar Video with HeyGen

HeyGen creates a video of a talking avatar speaking the voiceover you just generated. Think of it as a digital presenter delivering your script.

First, create a video generation task:


POST https://api.heygen.com/v1/video_requests

{
  "voice": {
    "voice_provider": "eleven_labs",
    "voice_id": "YOUR_ELEVENLABS_VOICE_ID"
  },
  "avatar_id": "wayne-public",
  "caption": {
    "enabled": true,
    "font_color": "#000000"
  }
}

Wait, that's not quite right. HeyGen actually takes a script text directly. Let me correct that:


POST https://api.heygen.com/v1/video_requests

{
  "test": false,
  "background_color": "#ffffff",
  "clips": [
    {
      "avatar_id": "wayne-public",
      "voice": {
        "voice_provider": "eleven_labs",
        "voice_id": "YOUR_ELEVENLABS_VOICE_ID",
        "input_text": "Hello Sarah, and welcome to Acme Corp."
      },
      "duration": 10
    }
  ]
}

HeyGen returns a job ID. The video generation happens asynchronously, so you'll need to poll the status endpoint until the video is ready.

Step 5: Poll for Video Completion

Set up a loop in n8n that checks HeyGen's status every 30 seconds:


GET https://api.heygen.com/v1/video_requests/{VIDEO_REQUEST_ID}

This returns something like:


{
  "data": {
    "id": "abc123xyz",
    "status": "completed",
    "video_url": "https://files.heygen.com/videos/abc123xyz.mp4",
    "created_at": "2025-01-15T10:30:00Z"
  }
}

Once the status is "completed", extract the video_url and proceed to the next step. Most onboarding videos render in 2 to 5 minutes.

Step 6: Upload to Hour One for Branding and Assembly

Hour One lets you add your company's branding, logos, background music, and watermarks to video clips. It's especially useful if you want consistency across multiple videos.


POST https://api.hourone.com/api/upload

{
  "url": "https://files.heygen.com/videos/abc123xyz.mp4",
  "title": "Onboarding: Sarah Chen",
  "project_id": "YOUR_PROJECT_ID"
}

Hour One's API is a bit different; check their documentation for exact endpoints. Alternatively, you can skip Hour One if HeyGen's branding is sufficient.

Step 7: Store the Final Video and Send Notification

Once the video is ready, store the URL in your database and send a notification to the new employee or their manager.


POST https://api.airtable.com/v0/YOUR_BASE_ID/Employees

{
  "fields": {
    "Name": "Sarah Chen",
    "Department": "Engineering",
    "Onboarding_Video_URL": "https://files.heygen.com/videos/abc123xyz.mp4",
    "Video_Generated_At": "2025-01-15T10:35:00Z"
  }
}

Then send an email via SendGrid, Mailgun, or your preferred service:


POST https://api.sendgrid.com/v3/mail/send

{
  "personalizations": [
    {
      "to": [
        {
          "email": "sarah.chen@acmecorp.com"
        }
      ],
      "subject": "Welcome to Acme Corp: Your Personalised Onboarding Video"
    }
  ],
  "from": {
    "email": "onboarding@acmecorp.com"
  },
  "content": [
    {
      "type": "text/html",
      "value": "<p>Welcome to Acme Corp, Sarah. Watch your personalised onboarding video below.</p><p><a href='https://files.heygen.com/videos/abc123xyz.mp4'>View your onboarding video</a></p>"
    }
  ]
}

Full Workflow Diagram in n8n

The complete flow looks like this:

  1. Webhook receives new employee data
  2. HTTP Request to Claude generates personalised script
  3. HTTP Request to ElevenLabs creates voiceover
  4. HTTP Request to HeyGen starts video generation
  5. Wait node pauses for 30 seconds
  6. HTTP Request polls HeyGen status (loop until complete)
  7. HTTP Request uploads to Airtable with video URL
  8. HTTP Request sends welcome email with video link

Each step uses variables to pass data forward. The "Wait and Poll" pattern is essential because HeyGen doesn't support webhooks for completion notifications.

The Manual Alternative

If you prefer more control or want to customise videos beyond what automation allows, here's what a manual process looks like:

  1. Generate the script yourself in a document, tailoring tone and content to each person.
  2. Use ElevenLabs' web dashboard to upload the script and download the MP3.
  3. Open HeyGen, paste your script, choose an avatar and voice settings, and render the video.
  4. Download the MP4 from HeyGen.
  5. Upload it to Hour One for branding (optional).
  6. Upload the final video to a shared drive, Vimeo, or YouTube.
  7. Send the link to the new employee via email.

This takes 15 to 20 minutes per video if you already have scripts written. It's fine for occasional hires, but once you're onboarding multiple people per week, automation becomes worth the initial setup effort.

Pro Tips

Handle Rate Limiting Gracefully

ElevenLabs and HeyGen both have rate limits. ElevenLabs allows 10,000 characters per month on free tier, and around 100,000 on paid plans. HeyGen limits video renders based on your subscription. In n8n, add error handling that retries failed requests with exponential backoff:


{
  "retry": {
    "enabled": true,
    "maxTries": 3,
    "delay": 2000,
    "backoff": {
      "type": "exponential",
      "multiplier": 2
    }
  }
}

If ElevenLabs returns a 429 (Too Many Requests), wait 60 seconds before trying again rather than failing immediately.

Optimise Script Length for Cost

ElevenLabs charges by character. A 500-character script costs significantly less than a 2,000-character one. Keep onboarding scripts to 100-150 words (about 700-900 characters including spaces). Longer scripts aren't necessarily better for an onboarding video anyway; people absorb more from shorter, focused messages.

Similarly, HeyGen's pricing depends on video duration. A 60-second video is much cheaper than a 5-minute one. If your script is long, split it into multiple shorter videos.

Cache Generated Content to Avoid Duplication

If you have multiple employees starting on the same day with similar roles, don't generate separate voiceovers for each one. Generate a generic "welcome to the company" voiceover once, then generate role-specific content separately. Store URLs in a lookup table so subsequent employees reuse existing assets where possible.

Test with a Dry Run First

Before launching your workflow to production, create a test employee record and run the entire workflow manually. Check that:

  • Claude generates sensible scripts
  • ElevenLabs produces clear audio without weird pronunciations
  • HeyGen's avatar lip-syncs properly
  • The final video plays without corruption
  • Email notifications arrive correctly

Small issues like incorrect voice IDs or API credentials are far cheaper to fix in testing.

Monitor Video Quality Across Services

HeyGen's avatar quality varies depending on which avatar you choose. The "wayne-public" avatar is free but sometimes has jerky lip-syncing. Paid avatars look more natural. If your onboarding videos are customer-facing (e.g., for new client accounts), invest in a better avatar. If they're internal, the free one is fine.

Similarly, ElevenLabs' voice quality improves with stability settings. A stability of 0.5 and similarity_boost of 0.75 works well for professional voiceovers without sounding robotic.

Cost Breakdown

ToolPlan NeededMonthly CostNotes
ElevenLabsStarter$11100,000 characters per month; $0.03 per extra 1,000 characters after
HeyGenCreator$4810 video credits per month; each video uses 1 credit regardless of length
Hour OneProfessional$99Includes branding, background music, and watermarks; optional if HeyGen branding suffices
n8n (self-hosted)Self-hosted$0Free if you host it yourself; Starter plan is $20 if you use their cloud
MakeStandard$9Per month; covers 10,000 operations, plenty for this workflow
ZapierProfessional$20Per month; suitable if you run this workflow fewer than 5 times per week
Claude (via API)Pay-as-you-go~$2Per 1 million input tokens; a 100-word script uses roughly 50 tokens

Total minimum monthly cost (self-hosted orchestration, no Hour One):

  • ElevenLabs: $11
  • HeyGen: $48
  • Claude: ~$2
  • n8n: $0
  • Total: ~$61 per month

This covers unlimited video generation. Even with Claude costs, a single video costs about $0.15 to generate. If you're onboarding 10 people per month, that's $1.50 in API costs, a bargain compared to the time saved.

If you prefer managed orchestration without self-hosting, add Make ($9) instead of n8n ($0), bringing the total to roughly $70 per month.

Once your workflow is live, new employee onboarding videos go from conception to delivery in minutes. No clicking between tools, no manual file uploads, no forgotten steps. Every new hire gets a personalised welcome that costs pennies to produce and takes zero human effort to create.

More Recipes