Immich

by Talal Abou Haiba
5
4
3
2
1
Score: 49/100

Description

Category: 3rd Party Integrations

The Immich plugin integrates Obsidian with your self-hosted Immich instance, allowing seamless insertion of images from an Immich album directly into your notes. Users can browse a shared album and quickly add one or multiple images with a single click. This feature is ideal for organizing and enhancing notes with visual content stored in a private, self-hosted environment. It supports configurable settings for album access and API integration, ensuring a secure and personalized workflow.

Reviews

No reviews yet.

Stats

41
stars
1,230
downloads
3
forks
760
days
237
days
237
days
2
total PRs
1
open PRs
1
closed PRs
0
merged PRs
20
total issues
1
open issues
19
closed issues
9
commits

Latest Version

8 months ago

Changelog

Updates to Test Connection button.

Full Changelog: https://github.com/Talal-A/obsidian-immich/compare/0.1.6...0.2.1

README file from

Github

Obsidian ❤️ Immich

This plugin allows users to easily insert images from their self-hosted Immich instance into their Obsidian notes.

Disclaimer

⚠️ The 'Immich Album Share Key' you generate below should be kept private! Do not post this online unless you are comfortable making your entire obsidian immich album public. This issue will only impact you if your immich instance is publicly accessible.

Your API key and album share key are stored in Obsidian's keychain, which encrypts them at rest using your operating system's credential store (macOS Keychain, Windows DPAPI, or a Linux secret store such as gnome-keyring). They are never written to the vault's data.json; only the name of the keychain entry is. You can review and revoke them at any time under Settings → Keychain.

The share key is written into your notes

Read this before sharing or publishing a note that contains an Immich image.

Images and videos are hot-linked from your Immich instance rather than downloaded, and the link has to carry the album share key in order to load:

![](https://raw.githubusercontent.com/Talal-A/obsidian-immich/HEAD/<https://your-immich-url.com/api/assets/{id}/thumbnail?size=preview&key=SHARE_KEY>)

So the key ends up in the note itself. That matters because the share key grants read access to the entire shared album, not just the one image it appears next to. In practice it means:

  • Publishing a note publishes the key. Obsidian Publish, a blog export, a public repository — anyone who reads the page can extract it and browse the whole album.
  • Syncing your vault to git stores the key in history, permanently. Rotating the key afterwards does not remove it from past commits.
  • Sharing a note shares album-wide access, not per-image access.

The practical mitigations today:

  • Keep the obsidian album limited to photos you would not mind seeing shared, and keep everything else in other albums. This is the reason the setup instructions suggest a dedicated album.
  • Keep your Immich instance off the public internet if you can. The key is only useful to someone who can reach the server.
  • Rotate the share key in Immich if a note containing it has been published. Existing notes will stop rendering and need re-inserting.

This is a known design limitation, not a bug — see issue #2, which tracks the options for removing the credential from note content.

Features

  • Browse a shared Immich album in a masonry grid that keeps each photo's own aspect ratio.
  • Filter instantly by filename, place, or date; press Enter to run Immich's smart (content-based) search against the album.
  • Select any number of photos or videos and insert them together, in the order you picked them.
  • Optionally download a copy into the vault instead of linking, so notes keep working if the Immich server goes away.

Prerequisites

This assumes you have a working version of immich hosted. It does not necessarily need to be remotely accessible. This decision is left up to the reader.

Immich v3 and later are supported, as are older releases that still return the album's assets inline.

Obsidian 1.11.4 or later is required, since the plugin stores credentials using Obsidian's keychain (SecretStorage) API.

Demo

https://github.com/user-attachments/assets/5ade12f7-c959-4991-9d6b-54bcb9569050

Setup

Immich

  1. Create an album on Immich. I suggest naming this 'obsidian'. This will contain all images that you want to use in obsidian moving forward.
  2. Visit the album in the Immich WebUI. Take note of the UUID: https://your-immich-url.com/albums/{UUID}.
  3. Turn on link sharing for this album. Use the following settings:
    • Require password: No.
    • Show metadata: Yes.
    • Allow public user to download: Yes.
    • Allow public user to upload: No.
    • Expire after: Never.
  4. Copy the share URL. Take note of the key: https://your-immich-url.com/share/{{KEY}}
  5. Finally, generate and copy down your API key: https://your-immich-url.com/user-settings?isOpen=api-keys
    • The permissions currently used are: server.about, album.read, asset.read. Please note that future updates may change this.
    • asset.read is required because Immich v3 removed the asset list from the album endpoint; the plugin now lists album assets via the search API.

Obsidian

  1. Install the plugin.
  2. Fill in the following settings:
    • Immich URL: full url to your Immich instance. Do not include the trailing /.
    • Immich API key: click "Link", then add the key you generated in step 5 as a keychain entry.
    • Immich Album ID: the UUID you obtained in step 2.
    • Immich Album Share Key: click "Link", then add the Key you obtained in step 4 as a keychain entry.
  3. Click "Test connection" to confirm connectivity.

"Test connection" checks the three credentials in the order they are needed — the URL and API key first, then the album ID, then the share key against a real asset — and reports each result as a notice. A failure names the setting that caused it, so there is no need to open the developer console; the plugin deliberately does not log anything there, because the share key would otherwise end up in console output that users paste into bug reports.

Upgrading from 0.3.0 or earlier

Earlier versions kept the API key and album share key as plaintext in the vault's data.json. After updating, the plugin's settings tab shows a "Move to keychain" button that creates the keychain entries and deletes the plaintext copies. Nothing is moved until you press it.

Note that the plaintext values may still exist in backups, in vault sync history, or in your .obsidian folder's git history. If your Immich instance is publicly reachable, consider rotating the API key after migrating.

Usage

Basic usage

  1. Go to the note you want to insert an image/video into. The editor view must be in focus.
  2. Open the command palette in Obsidian (ctrl/cmd + p or swipe down on mobile).
  3. Search "Immich".
  4. Select Immich: Insert from album and click on the image(s) you want to include in your note.

Available Commands

The following commands are available for use.

Insert from album

The standard insertion command. Please note you must have an open editor focused to use this command. Brings up the image selection modal.

In the picker:

  • Type to filter the album instantly by filename, place, or date. Several words narrow the results rather than widening them.
  • Enter runs Immich's smart search, which matches on what a photo shows rather than what it is called - so "sunset over water" works even when nothing is named that. This requires machine learning to be enabled on your Immich server.
  • Escape clears the search; Cmd/Ctrl+Enter inserts the current selection.
  • Click a photo to select it, then press Insert. Photos are inserted in the order you selected them.

Downloading into the vault

By default the plugin inserts a link back to Immich, which means the note breaks if the server is offline or the share link is revoked. Switch Insert photos as to "A copy downloaded into the vault" in the settings, or use the Link/Download toggle in the picker's footer to override it for a single insert.

Files land in your configured attachment folder, named immich-<id>-<original name>. The id lets the plugin notice it has already downloaded a photo and link the existing copy rather than fetching it again.

Downloaded size picks which rendition Immich serves:

Size Notes
Original As uploaded. Requires the share link to allow downloads. Often HEIC from phones.
Large Requires the share link to allow downloads.
Medium Default. Rendered by Immich, always displayable, ~1-2 MB.
Small Thumbnail-sized.

Medium and Small are rendered by Immich as JPEG or WebP, so they always display in Obsidian. Originals from phones are usually HEIC, which Obsidian cannot show - with "Fall back to a rendered image" on (the default), the plugin notices and downloads Immich's rendered version instead. With it off, the file is saved as-is and inserted as a link rather than a broken embed.

Shrink images after downloading re-compresses images inside Obsidian to a maximum edge length and JPEG quality. This strips EXIF metadata, including dates and location - which also means that data does not end up in your vault. GIFs and SVGs are never re-encoded.

Videos are never downloaded silently: if your selection includes any, the plugin asks whether to download or link them, since videos are large and cannot be shrunk.

Refresh album cache

The "Insert from album" command caches some information such as available images/videos, urls, and other metadata related to the album when it is first run. If you find that new images or changes are not showing up in the image selection modal, running this command will refresh the caches.

Similar Plugins

info
• Similar plugins are suggested based on the common tags between the plugins.
Antidote Grammar Checker Integration
4 years ago by Heziode
An Obsidian integration of Antidote, a powerful grammar checker
S3 Image Uploader
4 years ago by jvsteiner
This project implements an image uploader, similar to others offered by the community, with one important difference: you can provide your own s3 based storage, instead of relying on a third party service, such as imgur.
Text Wrapper
4 years ago by smx0
Plugin for Obsidian
Notes dater
3 years ago by Paul Treanor
Adds created_on and updated_on dates of the active note to status bar
oblogger
3 years ago by loftTech
tag explorer and frontmatter logger plugin for obsidian
InlineCodeHighlight
3 years ago by Dimava
Expiration-Date-Tracker
3 years ago by Marius Wörfel
Opsidian plugin to keep track of all expiration dates, for example, for your groceries.
Simple Image Inserter
3 years ago by Joey Holtzman
Add images from the file system into Obsidian notes through a built-in file explorer
Auto Definition Link
3 years ago by Nolan Carpenter
This is a plugin for Obsidian to automatically create links to blocks in your vault
AI Tagger
3 years ago by Luca Grippa
Simplify tagging in Obsidian. Instantly analyze and tag your document with one click for efficient note organization.
PF2e Statblocks
3 years ago by Tyler Pixley
Allows Obsidian to render Pathfinder 2e statblocks cleanly, using only Markdown-based syntax.
Image to text OCR
3 years ago by Dario Baumberger
Convert a image in your note to text.
Plugin Reloader
3 years ago by Benature
manual reload plugins
Track-a-Lot
3 years ago by Iulian Onofrei
This is a tracker plugin for Obsidian
Ego Rock
3 years ago by Ashton Eby
An obsidian plugin that implements a basic taskwarrior UI for listing and modifying tasks.
Augmented Canvas
3 years ago by Léopold Szabatura
Supercharge your Obsidian canvas experience with AI features.
Prompt ChatGPT
3 years ago by Coduhuey
Canvas Mindmap Helper
3 years ago by Tim Smart
Quadro
3 years ago by Chris Grieser (aka pseudometa)
Obsidian Plugin for social-scientific Qualitative Data Analysis (QDA). An open alternative to MAXQDA and atlas.ti, using Markdown to store data and research codes.
Yesterday
3 years ago by Dominik Mayer
Obsidian plugin providing Yesterday journaling support
Gitlab Wiki Exporter
3 years ago by Josef Rabmer
Alias Management
3 years ago by WithMarcel
Identify duplicate notes based on similar aliases and filenames in Obsidian.
BookFusion
3 years ago by BookFusion
BookFusion Obsidian Plugin
Mxmind Mindmap
3 years ago by mxmind
mxmind for obsidian plugin
Movie Search
3 years ago by Gubchik123
Obsidian plugin to help you create movie notes.
Orion Publish
3 years ago by Sean Collings
Hugo codeblock highlight
3 years ago by aarol
Highlights lines in code blocks using Hugo's hl_lines syntax
Markdown Media Card
3 years ago by Zhou Hua
PARA Workflower
3 years ago by KevTheDevX
Helpful commands for starting and working in your vault with the PARA method.
Update Time
2 years ago by Sébastien Dubois
Obsidian plugin that updates front matter to include creation and last update times
Lineage
2 years ago by ycnmhd
Gingko-like interface in obsidian
Another Sticky Headings
2 years ago by Zhou Hua
Hash Pasted Image
2 years ago by Minh Vương
Auto rename pasted images added to the vault via hash algorithm SHA-512
Relay
2 years ago by System 3
Multiplayer Mode for Obsidian
Suggest Notes
2 years ago by Doggy-Footprint
ImgBB Uploader
2 years ago by Jordan Handy
An image uploader to imgBB for Obsidian
simple-sketch
2 years ago by Yoh
an Obsidian plugin to create minimal sketches
Tokenz
2 years ago by Ferenc Moricz
Use any kind of short codes in Obsidian! Comes with a map for smileys (:), ;), ...) and one for emojis (:smile:, :wink:, ...).
Nexus AI Chat Importer
2 years ago by Superkikim
Add links to current note
6 years ago by MrJackphil
This plugin adds a command which allows to add a link to the current note at the bottom of selected notes
Discord Rich Presence
6 years ago by Luke Leppan
Update your Discord Status to show your friends what you are working on in Obsidian. With Discord Rich Presence.
Workbench
6 years ago by ryanjamurphy
A plugin to help you collect working materials.
Link indexer
6 years ago by Yuliya Bagriy
Youglish
6 years ago by Noureddine Haouari
Use YouTube to improve your pronunciation. YouGlish plugin gives you fast, unbiased answers about how words is spoken by real people and in context.
Dangerzone Writing
6 years ago by Alexis Rondeau
A plugin that forces you to write for X seconds. If you pause for more than 5 seconds, everything you've written in this note is DELETED.
Footlinks
6 years ago by Daha
Obsidian plugin that extracts urls from the main text to footer, offering a better reading/editing experience.
Discordian Theme
6 years ago by @radekkozak
Discordian plugin for tweaking Discordian theme
Search on Internet
6 years ago by Emile
Add context menu items in Obsidian to search the internet.
Show Current File Path
6 years ago by Ravi Mashru
Obsidian plugin to show the file path of the current file in the status bar
Mochi Cards Exporter
6 years ago by kalbetre
Mochi Cards Exporter Plugin for Obsidian
Open cards in imdone.
6 years ago by saxmanjes
Open cards in imdone from obsidian
Regex Pipeline
6 years ago by No3371
An Obsidian plugin that allows users to setup custom regex rules to automatically format notes.
Readwise Community
6 years ago by renehernandez
Sync Readwise highlights into your obsidian vault
Markdown Furigana
5 years ago by Steven Kraft
Simple Markdown to Furigana Rendering Plugin for Obsidian
Electron Window Tweaker
5 years ago by mgmeyers
Adjacency Matrix Maker
5 years ago by SkepticMystic
Creative an interactive adjacency matrix of your Obsidian vault
Timeline
5 years ago by George Butco
Obisdian.md plugin for creating timelines
Hide Sidebars on Window Resize
5 years ago by NomarCub, Michael Hanson
A simple Obsidian plugin to hide the sidebars when the window gets narrow.
JavaScript Init
5 years ago by ryanpcmcquen
Run custom JavaScript in Obsidian.
Clojure Plugin Host
2 years ago by Vladimir "farcaller" Pouzanov
A Clojure plugin host, allowing the creation of simple Clojure-based plugins right inside Obsidian
Tencent COS for Imgur
2 years ago by bobostudio
🔥 Obsidian 腾讯云 COS 图床插件
Immich Picker
2 months ago by Eiko Wagenknecht
Obsidian plugin to insert images from a self-hosted Immich photo server