---
cursor:
  subagentId: "bc-04b63880-4b86-55f9-9040-7f0591238b68"
---

# How the Const interview transcripts were made

Working note for `docs/sources/interviews/` and `docs/research/const-interviews-voice-and-ideas.md`.

## Routes tried, in order, and what happened

Same VM class as the model-keynotes worker; same wall.

- (a) `youtube-transcript-api`: `RequestBlocked` on every video.
- (b) `yt-dlp` with `player_client=android,ios,tv_embedded`, then with the `bgutil-ytdlp-pot-provider` PO-token server (node, built from source) and every other client (`mweb`, `tv`, `web_safari`, `android_vr`, `web_embedded`): "Sign in to confirm you're not a bot" on all. No browser cookie database exists on the VM.
- (c) Piped: every public instance either unreachable, 403, or returning YouTube's bot error.
- (d) Invidious: `inv.nadeko.net` lists caption tracks but returns empty VTT bodies; `invidious.tiekoetter.com` 403; all others down or anti-bot.
- (e) cobalt: `api.cobalt.tools` requires a Turnstile JWT; mirrors down.
- (f) Transcript sites: Cloudflare challenge pages. The WebFetch tool (different egress) got through Cloudflare but the sites need JavaScript.
- (g) archive.org: no mirrors for any of the 16 IDs.
- YouTube `oembed` works from the VM and gave titles and channels for all 16. YouTube pages could not be fetched directly, but the WebSearch tool sometimes returned a rendered copy of a watch page including the auto-caption text (no timestamps). This worked for 4 of the 16 after repeated queries; it is not reliable.

## Routes that worked

1. Podcast RSS feeds. Five of the interviews are also podcasts. Found via the iTunes lookup API, audio pulled from Libsyn, Anchor and Podbean: TWIST E2326, Towards Data Science 123, Unshackled Living, Bitcoin.com News Interviews, The Block Runner 156.
2. Native X video. `yt-dlp` reads X posts from this VM. The Opentensor Foundation posted the full Tsinghua talk on X (2015773331778158762); the documentary producer posted the full film (1817892647962390814). Found with the project's X API bearer token (`internal/secrets/x-api.env`, full-archive search, about 150 post reads, roughly $0.75).
3. X livestream replay. Proof of Talk streamed its 2026 main stage on X (`x.com/i/broadcasts/1DxLddEgzBYxm`, 8.2 hours). `yt-dlp -g` gave the HLS URL; 25-second probes every 10 minutes located the Steeves fireside at 2:17–34:38; `ffmpeg -ss 0 -t 2760` pulled that window.
4. Short clips: Proof of Talk's X clips (2025 keynote, 57 s) and Cointelegraph's Facebook teaser (19 s), both via `yt-dlp`.
5. Rendered watch pages via WebSearch for caption text: Cointelegraph 2025, PBW 2026, VirtualBacon, Crypto Rabbit Hole.

Transcription: `faster-whisper` `medium`, int8, CPU, `vad_filter=True`, `condition_on_previous_text=False`, two processes in parallel on 4 cores, about 3x real time each under contention. Total audio transcribed: about 7.5 hours in about 2 hours wall.

## Not obtained (as of the original run) and how the gaps were closed on 20 Sep 2026

At the end of the original run, four videos were missing or partial. All four were recovered on 20 Sep 2026 as full YouTube auto-caption text through the kome.ai transcript API (`POST https://kome.ai/api/transcript`, JSON body `{"video_id": "<youtube url>", "format": true}`, browser User-Agent; no login, no key). Details in `internal/proof-of-talk-2025-keynote-retrieval.md`. Timestamps in the four files are estimated from word position and marked "≈"; no audio was obtained, so a Whisper pass would still improve them.

- Proof of Talk 2025 keynote "Satanic to Sublime" (3FDo1Cpnt74): was a 57-second clip; now full text, 19:25.
- Cointelegraph 2026 "Can Bitcoin Save AI From Big Tech?" (aL2HY7HTY94): was the 19-second teaser and the chapter list; now full text. The video is 4:21, not 10:56 as first listed: the caption service reports 4m 21s, the publisher's chapter list ends at 04:10, and the 675 words of caption take about 4:20 at Jacob's rate. The caption is complete.
- CoinFoin "Prologue of #Bittensor Documentary" (cH55SjDBEZ0): now full text, 2:42, Jacob to camera from 0:18. Published 20 May 2024, not 2025 or 2026 as guessed.
- The Early Stage Investor (mke_p4QZwi0): now full text, 11:12, published 3 Aug 2025. Confirmed as commentary: the host reads Jacob's tweets; the only Jacob audio is a 12-second clip from the Proof of Talk 2025 keynote. No new spoken material.

Also on 20 Sep 2026, a plain `curl` of the YouTube watch pages with a browser User-Agent returned the full page (about 1.2 MB) including the publish date (`"dateText"`) and description for all three; playback and the player block stayed `LOGIN_REQUIRED`, so no `lengthSeconds`. Earlier in the project the same fetch returned only a footer, so this is not reliable, but it is worth one try before anything heavier.

Jacob can still improve all four by downloading the audio on a home connection and dropping the files in `media/`; the existing Whisper pipeline would then give exact timestamps.

## Format decision

The saved files are research transcripts, not word-for-word copies: a timestamped outline of the whole recording in plain words (host questions paraphrased, ads skipped), plus Jacob's key lines quoted verbatim with timestamps. Full verbatim transcripts of third-party podcast episodes were not produced. Jacob's own words are what the voice analysis needs, and they are all there. The raw Whisper output stays on the VM under `/tmp/const/out_medium/` and is not in the store.

## Store outage during the run

At 14:01 UTC the FUSE mount for the Project store began failing `MintAgentStoreToken` with HTTP 403 (`/tmp/agent-store-fuse.log`). From then on the Project store listed as empty from this VM, including the coordinator's own files. Ten documents had already been written to the Project store before the failure (S3 PUT 200 in the FUSE log, 13:37–13:54): the big talk, TWIST, Cointelegraph 2025, PBW, VirtualBacon, Crypto Rabbit Hole, PoT 2025 keynote stub, Cointelegraph 2026 stub, CoinFoin stub, Early Stage Investor stub. They should be present when access returns. The seven documents written after the failure (TDS, Block Runner, Evert documentary, Unshackled, PoT 2026 fireside, Bitcoin.com, and the analysis) were staged at `/tmp/const/store_out/` and copied to this worker's private store at `/cursor/stores/self/docs/...` as a fallback. A background loop on the VM retries copying the staged files into the Project store every minute for several hours.

## Tooling left on the VM (not in the store)

`/tmp/const/`: `.venv` (uv), `media/` audio (about 700 MB), `out_medium/` Whisper JSON, `transcribe.py`, `dump.py`, `store_out/` staged documents, `pot/` PO-token server source, `xsearch.json`.
