搭建私人音乐库早已不是什么新鲜事,但想把下载、刮削整理、跨设备播放串成一条流畅的流水线,还是需要花点心思组合工具。本文介绍我目前在用的一套方案:
- 下载:go-music-dl(支持网易云、QQ音乐、酷狗等 10+ 平台)
- 刮削 + 在线播放:music-tag-web(内置 Navidrome,支持 Subsonic 协议,v2 版本刮削能力更强)
- Android:Tempo(基于开源 Tempo,增加了歌词显示和拖动功能)
- 桌面端:Feishin
整体架构
这套方案支持两种音乐来源路径:
路径一(本地下载):go-music-dl 下载 → music-tag-web 刮削 → Subsonic 客户端播放
路径二(夸克网盘):音乐存夸克网盘 → OpenList 挂载 → music-tag-web 直连刮削+播放
两者共用同一套客户端生态:
| |
一、下载音乐:go-music-dl
项目地址:https://github.com/guohuiyuan/go-music-dl
go-music-dl 是一个用 Go 编写的全网音乐下载工具,支持 10+ 主流平台(网易云音乐、QQ音乐、酷狗音乐、Bilibili、汽水音乐等),提供 Web 界面、TUI 终端和桌面应用三种使用模式。
Docker 部署
| |
部署后访问 http://IP:8099 打开 Web 界面,搜索歌曲或歌单即可下载。
TUI 模式适合批量操作:
| |
下载完成后,把音乐文件放到与 music-tag-web 共用的音乐目录,比如 /path/to/your/music。
二、夸克网盘方案:OpenList + music-tag-web(先转移后刮削)
如果音乐已经存好在夸克网盘里,可以通过 OpenList 挂载,用 music-tag-web 浏览并把文件整理转移到本地,再进行刮削和播放。
不直接在线刮削的原因:网盘文件通过 WebDAV 读写不稳定,批量操作容易超时失败。推荐先转移文件到本地,再用本地模式刮削,体验更可靠。
部署 OpenList
项目地址:https://github.com/OpenListTeam/OpenList
OpenList 是 AList 的分支,支持挂载夸克网盘、百度网盘、阿里云盘等多种网盘,提供 WebDAV 接口。
| |
部署后访问 http://IP:5244,查看默认密码:docker logs openlist,然后在后台添加夸克网盘存储(挂载路径填 /),记得关闭全局签名验证。
用 music-tag-web 整理并转移文件
music-tag-web 连接 OpenList 的 WebDAV 后,可以直接浏览夸克网盘里的音乐文件。找到要整理的歌之后,把文件复制/移动到本地音乐目录(/path/to/your/music),然后切换到本地模式进行刮削。
这样既能利用网盘存储音乐,又绕开了 WebDAV 在线刮削不稳定的问题。
三、刮削 + 在线播放:music-tag-web(本地文件)
如果音乐已经下载到本地,则使用 music-tag-web 直接读取本地文件进行刮削和播放。
music-tag-web 是这套方案的核心。它是一个 Web 版音乐标签编辑器,同时内置了 Navidrome,无需单独部署。最新 v2 版本在刮削能力上有明显增强,支持更多数据源,中文歌曲匹配率更高。
支持格式覆盖 FLAC、APE、WAV、AIFF、WV、MP3、M4A、OGG 等几乎所有常见音频格式,拖入文件夹即可批量刮削封面、标题、艺术家、专辑、歌词,并直接写入文件元数据标签。同时内置 Navidrome,可以通过网页直接播放音乐、管理歌单。
注意:v2 版本需要付费,功能更强(更多刮削数据源、Subsonic 播放支持等)。
music-tag-web 还可以额外挂载一个 volume,指向容器内的 /app/download 目录,与 go-music-dl 的下载目录共享,这样下载的音乐文件可以直接在 music-tag-web 里看到,无需手动搬运。
Docker Compose 部署
| |
使用流程
- 访问 music-tag-web:
http://IP:8002,默认账号admin/admin,首次登录后立刻改密码 - 刮削元数据:把音乐文件或文件夹拖入界面,点击"自动刮削",中文歌曲识别率很高。封面、艺术家、专辑、歌词都会自动写入文件标签
- 网页播放:刮削完成后,可以直接在浏览器里播放、管理歌单,适合临时场景或没有装客户端时使用
- Subsonic 客户端接入:music-tag-web 内置的 Navidrome 暴露 Subsonic API,各平台客户端均可连接使用
四、客户端推荐
Android:Tempo
项目地址:https://github.com/lategege/tempo

Tempo 基于开源的 Tempo 音乐播放器修改,原版不支持歌词显示,这是最大的痛点——听中文歌没有滚动歌词总感觉少了点什么。我在这个 fork 里增加了歌词显示功能,并支持通过拖动歌词来改变音乐的播放时间轴,解决部分歌曲歌词时间轴不准的问题。

支持 Subsonic 协议,连接 music-tag-web 内置的 Navidrome 后自动同步歌单、封面、歌词,在一众 Subsonic 客户端中体验较好。

桌面端:Feishin
项目地址:https://github.com/jeffvli/feishin
Feishin 是一个现代化的自托管音乐播放器桌面端,支持 Navidrome、Jellyfin、Subsonic 等多种后端。界面美观,播放控制丰富(播放列表、队列管理、随机、均衡器等),支持 MPV 或 Web Player 两种音频后端。

下载对应平台的 Release 版本,填入 Navidrome 地址和账号密码即可使用:
| |
五、总结
| 用途 | 工具 | 特点 |
|---|---|---|
| 下载到本地 | go-music-dl | 10+平台,Web/TUI/桌面三模式 |
| 夸克网盘+转移 | OpenList + music-tag-web | 网盘音乐整理到本地再刮削,稳定可靠 |
| 本地刮削+播放 | music-tag-web v2 | 内置Navidrome,v2刮削更强 |
| Android | Tempo(fork) | 歌词显示+拖动,Subsonic |
| 桌面端 | Feishin | 现代化UI,多后端支持 |
两条路径可以任选其一,也可以同时使用。夸克网盘方案省硬盘,适合已有大量收藏在网盘里的情况;本地下载方案更稳定,适合对网络条件要求高的场景。播放这块共用同一套 Subsonic 客户端生态,手机电脑都能无缝衔接。
