Play note-backed playlists with YouTube, cached audio, and local files.
Play note-backed playlists with YouTube, cached audio, and local files.

Each track is a Markdown note. Each playlist is a Bases file embedded in a companion note, with playback in the sidebar player.
From the Community plugins browser, search for Note Player, then install and enable it.
Manual: download main.js, manifest.json, and styles.css from the latest release, copy them into <vault>/<config folder>/plugins/note-player/, then enable the plugin.
Desktop only (Obsidian 1.13.0 or later). Downloading audio needs two command-line tools on your PATH:
brew install yt-dlp ffmpeg # macOS; use your package manager elsewhere
Copy a YouTube link, then do any one of these:
The track note is created in the Music folder setting (or Obsidian's default location for new notes) and appended to the selected playlist. If no playlist exists, one named Inbox is created. A video that is already in the library reuses its note. A YouTube playlist link adds every video in it, using yt-dlp.
A playlist is a companion note with type: music-playlist embedding a .base file. Its first view is Obsidian's native Cards view, showing track titles, authors, and the configured thumbnail property. Cards use Obsidian's theme in both light and dark mode. Open a card to open its track note; playback is only from the sidebar player.
Track notes have type: music, a YouTube URL in source, and links to companion playlist notes in playlists. Property names and note types are configurable in settings. Queue membership follows those links; queue order follows the base's first view's sort, regardless of view type, with name ascending when no supported sort is set.
Run Convert playlist notes to Bases from the command palette or settings to preview conversion of legacy track lists and upgrades of paired playlist bases from the former custom view to native cards. Original lists stay in tracks_legacy; filters, sorting, and other views are preserved. Unpaired bases are never upgraded. Conversion runs only when requested, not on startup.
Open it from the ribbon icon or the Open player view command. Other commands:
The now-playing card shows a spinning record with a tonearm. Starting playback lowers the needle with a synthesized drop and vinyl crackle; pausing lifts it with a soft tick. The sounds are generated with Web Audio (no audio files are bundled) and follow the player volume. Turn them off with Turntable sounds in settings. With reduced motion enabled the record stays still.
Playlist folder, music folder, property mapping for URL, thumbnail, artist, playlist membership, description, cover, and note types, audio format (MP3 or WAV), autoplay, open on startup, and Turntable sounds.
Both folder settings include all subfolders. Pick an existing folder from the list, or type a new path to create it. In any picker, Shift+Enter creates what you typed, even when other options match. Choosing Vault root in either setting includes the whole vault, including all subfolders.
Note Player is desktop only. It has no telemetry and no accounts, and it sends nothing to any server except YouTube.
youtube.com/oembed, through Obsidian's requestUrl, to read the title, channel and thumbnail. No API key is used.img.youtube.com.yt-dlp as a child process to download audio, resolve stream links and expand playlist links. yt-dlp calls ffmpeg to convert audio. No other programs are run.PATH or in the usual install folders (~/.local/bin, /opt/homebrew/bin, /usr/local/bin, /usr/bin); it tries to start each one and keeps the first that runs.<id>.peaks.json) are stored in <vault>/<config folder>/plugins/note-player/audio-cache. The plugin reads, lists and deletes them through Obsidian's vault adapter. Only yt-dlp itself writes into this folder, using the absolute path of the vault..base files are read for queue sorting. Nothing leaves your device.yt-dlp --version works in a terminal and that its folder is on your PATH.type matches the playlist note type in settings.bun install
bun run dev # watch build into dist/
bun run ci # build, typecheck, lint, test
Releases are cut by CI only.
MIT. See LICENSE. Author: Beomsu Koh.