A small, open-source CLI · v0.4.0

YouTube transcripts,
ready for your agent

Save a video’s captions as markdown. Search timestamped passages from your coding agent or terminal.

Local files. No API keys. No model downloads.

01 / Install

Choose how you want to start

Use your agent, or paste the terminal commands yourself. Both install the same CLI.

Ask your coding agent

Paste this into Pi, Codex, or Claude Code.

Install ytmd using https://gvkhosla.github.io/ytmd/llms.txt. Read the instructions and installer first. Check dependencies, ask before making system changes, and install the CLI and skill for my agent. Verify with ytmd doctor.

Already installed? Give your agent a YouTube URL and a task. No extra service or account is needed.

Use your terminal

The commands include the CLI and skills for all three agents.

macOS With Homebrew
Need Homebrew?
brew install python yt-dlp
export PATH="$HOME/.local/bin:$PATH"
curl -fsSL https://raw.githubusercontent.com/gvkhosla/ytmd/v0.4.0/install.sh -o /tmp/install-ytmd.sh
sh /tmp/install-ytmd.sh --agent all
ytmd doctor
Linux With Python + pipx

First install Python 3.9+ with SQLite FTS5 and pipx using your package manager.

Then run
pipx install yt-dlp
export PATH="$HOME/.local/bin:$PATH"
curl -fsSL https://raw.githubusercontent.com/gvkhosla/ytmd/v0.4.0/install.sh -o /tmp/install-ytmd.sh
sh /tmp/install-ytmd.sh --agent all
ytmd doctor

The installer checks dependencies and release checksums. Add ~/.local/bin to your shell profile’s PATH if it isn’t there already. Install options ↗

02 / Use

Give it a video. Get useful context.

After installing, restart your agent so it discovers the skill. Then paste this prompt and replace the URL.

Save this YouTube video with ytmd. Find the passages relevant to this repository, cite their timestamps, and suggest how to apply them: [paste URL]

Or run the commands directly

These examples use a real video: Fireship’s JavaScript in 100 Seconds.

Save and read

Fetch once, keep it locally, and print the transcript.

ytmd get "https://youtu.be/DHjqpvDnNGE"

See the outline

Metadata and chapters, without the full transcript.

ytmd info DHjqpvDnNGE

Find a passage

Search your library and include nearby context.

ytmd search "javascript" --context 15 -n 3

Read a time window

Get the relevant section, not the entire video.

ytmd show DHjqpvDnNGE --from 0:25 --to 0:45

Use --json for structured output or get --plain for text without timestamps. Prefer info before dumping a long video. All commands ↗

03 / Reference

Readable by people.
Usable by agents.

The setup, commands, output format, and limits are in one plain-text file. No JavaScript or page scraping required.

Read llms.txt ↗
Storage
SQLite is the source of truth. Markdown is a generated export. Set YTMD_DIR to change the location.
Captions, not transcription
Videos need available captions. Captions can contain mistakes; ytmd doesn’t transcribe audio.
Local search, not AI answers
Search matches words. Your agent interprets the results. No embeddings, summarizer, or paid API.
Network access
Fetching captions contacts YouTube. Saved content works offline. Browser cookies are only read if you explicitly request it.