GUIDE · Updated

Clean text in.
Better models out.

To get YouTube transcripts as JSON for a RAG index, an embedding job, or a fine-tune, paste a video, playlist, or channel link into scripthaul.com, choose JSON as the file type, and download the ZIP. Each video becomes one JSON document with timed lines, language, and caption kind, so no HTML scraping or subtitle parsing is needed.

What does the JSON look like?

Choose JSON · timed lines as the file type and each video exports as a scripthaul.cues.v1 document:

{
  "format": "scripthaul.cues.v1",
  "video": { "id": "dQw4w9WgXcQ", "title": "…" },
  "track": { "language": "en", "kind": "manual" },
  "cueCount": 425,
  "cues": [
    { "start": 0, "end": 4.2, "text": "First line of speech." },
    { "start": 4.2, "end": 9.8, "text": "The next line." }
  ]
}

Times are seconds. track.kind tells you whether the words are creator-written (manual) or auto-generated (asr) — worth keeping as metadata, since ASR text has no punctuation and a higher error rate.

Why do timed lines matter for RAG?

Chunking a transcript with its timestamps means every retrieved chunk can cite the exact moment in the source video — your answers link to youtube.com/watch?v=ID&t=1234s instead of vaguely gesturing at an hour of footage. The per-line structure also lets you chunk by duration (say, 60-second windows) rather than by character count, which keeps semantic units intact.

How do you ingest a whole channel?

Paste a whole channel, pick JSON, and download the ZIP: one JSON file per video plus manifest.json — machine-readable itself — listing every video's status, track, output filename, and a SHA-256 checksum per file for integrity checks in your pipeline. Videos without captions are recorded there explicitly, so your loader can distinguish "no data exists" from "download failed."

What are the caveats?

This is a browser tool with per-person daily limits (2,000 new videos a day; cached content unlimited), not an unattended scraping API — it's built for research corpora, not industrial harvesting. Captions come from YouTube as-is: auto-generated tracks carry YouTube's own recognition errors, and the manifest's caption_kind column is how you filter by quality. What you may do with transcript text — training included — depends on the rights involved; see the Terms.

Related: download a whole channel, all seven formats compared, or read the FAQ.