Tusk's Tomes

Import YouTube captions

Upload the session recording to YouTube as unlisted, let Google's automatic captions transcribe it, and bring the result back as a narrative chronicle written in your world's own vocabulary. No GPU, no Python, nothing to install — the transcription happens on Google's hardware instead of yours.

This is the easiest way to start, and it is the route to use if your graphics card is not an NVIDIA one. It is also, honestly, not the best output available; the audio route is better, and the gap is entirely about knowing who said what. That trade-off is explained properly below rather than buried.


The short version

You start withA video or audio recording you can upload to YouTube
You end withA narrative chronicle, a condensed version, catch-up bullets, quotes, jests and combat highlights
You needNode.js, a YouTube account, and one way to reach an AI model. That is the whole list
TimeHowever long YouTube takes to caption, then ~30 minutes unattended
CostRoughly $1–$5 of your own API credit, or $0 fully local
The catchCaption files carry no speaker labels at all — see below

Step 1 — Record the session

Anything that produces a file YouTube will accept. OBS Studio is free and records a Discord call and your desktop together; a Zoom recording or a phone on the table works too. Video is not needed for anything — audio with a still image uploads fine.


Step 2 — Upload it as unlisted or private

In YouTube Studio, upload the file and set visibility to Unlisted or Private. Unlisted means it is not indexed, not searchable and not shown on your channel; only someone holding the link can open it. Private restricts it further, to you and to accounts you name.

Worth being deliberate here. This route means your session audio reaches Google, which is exactly what the local Whisper route avoids. If that matters to you — if your table talks about things it would rather not have sitting on someone else's servers — use the audio route instead, or read is this safe? first. It is a real trade and you should make it on purpose.


Step 3 — Wait for automatic captions

YouTube generates them on its own schedule. A three-hour upload is typically ready within an hour or two of finishing processing; there is no way to hurry it. The captions appear under Subtitles in YouTube Studio once done.


Step 4 — Get the transcript out

Two ways, and they land in the same place.

Copy the text. Open the caption track, copy the transcript, and paste it straight into the Raw transcript box on the Chronicle tab. Quickest.

Download the .sbv. In Subtitles, use the menu on the caption track and choose Download .sbv. Drop that file into the Caption Repair tab, run Repair captions, then Send to refinement.

The .sbv route keeps the timestamps, which helps the pipeline segment the session sensibly, and Caption Repair does a grounding pass over the cues before they reach the chronicle pipeline. Pasting plain text is faster. Either way you end up in the same six-phase pipeline.


Step 5 — Ground it against your lore

Identical to the audio route, and just as load-bearing here.

Automatic captions have never heard of your setting. Unfamiliar proper nouns come out phonetically — a homebrew city ends up spelled three ways in one session, a character's name lands as whatever common word it sounds nearest. Hand that to a general-purpose model and it will pick a plausible spelling, commit to it, and stay consistently wrong for the length of the write-up.

Phase 1 corrects the transcript before any prose is written, against a glossary you maintain in the Tome of Lore tab or against an existing vault via the Obsidian Vault lore. Phase 2 then hands you the things it could not resolve as questions rather than guessing.

Expect more questions on this route than on the audio one. That is the pipeline doing its job — see the next section for why.


The trade-off, stated plainly

A YouTube caption file contains no speaker labels whatsoever. It is one undifferentiated stream of text. Everything about who said what has to be reconstructed from context.

Tomes does reconstruct it, and it asks you a fair number of clarifying questions in order to. Even after you answer them, attribution is a best guess in places — where the multitrack route simply knows, because each track held one person.

Notice

YouTube censors swearing, and the censorship is in the file. Automatic captions replace profanity with [ __ ], so the transcript you download has already lost it. Nothing downstream can put it back — the chronicle is written from what the captions say, not from the audio. If your table swears, and the way people actually talk is part of what you want recorded, that is a real loss rather than a cosmetic one. Whisper transcribes what was said.

YouTube captionsCraig multitrack + Whisper
Speaker labels in the sourceNoneOne track per person
Swearing and mature languageCensored to [ __ ]Kept verbatim
Attribution in the chronicleInferred, usually rightKnown
DM questions to answerMoreFewer
GPU neededNoNVIDIA, realistically
Audio leaves your machineYes, to YouTubeNo
Needs installingNothingAudio Transcription

So: if you want the chronicle to reliably say which character did what, record multitrack. If you mainly want a readable account of the session and can live with some fuzziness on attribution, this is a perfectly good place to start — and switching later costs you nothing, because the glossary and lore you build now carry straight over.


What this costs

Nothing to install and nothing to subscribe to. YouTube's captioning is free. The only spend is whatever your chosen model provider charges: roughly $1–$5 per three-hour session depending on routing, $0 extra through a Claude Code or Codex subscription you already pay for, or $0 fully local. What it costs has the current figure for each routing.

See what it costs for the full breakdown, and recommended settings for the routing that gives the best results per pound.


Next