适合只想先跑通全局播放器与灵动岛悬浮 UI 的场景。
DynamicIslandPlayer/components/Player.js->components/Player.jsDynamicIslandPlayer/components/DynamicIslandPlayer.js->components/DynamicIslandPlayer.jsDynamicIslandPlayer/pages/api/meting.js->pages/api/meting.js
在 components/ExternalPlugins.js 中,保持和主项目一致的挂载方式:
- 动态引入
MusicPlayer - 动态引入
DynamicIslandPlayer - 在
MUSIC_PLAYER开启时同时渲染这两个组件
如果你就是当前主项目仓库用户,这一步通常已经存在;最小安装脚本不会自动改写 components/ExternalPlugins.js。
建议至少配置:
MUSIC_PLAYERMUSIC_PLAYER_METINGMUSIC_PLAYER_METING_IDMUSIC_PLAYER_METING_APIMUSIC_PLAYER_VISIBLEMUSIC_PLAYER_AUTO_PLAY
可选补充:
MUSIC_PLAYER_ORDERMUSIC_PLAYER_LRC_TYPEMUSIC_PLAYER_CDN_URLMUSIC_PLAYER_STYLE_CDN_URLMUSIC_PLAYER_AUDIO_LIST
必填:
MUSIC_PLAYER_METING_UPSTREAM
按需配置:
MUSIC_PLAYER_METING_UPSTREAM_URL_PARAMMUSIC_PLAYER_METING_UPSTREAM_LEVEL_PARAMMUSIC_PLAYER_METING_UPSTREAM_TYPE_PARAM
- 打开页面后确认
window.__APPLAYER__已存在 - 请求
/api/meting?url=你的ID,确认能返回音频数组 - 页面右上角/悬浮区能看到灵动岛播放器状态变化
- 上游异常时,确认能回退到
MUSIC_PLAYER_AUDIO_LIST
适合希望把文章中的 Notion 音频块也统一改造成灵动岛风格卡片的场景。
增强模式才需要继续复制:
DynamicIslandPlayer/components/InlineIslandAudio.js
最小接入路径不依赖 InlineIslandAudio.js、pages/api/audio-meta.js、lib/server/audioMeta.js。
主项目增强模式依赖以下入口:
components/NotionPage.jsNotionRenderer的Audio组件映射到InlineIslandAudio- 页面渲染后还会扫描
.notion-audio,并尝试把原生音频块转换成统一卡片
pages/api/audio-meta.js- 为文章音频卡片补充封面、歌词、歌手等元数据
lib/server/audioMeta.js- 从 Notion 音频元数据库读取并缓存元数据
MUSIC_PLAYER_ARTICLE_AUDIO_CONVERTMUSIC_PLAYER_ARTICLE_META_ENABLEMUSIC_PLAYER_ARTICLE_META_DB_IDNOTION_ACCESS_TOKEN
因为当前实现走的是 APlayer CDN 动态加载,不依赖本地 npm 包。
为了让安装包更接近“复制即用”,避免新用户还要一起拷贝主项目私有工具函数。
只有你要改造文章内音频块时才需要;最小接入路径不依赖它。