prompt-lookup
Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use…
Turn a YouTube URL into a vault-ready research digest — transcript, key learning moments with timestamp deep-links, and screenshots of visual moments (slides, demos, dashboards). Use when the user pastes a YouTube link they're researching, says "summarize this video",
Claude Code
$ npx -y skills add tga-cheetung/yt-digest --skill yt-digest --agent claude-code
Codex
$ npx skills add tga-cheetung/yt-digest --skill yt-digest -a codex -y
Cursor
$ npx skills add tga-cheetung/yt-digest --skill yt-digest -a cursor -y
Gemini CLI
$ npx skills add tga-cheetung/yt-digest --skill yt-digest -a gemini-cli -y
GitHub Copilot
$ npx skills add tga-cheetung/yt-digest --skill yt-digest -a github-copilot -y
OpenCode
$ npx skills add tga-cheetung/yt-digest --skill yt-digest -a opencode -y
Windsurf
$ npx skills add tga-cheetung/yt-digest --skill yt-digest -a windsurf -y
name: yt-digest description: Turn a YouTube URL into a vault-ready research digest — transcript, key learning moments with timestamp deep-links, and screenshots of visual moments (slides, demos, dashboards). Use when the user pastes a YouTube link they're researching, says "summarize this video", "/yt-digest <url>", "youtube digest", or asks to extract key points from a YouTube talk. Output goes to vault/research/youtube/<slug>.md with screenshots in vault/attachments/youtube/<slug>/. Source MP4 is auto-deleted after frame extraction. argument-hint: "<youtube-url> [--no-screenshots] [--tags tag1,tag2] [--slug custom-slug]"
Process a YouTube video into a single markdown research note in your notes vault. Drop a link, get a digest that's faster to consume than the video.
Headless-safe: all inputs come from CLI args, no interactive prompts, deterministic output path so an orchestrator can read the result back.
Required: a YouTube URL (any form — `youtu.be/x`, `youtube.com/watch?v=x`, `youtube.com/shorts/x`).
Optional flags:
If no URL is provided, abort with a one-line error — do NOT prompt the user (this skill runs headless).
mkdir -p /tmp/yt-digest
META_JSON=$(.claude/skills/yt-digest/scripts/fetch.sh "$URL" "/tmp/yt-digest/staging-$$" ${NO_SCREENSHOTS:+--no-video})Parse `META_JSON` (one-line JSON) for: `id`, `title`, `channel`, `duration_seconds`, `upload_date` (YYYYMMDD), `slug`, `transcript_path`, `video_path`.
Override `slug` if `--slug` was passed.
Set up paths:
WORK_DIR="/tmp/yt-digest/staging-$$" ATTACH_DIR="vault/attachments/youtube/$SLUG" DIGEST_PATH="vault/research/youtube/$SLUG.md" mkdir -p "$ATTACH_DIR" "$(dirname "$DIGEST_PATH")"
**If `transcript_path` is empty:** YouTube has no captions for this video. Abort with: "No captions available for this video. Re-run with audio re-transcription (not yet implemented) or skip." Clean up `$WORK_DIR` before exiting.
TRANSCRIPT_JSON=$(.claude/skills/yt-digest/scripts/parse_vtt.py "$TRANSCRIPT_PATH")
`TRANSCRIPT_JSON` is `[{start_seconds, text}, ...]` with rolling-caption duplicates removed.
Read the full transcript. Identify **5-10 key moments** that earn a bullet in the digest. Each moment is:
{
"start_seconds": 754,
"title": "Concise one-line insight (≤ 12 words)",
"quote": "Verbatim line from the transcript that earned this bullet",
"needs_screenshot": true,
"rationale": "Why a screenshot would help — e.g. 'slide showing the 6-bucket framework'"
}Selection criteria:
Set `needs_screenshot: true` ONLY when the speaker is clearly referencing a visual (slide, demo, chart, code). Pure talking-head insights get `needs_screenshot: false`.
**Anti-patterns** — don't pick:
If `--no-screenshots` was passed, skip this step.
Collect timestamps where `needs_screenshot: true`:
.claude/skills/yt-digest/scripts/extract_frames.sh "$VIDEO_PATH" "$ATTACH_DIR" 754 1230 1890
Frames land as `frame-MM-SS.png` in `$ATTACH_DIR`.
Write `$DIGEST_PATH` using this exact structure:
--- source: youtube url: https://youtube.com/watch?v=<id> channel: <channel> title: <title> duration: <hh:mm:ss> published: <YYYY-MM-DD from upload_date> digested: <today's date YYYY-MM-DD> tags: [youtube, research, <user-supplied tags>] --- # <title> **Channel:** <channel> · **Length:** <hh:mm:ss> · **Published:** <YYYY-MM-DD> · [Watch ↗](<url>) ## TL;DR - 3-5 punchy bullets capturing the video's thesis. Each bullet stands alone. ## Key Takeaways ### 1. <title from moment> · [<MM:SS>](<url>&t=<start_seconds>s) <2-4 sentences expanding the insight. Reference the screenshot if present.> ![[frame-MM-SS.png]] <!-- only if needs_screenshot was true --> > <verbatim quote> ### 2. <next moment...> ... ## Open Questions - 1-3 questions the video raises but doesn't answer, or things worth trying - Skip this section if nothing concrete comes to mind — don't manufacture filler ## Full Transcript <details> <summary>Click to expand</summary>
[00:00] First line of transcript text. [00:08] Second line...
</details>
Notes on assembly:
Use Python rather than `rm -rf` — Claude Code's safety policy hard-blocks `rm -rf` even when explicitly allowlisted, which would break he
Paste a YouTube link. Get a vault-ready research digest in ~90 seconds for ~$0.04.
Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use…
AI-driven presentation workflow for generating editable PPTX decks and slides, reconstructing page visuals, creating reusable…
Use this skill when the user wants a .pptx with smooth cross-slide animation — PowerPoint Morph transitions, Keynote-style…
Create stunning, animation-rich HTML presentations from scratch or by converting PowerPoint files. Use when the user wants to…