yinshaohua148 downloadsDownload remote images in the current note to local vault storage.
Download Image is an Obsidian community plugin that finds remote image URLs in the current note, downloads those files into your vault, and rewrites the note to point at the local attachments instead.
It is intended for users who want notes to remain self-contained, available offline, and less dependent on third-party image hosts.
The plugin currently provides two commands:
.trash or permanently deletes them based on settings.The plugin includes a settings tab with options for:
.trashTo remove unused downloaded files later:
Once a release is published, copy these files into your vault at:
<Vault>/.obsidian/plugins/download-image/
Required release assets:
main.jsmanifest.jsonOptional asset:
styles.cssThen reload Obsidian and enable Download Image in Settings → Community plugins.
This repository is also usable for local plugin development. Build the plugin, then copy the release artifacts into:
<Vault>/.obsidian/plugins/download-image/
Install dependencies into this project's local node_modules directory:
npm run deps:install
This script runs npm install in the project root. Dependencies are always kept in
./node_modules; no environment setup or external dependency directory is used.
npm run dev
npm run build
npm test
Key project files:
manifest.json — plugin metadata used by Obsidian releasespackage.json — npm scripts and development metadata.planning/ — version-controlled project plans, requirements, decisions, and verification recordssrc/main.ts — plugin lifecycle and command registrationsrc/settings.ts — persisted settings and settings UIversions.json — plugin version to minimum Obsidian version mappingSource code lives in src/. Keep src/main.ts small and focused on plugin lifecycle tasks such as loading settings, registering commands, and adding settings tabs. Put feature logic in focused modules such as downloader, parser, replacer, scanner, modal, and settings files.
Planning artifacts in .planning/ are committed with the repository. Local GSD runtime state in .gsd/ remains ignored.
main.js.loadData() and saveData() and provide sensible defaults.node_modules/ or main.js during normal development.When preparing a plugin release (the current repository version is 1.0.0):
Update manifest.json version using SemVer.
Update versions.json so each plugin version maps to the correct minimum Obsidian version.
Ensure package.json metadata still matches the plugin identity.
Run:
npm run build
npm test
Create a GitHub release whose tag exactly matches manifest.json's version number.
v.Upload the release assets:
main.jsmanifest.jsonstyles.css if presentThis repository is the source for the public Obsidian community plugin release.
For community review and catalog updates, maintainers should ensure that:
manifest.json contains accurate plugin metadataThe community plugin submission flow itself happens through the Obsidian plugin review/catalog process, but this repository must stay aligned with that release contract.
0BSD