README file from
GithubImage Upload Pipeline
Image Upload Pipeline is an Obsidian plugin that automatically handles images pasted or dropped into the editor. It can resize, compress, or convert images before uploading them to a configurable multipart/form-data API, then inserts the returned URL as Markdown.
Features
- Upload images pasted from the clipboard or dropped into the editor.
- Send files to any compatible
multipart/form-dataPOST endpoint. - Configure custom HTTP headers for API tokens or authentication.
- Extract the uploaded image URL from JSON responses with dot-path syntax, such as
url,data.link, or0.src. - Optionally resize images and convert static images to JPEG, PNG, or WebP before upload.
- Preserve unsupported transform targets such as SVG, animated GIF, and ICO by uploading the original file.
- Upload multiple images concurrently while preserving insertion order.
- Optionally insert uploaded images as an inline HTML gallery that auto-splits row width across adjacent images.
- Bilingual settings UI for English and Chinese Obsidian interfaces.
Compatibility
Image Upload Pipeline requires Obsidian 1.13.0 or newer.
Installation
Community Plugins
After the plugin is approved in the Obsidian community plugin directory:
- Open Settings → Community plugins.
- Search for Image Upload Pipeline.
- Install and enable the plugin.
Manual Install
- Download
main.js,manifest.json, andstyles.cssfrom a GitHub release. - Create this folder in your vault:
.obsidian/plugins/image-upload-pipeline/
- Put the three downloaded files into that folder.
- Reload Obsidian and enable Image Upload Pipeline.
Configuration
Open the plugin settings and configure:
| Setting | Description |
|---|---|
| API endpoint | The POST endpoint that receives multipart/form-data uploads. |
| File field name | The form field name for the image file. The default is file. |
| Image URL path | Dot path used to extract the final image URL from the JSON response. |
| HTTP headers | Optional request headers, such as Authorization. |
| Image transform | Optional resize, compression, and format conversion before upload. |
| Auto inline gallery | Insert plugin-generated HTML images and merge adjacent images with no blank line into one row. |
Content-Type is generated automatically for multipart uploads and cannot be overridden in the settings.
CloudFlare ImgBed Example
For MarSeventh/CloudFlare-ImgBed, a typical configuration is:
| Setting | Value |
|---|---|
| API endpoint | https://your-domain.example/upload?returnFormat=full |
| File field name | file |
| Image URL path | 0.src |
| Header name | Authorization |
| Header value | Bearer your_imgbed_api_token |
If you want to force a specific CloudFlare ImgBed upload channel, add a query parameter such as:
&uploadChannel=cfr2
Privacy And Network Usage
The plugin sends image files only to the API endpoint you configure. It does not collect telemetry and does not send files to any built-in third-party service.
API keys or tokens configured in headers are stored in Obsidian plugin data for your local vault. Treat that vault configuration as sensitive.
Development
npm install
npm run build
The production build outputs main.js in the repository root. For release, upload these files as GitHub release assets:
main.jsmanifest.jsonstyles.css
The release tag must match the version in manifest.json.
Pushing a tag in x.y.z format runs the release workflow and uploads those assets automatically.