{"_id":"@aimtao/music-cli","_rev":"8-df6c78f502c85300c3bbc9ad18a14905","name":"@aimtao/music-cli","dist-tags":{"latest":"1.0.9"},"versions":{"1.0.0":{"name":"@aimtao/music-cli","version":"1.0.0","keywords":["music","download","cli","youtube","bilibili","lyrics"],"author":"","license":"MIT","_id":"@aimtao/music-cli@1.0.0","maintainers":[{"name":"aimtao","email":"net@aimtao.net"}],"bin":{"music-cli":"bin/music-cli.js"},"dist":{"shasum":"e089c82634631a37ddd185c64a0020f40c5e8be5","tarball":"https://registry.npmjs.org/@aimtao/music-cli/-/music-cli-1.0.0.tgz","fileCount":43,"integrity":"sha512-tEoV6vOt3hav+UfMrFuMEdvadVfewKx08qJUg5sPu+9tbwPIocYidAX3ciP0NK91ywqcrcdYKo7LsfgF8k5Pzg==","signatures":[{"sig":"MEYCIQCwE9Z+Vurv7Pe2oPi2YfHdOu2VZzG47XH+g+gZ2oIBRwIhAMFaEwXFarqCi8bqsxrm/fYkbOHIkC9Q4XNor7x8nXyA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92549},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"df9d6e77751149e7a2952fc932de357c1ed71906","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/index.js","prepare":"npm run build","prepublishOnly":"npm run build"},"_npmUser":{"name":"aimtao","email":"net@aimtao.net"},"_npmVersion":"10.8.2","description":"Agent-ready music CLI — JSON output, batch pipe, zero config","directories":{},"_nodeVersion":"20.20.2","dependencies":{"node-id3":"^0.2.9","commander":"^12.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/music-cli_1.0.0_1777053940017_0.1052631063903382","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aimtao/music-cli","version":"1.0.1","keywords":["music","download","cli","youtube","bilibili","lyrics"],"author":"","license":"MIT","_id":"@aimtao/music-cli@1.0.1","maintainers":[{"name":"aimtao","email":"net@aimtao.net"}],"bin":{"music-cli":"bin/music-cli.js"},"dist":{"shasum":"e175462ca44f61282a3a9fa3bec5993600fee847","tarball":"https://registry.npmjs.org/@aimtao/music-cli/-/music-cli-1.0.1.tgz","fileCount":43,"integrity":"sha512-Sn9PE1WtR5wMD8oR0sZdQWC/NbTSh1ufUHRppnREtIDl0yBki5aPsKltoLR7nUZmD21OK74yb1L7Dz3+B/UlNQ==","signatures":[{"sig":"MEUCIQCmUE8QSn8pKoTozs4PB5/GXD5F/gNxRP+LEWyFSt4qqQIgCYlF+BaOFWCwCkniSGRojwnctBXJBh3lLqSO5kSBqZk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92549},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"9e670a396191a6429b2018f9268e3adc49ff596d","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/index.js","prepare":"npm run build","prepublishOnly":"npm run build"},"_npmUser":{"name":"aimtao","email":"net@aimtao.net"},"_npmVersion":"10.8.2","description":"Agent-ready music CLI — JSON output, batch pipe, zero config","directories":{},"_nodeVersion":"20.20.2","dependencies":{"node-id3":"^0.2.9","commander":"^12.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/music-cli_1.0.1_1777054378430_0.4775161604729543","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@aimtao/music-cli","version":"1.0.2","keywords":["music","download","cli","youtube","bilibili","lyrics"],"author":"","license":"MIT","_id":"@aimtao/music-cli@1.0.2","maintainers":[{"name":"aimtao","email":"net@aimtao.net"}],"bin":{"music-cli":"bin/music-cli.js"},"dist":{"shasum":"b5eafafa95bf2e5d5a0e663f4c20bd2c7cae44e9","tarball":"https://registry.npmjs.org/@aimtao/music-cli/-/music-cli-1.0.2.tgz","fileCount":43,"integrity":"sha512-0/Y71F38r1GU2mig+/ywjIt/lmPc6CGp11GkAthiMxXkBdmoVl41V/I5sqU6QuEEYdY++1Lo/2LFxszhle2qlw==","signatures":[{"sig":"MEUCICZaFoayT5c2VwaaD5x8brf8PKYbFNSjNFwrCbpYKNq8AiEA6dRa7cX6EfvFzfxseJojySkGDNz2ScwQtwZabVQchaY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92549},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"efaddde4ebbe58e5561196ea83c181129f62c11d","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/index.js","prepare":"npm run build","prepublishOnly":"npm run build"},"_npmUser":{"name":"aimtao","email":"net@aimtao.net"},"_npmVersion":"10.8.2","description":"Agent-ready music CLI — JSON output, batch pipe, zero config","directories":{},"_nodeVersion":"20.20.2","dependencies":{"node-id3":"^0.2.9","commander":"^12.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/music-cli_1.0.2_1777054575893_0.8122939744474822","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@aimtao/music-cli","version":"1.0.3","keywords":["music","download","cli","youtube","bilibili","lyrics"],"author":"","license":"MIT","_id":"@aimtao/music-cli@1.0.3","maintainers":[{"name":"aimtao","email":"net@aimtao.net"}],"homepage":"https://github.com/AimTao/music-cli#readme","bugs":{"url":"https://github.com/AimTao/music-cli/issues"},"bin":{"music-cli":"bin/music-cli.js"},"dist":{"shasum":"b2ac845699a716b08503b99cb1cf067443e0ebfd","tarball":"https://registry.npmjs.org/@aimtao/music-cli/-/music-cli-1.0.3.tgz","fileCount":43,"integrity":"sha512-/vtMKjlu+QJEyNW+Wy0OjEGPCz5LNUBt2DSNIQwXW5hM1G4/R548XtWp8zTD+VlO12JkbJe0ebogQMf33HnNLw==","signatures":[{"sig":"MEYCIQDpAxfsg8CZ7rWLapIIGjXuIhSzESAnyniivy42eZ+HFQIhAOky0ebTV5RNjC8kvbx3ahDCAjrhlVq0ySeS91GjriXn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92644},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"5c8909d43bfd62c3eb87e957475da82abb1d82ea","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/index.js","prepare":"npm run build","prepublishOnly":"npm run build"},"_npmUser":{"name":"aimtao","email":"net@aimtao.net"},"repository":{"url":"git+https://github.com/AimTao/music-cli.git","type":"git"},"_npmVersion":"10.8.2","description":"Agent-ready music CLI — JSON output, batch pipe, zero config","directories":{},"_nodeVersion":"20.20.2","dependencies":{"node-id3":"^0.2.9","commander":"^12.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/music-cli_1.0.3_1777054954683_0.29525434728310573","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@aimtao/music-cli","version":"1.0.6","keywords":["music","download","cli","youtube","bilibili","lyrics"],"author":"","license":"MIT","_id":"@aimtao/music-cli@1.0.6","maintainers":[{"name":"aimtao","email":"net@aimtao.net"}],"homepage":"https://github.com/AimTao/music-cli#readme","bugs":{"url":"https://github.com/AimTao/music-cli/issues"},"bin":{"music-cli":"bin/music-cli.js"},"dist":{"shasum":"5cfeea30d2b36ecbdff241bdeb16f6a403182bf1","tarball":"https://registry.npmjs.org/@aimtao/music-cli/-/music-cli-1.0.6.tgz","fileCount":43,"integrity":"sha512-C3gLWe/N3ByipIRBB1dB+VY1PXio0A8r8Cj3icXZpacBh7hQwiLDrL2pn8iBLYVkG2LC+qSj1OVIPTvNQ+FAQg==","signatures":[{"sig":"MEQCIGizvSLdhKg51XzkcCxM7lSrWyJJgUCooa5B11JwZuJPAiA611cDQC0mbcn8FhGgAdLxT7C4MemdSt2xRR3JdsnHMA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92644},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"bdacd50ddd52b1bc42ee35c7edf2d13e0c952095","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/index.js","prepare":"npm run build","prepublishOnly":"npm run build"},"_npmUser":{"name":"aimtao","email":"net@aimtao.net"},"repository":{"url":"git+https://github.com/AimTao/music-cli.git","type":"git"},"_npmVersion":"10.8.2","description":"Agent-ready music CLI — JSON output, batch pipe, zero config","directories":{},"_nodeVersion":"20.20.2","dependencies":{"node-id3":"^0.2.9","commander":"^12.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/music-cli_1.0.6_1777093992208_0.7809047540215412","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@aimtao/music-cli","version":"1.0.7","keywords":["music","download","cli","youtube","bilibili","lyrics"],"author":"","license":"MIT","_id":"@aimtao/music-cli@1.0.7","maintainers":[{"name":"aimtao","email":"net@aimtao.net"}],"homepage":"https://github.com/AimTao/music-cli#readme","bugs":{"url":"https://github.com/AimTao/music-cli/issues"},"bin":{"music-cli":"bin/music-cli.js"},"dist":{"shasum":"9c646bf74c767cc62228cf94128fdb62ebd59ef0","tarball":"https://registry.npmjs.org/@aimtao/music-cli/-/music-cli-1.0.7.tgz","fileCount":43,"integrity":"sha512-KUibHQAQpntRZJ96nLd/BDLsSRCrqpvd/dRZFJ8v2RGGA5p7XYw+3N2YZ0IuixABLlt7aQgAPQGDiB1Gr4tm3w==","signatures":[{"sig":"MEQCICXySD2JA/jU5SpCLbNCuJSAWwuPwyaZs57PiYDet9BxAiBkQ+b1AISrK6i3hAjkG191lbTI0lBufQPR0Ry6U4vBkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92644},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"0798942ec29b7b82019db5b2f6a791eef4f855c2","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/index.js","prepare":"npm run build","prepublishOnly":"npm run build"},"_npmUser":{"name":"aimtao","email":"net@aimtao.net"},"repository":{"url":"git+https://github.com/AimTao/music-cli.git","type":"git"},"_npmVersion":"10.8.2","description":"Agent-ready music CLI — JSON output, batch pipe, zero config","directories":{},"_nodeVersion":"20.20.2","dependencies":{"node-id3":"^0.2.9","commander":"^12.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/music-cli_1.0.7_1777095042803_0.12385502439614426","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@aimtao/music-cli","version":"1.0.8","keywords":["music","download","cli","youtube","bilibili","lyrics"],"author":"","license":"MIT","_id":"@aimtao/music-cli@1.0.8","maintainers":[{"name":"aimtao","email":"net@aimtao.net"}],"homepage":"https://github.com/AimTao/music-cli#readme","bugs":{"url":"https://github.com/AimTao/music-cli/issues"},"bin":{"music-cli":"bin/music-cli.js"},"dist":{"shasum":"763a9d6122041bc8718c328e0d7db307980b5d26","tarball":"https://registry.npmjs.org/@aimtao/music-cli/-/music-cli-1.0.8.tgz","fileCount":43,"integrity":"sha512-lkWyI/1Cjism1dA9jIO+HnMpt7iN94VlfTYYk14U3WepueeOzqvo5KeFb7Axqzfwa4Qu0HIX4RjylsvidYMBAw==","signatures":[{"sig":"MEQCIB9Y993hPik9cfe5NHqTA/ske2DGz8cVsX3sWGgNFNmRAiBc/vdlFSnevg/g3LNvLxbj3BN18tpEKFQ6Cwd07Wpa1Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92644},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"a10ac95e777df8e8e2e373e2b2f6bc743b918142","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/index.js","prepare":"npm run build","prepublishOnly":"npm run build"},"_npmUser":{"name":"aimtao","email":"net@aimtao.net"},"repository":{"url":"git+https://github.com/AimTao/music-cli.git","type":"git"},"_npmVersion":"10.8.2","description":"Agent-ready music CLI — JSON output, batch pipe, zero config","directories":{},"_nodeVersion":"20.20.2","dependencies":{"node-id3":"^0.2.9","commander":"^12.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/music-cli_1.0.8_1777095201255_0.7045173834846563","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@aimtao/music-cli","version":"1.0.9","description":"Agent-ready music CLI — JSON output, batch pipe, zero config","main":"./dist/index.js","bin":{"music-cli":"bin/music-cli.js"},"scripts":{"build":"tsc","dev":"tsc --watch","start":"node dist/index.js","prepublishOnly":"npm run build","prepare":"npm run build"},"keywords":["music","download","cli","youtube","bilibili","lyrics"],"author":"","license":"MIT","repository":{"type":"git","url":"git+https://github.com/AimTao/music-cli.git"},"dependencies":{"commander":"^12.0.0","node-id3":"^0.2.9"},"devDependencies":{"@types/node":"^20.0.0","typescript":"^5.0.0"},"engines":{"node":">=16.0.0"},"_id":"@aimtao/music-cli@1.0.9","gitHead":"cbb7d8fe5f67f3ef9f92ecf8fc7e36499ea458aa","types":"./dist/index.d.ts","bugs":{"url":"https://github.com/AimTao/music-cli/issues"},"homepage":"https://github.com/AimTao/music-cli#readme","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-CO1SzZ4LqVkC9ZQyq+LkN/79KI6qUAJWPiSIBUzO3Ci/iqJd8P3A6JqZ/5/kIl9K3HWKeaNJRX1AR6sB/a9ekQ==","shasum":"cbc3b62cb4a3ece52b8d17ea93402de63b502362","tarball":"https://registry.npmjs.org/@aimtao/music-cli/-/music-cli-1.0.9.tgz","fileCount":46,"unpackedSize":105593,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHvNjx/roLUXsjQD0kw4uMGggjsIJGRHO+B1rCn/yUtZAiAoFiGrEBMnEeruWWQaru9/HfMiW/XEO7WsPHbBXQhC+g=="}]},"_npmUser":{"name":"aimtao","email":"net@aimtao.net"},"directories":{},"maintainers":[{"name":"aimtao","email":"net@aimtao.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/music-cli_1.0.9_1777147069287_0.44051794987507953"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-24T18:05:39.944Z","modified":"2026-04-25T19:57:49.568Z","1.0.0":"2026-04-24T18:05:40.178Z","1.0.1":"2026-04-24T18:12:58.634Z","1.0.2":"2026-04-24T18:16:16.109Z","1.0.3":"2026-04-24T18:22:34.819Z","1.0.6":"2026-04-25T05:13:12.345Z","1.0.7":"2026-04-25T05:30:42.956Z","1.0.8":"2026-04-25T05:33:21.388Z","1.0.9":"2026-04-25T19:57:49.468Z"},"bugs":{"url":"https://github.com/AimTao/music-cli/issues"},"license":"MIT","homepage":"https://github.com/AimTao/music-cli#readme","keywords":["music","download","cli","youtube","bilibili","lyrics"],"repository":{"type":"git","url":"git+https://github.com/AimTao/music-cli.git"},"description":"Agent-ready music CLI — JSON output, batch pipe, zero config","maintainers":[{"name":"aimtao","email":"net@aimtao.net"}],"readme":"# music-cli\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![npm](https://img.shields.io/npm/v/@aimtao/music-cli.svg)](https://www.npmjs.com/package/@aimtao/music-cli)\n[![Node.js](https://img.shields.io/badge/node-%3E%3D16-green.svg)](https://nodejs.org/)\n\n> 🎵 面向 Agent 的音乐 CLI — JSON 输出、批量管道、零配置\n\n[English](README.md) | [中文](README.zh-CN.md)\n\n---\n\n## 特性\n\n- 🎯 **多源下载** — YouTube、Bilibili、SoundCloud、Bandcamp、网易云\n- 📝 **歌词嵌入** — 自动获取并写入 ID3 USLT 帧\n- ⚡ **顺序探测** — 按优先级尝试各源，命中即停\n- 🔧 **环境诊断** — `doctor` 检查 yt-dlp、ffmpeg、网络\n- 📦 **零配置** — 开箱即用\n- 🤖 **可脚本化** — 所有命令支持 `--json` 结构化输出\n\n## 安装\n\n```bash\nnpm install -g @aimtao/music-cli\n```\n\n或本地编译：\n\n```bash\ngit clone <repo-url>\ncd music-cli\nbash setup.sh\n```\n\n需要 [yt-dlp](https://github.com/yt-dlp/yt-dlp)。[ffmpeg](https://ffmpeg.org/) 可选。\n\n## 使用\n\n```bash\n# 下载歌曲\nmusic-cli download \"歌曲名\" \"歌手名\"\n\n# JSON 输出\nmusic-cli download \"歌曲名\" \"歌手名\" --json\n\n# 列出已下载\nmusic-cli list\n\n# 诊断环境\nmusic-cli doctor\n```\n\n## 命令\n\n| 命令 | 描述 |\n|------|------|\n| `download` | 下载歌曲 |\n| `list` | 列出已下载歌曲 |\n| `lyrics` | 获取歌词 |\n| `doctor` | 诊断环境 |\n| `sources` | 列出可用下载源 |\n| `info` | 显示系统信息 |\n\n## 配置\n\n`./config.json`\n\n```json\n{\n  \"outputDir\": \"~/Music/music-cli\",\n  \"sources\": [\"youtube\", \"bilibili\", \"soundcloud\", \"bandcamp\", \"netease\"],\n  \"timeout\": 10,\n  \"concurrency\": 2,\n  \"embedLyrics\": true\n}\n```\n\n## 许可证\n\nMIT\n\n---\n\n## AI / 脚本参考\n\n所有命令支持 `--json` 输出结构化数据。\n\n### download\n\n```bash\nmusic-cli download \"歌曲名\" \"歌手名\" --json\n```\n\n批量下载：\n\n```bash\necho '[{\"name\":\"歌曲1\",\"artist\":\"歌手1\"},{\"name\":\"歌曲2\",\"artist\":\"歌手2\"}]' | music-cli download --json\n```\n\n成功：\n\n```json\n{\n  \"success\": true,\n  \"file\": \"/Users/.../Music/music-cli/歌曲名 歌手名.mp3\",\n  \"source\": \"youtube\",\n  \"size\": 3856029,\n  \"lyrics\": { \"success\": true }\n}\n```\n\n失败：\n\n```json\n{\n  \"success\": false,\n  \"error\": \"All sources failed\",\n  \"tried\": [\"youtube\", \"bilibili\", \"soundcloud\", \"bandcamp\", \"netease\"]\n}\n```\n\n源按顺序尝试：YouTube → Bilibili → SoundCloud → Bandcamp → 网易云。\n\n### list\n\n```bash\nmusic-cli list --json\n```\n\n```json\n{\n  \"success\": true,\n  \"total\": 5,\n  \"totalSize\": 19281920,\n  \"songs\": [\n    { \"name\": \"歌曲名 歌手名\", \"file\": \"/path/to/song.mp3\", \"size\": 3856029, \"hasLyrics\": true }\n  ]\n}\n```\n\n### doctor\n\n```bash\nmusic-cli doctor --json\n```\n\n```json\n{\n  \"success\": true,\n  \"tools\": { \"node\": \"v20.0.0\", \"npm\": \"9.0.0\", \"yt-dlp\": \"2024.01.01\", \"ffmpeg\": \"6.0\" },\n  \"network\": { \"youtube\": { \"reachable\": true, \"latency\": 120 } }\n}\n```\n\n### 配置项\n\n| 键 | 类型 | 默认值 | 说明 |\n|-----|------|---------|-------------|\n| `outputDir` | string | `~/Downloads/music-cli` | 下载目录 |\n| `sources` | string[] | 全部 5 个 | 启用的源 |\n| `timeout` | number | 10 | 单源超时（秒） |\n| `concurrency` | number | 2 | 并发探测数 |\n| `embedLyrics` | boolean | true | 自动嵌入歌词 |\n\n环境变量 `MUSIC_OUTPUT_DIR` 覆盖 `outputDir`。\n\n### 输出文件\n\n- MP3：`{outputDir}/{歌曲名} {歌手名}.mp3`\n- 歌词：嵌入为 ID3v2.4 USLT（UTF-8），`.lrc` 嵌入后删除\n\n### 退出码\n\n- `0` — 成功\n- `1` — 失败（查看 JSON 获取详情）\n","readmeFilename":"README.zh-CN.md"}