Aki Hakune42 downloadsDownload remote media referenced in your notes and store it locally or on a remote backend (WebDAV, S3).
An Obsidian plugin that downloads remote media referenced in your notes and stores it locally in your vault — or uploads it to a remote backend (WebDAV or any S3-compatible service).
Features · Commands · Settings · Installation · Development
![[https://example.com/cat.png]] (opt-in)<img>, <video>, <audio>, <source> tags (opt-in)-1, -2, … suffix if a file with the same name already exists.Import remote media — scan, download, rewrite.Import remote media (dry run) — scan and show what would happen; nothing is modified or uploaded.| Section | Option | Description |
|---|---|---|
| Scanning | Scan paths | Comma-separated folders. Empty = whole vault. |
| Detectors | per-syntax toggles | Each embed syntax can be enabled/disabled individually. Default: Markdown image + audio/video. |
| Filters | Allowlist / Denylist | Host patterns. * = all. Supports regex like /^i\.imgur\.com$/. |
| Filters | Size limit (MB) | 0 = off. Skips files larger than this (checked via HEAD). |
| Backend | Active backend | local, webdav, or s3. |
| Backend | per-backend fields | Folder (local), URL/credentials (WebDAV), endpoint/bucket/keys/template (S3). |
| Advanced | Request timeout (seconds) | Per-request timeout. Default 30. |
main.js and manifest.json from the latest release.<vault>/.obsidian/plugins/media-importer/.git clone https://github.com/git-akihakune/media-importer
cd media-importer
npm install
npm run build
Copy build/main.js, build/manifest.json, and build/styles.css into your vault's .obsidian/plugins/media-importer/ directory and enable the plugin.
npm run dev # esbuild watch
npm run test # vitest run
npm run lint # eslint
npm run typecheck # tsc --noEmit
Releases are automated via the Release workflow.
version in manifest.json to the new version (e.g. 0.2.0).git commit -am "chore: bump version to 0.2.0".git tag 0.2.0 && git push origin 0.2.0.versions.json, and publishes a GitHub release with main.js, manifest.json, and styles.css attached.The tag name must match manifest.json's version exactly (no v prefix), or the workflow will fail. Obsidian's submission bot requires bare-version tags.
From the Actions tab → "Release" workflow → "Run workflow", enter the version (e.g. 0.2.0). The workflow will create the tag if it doesn't exist, then build and release.
manifest.json.minAppVersion to versions.json and commits back to the default branch.