Skip to content

Commit 5848af9

Browse files
ofershapcursoragent
andcommitted
feat: add demo video link to README, ElevenLabs audio generation scripts
Add YouTube demo video embed below the GIF in README. Add scripts/video/ with ElevenLabs TTS generation, demo script JSON, and recording guide. Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 5ba88e4 commit 5848af9

8 files changed

Lines changed: 543 additions & 15 deletions

File tree

.env.example

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,5 @@ ALERT_EMAIL_TO=team-lead@yourcompany.com
1212
CRON_SECRET=your-secret-for-cron-endpoint
1313

1414
DASHBOARD_PASSWORD=
15+
16+
ELEVENLABS_API_KEY=

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ You're about to find out.
5656

5757
<sub>Demo animation created with <a href="https://github.com/ofershap/remotion-readme-kit">remotion-readme-kit</a></sub>
5858

59+
<p align="center"><a href="https://www.youtube.com/watch?v=DqPjFWGI57A">▶ Watch the full demo (90 seconds)</a></p>
60+
5961
It connects to Cursor's Enterprise APIs, collects usage data, and automatically detects anomalies across three layers. When something looks off, you get a Slack message or email within the hour, not next month.
6062

6163
```

package-lock.json

Lines changed: 91 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "cursor-usage-tracker",
33
"version": "0.0.0-development",
44
"description": "Open-source Cursor IDE usage monitoring, anomaly detection, and alerting for enterprise teams",
5-
"homepage": "https://cursor-usage-tracker.sticklight.app",
5+
"homepage": "https://github.com/ofershap/cursor-usage-tracker#readme",
66
"type": "module",
77
"scripts": {
88
"dev": "next dev",
@@ -69,7 +69,6 @@
6969
"bugs": {
7070
"url": "https://github.com/ofershap/cursor-usage-tracker/issues"
7171
},
72-
"homepage": "https://github.com/ofershap/cursor-usage-tracker#readme",
7372
"dependencies": {
7473
"@tailwindcss/postcss": "^4.1.18",
7574
"better-sqlite3": "^12.6.2",
@@ -81,6 +80,7 @@
8180
"tailwindcss": "^4.1.18"
8281
},
8382
"devDependencies": {
83+
"@elevenlabs/elevenlabs-js": "^2.36.0",
8484
"@eslint/js": "^10.0.1",
8585
"@next/eslint-plugin-next": "^16.1.6",
8686
"@semantic-release/changelog": "^6.0.3",

scripts/video/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
output/

scripts/video/README.md

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
# Demo Video Generator
2+
3+
Generate AI-narrated demo videos for cursor-usage-tracker using ElevenLabs text-to-speech.
4+
5+
## Setup
6+
7+
1. Get an API key from [ElevenLabs](https://elevenlabs.io/app/settings/api-keys) (Starter plan at $5/mo gives 30 min of audio)
8+
2. Add to your `.env`:
9+
```
10+
ELEVENLABS_API_KEY=your_key_here
11+
```
12+
13+
## Workflow
14+
15+
```bash
16+
# 1. Generate voice samples to compare candidates
17+
source .env && tsx scripts/video/generate-audio.ts samples
18+
19+
# 2. Listen to samples in scripts/video/output/, pick your favorite
20+
21+
# 3. Generate all scene audio with your chosen voice
22+
source .env && tsx scripts/video/generate-audio.ts generate Adam
23+
24+
# 4. Print the recording guide
25+
tsx scripts/video/generate-audio.ts guide
26+
```
27+
28+
## Recording
29+
30+
The generator outputs:
31+
32+
- One MP3 per scene (`01-hook.mp3`, `02-problem.mp3`, etc.)
33+
- A `manifest.json` with narration text + screen instructions
34+
- A printed recording guide with timing and tips
35+
36+
To record:
37+
38+
1. Run mock data: `npm run generate:mock`
39+
2. Start the dev server: `DATABASE_PATH=data/mock.db npm run dev -- -p 3456`
40+
3. Pre-open all pages in browser tabs
41+
4. Play each scene's audio in headphones while screen recording
42+
5. Combine audio + screen clips in CapCut or DaVinci Resolve
43+
44+
## Script
45+
46+
The demo script (`demo-script.json`) tells "The $6,000 Save" story in ~90 seconds:
47+
48+
| Scene | Duration | What's shown |
49+
| ----------- | -------- | ------------------------------------------------------- |
50+
| Hook | ~7s | Dashboard home — "$25k/month on Cursor" |
51+
| Problem | ~15s | Elena's user page — spend spike from long conversations |
52+
| Detection | ~12s | Anomalies page — automatic detection with MTTD metrics |
53+
| Slack Alert | ~6s | The Slack notification (USP hero shot) |
54+
| Recovery | ~9s | Elena's spend chart — 8x cost drop after intervention |
55+
| Montage | ~13s | Quick cuts: model switch, plan exhaustion, unused seats |
56+
| CTA | ~7s | GitHub repo page — "Open source, deploy in 5 minutes" |
57+
58+
## Voice Candidates
59+
60+
| Voice | Style | Voice ID |
61+
| ------ | ------------------------------------ | ---------------------- |
62+
| Adam | Deep neutral American (most popular) | `pNInz6obpgDQGcFmaJgB` |
63+
| Brian | Warm conversational American | `nPczCjzI2devNBz1zQrb` |
64+
| George | Warm articulate British | `JBFqnCBsd6RMkjVDRZzb` |
65+
66+
## Transcript
67+
68+
Full narration text (doubles as a textual walkthrough):
69+
70+
> Your team is spending twenty-five thousand dollars a month on Cursor. Do you know why?
71+
>
72+
> Three developers weren't starting new conversations. Their context windows grew to fifteen million tokens. Cost per request went from seventy-two cents to over six dollars — and nobody noticed.
73+
>
74+
> This dashboard caught it automatically. It runs anomaly detection on every team member — static thresholds, statistical z-scores, and trend analysis.
75+
>
76+
> And it sent a Slack notification the moment it happened.
77+
>
78+
> After we told them, costs dropped eight-x overnight. That's six thousand dollars saved from a single alert.
79+
>
80+
> It also catches expensive model switches — fourteen dollars per request instead of forty-two cents — plan exhaustion on day one, and unused seats burning three-sixty a month.
81+
>
82+
> Open source. Self-hosted. Deploy with Docker in five minutes.

scripts/video/demo-script.json

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
{
2+
"title": "The $6,000 Save — Cursor Usage Tracker Demo",
3+
"description": "90-second product demo showing how automated anomaly detection catches costly usage patterns and saves money via Slack alerts.",
4+
"targetLength": "85-95 seconds",
5+
"voice": {
6+
"candidates": [
7+
{
8+
"name": "Adam",
9+
"voiceId": "pNInz6obpgDQGcFmaJgB",
10+
"style": "Deep, neutral American, most popular narration voice",
11+
"note": "Industry standard for tutorials. May be recognizable."
12+
},
13+
{
14+
"name": "Brian",
15+
"voiceId": "nPczCjzI2devNBz1zQrb",
16+
"style": "Warm conversational American male",
17+
"note": "Less overused than Adam, feels more natural."
18+
},
19+
{
20+
"name": "George",
21+
"voiceId": "JBFqnCBsd6RMkjVDRZzb",
22+
"style": "Warm British male, articulate",
23+
"note": "Stands out, gives authority without sounding corporate."
24+
}
25+
],
26+
"selected": "Adam",
27+
"model": "eleven_multilingual_v2",
28+
"outputFormat": "mp3_44100_128",
29+
"settings": {
30+
"stability": 0.35,
31+
"similarityBoost": 0.8,
32+
"style": 0.6,
33+
"useSpeakerBoost": true
34+
}
35+
},
36+
"scenes": [
37+
{
38+
"id": "hook",
39+
"label": "Hook — The question",
40+
"narration": "Your team is spending twenty-five thousand dollars a month on Cursor. Do you know where it's going?",
41+
"screen": "Dashboard home page. Stat cards visible: 65 members, ~$25k team spend. Daily spend chart in background.",
42+
"duration_estimate_sec": 7,
43+
"tips": "Start with dashboard already loaded. Let the numbers speak — don't move the mouse yet."
44+
},
45+
{
46+
"id": "problem",
47+
"label": "Problem — The invisible cost spike",
48+
"narration": "Meet Elena. She didn't start new conversations for a week. Her context window grew to fifteen million tokens, and her cost per request went from seventy-two cents to over six dollars.",
49+
"screen": "Click on Elena Berg in the members table. Her user page loads showing the spend chart with the $/req line spiking on Feb 10-11. Hover over the spike to show the tooltip with $/req value.",
50+
"duration_estimate_sec": 14,
51+
"tips": "Click Elena right as 'Meet Elena' is spoken. The purple $/req line spiking is the visual proof — hover over it to show the tooltip."
52+
},
53+
{
54+
"id": "detection",
55+
"label": "Solution — Automatic detection",
56+
"narration": "Cursor Usage Tracker caught it automatically — running anomaly detection across your entire team. Static thresholds, z-scores, and trend analysis.",
57+
"screen": "Navigate to the Anomalies page. Elena's critical alert is visible: 'cycle spend $3,513 is 40.1x the team median'. Show the incident timeline with MTTD/MTTI/MTTR cards.",
58+
"duration_estimate_sec": 12,
59+
"tips": "Hover over Elena's anomaly row briefly so the detail is readable. The MTTD cards at the top sell the operational maturity."
60+
},
61+
{
62+
"id": "slack_alert",
63+
"label": "USP — Slack notification",
64+
"narration": "And the moment it happened, you got a Slack alert.",
65+
"screen": "Show the Slack message in a channel. The alert block shows: user name, severity, dollar amount, model used. Linger on this for 3-4 seconds.",
66+
"duration_estimate_sec": 5,
67+
"tips": "THIS IS THE HERO SHOT. Zoom in slightly if editing. The Slack message is what makes this different from just a dashboard."
68+
},
69+
{
70+
"id": "recovery",
71+
"label": "Proof — The before/after",
72+
"narration": "One message. You tell the team to start fresh conversations. Costs drop eight-x overnight. Six thousand dollars saved.",
73+
"screen": "Back to Elena's user page. Point out or highlight the spend chart showing the drop after Feb 14. The before/after is dramatic.",
74+
"duration_estimate_sec": 10,
75+
"tips": "The visual contrast in the spend chart is the wow moment — the drop after Feb 14 is dramatic."
76+
},
77+
{
78+
"id": "montage",
79+
"label": "Montage — Other catches",
80+
"narration": "It also catches expensive model switches, plan exhaustion on day one, and unused seats burning three hundred sixty dollars a month.",
81+
"screen": "Quick cuts: (1) Marcus's anomaly showing $14.55/req model switch, 2 sec. (2) Nina's plan exhaustion alert, 2 sec. (3) Members table sorted by activity showing zeros at bottom, 2 sec.",
82+
"duration_estimate_sec": 11,
83+
"tips": "These are fast cuts — 2 seconds each. Pre-navigate to each view in separate browser tabs so you can switch quickly."
84+
},
85+
{
86+
"id": "cta",
87+
"label": "CTA — Open source, deploy now",
88+
"narration": "Open source. Self-hosted. Deploy with Docker in five minutes. Start saving before the next billing cycle.",
89+
"screen": "GitHub repo page showing the README. Docker compose section visible. Star count visible.",
90+
"duration_estimate_sec": 8,
91+
"tips": "End on the GitHub page. If you want, click the Star button as a subtle call-to-action."
92+
}
93+
],
94+
"totalEstimatedDuration": 67,
95+
"notes": [
96+
"Run mock data first: npm run generate:mock && DATABASE_PATH=data/mock.db npm run dev -- -p 3456",
97+
"Pre-open all pages in browser tabs before recording: home, Elena's page, anomalies, Slack, Marcus anomaly, Nina anomaly, members sorted, GitHub repo",
98+
"Record each scene as a separate screen recording clip",
99+
"The Slack screenshot can be a real screenshot or a mock — either works",
100+
"For the montage scene, consider recording 3 separate clips and cutting between them"
101+
]
102+
}

0 commit comments

Comments
 (0)