返回

文章详情

展示 HN:YouTube 吉他谱解析器

Hacker News2026年7月13日 20:13

CLI 将 YouTube 吉他课程视频转换为吉他谱的 PDF。它下载视频,采样帧,使用 Claude 视觉定位谱子区域,裁剪每一帧到该区域,通过谱上每行印刷的小节号去重裁剪,并将不同的谱线垂直拼接到 PDF 中。它开箱即用,无需配置 — PDF 输出到 out/<视频标题>.pdf,视频标题作为第一页的标题和文档元数据。要求:Node.js ≥ 20,yt-dlp 和 ffmpeg 在你的 PATH 中(brew install yt-dlp ffmpeg),一个 Anthropic API 密钥。设置:npm install,npm run build,cp .env.example .env # 然后将你的 ANTHROPIC_API_KEY 放入其中。用法:# 使用 .env 文件 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" 在开发过程中可以跳过构建步骤:node --env-file=.env --import tsx src/cli.ts "<url>" 结果写入 out/<视频标题>.pdf(其路径也会打印到标准输出);进度输出到标准错误。选项:一切都有一个合理的默认值;通常只需要 URL。 -i,--interval <秒> 屏幕截图间隔(默认为 2), --model <id> Claude 视觉模型(默认为 claude-sonnet-5), --sample <n> 用于谱区域检测的采样帧数(默认为 6), --dedup-threshold <n> 预去重哈密顿距离,成本控制(默认为 12), --max-height <像素> 限制下载分辨率(默认为 720), --keep-temp 保留中间帧/裁剪。工作原理:下载 — yt-dlp 获取视频(≤ --max-height),帧 — ffmpeg 每 --interval 秒提取一帧,检测 — 在 --sample 帧上绘制带标签的水平带网格,Claude 视觉报告哪些带包含乐谱。中位数的第一/最后乐谱带(对异常值稳健)给出垂直范围;宽度保持全宽。(粗略带标签的带比询问视觉模型获得精确像素坐标更可靠。)裁剪 — 每帧精准裁剪到该区域。预去重 — dHash 感知哈希丢弃近乎相同的连续裁剪。这只是一个成本控制,以减少下一步中视觉调用的数量。小节编号去重 — Claude 读取每行开头印刷的小节/条号和裁剪是否为真实的乐谱。工具每个不同的小节编号(第一次出现胜出)保留一个裁剪,并丢弃非谱裁剪(标题卡、开头/结尾)。因为小节编号在播放光标扫过一行时是恒定的,只有在乐谱前进时才会改变,这将所有相近相同的光标帧折叠为单一页面。PDF — pdf-lib 将不同的谱线垂直叠加到 A4 页面,按它们在视频中出现的顺序。视频标题(从 yt-dlp 读取)成为文件名、第一页的标题和文档元数据的标题。输出:out/<视频标题>.pdf。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡