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 / 界面
服务界面



03 / 工作原理
从新闻标题到国家和流派:分类流水线
最难的不是收集 RSS,而是弄清新闻说的是谁并且不出错。标题常用 Title Case 书写,因此“首字母大写的词 = 人名”这种朴素的启发式会抓到“Manager”“Live”或“Various Artists”——它们是 MusicBrainz 中真实存在(尽管是垃圾)的实体。所以识别之前会先运行一份通用词和已知占位词的例外列表。
- RSS。
- 提取名称。
- MusicBrainz。
- 流派规范化。
- 置信度。
04 / 审核
Google News 提供覆盖面,审核保证质量
既然来源如此宽泛,信息流和读者之间就多了一道审核队列:Google News 的新闻不会自动发布,而是先进入 ,由人来做决定。
- 队列。
/admin/review - Publish / Block。
- BlockRule。
- 批量操作。
Publish selectedBlock selectedPublish domainBlock domain - 封面。
/releasesWith artworkMissing artwork
顺带整理了与 Discogs 的关联:唱片现在保存 /,“Artist — Release”形式的标题也能更准确地把唱片关联到艺人。
05 / 覆盖面与技术栈
真实数据与可预测的基础设施
来源: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