Turn hours of video into instant insights — fully local, fully private.
VidSage is an AI-powered video analysis tool that extracts transcripts, generates detailed explanations, creates chapter breakdowns, and exports structured notes — all running on your own machine. No cloud uploads. No subscriptions. Your content stays yours.
- ✨ New look for headings + History as rows with Open buttons (v1.9) — a proper gradient title with logo tile, a segmented Single / Batch / Online / History selector, accent-bar section headings, and the History summary is now compact rows with a narrow checkbox and a real 📖 Open button (rename a video from inside its report).
- 🤖 AI auto-tagging + one-click reports in History (v1.8) — Auto-tag selected / Auto-tag all untagged let the AI read each saved explanation and add topic tags. Tick 📖 Open on a row of the summary table to read that video's full report below it (the long list of reports is gone). Auto-tagging and AI titles had silently never worked for Claude and Gemini and weren't supported for DeepSeek/OpenAI — all fixed.
- 🧭 Simpler, readable sidebar + remembered settings (v1.7) — each option is a compact card that shows only what's selected (open it to change it). Defaults are DeepSeek Flash + local GPU transcription, and VidSage remembers your last choices (
Documents\VidSage\settings.json; API keys are never saved there). Text contrast was raised so everything is easy to read. The History page is also about 15× faster with many saved videos: a report's details load when you open it. - 🚀 Local GPU transcription (v1.6) — use your own Faster-Whisper-XXL folder from the sidebar: free, private, runs on your NVIDIA GPU (about 3–4× faster than regular local Whisper on a laptop GPU in testing). VidSage only runs it; it never changes that folder.
- 🛠️ Fixed Multilingual mode (v1.6) — the old language hint made Whisper hallucinate (fake subtitle credits, "thanks for watching" loops, even repeating the hint). No hint is sent now; use the new Names & terms box for spelling.
- 🎥 Gemini watches the whole video (v1.5) — optional checkbox under the Gemini engine: Gemini sees the motion and hears the audio instead of reading still frames. Public YouTube links go straight to Gemini; other videos are uploaded to Google and deleted straight after. Off by default because the full video leaves your PC.
- ⚡ Cloud transcription (v1.4) — optional Groq or OpenAI Whisper for videos without captions: roughly a minute instead of an hour, about $0.11 (Groq) or $0.36 (OpenAI) per hour of audio. Only the audio is uploaded, never the video; local Whisper stays the free, private default.
- 📚 Batch online videos (v1.3) — in Online Video URL mode, paste several links (one per line) and VidSage analyses them one after another. A broken link doesn't stop the rest; you get a summary table and a one-click download of all explanations.
- ✂️ Time Range — analyse only part of a long video (Start/End in the sidebar). Timestamps stay on the original timeline.
- 🧠 Smarter frame de-duplication — different slides on a white background are no longer mistaken for duplicates.
- 💸 DeepSeek Flash engine (v1.2) — a much cheaper alternative to Claude/OpenAI that also reads video frames.
- 🤖 Use VidSage from Claude Code — new
watch.pycommand-line tool + ready-made skill, so Claude can "watch" a video (YouTube captions first, Whisper fallback). See below. - 🚀
start_vidsage.bat— double-click launcher for Windows. - 🐛 Fixes — Dedup aggressiveness labels were backwards;
yt-dlpandyoutube-transcript-apiwere missing fromrequirements.txt.
Full details in CHANGELOG.md.
- Powered by OpenAI Whisper (runs locally)
- Choose from
base,small,medium, orlargemodels - Supports 40+ languages with auto-detection
- Outputs plain transcript + timestamped SRT subtitles
- Gemini (Free) — Google's free tier, great for long videos
- Claude (Paid) — Anthropic's Claude Sonnet, best quality
- OpenAI (Paid) — GPT-4o vision
- DeepSeek Flash (Cheap) — DeepSeek V4.1 Flash, reads images too, roughly a cent or two per video
- Explanation — structured breakdown: Overview, Key Concepts, Detailed Section-by-Section Analysis, Key Takeaways, Summary
- Chapters — timestamped chapter list covering the full video duration
- Timestamped Transcript — every segment linked to its timestamp
- PKM Notes — Obsidian/Notion-ready markdown with tags and backlinks
- Q&A Chat — ask questions about the video content
- Markdown (
.md) - Word Document (
.docx) - PDF (
.pdf) - SRT Subtitles (
.srt) - Plain Text (
.txt)
- Gemini whole-video mode — Gemini sees motion and hears audio (opt-in)
- Local GPU transcription via your Faster-Whisper-XXL folder
- Cloud or local transcription — Groq / OpenAI Whisper (fast) or local Whisper (free, private)
- Batch online videos — paste many YouTube/Vimeo/TikTok… links at once
- Time Range — analyse only a chosen window of the video
- YouTube captions first — skips Whisper when captions exist
- Claude Code integration —
watch.pycommand-line tool and skill
- Everything runs on your computer
- No video files are uploaded anywhere
- API calls send only text and frames — never the full video
- Results saved locally to your chosen folder
| Component | Requirement |
|---|---|
| OS | Windows 10/11 (64-bit) |
| Python | 3.9 or higher |
| RAM | 8 GB minimum, 16 GB recommended |
| GPU | Optional — NVIDIA GPU speeds up Whisper significantly |
| FFmpeg | Required (see setup below) |
git clone https://github.com/karlua86/vidsage.git
cd vidsagewinget install ffmpegRestart your terminal after installation.
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
⚠️ openai-whisperwill download PyTorch (~2 GB). This is normal and only happens once.
streamlit run app.pyOpens at http://localhost:8501
💡 Windows shortcut: double-click
start_vidsage.batinstead. It uses thevenvfolder if present, installs the requirements on first run if they're missing, warns if FFmpeg isn't installed, and starts the app.
VidSage's default local Whisper runs on your processor, which is slow. If you have an NVIDIA graphics card, you can use Faster-Whisper-XXL instead — free, private (nothing is uploaded), and in testing on a laptop GPU about 3–4× faster than regular local Whisper. It is a separate third-party program that VidSage runs for you; VidSage does not include it and never changes its folder.
What it is: a standalone program from the whisper-standalone-win project — no Python needed. It is faster-whisper (Whisper on
the CTranslate2 engine) packaged as a single .exe, with extra features such as audio filters and vocal separation. It uses the
GPU automatically when it detects an NVIDIA GPU with CUDA, otherwise the CPU.
Download & install
- Open the project page: github.com/Purfview/whisper-standalone-win and go to Releases.
- Download the Faster-Whisper-XXL release for your system (Windows 10+ or Linux; the Windows file is a
.7zarchive). - Unzip it with 7-Zip into a folder of your choice, e.g.
D:\Tools\Faster-Whisper-XXL. There is no installer. - Keep your NVIDIA graphics driver up to date (needed for GPU use).
- Models download automatically the first time you use one (from Hugging Face, into a
_modelsfolder beside the.exe). To download one in advance, run it once from a command prompt, for example:faster-whisper-xxl.exe "some-audio.mp3" --model large-v2
Use it in VidSage: in the sidebar open Transcription and choose 🚀 Local GPU (Faster-Whisper-XXL). VidSage looks for the
folder automatically (Downloads and a few common places); otherwise paste the folder that contains faster-whisper-xxl.exe. To
remember it, add FW_XXL_PATH = 'D:\Tools\Faster-Whisper-XXL' (single quotes, so the backslashes are taken literally) to .streamlit/secrets.toml. Pick one of the models already inside the
folder. large-v2 was steadier than large-v3 on Malay and Chinese–English call recordings (large-v3 mis-detected Malay as English).
Extra options (both optional)
- Names & terms — the box under Transcription. With this engine the words are sent to XXL as hotwords, which nudges spelling
(e.g.
Rainz, Puan Noor). Only list words that really occur; hotwords push hard. - Noise filter — Light denoise, Remove non-speech, Boost quiet voices, or Isolate voice (strong, about 2× slower). Leave it Off unless a recording is genuinely noisy: in testing on clear phone calls the filters did not improve accuracy and some dropped a call's first words. Compare the result with the unfiltered one.
- Known issue: in testing, XXL r245.4 crashed when automatic language detection was combined with hotwords or a filter on one recording. VidSage detects the crash, fixes the language, and re-runs automatically (it tells you when this happens).
VidSage requires an API key for the AI analysis step. Transcription (Whisper) is always free and local.
| Engine | Where to get key | Cost |
|---|---|---|
| Gemini | aistudio.google.com | Free tier available |
| Claude | console.anthropic.com | Pay per use |
| OpenAI | platform.openai.com | Pay per use |
| DeepSeek | platform.deepseek.com | Pay per use (cheapest) |
| Groq (optional, transcription only) | console.groq.com | ~$0.11 per hour of audio |
Keys are entered in the app sidebar — never stored in code.
Optional: Save your key in .streamlit/secrets.toml so you don't have to paste it every time:
GEMINI_API_KEY = "your-key-here"
ANTHROPIC_API_KEY = "your-key-here"
OPENAI_API_KEY = "your-key-here"
DEEPSEEK_API_KEY = "your-key-here"
GROQ_API_KEY = "your-key-here" # optional: fast cloud transcriptionVideo File
│
▼
┌─────────────────┐
│ Frame Sampling │ ← Extract key frames (smart scene detection)
└────────┬────────┘
│
▼
┌─────────────────┐
│ Whisper (Local) │ ← Transcribe audio to text + timestamps
└────────┬────────┘
│
▼
┌─────────────────┐
│ AI Analysis │ ← Combine frames + transcript → structured explanation
└────────┬────────┘
│
▼
┌─────────────────┐
│ Export Files │ ← MD, DOCX, PDF, SRT, TXT, PKM Notes
└─────────────────┘
- 🎓 Lectures & Courses
- 📹 Zoom / Teams Meetings
- 📊 Presentations & Webinars
- 🎙️ Podcasts & Interviews
- 🖥️ Screen Recordings
- 🎬 General Videos
- Slide upload — attach PDF/image slides alongside the video for richer analysis
- Large deck support — handles 100+ slide decks via chunked processing
- Re-analyse — update explanation and chapters with corrections or new slides
- Multi-language — transcribe and analyse in any Whisper-supported language
- Long video support — tested on 3–4 hour videos with full chapter coverage
After analysis, VidSage saves the following to your results folder:
| File | Description |
|---|---|
videoname_explanation.md |
Full AI explanation in Markdown |
videoname_explanation.docx |
Word document version |
videoname_explanation.pdf |
PDF version |
videoname_transcript.txt |
Plain transcript |
videoname_timestamped.txt |
Transcript with timestamps |
videoname_subtitles.srt |
SRT subtitle file |
videoname_chapters.txt |
Chapter list with timestamps |
videoname_pkm.md |
PKM notes for Obsidian/Notion |
Whisper is slow
→ Use small or base model, or install a CUDA-enabled PyTorch for GPU acceleration
Claude 429 rate limit error → Normal on large decks — VidSage automatically splits into batches with waits
Gemini quota exhausted → Free tier has daily limits; add billing credits at console.cloud.google.com
YouTube / online video download fails (HTTP 403 or "unable to download")
→ YouTube changes often and old yt-dlp versions stop working. Run python -m pip install -U yt-dlp and try again.
FFmpeg not found
→ Run winget install ffmpeg and restart your terminal
Copyright © 2026 VidSage. Licensed under the GNU General Public License v3.0.
Free for personal and open-source use. Commercial use requires written permission from the author.
- Streamlit — UI framework
- OpenAI Whisper — local transcription
- Anthropic Claude — AI analysis
- Google Gemini — AI analysis
- OpenCV — video frame extraction
- PyMuPDF — PDF processing
- python-docx — Word export
watch.py is a command-line version of the pipeline so Claude Code can "watch" a video:
python watch.py "https://youtu.be/XXXXXXXXXXX" --transcript-only # captions first, no download
python watch.py lecture.mp4 --start 12:30 --end 18:00 --max-frames 12 # only a window
python watch.py lecture.mp4 --at 14:05,14:40 # exact "look here" framesIt prints a Markdown report (timestamped transcript + saved frame paths) for Claude to read.
Install the ready-made skill by copying claude-skill/vidsage-watch/ into ~/.claude/skills/.
- The sidebar has an optional Time Range (Start/End) so only part of a long video is analysed. Timestamps in the transcript, SRT and frames still match the original video.
- Near-duplicate frames are detected from a 64×36 pixel-change signature instead of an 8×8 mean-hash (which treated different white slides as identical). The Dedup aggressiveness labels now match their behaviour (lower value = more frames removed).