The Lab · Vault · Blueprint · A first vault in under an hour

A second brain from YouTube.

Point it at channels you choose. It keeps every caption as it was; then your agent writes one dense card per video and proposes about ten waypoints that fit your channel. Runs on your machine first, for free; search and graph are optional extras.

In plain English

You already learn from a few YouTube channels. This blueprint turns them into something your agent can actually use. The captions of a handful of videos are saved exactly as they are. Your agent writes a short, dense card for each video. Then it proposes about ten "Cairns", waypoints that say what the channel keeps coming back to, and writes them once you say yes. When you ask a question, your agent reads the waypoints first, then the cards, and only opens a raw transcript when it needs the exact words. That is the whole idea: don't dump transcripts into the chat; build a map and walk it.

What you get

A three-layer vault in your workbench: about ten L1 waypoints that fit your channel, one L2 card per video, the L3 raw captions, built from three videos of one channel to start. A starter vault shows the shape before you build.

Why it matters

A raw transcript is too long to be useful and too messy to trust. The card is the useful size; the waypoint is the durable one. Your agent cites its sources instead of guessing.

How it works

yt-dlp pulls the public captions and build.py files them. enrich.py writes a rough first card and files it under ten starter waypoints made for AI channels; your agent then rewrites them for your channel. All on your machine. Embeddings in Supabase and a graph in Neo4j are optional later steps.

Your seat

You pick the channel and how many videos. You read the cards, which are drafts until a person has. You decide when a waypoint changes; your agent proposes, it does not decide.

Bring one channel. Here's which one.

One public channel you actually learn from. The blueprint pulls public captions, so it has to be content that is public or that you have the rights to process. Start small on purpose: the example config sets max_videos: 3, and three videos is enough to see the whole shape. The channel gets a short slug in the config; that slug becomes part of the file paths, so pick one you will not want to rename.

The starter vault in the blueprint folder is a tiny finished example: one waypoint index, one waypoint, one card, one raw transcript. Open it first. It is the shape your own vault will take.

Never
Never edit the raw captions, and never treat a generated card as final.

Layer three, the raw transcripts, stays exactly as captured; that is what makes a quote checkable later. Layer two, the cards, are drafts until you have read them. Layer one changes only when a source really moves a waypoint.

What happens the first time?

Six steps, all on your machine. Your agent does the typing; here is what goes by on the screen so none of it is a stranger.

  • It checks Git first. The raw captions are other people's words, so your agent checks that the raw folders are ignored by Git, and adds the line to .gitignore on your yes.
  • It checks for the caption puller. yt-dlp, the tool that fetches public captions: brew install yt-dlp on a Mac, winget install --source winget --id yt-dlp.yt-dlp on Windows. Python 3.10 or newer underneath, and nothing else. If build.py says yt-dlp is not found, close and reopen the terminal.
  • You name the channel. Copy channels.example.yaml to channels.yaml, put the channel's URL in, keep max_videos at 3.
  • It builds the raw layer. build.py pulls the captions for three videos and files each one as a raw transcript note. Nothing is rewritten.
  • It writes rough first cards. enrich.py reads the raw notes, writes a rough first card per video, mostly the opening lines, and files each under ten starter waypoints made for AI channels.
  • Your agent rewrites them for your channel. It rewrites each card from its transcript, three passes, each denser than the last, and marks it draft. Then it reads all the cards, proposes about ten waypoints that fit this channel, and waits for your yes before it writes them. Then you read, in Obsidian, or just ask your agent to show you the L1 index.
You'll see
These are the real commands, in the order they run.
cp pipeline/channels.example.yaml pipeline/channels.yaml
python3 pipeline/build.py --config pipeline/channels.yaml --vault vault --max-videos 3
python3 pipeline/enrich.py --vault vault

The rewrite after enrich.py has no command: your agent does it in the chat. On Windows, your agent uses Copy-Item for cp and py -3 for python3.

The optional steps (ingest-rag.py, query.py, ingest-graph.py) need a Supabase project, an OpenAI key for embeddings and, for the graph, Neo4j. They are the optional upgrade in the quickstart, a search database and graph, for another day. The local path is free. The optional upgrade uses OpenAI, which charges per use: a few cents for a small vault. Set a monthly limit in OpenAI's billing settings first; your agent shows you the rough cost and waits for your yes before it spends anything.

Note
Codex works the same way.

The scripts are the same. Pulling captions crosses the network, so in Codex's sandbox the build step asks before it runs. Say yes.

What you can ask your agent, from now on

Five asks that work once the vault exists. Copy, paste, read what comes back. They all follow the rule: waypoints first, cards second, raw only for a quote.

The map

Read the L1 index in my YouTube Cairns vault and tell me, in plain sentences, what this channel keeps coming back to.

A question, the right way

Answer this from my YouTube Cairns vault: [question]. Read the L1 waypoints first, then the L2 cards. Open a raw transcript only if you need the exact words, and quote them.

A new video

Here is a new transcript for the same channel: [paste or path]. Write an L2 card in the same shape as the existing ones and mark it draft. Do not touch L1.

Does a waypoint move?

Read this card and tell me whether any L1 waypoint should change because of it. Propose the change; do not make it.

One more channel

Add [channel URL] with the slug [slug] and max_videos 2, the way "Adding videos later" in the YouTube Cairns QUICKSTART says, so my rewritten cards and waypoints are not overwritten. Show me the new cards and propose any waypoint changes; do not change L1 until I say yes.

Words you now own

  • Cairn. A waypoint: one durable note about a thing the channel keeps coming back to. Layer one. About ten of them are the route map.
  • Card. One dense note per video, written by your agent from the raw transcript. Layer two. A draft until a person reads it.
  • Raw transcript. The captions as pulled, never edited. Layer three. Where a quote gets checked.
  • Caption. The text YouTube already has for a video. yt-dlp fetches it; nothing is transcribed here.
  • Chain of Density. The way your agent writes the cards: three passes over the transcript, each denser than the last, so the card says more in fewer words.
  • Embedding. A number-form of a card that a database can search by meaning. Optional; it is what the Supabase step adds.

Before you build more

Four habits the blueprint asks for, because a second brain is only worth having if you can trust it.

  • Rights first. Public content, or content you are allowed to process. Nothing else goes in.
  • Raw stays out of Git. Full transcripts of other people's videos stay on your machine. Your agent checks the raw folders are ignored by Git before the first build.
  • Read the cards. Generated cards are drafts. A card nobody has read is a guess with a nice heading.
  • Secrets stay in Infisical. The optional steps need keys. The example env file names them; the real values never go into the vault, the config, or git.
Never
Never paste a key into the chat, and never commit one.

The optional upgrade uses an OpenAI key, a Supabase key and a Neo4j password. You add each one to Infisical yourself, and your agent runs the scripts through infisical run, so no key passes through this chat or sits in a file. The Supabase key is your project's master key; it stays in Infisical only. Run infisical init once at the root of your workbench. See Keys, the First Time.

Fair questions

FAQ
Do I need Supabase for this?

No. The local vault, waypoints, cards and raw notes, works with nothing but Python and yt-dlp. Supabase, an OpenAI key and Neo4j are the optional search and graph layers.

FAQ
Can I use private videos, or my own?

Only content that is public or that you have the rights to process. Your own uploads count; someone else's members-only content does not.

FAQ
Is there a live session for this one?

No. Not scheduled, and it does not need one: the files are complete on their own. If a Tuesday ever walks it live, that session links from this page.