wispr-flow
Analyze Wispr Flow voice dictation data. Stats, search, export, visualizations. Use when user says "dictation history", "word counts", "voice analytics", "how much did I dictate", "search my dictation".
Packaged view
This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.
Install command
npx @skill-hub/cli install artemxtech-personal-os-skills-wispr-flow
Repository
Skill path: skills/wispr-flow
Analyze Wispr Flow voice dictation data. Stats, search, export, visualizations. Use when user says "dictation history", "word counts", "voice analytics", "how much did I dictate", "search my dictation".
Open repositoryBest for
Primary workflow: Analyze Data & AI.
Technical facets: Full Stack, Data / AI.
Target audience: everyone.
License: Unknown.
Original source
Catalog source: SkillHub Club.
Repository owner: ArtemXTech.
This is still a mirrored public skill entry. Review the repository before installing into production workflows.
What it helps with
- Install wispr-flow into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
- Review https://github.com/ArtemXTech/personal-os-skills before adding wispr-flow to shared team environments
- Use wispr-flow for development workflows
Works across
Favorites: 0.
Sub-skills: 0.
Aggregator: No.
Original source / Raw SKILL.md
---
name: wispr-flow
description: Analyze Wispr Flow voice dictation data. Stats, search, export, visualizations. Use when user says "dictation history", "word counts", "voice analytics", "how much did I dictate", "search my dictation".
---
# Wispr Flow Skill
Access and analyze your Wispr Flow voice dictation history.
## Quick Stats
```bash
# Overall stats
{baseDir}/scripts/get-stats.py
# Today only
{baseDir}/scripts/get-stats.py --period today
# This week
{baseDir}/scripts/get-stats.py --period week
# JSON output
{baseDir}/scripts/get-stats.py --json
```
## Search
```bash
# Search all dictations
{baseDir}/scripts/search-history.py "keyword"
# Filter by app
{baseDir}/scripts/search-history.py "keyword" --app ghostty
# Date range
{baseDir}/scripts/search-history.py "keyword" --from 2026-01-01 --to 2026-01-10
```
## Export
```bash
# JSON backup (text only, portable)
{baseDir}/scripts/export-data.py -o ~/Downloads/wispr-backup.json
# Obsidian daily notes format
{baseDir}/scripts/export-data.py --format obsidian -o ~/vault/Voice/
```
## Visualization
```bash
# Generate interactive HTML dashboard
{baseDir}/scripts/create-dashboard.py -o ~/Downloads/wispr-dashboard.html
open ~/Downloads/wispr-dashboard.html
```
## Quick Queries (Direct SQL)
```bash
# Recent dictations (EST timezone)
sqlite3 ~/Library/Application\ Support/Wispr\ Flow/flow.sqlite "
SELECT datetime(timestamp, '-5 hours') as time, app, substr(formattedText, 1, 80)
FROM History ORDER BY timestamp DESC LIMIT 10
"
# Words by app
sqlite3 ~/Library/Application\ Support/Wispr\ Flow/flow.sqlite "
SELECT app, SUM(numWords) as words FROM History
WHERE app IS NOT NULL GROUP BY app ORDER BY words DESC LIMIT 10
"
# Today's word count
sqlite3 ~/Library/Application\ Support/Wispr\ Flow/flow.sqlite "
SELECT SUM(numWords) FROM History
WHERE date(timestamp, '-5 hours') = date('now', '-5 hours')
"
```
## Database
**Location:** `~/Library/Application Support/Wispr Flow/flow.sqlite`
**Key tables:**
- `History` - all dictations (timestamp, app, formattedText, numWords, duration, audio blob)
**Timezone:** Database stores UTC. Use `-5 hours` for EST.
## Space Management
See [docs/space-management.md](docs/space-management.md) for cleaning up audio blobs.
## Troubleshooting
See [docs/troubleshooting.md](docs/troubleshooting.md) for common issues.
---
## Referenced Files
> The following files are referenced in this skill and included for context.
### docs/space-management.md
```markdown
# Space Management
The Wispr Flow database can grow large due to audio blobs stored with each dictation.
## Check Space Usage
```bash
# Total database size
ls -lh ~/Library/Application\ Support/Wispr\ Flow/flow.sqlite
# Audio blob size
sqlite3 ~/Library/Application\ Support/Wispr\ Flow/flow.sqlite "
SELECT
ROUND(SUM(LENGTH(audio))/1e9, 2) as audio_gb,
ROUND(SUM(LENGTH(screenshot))/1e9, 2) as screenshot_gb
FROM History
"
# Size breakdown by month
sqlite3 ~/Library/Application\ Support/Wispr\ Flow/flow.sqlite "
SELECT
strftime('%Y-%m', timestamp) as month,
COUNT(*) as dictations,
ROUND(SUM(LENGTH(audio))/1e6, 1) as audio_mb
FROM History
GROUP BY month
ORDER BY month
"
```
## Clean Up Audio (Keep Text)
Delete audio blobs older than 30 days while keeping all text:
```bash
sqlite3 ~/Library/Application\ Support/Wispr\ Flow/flow.sqlite "
UPDATE History
SET audio = NULL, builtInAudio = NULL
WHERE timestamp < datetime('now', '-30 days')
"
# Reclaim space (important!)
sqlite3 ~/Library/Application\ Support/Wispr\ Flow/flow.sqlite "VACUUM"
```
## Backup Before Cleaning
Always backup first:
```bash
cp ~/Library/Application\ Support/Wispr\ Flow/flow.sqlite ~/Downloads/wispr-backup-$(date +%Y%m%d).sqlite
```
## Typical Sizes
- Text only: ~1-2 MB per 1000 dictations
- With audio: ~300 MB per 1000 dictations (varies by length)
## Full Backup
```bash
# Full database (with audio)
cp ~/Library/Application\ Support/Wispr\ Flow/flow.sqlite ~/Downloads/wispr-full-backup.sqlite
# Text-only export (portable JSON)
.claude/skills/wispr-flow/scripts/export-data.py -o ~/Downloads/wispr-text-backup.json
```
```
### docs/troubleshooting.md
```markdown
# Troubleshooting
## Database Not Found
**Error:** `Wispr Flow database not found`
**Solution:** Wispr Flow stores data at:
```
~/Library/Application Support/Wispr Flow/flow.sqlite
```
If missing:
1. Make sure Wispr Flow is installed
2. Dictate something to create the database
3. Check if path has changed: `find ~/Library -name "flow.sqlite" 2>/dev/null`
## Empty Results
**Issue:** Stats show 0 dictations
**Check:**
```bash
# Verify data exists
sqlite3 ~/Library/Application\ Support/Wispr\ Flow/flow.sqlite "SELECT COUNT(*) FROM History"
# Check for cancelled entries
sqlite3 ~/Library/Application\ Support/Wispr\ Flow/flow.sqlite "
SELECT status, COUNT(*) FROM History GROUP BY status
"
```
## Timezone Issues
**Issue:** Times appear wrong
The database stores UTC timestamps. Scripts use `-5 hours` offset for EST.
**Adjust for your timezone:**
- EST: `-5 hours`
- PST: `-8 hours`
- UTC: no offset
Edit the `TZ_OFFSET` constant in scripts if needed.
## Large Database
**Issue:** Database is very large (>5GB)
Most space is audio blobs. See [space-management.md](space-management.md) for cleanup.
## Permission Denied
**Error:** Cannot read database
```bash
# Check permissions
ls -la ~/Library/Application\ Support/Wispr\ Flow/flow.sqlite
# Fix if needed
chmod 644 ~/Library/Application\ Support/Wispr\ Flow/flow.sqlite
```
## Database Locked
**Error:** `database is locked`
Wispr Flow is actively writing. Either:
1. Wait a moment and retry
2. Make a copy and query that:
```bash
cp ~/Library/Application\ Support/Wispr\ Flow/flow.sqlite /tmp/wispr-copy.sqlite
sqlite3 /tmp/wispr-copy.sqlite "SELECT COUNT(*) FROM History"
```
```