CLI that turns a YouTube guitar-lesson video into a PDF of the guitar tab.
It downloads the video, samples frames, uses Claude vision to locate the tab region, crops every frame to that region, de-duplicates the crops by the bar number printed on each line of the score, and stitches the distinct tab lines vertically into a PDF. It works out of the box with no configuration — the PDF is written to out/<video-title>.pdf, with the video title as a heading on the first page and in the document metadata.
npm install npm run build cp .env.example .env # then put your ANTHROPIC_API_KEY in it
node --env-file=.env dist/cli.js "https://www.youtube.com/watch?v=WgU5tDGC-Vc"
export ANTHROPIC_API_KEY=sk-ant-... node dist/cli.js "https://www.youtube.com/watch?v=WgU5tDGC-Vc"
During development you can skip the build step:
node --env-file=.env --import tsx src/cli.ts "
The result is written to out/<video-title>.pdf (its path is also printed to stdout); progress goes to stderr.
Everything has a sensible default; you normally only need the URL.
-i, --interval <seconds> screenshot interval (default 2)
--model <id> Claude vision model (default claude-sonnet-5)
--sample <n> frames sampled for tab-region detection (default 6)
--dedup-threshold <n> pre-dedup Hamming distance, cost control (default 12)
--max-height <px> cap download resolution (default 720)
--keep-temp keep intermediate frames/crops
yt-dlp fetches the video (≤ --max-height).ffmpeg extracts one frame every --interval seconds.--sample frames and Claude vision reports which bands contain sheet music. The median first/last music band (robust to an outlier) gives the vertical extent; width is kept full. (Coarse labeled bands are far more reliable than asking a vision model for precise pixel coordinates.)sharp crops every frame to that region.pdf-lib stacks the distinct tab lines vertically down A4 pages, in the order they appear in the video. The video title (read from yt-dlp) becomes the file name, a heading on the first page, and the document metadata title. Output: out/<video-title>.pdf.