中老年叨叨
检索⌘ K

Vibe Coding

Rock Atlas 摇滚星图:从音乐目录到可以探索的关系地图

介绍我搭建的Rock Atlas摇滚星图,梳理从小样本实验、星云交互到V3静态目录与三仓拆分的演进。说明当前风格、艺人和作品覆盖,以及关系证据和音频边界;下一步聚焦数据扩展、真实用户验证与浏览体验。

文章目录

听到一支喜欢的乐队,接下来通常是找它的其他专辑,再看看有什么相近的乐队。多走几步,就会碰到一串风格名称:Punk、Post-Punk、Alternative、Grunge、Shoegaze。

名字能查到,关系却未必容易看清。某种风格是另一种的分支,还是受它影响?两支乐队经常被放在一起,是因为声音相似,还是共享过一个场景和发行网络?

一个阳光的午后,做了一杯咖啡,听着Pink Floyd的“Comfortably Numb”,我突然冒出一个灵感,想要搭建一个摇滚风格谱系知识图谱。

灿烂的摇滚群星,嗯,那么我们就用星图作为整体视觉基调来搭建这个Rock Atlas 摇滚星图。他是一个纯兴趣作品,访问链接如下:

打开 Rock Atlas 摇滚星图

可以从一个风格开始,进入相关艺人,再看作品和来源;也可以先找熟悉的艺人,沿它所在的关系继续走。它想把散落在目录和资料里的线索放进一个可以浏览的空间,让下一次探索有个起点。

01. 最初的想法:让音乐资料之间能走得通

项目最早使用了 Music Wiki 这个名字,目标是组织摇滚音乐中的风格、艺人、作品及关系证据。

音乐资料不缺,难的是把不同来源接起来。同一个艺人可能有不同拼写,一张专辑会有多个发行版本,各数据库对风格的划分也不一致。把名称放进几个表格,只完成了第一步;要沿着关系继续探索,还得确认这些名称是不是同一个对象,以及关系究竟说了什么。

因此,早期设计就把来源与证据纳入了数据结构。资料不完整时保留未知,来源冲突时留下差异,不能为了让一条路径看起来完整,就顺手补一个猜测。

这个原则也约束视觉设计:画布上距离近,不意味着音乐史上存在影响;有一条漂亮的线,也不意味着背后有足够的证据。

02. 先用小样本比较,再逐步扩展

早期工程实验冻结过一份包含 20 个风格、100 位艺人、200 个作品组和 9 条代表录音的小样本,用同一套内容比较 3D、2D 和编辑型阅读界面。

这一步的意义,是先让数据、文字、关系和操作一致,再比较不同呈现方式。否则,3D 版放了熟悉的乐队,列表版放了陌生名字,最后测出的可能只是内容差异。

后来,项目逐渐形成了现在的星图方向:从全局看风格,选择风格后看艺人,再深入作品和关系资料。目录也扩展到当前的限定快照。

从开发记录看,几个阶段可以这样理解:

阶段主要变化仍需区分的边界
早期小样本用相同资料比较 3D、2D 与编辑型界面工程样本不等于真实用户研究结果
目录扩展扩展风格、艺人和作品,并建立跨来源身份与关系记录一个艺人出现在多个风格中,不应重复计为多个艺人
V3 静态目录将概览、搜索与详情分开,按需读取数据读取架构完成,不代表全量数据已经导入
2026 年 10 月 9 日将前端独立成仓库,保留星图、深链和音频控件仓库拆分不是新的数据覆盖证明
2026 年 10 月 12 日补充可抓取说明、双语指南与文字目录搜索入口完善,不等于搜索引擎已经收录

这些阶段让项目从一个展示想法,逐步变成可以发布、可以继续更新的工具。但是否真的帮助读者理解音乐关系,还需要用实际使用来检验。

03. 星云、恒星和轨道,各自对应什么

Rock Atlas 用一套空间比喻来组织资料:风格对应星云,艺人对应恒星,作品组对应轨道上的对象,关系用光桥表达。

这套设计最关键的地方是分层。全局视图先看风格,选定一个风格后,再加载相关艺人;选择艺人后继续查看作品。把所有层级一次性铺出来,信息和画面都会挤在一起。

浏览时可以用 Styles、Artists 和搜索找到起点,通过 Eras 缩小年代范围,或用 Relations 查看关系类型。语言与动效模式可以切换;喜欢文字阅读,或者设备不支持 WebGL,也有列表路径和独立文字目录。

星图负责给出空间感,详情和来源负责把信息说清楚。两者需要互相对应:在画布里选中的对象,应当就是列表和详情里正在看的对象。

第一次打开,建议先选一个自己熟悉的风格,点开相关艺人和作品,再检查一条关系的类型与来源。熟悉的名字能帮你判断,这张图究竟带来了新理解,还是只换了一种好看的排列方式。

04. 当前覆盖到哪里

截至 2026 年 10 月 13 日,仓库说明与线上指南对应的发布快照包含:

对象数量口径
音乐风格828当前限定目录中的风格对象
艺人420去重后的艺人,不按风格中的出现次数重复计算
作品组528以 ReleaseGroup 组织的作品,不能等同于全部发行版本或单曲
关系记录997仓库说明列出的当前关系数量,不代表每条都是历史影响关系

这些数量描述当前发布快照,不代表全球摇滚音乐的完整覆盖。 这是一个限定范围的目录,尚未完成全量 MusicBrainz、Discogs 等数据的导入。

当前项目已经有可运行的 V3 前端、按需搜索与详情读取、背景音频控件、双语界面,以及中英文使用指南和风格目录。本文写作时已打开线上星图和中文指南,页面显示的风格与艺人数与仓库说明一致。

网站可以公开访问,前端源码仓库目前仍为私有,仍在迭代中。当前网站前端部署的是 V3 这个版本。

05. 为什么后来拆成三个部分

现在的职责分成了前端、离线数据处理和 JSON 构建发布三个部分。

前端负责星图、查询和阅读;离线处理负责来源获取、身份核对与规范化;构建部分将整理好的数据转成网站能读取的静态文件。

这样拆开以后,读者打开网站时不需要连接作者本机的数据库。首页先读概览,进入一个风格或艺人后,再取相应的详情和搜索分片。长期方向是在底层保留完整目录,用分层显示控制眼前的信息量。

V3 还会核对数据签名和哈希,并让一次浏览固定使用同一份快照。它的作用是检查文件是否与所发布的版本一致,避免新旧分片混用;技术校验不能证明一条音乐关系在历史上正确。

数据来源涉及 Wikidata、MusicBrainz 和 Discogs,许可需要按具体字段与快照核对。代码许可证也不会自动赋予封面、音频或所有上游数据的再分发权。

背景音乐同样有边界:音频文件不放进 Git 仓库,网站有播放与暂停控件;浏览器可能拒绝首次有声自动播放,需要用户手势后才能恢复。用户主动暂停后,其他页面操作不应把音乐重新打开。

06. 关系要能解释,也要允许不知道

这张图里最值得继续打磨的,是关系的解释。

“是子风格”“受过影响”“经常被共同标记”“只是一个待研究的关联”,不能合并成同一种线。即便两种风格经常出现在同一张唱片上,也不能只靠共同标签判断谁影响了谁。

我希望读者点开关系以后,能看清它的类型、方向、来源,以及资料还缺在哪里。没有资料时显示未知,有冲突时保留冲突。这个过程会比画线慢,但有必要。

目前的目录仍有覆盖和审阅边界。它适合用来找到下一步要听什么、读什么、查什么;遇到有争议的音乐史判断,仍然要回到来源。

07. 下一步:扩数据,也验证怎么读

沿着项目的数据与产品设计,下一轮主要方向:

7.1 扩展可追溯的数据覆盖

继续推进全量 Rock 目录的数据处理,在扩大风格、艺人和作品覆盖的同时,保留来源、身份、冲突和许可记录。全量发布还需要完成实际数据导入与完整性验收,不能把现有限定目录换个标签就算完成。

如果更大的目录超过当前静态托管限制,文档中预留了将数据独立放到对象存储的方向。这属于后续架构工作,还需要处理读取地址、跨域、缓存和回滚,目前不能写成已经具备的部署能力。

7.2 完善浏览与纠错

继续检查手机手势、低动效模式、文字可读性与加载失败恢复。用户指出名称、年代或关系问题时,能根据可核查来源修订,也要让更新后的资料与页面同步。

这几件事比继续增加视觉效果更影响使用:能否找到对象、能否看懂关系,以及资料不完整时是否仍能走下去。

7.3 视觉效果的持续打磨

当前小数据量访问情况下,视觉密度,配色等没有发现问题。但大规模全量数据(超过当前样本5个以上的数量级)上线后,渲染的性能、视觉密度、配色可分辨性等,都有待验证。

08. 欢迎从熟悉的乐队开始

如果你喜欢摇滚,可以先打开星图,找一个熟悉的风格或艺人,再顺着作品与关系走几步。

使用 Rock Atlas · 使用与数据说明

目前源码仓库为私有,普通读者可通过作者联系渠道反馈。纠错时附上对象名称、网页链接和可以核查的来源;体验反馈则告诉我,你从哪里开始,在哪一步找不到或看不懂。

有兴趣的开发者也可以通过GitHub联系,共同打磨产品。