{"id":"a932c46f-29bb-4c93-803f-1ddfd20d6e46","slug":"yt-digest","kind":"skill","name":"yt-digest","summary":"Paste a YouTube link, get a vault-ready research digest in 90 seconds: TL;DR, timestamped takeaways, slide screenshots, transcript. A Claude Code skill.","owner":"tga-cheetung","repoUrl":"https://github.com/tga-cheetung/yt-digest","license":"MIT","licenseTier":"permissive","trust":"community","stars":8,"match":null,"fewStars":false,"format":"skill","createdAt":"2026-05-28T22:45:51.000Z","addedAt":"2026-10-14T05:57:22.979Z","logoUrl":"https://avatars.githubusercontent.com/u/250624307?u=6b1d6cc7464936a232cf374d3272adad8da368f4&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["developer-tools","files-documents"],"tags":["claude-code","content-engine","gtm-engineering","obsidian"],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-26T22:26:29.905Z","sample":false,"url":"https://conduits.dev/tools/yt-digest","language":"Python","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# yt-digest\n\n**Paste a YouTube link. Get a vault-ready research digest in ~90 seconds for ~$0.04.**\n\nA [Claude Code](https://docs.claude.com/en/docs/claude-code) skill that turns any YouTube video into a single markdown note you can actually use: a TL;DR, 5–10 key takeaways each deep-linked to the exact second they happen, screenshots of the slides/demos/dashboards the speaker points at, and a collapsed full transcript at the bottom. The source video is downloaded, used for frame grabs, then deleted — your vault keeps ~3 MB per video, not 100.\n\nIt is **not** a content-repurposing factory. It does not turn one video into thirty social posts. It does the opposite: it turns a video into **knowledge you keep** — queryable, timestamped, and screenshotted in your second brain. Built for people who bookmark 40 videos a week and watch four.\n\n## Why this exists\n\nThe bottleneck was never finding good videos. It's that a 48-minute talk costs 48 minutes, and \"I'll watch it later\" is where good videos go to die. yt-digest makes \"I watched it\" a 90-second job: skim the TL;DR, jump to the two takeaways that matter via the timestamp deep-links, read the slide off the screenshot, move on. The full transcript is there if you need to go deeper, collapsed so it doesn't get in the way.\n\nThe digest lands as a plain markdown file in your Obsidian vault (or any markdown notes app). It's searchable forever, it links into the rest of your notes, and six months from now you can grep \"the unlimited offer construct\" and land on the exact 17-second clip that taught it to you.\n\n## What you get per video\n\n```\nvault/research/youtube/<slug>.md          # the digest\nvault/attachments/youtube/<slug>/          # frame-MM-SS.png screenshots\n```\n\nA real example (a 47:55 interview) produced: 8 TL;DR bullets, 10 numbered takeaways, 6 embedded screenshots, and timestamp deep-links back to the source — generated in about 90 seconds for roughly four cents.\n\n## Repo structure\n\n```\nyt-digest/\n├── README.md              # you are here\n├── SKILL.md               # the skill — drop into .claude/skills/yt-digest/\n├── scripts/\n│   ├── fetch.sh           # yt-dlp: metadata + captions + (optional) 720p video\n│   ├── parse_vtt.py       # VTT → clean sentence-level transcript with timestamps\n│   └── extract_frames.sh  # ffmpeg: one frame per requested timestamp\n├── LICENSE\n└── .gitignore\n```\n\nFour files. No SaaS dependencies — `yt-dlp` and `ffmpeg` run locally and cost nothing. The only spend is the model pass that picks the takeaways (~1–4 cents).\n\n## Install\n\n**Prerequisites:** [Claude Code](https://docs.claude.com/en/docs/claude-code), `yt-dlp`, `ffmpeg`, and `python3`.\n\n```bash\n# 1. macOS (Homebrew) — Linux users swap in apt/pacman\nbrew install yt-dlp ffmpeg\n\n# 2. Drop the skill into your project\ngit clone https://github.com/tga-cheetung/yt-digest.git\nmkdir -p .claude/skills/yt-digest\ncp -r yt-digest/SKILL.md yt-digest/scripts .claude/skills/yt-digest/\nchmod +x .claude/skills/yt-digest/scripts/*.sh\n\n# 3. Make sure your output dirs exist (or change the paths in SKILL.md)\nmkdir -p vault/research/youtube vault/attachments/youtube\n```\n\n## Use\n\nInside Claude Code:\n\n```\n/yt-digest https://youtu.be/BI-MNjm1tTQ\n```\n\nOr just paste a link and say \"digest this.\" Optional flags:\n\n- `--no-screenshots` — transcript-only, skips the video download (~$0.01, ~5s)\n- `--tags ai-agents,pricing` — adds tags to the digest frontmatter\n- `--slug my-name` — override the auto-generated filename\n\nThe skill prints `DIGEST: <absolute path>` as its final line, so any orchestrator, cron job, or chat bot that shells out can read the result back. (More on that in [Run it headless](#run-it-headless).)\n\n## How to tune it for your own research\n\nThree places to edit, all in `SKILL.md`:\n\n1. **Where digests land.** Change `vault/research/youtube/` and `vault/attachments/youtube/` to wherever your notes live. The skill writes plain markdown with Obsidian `![[...]]` embed syntax; if you don't use Obsidian, the fallback `![](relative/path.png)` form works in any markdown renderer.\n2. **What counts as a \"key moment.\"** Step 3 of the skill is the selection brief — the criteria for which 5–10 moments earn a bullet (frameworks, specific numbers, counterintuitive claims, on-screen references). Tighten or loosen it for your domain. Researching pricing strategy? Tell it to prioritize every dollar figure and offer construct. Researching code? Tell it to screenshot every terminal and editor pane.\n3. **When to screenshot.** The skill only grabs a frame when the speaker is clearly pointing at something visual. If you're digesting talking-head podcasts, run `--no-screenshots` and skip the video download entirely.\n\n## Run it headless\n\nThe skill takes all its input from CLI args, never prompts mid-run, and writes to a deterministic path. That means you can dispatch it from anything that can run a shell command — a cron job, a CI step, or a chat bot.\n\nThe pattern that makes it feel magical: wire a Slack/Telegram bot to shell out to Claude Code with the skill and the URL, then read the final `DIGEST:` line back and post the path (or the TL;DR) into the thread. Now \"drop a YouTube link in Slack, get a digest in your vault 90 seconds later\" is a one-message workflow from your phone.\n\nOne gotcha worth knowing if you do this: in a headless `claude -p` run, a small/cheap model will sometimes *describe* what the skill would do instead of actually invoking the scripts (turns burned, zero tool calls, nothing written). If you see that, route the headless dispatch to a more capable model — the interactive run is fine on the cheap model, it's the unattended path that needs the upgrade.\n\n## Cost\n\n| Component | Cost per 30-min video |\n|---|---|\n| yt-dlp transcript + 720p video | $0 |\n| Model pass to pick takeaways (~7K in / 800 out) | ~$0.01–0.04 |\n| ffmpeg frame extraction | $0 |\n| Vault storage (digest + screenshots) | ~3 MB |\n\nThe ~100 MB source video is deleted after frame extraction.\n\n## License\n\nMIT. Fork it, change the paths, point it at your own vault. Built by [The GTM Architects](https://www.thegtmarchitects.com).\n"}