Turn any YouTube video into a polished research report.
video-lens is a coding agent skill that fetches a YouTube transcript and generates a structured HTML report — executive summary, takeaway, key points with analysis, timestamped topic outline, and an embedded in-page player.
- Executive summary — 3–5 sentence TL;DR overview
- Takeaway — the single most important insight (1–3 sentences)
- Key points — bulleted, scannable insights with supporting detail
- Timestamped outline — click topics to expand summaries; click timestamps to jump the player
- In-page YouTube player — watch while reading; auto-highlights the current section
- Keyboard shortcuts — playback speed, layout resize (S/M/L), navigation, and more (
?for help) - Markdown export — copy the full report as Markdown in one click
- Dark mode — auto-detects system preference; remembered across sessions
- Video gallery — browse, search, and filter all your saved reports by title, channel, tag, or keyword; shows thumbnails, summaries, and tags at a glance
| Tool | Purpose |
|---|---|
| A supported coding agent | Runs the skill (see Supported Agents) |
| Python 3 | Fetches the transcript |
| Optional: Raycast | Trigger from anywhere via hotkey (macOS) |
| Optional: Task | Install/dev commands alias (brew install go-task) |
| Optional: Deno | Required by yt-dlp (brew install deno) |
Note: video-lens only works for videos that have captions/subtitles available. Videos with captions disabled will produce an error.
video-lens uses the universal SKILL.md format — any agent that supports it can run this skill.
npx skills add kar2phi/video-lens
pip install youtube-transcript-api yt-dlp
brew install deno # optional, needed by yt-dlpThen use /video-lens <url> in any supported agent.
No repo clone or Task required — just run:
mkdir -p ~/.claude/skills/video-lens && \
curl -Lo ~/.claude/skills/video-lens/SKILL.md https://raw.githubusercontent.com/kar2phi/video-lens/main/skills/video-lens/SKILL.md && \
curl -Lo ~/.claude/skills/video-lens/template.html https://raw.githubusercontent.com/kar2phi/video-lens/main/skills/video-lens/template.html && \
pip install youtube-transcript-api yt-dlp
# Optional: deno is required by yt-dlp as a JavaScript runtime
brew install denoOther agents: Replace
~/.claude/with~/.copilot/,~/.gemini/,~/.cursor/, etc. in the commands above. Or usenpx skills add kar2phi/video-lensto install for all detected agents at once.
git clone https://github.com/kar2phi/video-lens.git
cd video-lens
task install-libraries
# Optional: deno is required by yt-dlp as a JavaScript runtime
brew install denotask install-skill-localtask install-raycast AGENT=claudeRequires Raycast. The script opens a new iTerm2 tab (or Terminal.app if iTerm2 isn't installed), launches Claude with the required permissions, and runs the skill.
/video-lens https://www.youtube.com/watch?v=...
Claude fetches the transcript, generates the report, and opens it in your browser at http://localhost:8765/.
Browse, search, and filter all your saved reports by title, channel, tag, or keyword:
After generating reports, open the gallery:
/video-lens-gallery
Or rebuild the index manually:
task build-indexThe gallery opens at ~/Downloads/video-lens/index.html.
Invoke the video-lens command, paste a YouTube URL (or leave blank to use the clipboard), and choose a model (default: Sonnet). The report opens automatically in your browser.
Reports are saved to ~/Downloads/.
To iterate on skills/video-lens/template.html without running a real video:
task devOpens a rendered sample report at http://localhost:8765/sample_output.html.
video-lens/
skills/
video-lens/
SKILL.md ← skill prompt (source of truth)
template.html ← HTML report template (source of truth)
video-lens-gallery/
SKILL.md ← gallery skill prompt (source of truth)
index.html ← gallery viewer (source of truth)
scripts/
backfill_meta.py ← backfills meta blocks into old reports
build_index.py ← builds manifest.json and copies index.html
scripts/
raycast-video-lens.sh ← Raycast script (source of truth)
yt_template_dev.py← Dev server helper
Taskfile.yml
requirements.txt
Always edit files in this repo, then deploy with task install-skill-local AGENT=claude and task install-raycast AGENT=claude. Never edit directly in ~/.{agent}/skills/ or ~/.raycast/scripts/.
PRs welcome. Keep the skill prompt in skills/video-lens/SKILL.md and the HTML template in skills/video-lens/template.html — those are the sources of truth.
MIT

