From antigravity-awesome-skills
Pull a YouTube video transcript into a queryable markdown vault with yt-dlp subtitle discovery, VTT cleanup, metadata frontmatter, and capture-seed stubs.
How this skill is triggered — by the user, by Claude, or both
Slash command
/antigravity-awesome-skills:ingest-youtubeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Pulls YouTube transcripts into a markdown vault as queryable typed-memory entries that downstream skills (knowledge graph extraction, voice-fingerprint training, content repurposing, action-item extraction) can act on.
Pulls YouTube transcripts into a markdown vault as queryable typed-memory entries that downstream skills (knowledge graph extraction, voice-fingerprint training, content repurposing, action-item extraction) can act on.
Same pattern as ingest-slack, ingest-whatsapp, ingest-notion, ingest-linear, ingest-github, ingest-gmail. Adding YouTube means a new normalizer, not a new architecture.
/ingest-youtube <url> for a single videoDo NOT use for:
yt-dlp directly with -f best)--days windows; this script ingests one video URL at a timeyt-dlp --write-auto-sub directly and pipe to stdout)yt-dlp is installed. If not, the script exits with install instructions: brew install yt-dlp (macOS) or pip3 install --user yt-dlp.yt-dlp --list-subs <url> to enumerate available subtitles.yt-dlp --write-sub --sub-lang <lang> --skip-download. Default language preference: en,es (English first, Spanish second).yt-dlp --print-json --skip-download.External Inputs/YouTube/<channel-slug>/<YYYY-MM-DD>-<video-slug>.md.Meta/Captures/<YYYY-MM-DD>-youtube-<channel-slug>-<video-id>.md so the seed lands in the captures aggregator.python3 ingest.py <youtube-url> [--vault <path>] [--lang <code>]
Defaults:
--vault: $VAULT_ROOT env var or current directory--lang: en,es (English first, Spanish second; matches a common bilingual default)--whisper: accepted as a future fallback flag, but this version writes a stub when no subtitles are availableThe vault file at External Inputs/YouTube/<channel-slug>/<YYYY-MM-DD>-<video-slug>.md has frontmatter:
---
type: external-input
source: youtube
video_id: <11-char ID>
url: https://www.youtube.com/watch?v=<id>
channel: <channel-name>
channel_url: https://www.youtube.com/<handle>
title: <video title>
upload_date: <YYYY-MM-DD>
duration_seconds: <int>
language: <ISO code>
subtitle_source: manual | auto | whisper
word_count: <int>
ingested_at: <ISO 8601 timestamp>
---
Body is the cleaned transcript as paragraph prose. If the source had speaker labels, format as **<speaker>:** <text> per turn.
Re-ingesting the same video URL overwrites the same vault file. The seed stub filenames hash the video_id, so the same source video produces the same stub filename across re-runs. Re-runs refresh, never duplicate.
If yt-dlp --list-subs returns no manual or auto subtitles, the script writes a stub vault note with the video metadata and source URL instead of failing silently. The --whisper flag is reserved for a future local transcription fallback and currently reports that the fallback is not implemented.
For a manual fallback today, download audio with yt-dlp, transcribe it with your local Whisper workflow, and add captions or transcript text before rerunning the ingest.
--days windows are out of scope.yt-dlp; videos without subtitles produce a metadata stub, not a transcript.yt-dlp behavior determine whether ingest succeeds.Run against the first YouTube video ever uploaded:
python3 ingest.py "https://www.youtube.com/watch?v=jNQXAC9IVRw" --vault /tmp/test
Expected output:
Wrote 39 words to /tmp/test/External Inputs/YouTube/jawed/2005-04-24-me-at-the-zoo.md. Language: en. Subtitle source: manual.
The output file contains valid frontmatter and a clean prose body.
yt-dlp (required): install via brew install yt-dlp or pip3 install --user yt-dlpwhisper-cpp (optional for a manual fallback outside this script)Bundled in adelaidasofia/ai-brain-starter, a verification harness around an AI agent so memory compounds instead of corrupts. The skill is part of the ingest-* family of vault connectors.
npx claudepluginhub sickn33/antigravity-awesome-skills --plugin antigravity-awesome-skillsIngests a YouTube video transcript as queryable markdown via yt-dlp subtitle discovery, VTT cleanup, and metadata frontmatter. Use for single-video capture into a vault.
Ingests YouTube video transcripts or channel uploads into the vault as queryable markdown files. Use for capturing talks, podcasts, or keynotes into the knowledge graph.
Extracts YouTube video transcripts and metadata, then creates a vault note with synthesized content. Triggers on any YouTube URL or phrases like "summarize this video."