Alchemy RecipeIntermediateautomation

Software Feature Demo Video Production for Product Releases

Published

Creating feature demo videos for product releases is crucial for customer adoption, but it's also tedious. You film the feature, record voiceover, add captions, adjust timing, export multiple formats, then upload everywhere. Each step requires switching tools and waiting for manual edits. Most teams either skip this entirely or spend weeks on a single demo video.

What if you could generate a complete, polished feature demo video from a simple script? Feed in your feature description, and watch as the system automatically records your screen interaction, generates a professional voiceover, adds pixel-perfect animations, and produces a video ready for your release notes and social channels. No jumping between applications. No waiting for voiceover artists. No manual synchronisation of audio and video.

This Alchemy workflow does exactly that. We will combine four specialised AI tools into a single automated pipeline that transforms raw feature descriptions into production-ready demo videos. You trigger the workflow once, and everything else happens without manual intervention.... For more on this, see Automated Podcast Production Workflow.

The Automated Workflow

Which Orchestration Tool to Use

For this workflow, n8n is the best choice. Unlike Zapier, n8n allows you to run long-duration workflows without timing out, which matters when video processing takes several minutes. n8n also supports conditional branching and retry logic better than Zapier, and it handles file uploads and downloads more reliably. Make (Integromat) would work, but n8n's node-based interface is clearer for visualising a multi-step video production pipeline.

If you prefer cloud-based simplicity over self-hosting, Make is your second option. If your team already uses Claude Code for other automations, you could build this there, but orchestration is messier without dedicated workflow nodes.

The Four-Step Pipeline

The workflow follows this sequence:

  1. Receive a feature description (via webhook or n8n form).
  2. Generate a demo video mockup using Demofly (which creates an AI-voiced demo video of your product interface).
  3. Extract and enhance the voiceover audio using ElevenLabs (to polish tone, add background music, adjust pacing).
  4. Layer animations and captions using PixelMotion AI (to add visual polish and emphasise key features).
  5. Download the final video and send it to your release management system (via webhook to your CMS, Slack, or email).

ClipWing sits outside this pipeline. It's useful if you want to trim or re-edit the final video, but for a zero-manual-handoff workflow, we will treat it as an optional post-production step that a human can use if needed.

Setting Up the n8n Workflow

Start with a fresh n8n workspace. Create a new workflow and add these nodes in sequence.

First, add a Webhook Trigger node:


Trigger Node: Webhook (POST)
Path: /feature-demo-trigger
Expected payload:
{
  "featureTitle": "Dark Mode Toggle",
  "featureDescription": "Users can now switch between light and dark themes from the settings menu",
  "productName": "MyApp",
  "scriptingNotes": "Focus on the toggle animation and the instant visual change"
}

Save the webhook URL. You will call this endpoint whenever you need to generate a demo video.

Next, add a code node to prepare the data for Demofly. Demofly expects a structured prompt that describes what should be recorded:

const featureTitle = $input.first().json.featureTitle;
const featureDescription = $input.first().json.featureDescription;
const productName = $input.first().json.productName;
const scriptingNotes = $input.first().json.scriptingNotes;

const demoScript = `
Product: ${productName}
Feature: ${featureTitle}

Description: ${featureDescription}

Recording Instructions:
${scriptingNotes}

Generate a 30 to 60 second demonstration video showing this feature in action. Include a professional voiceover explaining the feature. Ensure the voiceover matches the visual pacing of the demo.
`;

return {
  json: {
    featureTitle,
    featureDescription,
    productName,
    demoScript
  }
};

This code node constructs a detailed prompt that Demofly will use to generate your demo video.

Now add the Demofly node. Demofly's API works via POST request to generate a video:


Node Type: HTTP Request
Method: POST
URL: https://api.demofly.ai/v1/generate-demo
Headers:
  Authorization: Bearer YOUR_DEMOFLY_API_KEY
  Content-Type: application/json
Body:
{
  "script": {{$node["Code"].json.demoScript}},
  "style": "professional",
  "duration": 45,
  "voiceSettings": {
    "gender": "neutral",
    "pace": "normal",
    "tone": "informative"
  },
  "outputFormat": "mp4",
  "quality": "1080p"
}

Save your Demofly API key in n8n's credentials manager. The response will include a videoUrl pointing to the generated demo video hosted on Demofly's servers.

Add a Wait node here if needed. Demofly typically processes videos within 2 to 5 minutes, so you might need to poll for completion:


Node Type: Wait
Wait for: 3 minutes (adjust based on your typical Demofly processing time)

After the wait, add another HTTP Request node to download the video file and store it locally in n8n:


Node Type: HTTP Request
Method: GET
URL: {{$node["Demofly"].json.videoUrl}}
Response Format: File

This retrieves the video file and makes it available for the next steps.

Enhancing Audio with ElevenLabs

The Demofly video includes a basic voiceover, but ElevenLabs can improve it. Extract the audio track and regenerate it with better voice characteristics:


Node Type: HTTP Request (to extract audio metadata)
Method: GET
URL: https://api.elevenlabs.io/v1/voices
Headers:
  xi-api-key: YOUR_ELEVENLABS_API_KEY

This retrieves available voice options. Choose a voice ID that matches your brand tone. Then create a new voiceover node:


Node Type: HTTP Request
Method: POST
URL: https://api.elevenlabs.io/v1/text-to-speech/YOUR_CHOSEN_VOICE_ID
Headers:
  xi-api-key: YOUR_ELEVENLABS_API_KEY
  Content-Type: application/json
Body:
{
  "text": {{$node["Code"].json.demoScript}},
  "model_id": "eleven_monolingual_v1",
  "voice_settings": {
    "stability": 0.5,
    "similarity_boost": 0.75
  }
}

Save the resulting audio file. This gives you a high-quality voiceover that you can optionally mix back into the video or use as a replacement.

Adding Animations with PixelMotion AI

PixelMotion AI adds animated overlays, highlights, and captions to emphasise key moments:


Node Type: HTTP Request
Method: POST
URL: https://api.pixelmotion.ai/v1/enhance-video
Headers:
  Authorization: Bearer YOUR_PIXELMOTION_API_KEY
  Content-Type: application/json
Body:
{
  "videoUrl": {{$node["Download Video"].json.url}},
  "enhancementProfile": "demo_video",
  "animations": [
    {
      "type": "highlight_click",
      "timestamp": 5,
      "duration": 2
    },
    {
      "type": "caption",
      "timestamp": 0,
      "text": "{{$node["Code"].json.featureTitle}}",
      "position": "top_center"
    }
  ],
  "outputFormat": "mp4",
  "quality": "1080p"
}

PixelMotion will return an enhanced video URL. Download this as your final output:


Node Type: HTTP Request
Method: GET
URL: {{$node["PixelMotion"].json.enhancedVideoUrl}}
Response Format: File

Delivering the Final Video

Add a final node to send the video to your release management system. For example, if you use Slack:


Node Type: Slack
Action: Post Message
Channel: #product-releases
Message: "New demo video: {{$node["Code"].json.featureTitle}}"
File: {{$node["Final Download"].json.file}}

Or send it to your CMS via webhook:


Node Type: HTTP Request
Method: POST
URL: https://your-cms.example.com/api/videos/upload
Headers:
  Authorization: Bearer YOUR_CMS_API_KEY
  Content-Type: multipart/form-data
Body (form data):
  title: {{$node["Code"].json.featureTitle}}
  description: {{$node["Code"].json.featureDescription}}
  video: {{$node["Final Download"].json.file}}

Save and activate the workflow. Test it by calling your webhook with a sample feature description.

The Manual Alternative

If you prefer more control over each step, you can use these tools independently:

Start with Demofly's web interface rather than its API. Upload your script, review the generated video, and manually adjust pacing or voiceover emphasis before downloading.

Then open ElevenLabs separately. Paste your script into their text-to-speech tool, experiment with different voice options and emotional tones, and export the audio.

Import both the Demofly video and the ElevenLabs audio into PixelMotion AI's editor. Manually sync the audio with the video, add animations where you want them, and position captions exactly as you like.

Finally, use ClipWing if you need to trim sections, adjust colour grading, or export multiple formats for different social media platforms.

This approach takes 30 to 45 minutes per video, but it gives you granular control. Use this if your feature demos need bespoke animations or you want to match a specific brand style that the automated pipeline cannot capture.

Pro Tips

Rate Limiting and API Quotas

Demofly has a default limit of 10 videos per hour. If you release multiple features simultaneously, queue your requests using n8n's delay nodes. Add a 6-minute gap between workflow triggers to avoid hitting the rate limit.

ElevenLabs charges per character. The full voiceover script from Demofly might be 500 to 1,000 characters. At ElevenLabs' starter plan, this costs roughly 0.30 GBP per video. Consider caching voiceovers if you use the same script for multiple demo versions.

PixelMotion AI's free tier allows 2 enhancements per month. Upgrade to their pro plan if you release more than 2 features per month.

Error Handling

Add retry logic to the Demofly and PixelMotion HTTP nodes. Set them to retry up to 3 times with exponential backoff. These services occasionally timeout under load, and retries are usually successful.

Include error webhooks. If any step fails, send a Slack notification to your product team with details about which feature demo failed and why. This prevents surprise publication of broken videos.

File Storage and Cost

By default, n8n stores files in memory, which can be slow for large video files. Configure n8n to use external storage (AWS S3 or Google Cloud Storage) if you run this workflow frequently. This reduces bandwidth costs and prevents memory issues.

Automating the Trigger

Instead of manually calling the webhook, integrate it with your product management tool. If you use Linear, Jira, or GitHub Issues, set up a workflow that automatically triggers a demo video whenever a feature is tagged with "ready-for-release". This ensures demo videos are created immediately when your team marks a feature complete.

Monitoring Video Quality

Before publishing, add a quality check node that reviews the generated video. You can use a simple heuristic: if the video duration is less than 20 seconds or more than 90 seconds, flag it for manual review. Use n8n's conditional branching to route videos that fail quality checks to a human review queue in Slack.

Cost Breakdown

ToolPlan NeededMonthly CostNotes
DemoflyPro29.00 GBP10 videos per hour, 1080p output
ElevenLabsStarter11.50 GBP10,000 characters per month
PixelMotion AIPro19.99 GBPUnlimited enhancements, 1080p output
ClipWingFree0.00 GBPOptional; paid plans available for advanced editing
n8n (self-hosted)Self-hosted0.00 GBPOr cloud plan at 15.00 GBP per month
Total~60.50 GBPFor monthly feature releases

The costs above assume you release 4 feature demos per month. If you release fewer, your actual cost will be lower because you only pay per-API call for Demofly and ElevenLabs. If you release more than 10 per month, consider upgrading Demofly to their unlimited plan at 99.00 GBP per month.

Wrapping Up

This workflow eliminates the friction of manual demo video production. You go from a feature description to a polished, published video in minutes, not days. n8n handles the orchestration without you touching any code after the initial setup.

The hardest part is usually configuring the Demofly API correctly. Spend time on the initial setup to get the voiceover tone and pacing right, then let the workflow handle the rest. Adjust animation settings in PixelMotion once, and every future video will follow the same style.

Start with a single feature demo. Run the workflow, review the output, and iterate on the Demofly script prompt until the generated video matches your standards. Once you are satisfied, you have a reusable template for all future releases.

More Recipes