Skip to main content
All output is written to the configured OUTPUT_DIR (default ./output).

Directory structure

output/
├── Video Title.md
├── Video Title_quiz.md              # only with --quiz
├── Video Title_transcript.txt       # only with --export-transcript txt
└── Video Title_transcript.json      # only with --export-transcript json

Main notes file (<title>.md)

The study notes are generated in clean Markdown with a hierarchical structure:
# Video Title

## Main Topic

### Sub-Topic

Detailed explanation covering every concept from the transcript, with
in-depth explanations of _why_ and _how_, not just _what_.

#### Key Term

Definition and context as extracted from the video.

**Example from video:**
Any examples, code blocks, or SQL mentioned in the transcript are
preserved verbatim.

Generation strategy

Transcript sizeStrategy
≤ 4,000 tokensSingle LLM pass with the full transcript
> 4,000 tokensSplit into overlapping 4,000-token chunks, each generated independently, then combined by a second LLM call
Long video with chapters (> 1 hr)Each chapter processed independently with the same chunking logic

Quiz file (<title>_quiz.md)

Generated with --quiz. Contains 10–15 multiple-choice questions grouped by topic:
# Quiz: Video Title

## Topic One

**Q1.** Question text?

A) Option A
B) Option B
C) Option C
D) Option D

**Answer: B)**

**Explanation:** One sentence explaining why B is correct.

...

## Answer Key

Q1: B
Q2: C
...

Transcript text (<title>_transcript.txt)

Generated with --export-transcript txt. Plain text with all transcript segments joined by spaces:
Hello and welcome to this video. Today we'll be covering...

Transcript JSON (<title>_transcript.json)

Generated with --export-transcript json. Array of segment objects with timing:
[
  {
    "text": "Hello and welcome to this video.",
    "start": 0.0,
    "duration": 2.4
  },
  {
    "text": "Today we'll be covering...",
    "start": 2.4,
    "duration": 1.8
  }
]

Filename sanitization

Output filenames are derived from the video title with:
  • Control characters and special filesystem characters removed
  • Leading/trailing whitespace stripped
  • Length capped at 100 characters (MAX_FILENAME_LENGTH)
If two videos in a batch would produce the same output path, notewise appends the video ID to disambiguate.