Skill

Ingest YouTube Transcripts into Your Vault

Pulls a YouTube video's transcript into a markdown vault as a typed, queryable memory entry.

Works with youtubeyt dlp

91
Spark score
out of 100
Updated 12 days ago
Version 15.7.0

Add to Favorites

Why it matters

Automatically pull transcripts and metadata from YouTube videos into your personal knowledge vault, making them easily searchable and actionable for downstream AI tasks.

Outcomes

What it gets done

01

Download YouTube transcripts and metadata.

02

Clean and format transcripts into markdown files.

03

Create knowledge graph seeds from transcript content.

04

Organize ingested content by channel and video.

Install

Add it to your toolbox

Run in your project directory:

curl -fsSL https://spark.entire.vc/get/ag-ingest-youtube | bash

Overview

ingest-youtube - YouTube-to-vault connector

Ingest-youtube turns a single YouTube video into a clean, structured markdown note. It prioritizes manual subtitles over auto-generated captions, strips VTT timing markers, deduplicates repeated lines, and writes the result with full frontmatter metadata to a dated vault path. Use it when you want a YouTube talk, podcast, or keynote captured as a searchable vault note - not for downloading video files, channel-wide syncs, live streams, or non-YouTube sources.

What it does

Ingest-youtube pulls a single YouTube video's transcript into a markdown vault as a typed, queryable memory entry, following the same normalizer pattern as ingest-slack, ingest-whatsapp, ingest-notion, ingest-linear, ingest-github, and ingest-gmail - adding YouTube means a new normalizer, not a new architecture. Given one video URL, it verifies yt-dlp is installed, lists available subtitles, and prefers manual subs over auto-generated captions (manual subs preserve creator punctuation and speaker labels; auto-gen is uppercase with no punctuation). It downloads the highest-priority subtitle as VTT with a default language preference of English then Spanish, strips VTT timing markers, merges the text into clean prose paragraphs, and deduplicates the repeated lines that auto-generated VTTs are prone to, preserving speaker labels where the source had them. It also pulls video metadata (title, channel, upload date, duration, video_id, URL) and writes everything to External Inputs/YouTube/<channel-slug>/<YYYY-MM-DD>-<video-slug>.md with YAML frontmatter carrying the video ID, URL, channel, title, dates, language, subtitle source, word count, and ingestion timestamp. The transcript is scanned for trigger keywords - decision, framework, model, principle, "the lesson is," playbook, anti-pattern, case study - and each match spawns a writing-seed stub in Meta/Captures/ so it lands in the captures aggregator. A run prints a summary of the file path, transcript word count, language, and seeds detected. Re-ingesting the same URL overwrites the same vault file, and seed-stub filenames hash the video_id so repeated runs refresh rather than duplicate.

When to use - and when NOT to

Use it when a user pastes a YouTube URL and asks for a transcript or summary, runs /ingest-youtube <url> on one video, or asks to capture, sync, ingest, transcribe, or pull a talk, podcast, or keynote into the vault. Do not use it to download the actual video file (use yt-dlp -f best directly instead), for channel-wide ingestion or --days windows (it only ingests one video URL per run), for live streams (their transcripts are not stable), for non-YouTube sources like Vimeo, Twitch, or Twitter Spaces (they have their own connectors), or for a one-off transcript read where no vault file is wanted (run yt-dlp --write-auto-sub directly and pipe to stdout instead).

Inputs and outputs

Input is a single http(s) YouTube video URL, plus optional --vault <path> (defaults to the $VAULT_ROOT env var or the current directory) and --lang <code> (defaults to en,es). Output is the markdown vault file described above, plus any writing-seed stub files for trigger-keyword matches. If yt-dlp --list-subs finds no manual or auto subtitles, the script writes a metadata-only stub vault note instead of failing silently - the --whisper flag is accepted for a future local-transcription fallback but currently reports that the fallback is not implemented; a manual workaround is to transcribe the audio with a local Whisper workflow and add the transcript before rerunning ingest.

python3 ingest.py <youtube-url> [--vault <path>] [--lang <code>]

Integrations

Depends on yt-dlp (required - install via brew install yt-dlp or pip3 install --user yt-dlp) for subtitle enumeration, download, and video metadata. whisper-cpp is an optional dependency for a manual transcription fallback performed outside the script itself. The skill is bundled in adelaidasofia/ai-brain-starter, a verification harness around an AI agent built so memory compounds instead of corrupts, and belongs to that project's ingest-* family of vault connectors.

Who it's for

Anyone running a personal knowledge vault who wants YouTube talks, podcasts, and keynotes captured as structured, searchable notes rather than left as an unindexed link - particularly useful ahead of downstream skills like knowledge-graph extraction, voice-fingerprint training, content repurposing, or action-item extraction that need a typed transcript to work from.

FAQ

Common questions

Discussion

Questions & comments · 0

Sign In Sign in to leave a comment.