惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
Google DeepMind News
Google DeepMind News
腾讯CDC
V
Visual Studio Blog
Engineering at Meta
Engineering at Meta
博客园 - 司徒正美
小众软件
小众软件
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
Tailwind CSS Blog
Vercel News
Vercel News
爱范儿
爱范儿
Last Week in AI
Last Week in AI
G
Google Developers Blog
阮一峰的网络日志
阮一峰的网络日志
P
Proofpoint News Feed
有赞技术团队
有赞技术团队
D
DataBreaches.Net
博客园_首页
J
Java Code Geeks
云风的 BLOG
云风的 BLOG
V
V2EX
A
About on SuperTechFans
H
Hackread – Cybersecurity News, Data Breaches, AI and More
人人都是产品经理
人人都是产品经理

谜叶象限

Vibecoding 一个主题切换动画库:13 种揭幕方式 | Margin ZCode 周末送额度:3 亿 Token 免费领取攻略 | Margin 视频卡片:在文章里嵌入一个视频 | Margin Agent 免费模型盘点:现在还能白嫖什么 | Margin GLM-5.3-Flash 发布:从「牛来」神秘刷屏到开源普惠 | Margin 从 Halo 到 Astro:博客终于变简单了 | Margin 链接卡片:在文章里引用外链与站内文章 | Margin Markdown 语法演示:本站文章的书写指南 | Margin DeepSeek Harness 入门:从安装配置到跑通第一个任务 | Margin 探索 Nuxt.js 全栈能力:用 Better-Auth 打造类型安全的 RBAC 权限系统 – 谜叶象限 年前小记:一次加班,一场尴尬,与一些过年随想 年前小记:一次加班,一场尴尬,与一些过年随想 | Margin 您好,2026:愿我们奔赴在热爱里 您好,2026:愿我们奔赴在热爱里 | Margin 动态配色方案:在 Next.js 中实现 Shadcn UI 主题色切换 Next.js 动态主题色切换:基于 CSS 变量的实现方案 | Margin 2025年度报告:普通人的变与不变 2025 年终总结:健康、感情与工作 | Margin 不只是作品集:用 Next.js 打造我的数字作品库 发现一款宝藏工具:Shots.so,几秒钟做出高级感 Mockup 发现一款宝藏工具:Shots.so,几秒钟做出高级感 Mockup | Margin Cover Magic:专业的封面设计工具,支持实时预览和高质量导出 Cover Magic:专业的封面设计工具,支持实时预览和高质量导出 | Margin Nuxt4.0初体验:一个简约、精美、现代化的个人站点导航! git commit -m "feat: 告诉你妈,我现在买得起房子了!" git commit -m "feat: 告诉你妈,我现在买得起房子了!" | Margin 一次旅游引发的家庭争论:当节俭传统遇上"趁能走多看看"的晚年愿望 一次旅游引发的家庭争论:当节俭传统遇上"趁能走多看看"的晚年愿望 | Margin 让 GitHub 个人主页更专业:用 WakaTime 实现动态代码统计 让 GitHub 个人主页更专业:用 WakaTime 实现动态代码统计 | Margin
音乐卡片:在文章里引用一首歌 | Margin
白雾茫茫丶 · 2026-08-19 · via 谜叶象限

写博客或记录瞬间时,经常想顺手放一首当下循环的歌,当作文章的配乐。直接贴一个音乐链接显得生硬,放一张截图又没法点开听。于是本站新增了「音乐卡片」:在文章里写一行指令,构建时会自动抓取歌曲的封面、歌名与歌手,渲染成一张黑胶风格的小卡片,点击就能跳转到对应平台收听。

下面用几个例子演示它的用法,也是这篇文章本身的真实渲染效果。

语法

音乐卡片由 ::music 指令构成,必须独立成段书写:

::music{id=歌曲ID}
::music{id=歌曲ID platform=netease}
  • id 是必填项,对应网易云音乐的歌曲 ID(歌曲播放页链接里 id= 后面的那串数字)。
  • platform 默认是 netease(网易云音乐),未来可扩展 qq / spotify / apple
  • 不加任何参数时,歌曲信息会在构建期自动抓取并写入本地缓存,后续构建不再联网。

一篇文章里的配乐

最常见的情况,在正文里随手放一张卡片:

构建时插件会请求网易云的非官方接口,取出歌曲名称、歌手与封面,渲染成一张黑胶唱片样式的小卡。卡片随主题的 Light / Dark 两态变化,移动端也会自动缩放。

在 MDX 里用组件标签

如果你的文章是 .mdx,也可以直接使用组件标签,写法更直观:

<Music id="212233" />

<Music id="212233" platform="netease" />

两种入口最终共用同一套视觉与数据层,效果完全一致。纯 .md 文章请用上面的 ::music 指令。

瞬间(Moments)里的配乐

「瞬间」支持在 frontmatter 里声明配乐,无需在正文写任何指令:

---
title: 我的夏天
pubDatetime: 2024-07-01
text: 海边的风,和这首循环了一下午的歌。
music:
  platform: netease
  id: 212233
---

卡片会出现在瞬间正文的配乐区域,风格与文章内保持一致。

失败降级

如果抓取失败(接口限流、网络不通,或歌曲 ID 不存在),卡片不会报错,而是降级为「黑胶占位 + 歌名兜底」的可点击卡片,构建始终能正常完成。例如下面这个不存在的 ID:

网易云音乐网易云音乐 #0000000000未知歌手

打开

实现与限制

  • 抓取发生在构建期(Node 环境),不会给浏览器增加任何运行时请求;歌曲信息会被写入 src/utils/music-cache.json 本地缓存,二次构建直接命中、无需联网。
  • 第一版只做「展示 + 跳转」,不实现在线播放器,避免引入大型播放器依赖、也不影响静态生成。
  • 封面图直接引用网易云 CDN,不下载到本地;若该 CDN 有防盗链导致图片裂开,会自动回退为纯 CSS 黑胶占位。
  • 指令段要求整段纯文本,不要混入加粗、行内代码等 Markdown 标记。
  • 卡片样式跟随主题的 Light / Dark 两态,也尊重系统的「减少动态效果」偏好。

如果你在文章里看到某张卡片显示异常,多半是抓取未拿到可用信息,给它换个有效的歌曲 ID,或在 music-cache.json 里手动补一条记录即可。