← На главную

Guitar Tab Parser: YouTube-урок в PDF-табулатуру одним кликом

13.07.2026 20:13 · hackernews

Утилита YouTube Guitar Tab Parser превращает гитарный урок с YouTube в PDF с табулатурой. Это CLI, который не требует никакой настройки — достаточно передать ссылку на видео.

Всё работает автоматически. Сначала yt-dlp скачивает ролик (разрешение можно ограничить флагом --max-height, по умолчанию 720p). Затем ffmpeg вырезает кадры каждые две секунды (интервал меняется через --interval). Дальше в дело вступает Claude vision: на нескольких образцах (по умолчанию шесть) рисуется сетка из горизонтальных полос, и модель определяет, какие полосы содержат ноты. По медиане первой и последней такой полосы вычисляется вертикальная область — таб. Ширина остаётся полной. Автор отмечает, что грубая разметка полосами работает куда надёжнее, чем просить vision-модель дать точные пиксельные координаты.

После этого библиотека sharp обрезает каждый кадр до найденной области. Затем идёт предварительная дедупликация: dHash (перцептивный хеш) отбрасывает почти идентичные последовательные кадры — это просто экономит вызовы к Claude на следующем шаге. Основная дедупликация — через Claude: модель читает номер такта (bar number), напечатанный в начале каждой строки, и определяет, реальный ли это таб (или, например, заставка или интро). Для каждого уникального номера такта сохраняется ровно один кадр (первый попавшийся). Поскольку номер такта постоянен, пока курсор проигрывания движется по одной строке, это превращает все дублирующиеся кадры одной строки в единственную страницу.

Финальный этап — сборка PDF с помощью библиотеки pdf-lib. Все уникальные строки табов склеиваются по вертикали на листах A4 в том порядке, как они идут в видео. Название видео (читается из метаданных yt-dlp) становится именем файла, заголовком на первой странице и полем метаданных документа. Итоговый файл попадает в out/<video-title>.pdf.

Инструмент написан на Node.js (версия 20 и выше), требует yt-dlp и ffmpeg в PATH (на macOS их можно поставить через brew), а также API-ключ Anthropic. Всё собирается через npm install && npm run build. Можно запускать как с .env файлом, так и с переменной окружения ANTHROPIC_API_KEY. Для разработки есть сокращённый вызов через tsx.

Доступные опции: --interval (шаг кадров, по умолчанию 2 с), --model (модель Claude, по умолчанию claude-sonnet-5), --sample (сколько кадров брать для поиска области таба, 6), --dedup-threshold (порог хэммингового расстояния для пред-дедупликации, 12), --max-height (максимальная высота скачивания), --keep-temp (не удалять промежуточные файлы). Прогресс печатается в stderr, путь к PDF — в stdout. В общем, всё, что надо — URL видео.

Читать оригинал →