Maksutov Design MAKSUTOV DESIGN
News aggregator MusicBrainz Country & Genre RSS + Google News + Discogs · 167个来源 Next.js · TypeScript Prisma

MusicNews 按国家和流派分类的新闻

全球音乐新闻聚合器。它从专业媒体的 RSS 和47个国家的 Google News 中抓取内容,通过 MusicBrainz 识别标题中提到的艺人,并为每条新闻标注国家和流派——这样就能按国家、流派和来源给信息流排序。旁边是实体唱片动态:来自 Bandcamp、Discogs(含20个国家单独抓取)和 Toolbox Records 的黑胶、CD 与磁带,可按格式和来源筛选。这个项目由我自己构思并设计。

01 / 这是什么

音乐新闻散落在几十家媒体中——MusicNews 把它们汇集成一条可排序的信息流

要关注音乐动态,通常得逛 Pitchfork、Billboard、Rolling Stone、NME 和另外十来个网站。MusicNews 把它们的内容合并成一条信息流,并补上它们所缺的东西:为每条新闻判定艺人所属国家和流派。这样你就可以只看“只看 techno”“只看日本”或“只看 Resident Advisor”——一键切换这些视角。另有一条独立的信息流收集最新的实体唱片——黑胶、CD 和磁带——同样可按格式和来源筛选。

我用 Google News Music 扩展了新闻流:47个国家——从美国、英国和俄罗斯到日本、韩国、巴西、印度、中国、土耳其和中东国家——每个国家使用自己的语言,并对日语、韩语、中文、阿拉伯语和俄语的查询做了正确编码。Discogs 的唱片现在按20个国家和三种格式(黑胶、CD、磁带)分别查询,RSS 解析器遇到错误的发布日期也不会让整个导入崩溃。Google News 的覆盖面比编辑类媒体广得多,但噪声也更多——因此我没有采用来源质量标签,而是采用了更可靠的办法:Google News 的每条新闻先进入审核队列,确认后才发布。

02 / 界面

服务界面

maksutovdesign.ru/musicnews/ 打开网站 ↗
MusicNews——可按国家、流派和来源筛选的新闻流
01 — 新闻流 来自所有媒体的统一信息流:左侧按国家、流派和来源筛选,每条新闻都显示来源、日期以及国家和流派标签。
MusicNews——含国家与流派的艺人目录
02 — 艺人目录 所有已识别的艺人:国家、流派以及每位艺人的新闻数量——数据取自 MusicBrainz。
MusicNews——可按格式和来源筛选的实体唱片动态
03 — 唱片动态 实体唱片——来自 Bandcamp、Discogs 和 Toolbox Records 的黑胶、CD 与磁带。可按格式和来源筛选,按日期排序。

03 / 工作原理

从新闻标题到国家和流派:分类流水线

最难的不是收集 RSS,而是弄清新闻说的是谁并且不出错。标题常用 Title Case 书写,因此“首字母大写的词 = 人名”这种朴素的启发式会抓到“Manager”“Live”或“Various Artists”——它们是 MusicBrainz 中真实存在(尽管是垃圾)的实体。所以识别之前会先运行一份通用词和已知占位词的例外列表。

  1. RSS。
  2. 提取名称。
  3. MusicBrainz。
  4. 流派规范化。
  5. 置信度。

04 / 审核

Google News 提供覆盖面,审核保证质量

既然来源如此宽泛,信息流和读者之间就多了一道审核队列:Google News 的新闻不会自动发布,而是先进入 ,由人来做决定。

  1. 队列。/admin/review
  2. Publish / Block。
  3. BlockRule。
  4. 批量操作。Publish selectedBlock selectedPublish domainBlock domain
  5. 封面。/releasesWith artworkMissing artwork

顺带整理了与 Discogs 的关联:唱片现在保存 /,“Artist — Release”形式的标题也能更准确地把唱片关联到艺人。

05 / 覆盖面与技术栈

真实数据与可预测的基础设施

167个活跃来源
2886条新闻
2236张唱片
3634条已发布
1488条待审核
2129张带封面的唱片
47个国家(通过 Google News)
237Discogs external ID

来源:Pitchfork、Stereogum、Consequence、Billboard、Rolling Stone、NME、The Quietus、Resident Advisor、Brooklyn Vegan、Zvuki.ru 和 InterMedia。基于 Next.js 和 TypeScript 构建,通过 Prisma 访问数据:本地开发使用无需配置的 SQLite,生产环境使用 Postgres。信息流抓取是幂等的,并通过 cron 定时运行,所以信息流会自动更新。

06 / 接下来

路线图

  • 生产环境使用真正的 Postgres——一旦拿到数据库权限就迁移;迁移方案已写在 中。
  • 除 RSS 外的 API 来源:YouTube Data、Spotify、NewsAPI。
  • 用大语言模型分类器作为含糊标题的备选方案。
  • 按艺人、国家和流派划分的独立页面;多语言支持。
  • 来自社交网络的精选授权来源。

07 / next projects