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

@spark-apps/quickpeek

v1.1.3

Published

Auto-generate demo videos for your web app with AI

Readme

Demo videos for your web app with AI

Because Tutorial Videos are Overrated!

npm MIT Discord GitHub Stars


Quick Start

npm install -g @spark-apps/quickpeek
qp localhost:3000

Requirements: ffmpeg, Groq API key (free)

Features

| Feature | Description | |---------|-------------| | AI Planning | Groq AI analyzes your app and generates demo steps | | Script Mode | Provide your own narration script, AI maps it to UI actions | | Capture Mode | Record your own interactions → replayable plan.json | | Voice Over | Free Edge TTS narration in 60+ languages | | Karaoke Captions | Word-by-word highlighted subtitles | | Background Music | Optional music with fade in/out | | Smart Zoom | Per-step zoom for focused demos | | Chrome Extensions | Record demos for Chrome extensions |

Examples

Basic — AI generates the plan

qp localhost:3000

Script mode — you write the narration

qp localhost:3000 --script narration.txt

Script file format (one caption per line, # for comments):

# My app demo
We start on the dashboard — your main workspace.
Let's search for a customer by typing their name.
Click the result to open their profile.

Capture mode — record your own interactions

qp capture localhost:3000

Browse the app freely, press Enter when done. QuickPeek converts your clicks, typing, and scrolls into a plan.json that can be replayed as a polished video.

With options

qp localhost:3000 lang=es -d "A todo app for managing daily tasks"

Chrome Extensions

Record demos for Chrome extensions using the chrome: prefix:

qp chrome:your-extension-id

QuickPeek will automatically:

  1. Find the extension in your Chrome installation
  2. Load and analyze the extension popup UI
  3. Generate a demo plan with AI

The popup URL is detected from the extension's manifest.

| Option | Description | |--------|-------------| | lang | Voice language (en, es, ar, zh...) | | -d, --description | App description to guide AI | | -s, --script | Path to narration script file | | video.width/height | Resolution (default: 1080x1920) | | video.quality | Quality 0-1 (default: 0.5) | | music.path | Background music file | | music.volume | Music volume 0-1 (default: 0.3) | | output.dir | Output directory (default: ./demo) |

Config is auto-generated on first run. Edit quickpeek.config.json to customize.

| Code | Language | Code | Language | |------|----------|------|----------| | en | English | ar | Arabic | | es | Spanish | fr | French | | de | German | zh | Chinese | | ja | Japanese | ko | Korean | | pt | Portuguese | hi | Hindi | | it | Italian | ru | Russian |

See src/voices.ts for all 60+ supported languages.

Edit captions.css (auto-generated) to customize:

Classic Yellow

.caption {
  font-family: Arial, sans-serif;
  -webkit-text-stroke: 3px #000000;
}
.caption .regular {
  font-size: 56px;
  color: #FFFFFF;
}
.caption .highlight {
  font-size: 64px;
  color: #FFFF00;
}

Plan Actions

Edit demo/plan.json to customize your demo. Each step uses one of these actions:

| Action | Target | Value | Description | |--------|--------|-------|-------------| | wait | - | - | Pause for narration (intro/outro) | | click | "button text" | - | Click button/link | | click-N | "button text" | - | Click N times (e.g., click-2, click-3) | | type | input[name="field"] | "text to type" | Type into input field | | upload | input[type="file"] | "path/to/file" | Upload file to form | | select | select[name="field"] | "option text" | Select dropdown option | | check | input[type="checkbox"] | - | Toggle checkbox | | drag | input[type="range"] | "0"-"100" | Drag slider to value | | drag | canvas | "around" | Full 360° rotation (returns to start) | | drag | canvas | "rotate" | Rotate ~270° (stays at new angle) | | drag | canvas | "rotate:90" | Rotate specific angle (circular) | | drag | canvas | "rotate:x-90" | Rotate on X axis (horizontal drag) | | drag | canvas | "rotate:y45" | Rotate on Y axis (vertical drag) | | drag | - | "left" "right" "up" "down" | Directional drag | | scroll | - | "up" "down" "bottom" | Scroll page | | scroll | - | "-10" to "10" | Zoom camera (negative=out, positive=in) | | media | "scale" or "center" | "path/to/file" | Display image/video fullscreen | | showDownload | - | - | Show the last downloaded file |

Target shortcuts: For buttons and links, use simplified text like "download" or "extract frame" instead of CSS selectors.

Output

| File | Description | |------|-------------| | demo/demo.mp4 | Final video | | demo/plan.json | Editable script (re-run to apply changes) |

🌱 Support & Contributions

Star the repo & I power up like Mario 🍄
Devs run on coffee - [Buy me one?][coffee-link]
💖 Sponsor Your support helps maintain and improve the tool 💰 Crypto tips welcome - Tip in crypto
🤝 Contributions are welcome - [🍴 Fork][fork-link], improve, PR!
🎥 Need help? [Setup Tutorial][vid-link] • Join Discord


MIT License - Made with ☕ by Spark Apps