Skip to main content
NoteWise can process multiple videos in one run. You can pass a YouTube playlist URL directly, or provide a plain text file with one URL per line.

Processing a playlist

Pass a YouTube playlist URL as the argument to process:
notewise process "https://youtube.com/playlist?list=PLAYLIST_ID"
NoteWise resolves the full list of videos in the playlist, then processes them concurrently up to the configured concurrency limit.

Processing a batch file

Create a .txt file with one YouTube URL per line:
urls.txt
https://youtube.com/watch?v=VIDEO_ID_1
https://youtube.com/watch?v=VIDEO_ID_2
https://youtube.com/watch?v=VIDEO_ID_3
Pass the file path to process:
notewise process urls.txt
notewise process urls.txt -o ./course-notes
Blank lines and any lines that are not valid YouTube URLs are skipped automatically.

Output structure for multiple videos

Each video gets its own subdirectory under the output directory, named after the video title:
output/
├── First Video Title/
│   └── study_notes.md
├── Second Video Title/
│   ├── study_notes.md
│   └── quiz.md
└── Third Video Title/
    └── study_notes.md
For playlist processing, all videos are written into the same root output directory (or the directory you specify with --output).

Concurrency

NoteWise processes multiple videos simultaneously. The default concurrency limit is 5 videos at a time, controlled by the MAX_CONCURRENT_VIDEOS setting. To change the default, set MAX_CONCURRENT_VIDEOS in ~/.notewise/config.env:
MAX_CONCURRENT_VIDEOS=3
For chapter-aware videos (longer than one hour with chapters defined), chapters within a single video are also processed concurrently, up to a separate MAX_CONCURRENT_CHAPTERS limit (default: 3). Both limits apply simultaneously, so a run with many long videos can open many LLM connections at once.

Rate limiting

To avoid hitting YouTube’s request limits, NoteWise throttles its metadata and transcript requests. The default is 10 requests per minute, set by YOUTUBE_REQUESTS_PER_MINUTE in ~/.notewise/config.env:
YOUTUBE_REQUESTS_PER_MINUTE=5
Raising the request rate significantly increases the chance of YouTube temporarily blocking your IP. If you see an IP block error during a large batch, lower YOUTUBE_REQUESTS_PER_MINUTE and try again. See Troubleshooting for more detail.

Reprocessing with —force

By default, videos that are already in the local cache are skipped. Pass --force to reprocess every video in the playlist or batch regardless of cache state:
notewise process urls.txt --force
notewise process "https://youtube.com/playlist?list=PLAYLIST_ID" --force -m gpt-4o
Use --force when you want to regenerate all notes with a new model or after changing your temperature setting, without having to clear the entire cache.

Using —no-ui for automated runs

For unattended runs (cron jobs, CI pipelines, server scripts), add --no-ui to suppress the interactive dashboard and print plain progress lines to stdout:
notewise process urls.txt --no-ui --output /data/notes >> notewise.log 2>&1

Build docs developers (and LLMs) love