
Company News
Socket Joins New OpenJS Program to Fund Node.js Security Work
Socket is joining the OpenJS Security Stewardship Program to fund Node.js vulnerability research, maintainer remediation, and security releases.
@spark-apps/quickpeek
Advanced tools
npm install -g @spark-apps/quickpeek
qp localhost:3000
Requirements: ffmpeg, Groq API key (free)
| 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 |
qp localhost:3000
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.
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.
qp localhost:3000 lang=es -d "A todo app for managing daily tasks"
Record demos for Chrome extensions using the chrome: prefix:
qp chrome:your-extension-id
QuickPeek will automatically:
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:

.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;
}
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.
| File | Description |
|---|---|
demo/demo.mp4 | Final video |
demo/plan.json | Editable script (re-run to apply changes) |
plan.jsonis also accepted by VidLet'screate_projectMCP tool, which turns the steps into a.vidlettimeline project for further editing and narration.
⭐ 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
FAQs
Auto-generate demo videos for your web app with AI
The npm package @spark-apps/quickpeek receives a total of 52 weekly downloads. As such, @spark-apps/quickpeek popularity was classified as not popular.
We found that @spark-apps/quickpeek demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Company News
Socket is joining the OpenJS Security Stewardship Program to fund Node.js vulnerability research, maintainer remediation, and security releases.

Security News
Two compromised GitHub Actions were re-enabled with malicious tags intact, exposing thousands of downstream repositories to Mini Shai-Hulud.

Research
/Security News
A malicious Firefox extension fetches its payload after installation to evade detection, steal Google session cookies, and automate account takeover.