Help us improve
Share bugs, ideas, or general feedback.
From immich-photo-manager
Detects and helps remove screenshots, duplicates, and low-quality photos from an Immich library. Useful for freeing up space and organizing photo collections.
npx claudepluginhub drolosoft/immich-photo-manager --plugin immich-photo-managerHow this skill is triggered — by the user, by Claude, or both
Slash command
/immich-photo-manager:photo-cleanupThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Before doing ANYTHING else in this skill, call `ping` on the Immich MCP server.**
Analyzes disk usage in an Immich photo library and identifies storage reclamation opportunities: redundant RAW+JPEG pairs, oversized videos, bloated sidecar files, and format inefficiencies.
Automates Google Photos tasks (upload media, manage albums, search photos, batch add items) via Rube MCP (Composio). Always searches tools first for current schemas.
Share bugs, ideas, or general feedback.
Before doing ANYTHING else in this skill, call ping on the Immich MCP server.
ping succeeds → proceed with the skill normally.ping fails or the MCP tools are not available → STOP. Do not continue. Tell the user:❌ Immich is not connected. This plugin needs a running Immich MCP server to work.
Run /setup-immich-photo-manager to configure your Immich connection. You'll need:
- Your Immich server URL (e.g.,
http://192.168.1.100:2283)- An Immich API key (how to create one)
- The MCP server configured (see /setup-immich-photo-manager)
Nothing in this plugin will work until the connection is configured.
Do NOT skip this check. Do NOT try to run any other tool first. Always ping, always block if it fails.
Intelligent photo library cleanup for Immich. Identifies and helps remove screenshots, duplicates, and low-quality images while protecting valuable photos.
NEVER delete photos automatically. Always:
delete_assets(asset_ids, force=False) to send photos to trash (recoverable). Use restore_assets or restore_trash to undo. Only use force=True for permanent deletion when the user explicitly requests it.Screenshots are the #1 source of library bloat. Detection criteria (combine multiple signals):
| Signal | Weight | How to detect |
|---|---|---|
| Screen resolution | High | Dimensions match known screen sizes exactly |
| No GPS data | Medium | EXIF GPS fields empty |
| No lens info | Medium | No focal length, aperture, or lens model |
| Filename pattern | Low | Contains "Screenshot", "Screen Shot", "Captura" |
| No camera make/model | Medium | Missing or generic device info |
Screen resolutions to flag (exact pixel matches):
iPhone screens: 750x1334, 1125x2436, 1170x2532, 1242x2688, 1284x2778, 1290x2796 Mac screens: 1920x1080, 2560x1440, 2560x1600, 2880x1800, 3024x1964, 3456x2234 Common Android: 1080x1920, 1080x2340, 1080x2400, 1440x2560, 1440x3200
A photo matching 2+ signals is a strong screenshot candidate. Report confidence level:
Sources of duplicates:
Detection strategy:
get_duplicates tool as a fast first pass — returns groups of visually similar assets detected by Immich's ML engine. Resolve with resolve_duplicates.| Issue | Detection | Action |
|---|---|---|
| Very dark | Average brightness < 20 (if available) | Flag for review |
| Very blurry | Motion blur EXIF hints, very low sharpness | Flag for review |
| Tiny resolution | Under 640x480 | Flag for review |
| Corrupt/partial | File size anomalies, unreadable EXIF | Flag for review |
Important: Some intentionally dark or blurry photos are artistic. Always flag, never auto-remove.
📊 Library: {total} assets ({size})
📱 Probable screenshots: ~{count} ({percentage}%)
🔄 Probable duplicates: ~{count} ({percentage}%)
📉 Low quality candidates: ~{count} ({percentage}%)
💾 Estimated space recoverable: {size}
After the quick scan, clean up category by category:
Screenshots first (highest confidence, biggest impact)
delete_assets(asset_ids, force=False) (moves to trash, recoverable)Duplicates second (requires more care)
delete_assets(asset_ids, force=False) to trash copies. For ML duplicates, use get_duplicates + resolve_duplicates first.Low quality last (most subjective)
For large cleanups, report progress every 500 assets processed:
🧹 Scanning... {processed} / {total} ({percentage}%)
Found so far: {screenshots} screenshots, {duplicates} duplicates
Since Immich imports from specific folders, cleanup can target specific sources: