npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

demo-dev

v0.0.2-alpha.0

Published

Generate polished product demo videos with one command. Just give a URL and a prompt.

Readme

demo-dev

Generate polished product demo videos with one command.

Give a URL and a prompt. Get a narrated, Screen Studio-style video.

npx demo-dev demo --base-url https://your-app.com --prompt "Show the dashboard and create a new project" --frame

What it does

demo-dev opens your web app in a headless browser, navigates it like a human, records everything, adds AI narration, and renders a polished mp4.

  • AI plans the demo from a natural language prompt
  • Ghost-cursor moves the mouse with human-like Bezier curves
  • Playwright screencast records continuously at 60fps
  • CSS zoom animates smoothly into click targets (Screen Studio style)
  • ElevenLabs / OpenAI / local TTS generates narration per scene
  • FFmpeg composes the final video with speed ramps, browser frame, and audio

Quick start

npm install -g demo-dev
npx playwright install chromium

Generate a demo:

demo-dev demo \
  --base-url https://your-app.com \
  --prompt "Show the onboarding flow and invite a teammate" \
  --frame

Authenticated apps

demo-dev auth --base-url https://your-app.com --email [email protected] --password 'your-password'
demo-dev demo --base-url https://your-app.com --prompt "..." --frame

Commands

demo-dev demo        # Full pipeline: prompt -> capture -> voice -> render
demo-dev auth        # Login and save browser session
demo-dev capture     # Record only (no voice/render)
demo-dev voice       # Generate TTS narration only
demo-dev render      # Capture + voice + compose video
demo-dev plan        # Generate demo plan from git diff
demo-dev probe       # Plan + probe pages for element discovery
demo-dev init        # Create config file in your project
demo-dev doctor      # Check environment (ffmpeg, playwright, etc.)
demo-dev config      # Show resolved config
demo-dev providers   # List available AI/TTS providers
demo-dev comment     # Post demo as a PR comment

Run demo-dev <command> --help for detailed options.


Key flags

| Flag | Description | |------|-------------| | --prompt "..." | Natural language description of the demo to create | | --frame | Wrap video in a browser window with gradient background | | --quality draft\|standard\|high | Video quality preset | | --base-url | URL of the app to demo | | --base-ref | Git base ref for diff-based planning (default: origin/main) | | --output-dir | Where to write artifacts (default: artifacts) |


AI & voice providers

Set via environment variables:

# AI planning (pick one)
DEMO_AI_PROVIDER=claude          # Uses local Claude CLI
DEMO_AI_PROVIDER=openai          # Uses OpenAI API
DEMO_OPENAI_API_KEY=sk-...

# Voice narration (pick one)
DEMO_TTS_PROVIDER=elevenlabs     # Best quality
DEMO_ELEVENLABS_API_KEY=sk_...
DEMO_ELEVENLABS_VOICE_ID=...

DEMO_TTS_PROVIDER=openai         # Good quality
DEMO_OPENAI_API_KEY=sk-...

DEMO_TTS_PROVIDER=local          # Free, uses macOS `say` command

Config file

Create a demo.dev.config.json in your project:

{
  "projectName": "My App",
  "baseUrl": "http://localhost:3000",
  "baseRef": "origin/main",
  "outputDir": "artifacts",
  "preferredRoutes": ["/", "/dashboard"],
  "featureHints": ["dashboard", "settings"],
  "auth": {
    "loginPath": "/login",
    "emailTarget": { "strategy": "css", "value": "#email" },
    "passwordTarget": { "strategy": "css", "value": "#password" },
    "submitTarget": { "strategy": "role", "role": "button", "name": "Login" }
  }
}

How it works

prompt + URL
     |
     v
Playwright explores the site (screenshots + interactive elements)
     |
     v
AI generates a demo plan (scenes, actions, narration text)
     |
     v
ghost-cursor executes actions with human-like mouse movement
     |
     v
page.screencast records continuous video + CSS zoom on interactions
     |
     v
ElevenLabs/OpenAI generates narration audio per scene
     |
     v
FFmpeg composes: speed ramps + browser frame + audio sync
     |
     v
polished mp4

Requirements

  • Node.js >= 20
  • FFmpeg (install via brew install ffmpeg or equivalent)
  • Chromium (installed via npx playwright install chromium)

License

MIT