Bryan25 downloadsDownload authorized audio and video as vault attachments using a local yt-dlp installation.
Media Fetcher is a desktop-only Obsidian plugin for authorized personal
archiving, research, education, and knowledge preservation. It uses your local
yt-dlp installation to save a lecture,
webcast, video, or podcast as a normal attachment inside your vault.
Existing community plugins either support only Windows, make downloading a secondary feature of a larger player, or focus on transcription and AI. Media Fetcher is intentionally narrow: capture a URL, store the media in the vault, and optionally embed it in the note you are writing.
yt-dlp is invoked directly with an argument arrayMedia Fetcher does not bundle, download, or update yt-dlp or ffmpeg.
After the plugin is accepted into the Obsidian Community Plugins directory:
For beta testing before directory approval, add
https://github.com/nonstopdevelopment/media-fetcher through
BRAT, or copy the three release
assets into <vault>/.obsidian/plugins/media-fetcher/.
yt-dlp installed locallyffmpeg for merged video streams and audio conversionOn macOS with Homebrew:
brew install yt-dlp ffmpeg
Obsidian applications do not always inherit the same PATH as Terminal.
Media Fetcher checks common locations such as /opt/homebrew/bin/yt-dlp and
also lets you set the absolute path in settings.
By default, Media Fetcher follows Settings → Files and links → Default location for new attachments. This supports the vault root, a fixed attachment folder, the current note's folder, and a subfolder beneath the current note's folder. Select Custom media folder in Media Fetcher settings only if you prefer one centralized media library.
Media Fetcher is a general-purpose interface to software installed and controlled by the user. It is not intended to circumvent DRM, paywalls, authentication, access controls, or other technical restrictions.
Use it only for media you own, media whose rights holder has authorized you to download, appropriately licensed or public-domain media, or uses otherwise permitted by applicable law. You are responsible for evaluating copyright, license terms, privacy and publicity rights, and the source platform's terms before downloading, sharing, publishing, or redistributing any media.
The plugin cannot determine whether a particular download or later use is lawful. See Responsible use for examples and additional guidance. This project is not affiliated with or endorsed by yt-dlp, YouTube, or any supported media service.
This repository uses pnpm:
pnpm install
pnpm check
For local testing, copy or symlink main.js, manifest.json, and styles.css
to <vault>/.obsidian/plugins/media-fetcher/, then reload Obsidian.
Push a semantic-version tag matching manifest.json, without a v prefix.
The release workflow validates the project and publishes main.js,
manifest.json, and styles.css as GitHub release assets.
Media Fetcher does not include telemetry, advertisements, accounts, payments, or a plugin-owned server.
When you start a download, the plugin passes the URL to your configured local
yt-dlp executable. yt-dlp and ffmpeg contact the media source and any
delivery hosts required by that source. Media Fetcher starts these executables
directly with argument arrays and never interpolates the URL into a shell
command.
When following Obsidian's attachment settings, the download is staged in a plugin-created operating-system temporary directory, moved into the selected vault attachment folder, and the temporary directory is removed. With a custom media folder, the executable writes directly into that vault folder. Recent diagnostic messages and URLs remain in memory only for the current Obsidian session.
Report security concerns through the repository's issue tracker.
MIT