meowphy & Fable17 downloadsSync NetEase Cloud Music and Discogs collections into notes with metadata, lyrics and tracklists, deduplicated by ID.
本插件100%ai生成,不含任何人工。 在此感谢我的ai伙伴:fable。 kisskiss 只有中文,因为外国人不用网易云。我的思路是:数字歌曲由网易云管理(用qq搜狗的同样可以使用musiclyricapp。只不过可能有点不同,要么自己修改,要么把歌曲批量导入网易云的一个歌单)。实体收藏使用discogs。两条路走,对我而言目前足够。 不懂的地方可以把此文档交给ai看。
The full documentation below is in Chinese, because this plugin is built around NetEase Cloud Music (a Chinese streaming service). If you don't use NetEase, the Discogs half still works standalone. This summary is for reviewers and non-Chinese readers.
Music Sync for Obsidian turns the songs you've listened to and the physical records you own into notes — one note per song / one note per record. Metadata, lyrics and tracklists only; no audio is downloaded.
Two sources, one engine:
Notes are rendered from a swappable .md template and deduplicated by ID (netease_id / discogs_release_id). Covers can stay as online URLs or be downloaded locally. A live status panel shows progress and can be stopped anytime.
Desktop only (NetEase sync reads a local cache directory outside the vault). Your Last.fm key / Discogs token stay in local data.json — never written into notes, never shipped. The plugin uploads nothing; network calls are limited to Last.fm, NetEase title lookup, and Discogs.
See the placeholders, data sources and privacy sections below (Chinese) for full detail.
把你听过的歌和收藏的实体唱片,以「一歌一笔记 / 一张唱片一笔记」的形式同步进 Obsidian —— 只要元数据、歌词、曲目,不下载音频。
两个来源,一套引擎:
生成的笔记按模板渲染,按 ID 去重。
仅桌面端(网易云同步需读取 vault 外的本地缓存目录)。
网易云:
.lrc 一致artist.getTopTags,去噪 + 归一地区为中文Discogs:
通用:
.md 模板文件,改样式不改代码;网易云和 Discogs 各有独立模板netease_id / discogs_release_id)跳过已生成的笔记;可选「覆盖模式」只更新派生字段,保留你手填的评分/标签/评论下载 MusicLyricApp,搜索/导入你的歌单和歌曲。它会把每首歌的元数据 + 歌词缓存成 JSON,默认在:
C:\Users\<你>\AppData\Roaming\MusicLyricApp\cache\
本插件只读这个目录,不联网抓网易云,天然绕过反爬。
要自动填流派/地区,需要一个免费的 Last.fm key:https://www.last.fm/api/account/create
不填也能用,只是 genre / region 会留空。
登录 Discogs → Settings → Developers → Generate token:https://www.discogs.com/settings/developers 把 token 填进插件设置即可,插件会用它自动识别你的用户名并拉取 collection。
main.js、manifest.json、styles.css<vault>/.obsidian/plugins/netease-sync/git clone <this-repo>
cd netease-sync
npm install
npm run build # 产出 main.js
网易云: 填好缓存目录 + 输出目录(+ 可选 Last.fm key),点左侧栏 🎵 图标或命令「同步网易云音乐」。
Discogs: 填好 Discogs Token + Discogs 输出目录,点 💿 图标或命令「同步 Discogs 唱片」。
同步时弹出状态面板:实时进度、当前处理项、新建/更新/跳过计数,可随时点「停止」。
第一次跑较慢(网易云要查 Last.fm + 译名;Discogs 每张要补详情),之后有缓存就快。
路径
| 设置 | 说明 |
|---|---|
| 缓存目录 | MusicLyricApp cache 文件夹绝对路径(vault 外) |
| 输出目录 | 网易云歌曲笔记位置(vault 内相对路径) |
| 模板文件 | 网易云模板 .md(输入即搜索);留空用内置模板 |
| Discogs 输出目录 | 唱片笔记位置(与网易云分开) |
| Discogs 模板文件 | Discogs 模板 .md;留空用内置模板 |
API
| 设置 | 说明 |
|---|---|
| Last.fm API Key | 查流派/地区用,密码框存储 |
| 启用 Last.fm 流派查询 | 关掉则跳过,genre/region 留空 |
| Discogs Token | 拉取 collection 用,密码框存储 |
同步选项
| 设置 | 说明 |
|---|---|
| 去重 | 按 ID 跳过已存在笔记 |
| 覆盖已存在 | 去重命中时:关=跳过;开=只更新派生字段,保留手填字段 |
| 网易云请求间隔 | 礼貌限速(ms),默认 400 |
| 流派数量上限 | 默认 6 |
| 下载封面到本地 | 关=在线 URL;开=下载图片到下方目录,离线可看 |
| 封面本地目录 | 下载封面的存放位置(vault 内相对路径) |
按钮:同步网易云、同步 Discogs、清空增强缓存。
留空对应的「模板文件」用内置模板;要自定义,新建一个 .md,用占位符,再在设置里搜索选中它。
📁 两个内置模板的完整文件放在仓库的
templates/目录:templates/netease.md、templates/discogs.md。可直接复制到 vault 里改。
| 占位符 | 内容 | 类型 |
|---|---|---|
{{title}} |
标题 | 标量 |
{{artist}} |
艺术家(逗号分隔) | 标量 |
{{year}} |
年份 | 标量 |
{{cover}} |
封面(URL 或本地路径) | 标量 |
{{coverEmbed}} |
封面嵌入语法(在线出 ,本地出 ![[path]]) |
标量 |
{{source}} |
来源(netease / discogs) | 标量 |
{{tags}} |
标签 | 列表 |
{{dateAdded}} |
生成日期 | 标量 |
| 占位符 | 内容 | 类型 |
|---|---|---|
{{aliases}} |
歌曲译名/别名 | 列表 |
{{datePublished}} |
发行日期 | 标量 |
{{album}} |
专辑 | 标量 |
{{duration}} |
时长(m:ss) | 标量 |
{{genre}} |
流派(Last.fm) | 列表 |
{{region}} |
地区(单个中文) | 标量 |
{{neteaseId}} |
网易云歌曲 ID(去重键) | 标量 |
{{url}} |
网易云链接 | 标量 |
{{lyrics}} |
交错双语歌词块 | 特殊(多行) |
| 占位符 | 内容 | 类型 |
|---|---|---|
{{released}} |
精确发行日(2009-11-00) | 标量 |
{{releasedFormatted}} |
易读发行日(Nov 2009) | 标量 |
{{country}} |
发行国 | 标量 |
{{discogsReleaseId}} |
release ID(去重键) | 标量 |
{{catalogNumber}} |
唱片编号 | 标量 |
{{barcode}} |
条码 | 标量 |
{{label}} |
厂牌 | 标量 |
{{format}} |
载体(Vinyl, LP, Album) | 标量 |
{{formatQuantity}} |
碟片数 | 标量 |
{{weight}} |
克重 | 标量 |
{{genre}} |
流派 | 列表 |
{{styles}} |
风格(更细) | 列表 |
{{discogsRating}} |
Discogs 个人评分(0 视为空) | 标量 |
{{discogsDateAdded}} |
收藏日期 | 标量 |
{{url}} |
Discogs 链接 | 标量 |
{{notes}} |
版本说明 | 标量(多行) |
{{tracklist}} |
曲目表(编号+曲名+时长) | 标量(多行) |
{{credits}} |
制作人员 | 标量(多行) |
{{videos}} |
MV 视频链接 | 标量(多行) |
{{communityStats}} |
社区数据表格(拥有/想要/均分) | 标量(多行) |
{{aliases}} {{genre}} {{styles}} {{tags}} 是列表,渲染取决于摆放位置:
key:)→ YAML 多行列表;值为空则整行删除标量字段含 YAML 特殊字符(:、#、引号、逗号、前导 - 等)会自动加引号转义。
内置模板已包含上述全部占位符。
{{idFieldName}}为内部保留(渲染成当前来源的 ID 键名),一般不需手动使用。
网易云 cache (*.json) Discogs collection (API)
│ │
└──────────┬───────────────────┘
▼
RawTrack(统一结构)
│ enrich:网易云→Last.fm+译名;Discogs→逐张补详情
▼
RenderModel ──► 模板引擎(内置或你的 .md) ──► 笔记.md
│ 按 ID 去重
▼
输出目录
三层解耦:来源(读缓存 / 拉 API)/ 增强(补数据)/ 渲染(套模板)。加新来源只需实现一个 MusicSource,引擎/去重/模板/状态面板全复用。
所有数据都来自下面几个公开接口,插件只做读取和拼装,不改写源站数据。
| 数据 | 来源 | 说明 |
|---|---|---|
| 歌名/歌手/专辑/时长/发行日/封面 URL | MusicLyricApp 本地缓存 cache\*.json |
MusicLyricApp 抓好的 SongVo;插件只读本地文件 |
| 歌词 / 翻译歌词 | 同上 LyricVo |
带时间戳,交错渲染 |
| 歌曲译名/别名 | https://music.163.com/api/song/detail?ids=[id] |
需 Referer: https://music.163.com 头;取 alias + transName |
| 流派 / 地区 | https://ws.audioscrobbler.com/2.0/?method=artist.getTopTags |
Last.fm,按主歌手查 tags,去噪 + 地区归一为中文 |
| 数据 | 来源 | 说明 |
|---|---|---|
| 用户名(自动识别) | https://api.discogs.com/oauth/identity |
用 token 换当前登录用户名 |
| 收藏列表(标题/艺术家/年/厂牌/编号/载体/流派/风格/封面/你的评分/收藏日) | https://api.discogs.com/users/{用户名}/collection/folders/0/releases |
分页拉取整个 collection(folder 0 = All),basic_information 字段 |
| 详情(发行国/精确发行日/版本说明/曲目/条码/碟数/克重/制作人/社区数据/视频) | https://api.discogs.com/releases/{release_id} |
逐张请求补全 |
Authorization: Discogs token=<你的token>(token 只存本地)data.json,不会写进笔记,不随插件发布。MIT