> ## Documentation Index
> Fetch the complete documentation index at: https://heygen-1fa696a7.mintlify.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Product Demo Videos

> Generate product demo videos programmatically from product data sheets, feature lists, and screenshots. HeyGen renders avatar-led explainers ready to publish.

## The Problem

Product demos require screen recording, narration, and editing. They go stale with every UI update. Most teams have a backlog of features that should have demo videos but don't, because production can't keep up.

## How It Works

```
Screenshots + feature specs → Video Agent prompt → Narrated walkthrough → Update by regenerating
```

Attach your product screenshots as file inputs. Video Agent creates a narrated walkthrough with an avatar presenter. When your UI changes, take new screenshots and re-run.

## Build It

<Steps>
  <Step title="Capture your product screenshots">
    Take screenshots of each feature or flow you want to demo. Name them descriptively — the file names won't matter to the API, but they help you organize.

    ```python theme={null}
    features = [
        {
            "name": "Dashboard Overview",
            "screenshot": "https://your-cdn.com/screenshots/dashboard.png",
            "description": "Main dashboard showing key metrics, recent activity, and quick actions",
        },
        {
            "name": "Kanban Board",
            "screenshot": "https://your-cdn.com/screenshots/kanban.png",
            "description": "Drag-and-drop task management with customizable columns and filters",
        },
        {
            "name": "Analytics",
            "screenshot": "https://your-cdn.com/screenshots/analytics.png",
            "description": "Team performance metrics with trend charts and export options",
        },
    ]
    ```
  </Step>

  <Step title="Build a feature-by-feature prompt">
    Structure the prompt around your features, not around a generic "product overview." Each feature gets its own segment.

    ```python theme={null}
    def build_demo_prompt(product_name, features, duration="60 seconds", audience="product managers"):
        feature_list = "\n".join(
            f"- {f['name']}: {f['description']}"
            for f in features
        )

        return f"""Create a {duration} product demo video for {product_name}.

    Target audience: {audience}

    Walk through these features using the attached screenshots as visual reference:
    {feature_list}

    Structure:
    - Hook (5s): "{product_name} helps you [key value prop] — let me show you how."
    - Feature walkthrough (80% of duration): Cover each feature with the presenter
      pointing out the key elements visible in the screenshots. Explain the benefit,
      not just what it does.
    - CTA (5s): "Start your free trial at [url]"

    Tone: Knowledgeable but approachable — like a product manager giving a live demo
    to a colleague. Not a sales pitch.

    IMPORTANT: Reference the attached screenshots as visual context. The viewer
    should see the product interface while the presenter explains each feature.
    """

    prompt = build_demo_prompt("TaskFlow", features)
    ```
  </Step>

  <Step title="Submit with screenshots as file inputs">
    Attach your screenshots so Video Agent can use them as visual context.

    ```python theme={null}
    import requests

    files = [{"type": "url", "url": f["screenshot"]} for f in features]

    resp = requests.post(
        "https://api.heygen.com/v3/video-agents",
        headers={
            "X-Api-Key": HEYGEN_API_KEY,
            "Content-Type": "application/json",
        },
        json={
            "prompt": prompt,
            "files": files,
        },
    )
    video_id = resp.json()["data"]["video_id"]
    ```

    See [Video Agent → File Input Formats](/docs/video-agent#file-input-formats) for all supported file types and upload methods.
  </Step>

  <Step title="Poll and download">
    Wait for rendering, then download. See [Video Agent docs](/docs/video-agent) for the polling pattern.
  </Step>
</Steps>

## Demo Styles

Generate different versions for different audiences:

| Style                   | Duration | Audience                | Prompt focus                                      |
| ----------------------- | -------- | ----------------------- | ------------------------------------------------- |
| **Quick overview**      | 30s      | Social media, ads       | One key value prop, fast-paced, visual-heavy      |
| **Feature walkthrough** | 60–90s   | Prospects, landing page | Feature-by-feature with benefits                  |
| **Deep dive**           | 2–3min   | Evaluators, tech buyers | Detailed functionality, integrations, edge cases  |
| **What's new**          | 30–45s   | Existing users          | Just the new/changed features from latest release |

## Staying Current

The key advantage: **when your product changes, re-run the pipeline with new screenshots.**

```python theme={null}
# Automate: take screenshots programmatically with Playwright
from playwright.sync_api import sync_playwright

def capture_screenshots(urls, output_dir="screenshots"):
    with sync_playwright() as p:
        browser = p.chromium.launch()
        page = browser.new_page(viewport={"width": 1280, "height": 720})

        for name, url in urls.items():
            page.goto(url)
            page.screenshot(path=f"{output_dir}/{name}.png")

        browser.close()

# Run this before each demo generation to always use current UI
capture_screenshots({
    "dashboard": "https://app.taskflow.com/dashboard",
    "kanban": "https://app.taskflow.com/board",
    "analytics": "https://app.taskflow.com/analytics",
})
```

<Tip>
  Combine this with [Docs to Video](/cookbook/video-agent/docs-to-video) to trigger demo regeneration automatically when your product releases a new version.
</Tip>

## Variations

* **Comparison videos:** "TaskFlow vs. Competitor" — show side-by-side screenshots
* **Customer-specific demos:** Customize the prompt with the prospect's industry and pain points for personalized demos at scale (see [Personalized Outreach](/cookbook/video-agent/personalized-outreach))
* **Interactive follow-up:** After the pre-recorded demo, offer a [Live Avatar interactive demo](/cookbook/live-avatar/interactive-product-demo) for Q\&A

***

## Next Steps

<CardGroup cols={2}>
  <Card title="Interactive Product Demo" icon="comment-dots" href="/cookbook/live-avatar/interactive-product-demo">
    Add live Q\&A to your demos with a Live Avatar.
  </Card>

  <Card title="Prompt Engineering" icon="wand-magic-sparkles" href="/cookbook/patterns/prompt-engineering">
    Write prompts that make your demos shine.
  </Card>
</CardGroup>
