Skip to main content

Lightroom AI Tagger

An intelligent tagging assistant for Adobe Lightroom Classic that uses OpenAI's CLIP model to automatically generate relevant keywords for your photos.

Features

  • Automatically analyze images in your Lightroom catalog using CLIP neural network
  • Generate relevant keywords based on image content
  • Update XMP sidecar files with AI-generated keywords while preserving existing ones
  • Configurable confidence threshold and maximum keywords per image
  • Supports common RAW formats (NEF, CR2, ARW) and JPEGs
  • Uses the Foundation List 2.0.1 keyword hierarchy for consistent tagging

Requirements

  • Python 3.8+
  • Adobe Lightroom Classic
  • PyTorch
  • transformers
  • Pillow
  • sqlite3

Installation

You can install lr-autotag directly from PyPI:

pip install lr-autotag

Or, for development:

  1. Clone this repository:
git clone https://github.com/yourusername/lr-autotag.git
cd lr-autotag
  1. Install with UV in development mode:
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
uv pip install -e ".[dev]"
  1. Download the Foundation List file and place it in the project directory.

Usage

  1. Close Lightroom Classic if it's running

  2. Modify the catalog path in the script to point to your Lightroom catalog:

catalog_path = "path/to/your/catalog.lrcat"
  1. Run the script:
python lightroom-tagger.py

The script will:

  • Scan your Lightroom catalog for images
  • Generate AI keywords for each image
  • Create or update XMP sidecar files with the new keywords
  • Save a JSON report of all suggestions

Important Notes

  • Always ensure you have enough disk space for catalog backups
  • Backup files are not automatically cleaned up - you may want to periodically remove old backups
  • The backup process might take a few moments for large catalogs

Configuration

You can adjust these parameters in the script:

  • threshold: Confidence threshold for keyword suggestions (default: 0.5)
  • max_keywords: Maximum number of keywords per image (default: 20)
  • max_size: Maximum image dimension for processing (default: 1024)

How It Works

  1. The script connects to your Lightroom catalog's SQLite database to get image locations
  2. Each image is processed through the CLIP neural network
  3. The image embeddings are compared against pre-computed embeddings of the Foundation List keywords
  4. Keywords with similarity scores above the threshold are selected
  5. The keywords are written to XMP sidecar files that Lightroom can read

Safety Features

Catalog Backup

Before any operations that access the Lightroom catalog, the tool automatically creates a timestamped backup of your catalog file. The backup is stored in the same directory as your original catalog with the format: [original_name]_YYYYMMDD_HHMMSS.backup.

If the backup process fails for any reason, the tool will not proceed with catalog operations to ensure your data's safety.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • OpenAI's CLIP model
  • The Digital Photography School Foundation List[https://lightroom-keyword-list-project.blogspot.com/]
  • Adobe Lightroom Classic SDK documentation

Disclaimer

This tool is not affiliated with or endorsed by Adobe. Use at your own risk and always backup your Lightroom catalog before using any third-party tools.

Metadata

Release files for lr-autotag 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lr-autotag 0.1.0
File Size Uploaded
lr_autotag-0.1.0.tar.gz 76.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lr-autotag 0.1.0
File Interpreter ABI Platform
lr_autotag-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 93.8 kB

Release files / lr_autotag-0.1.0.tar.gz

Download URL lr_autotag-0.1.0.tar.gz
Size 76.3 kB
Tags Source
SHA-256 checksum
How to use checksums
5357937bedc031ed3a54aa84c81004c741c6e540da927ae08f831e657eeb4cc3
BLAKE2b-256 checksum
How to use checksums
dddb9d2447e35ffa5458b6327cba7fd54d36828cbcb47d9493c502de1d942af8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.0.1 CPython/3.12.8

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 24, 2024.

Transparency log

Release files / lr_autotag-0.1.0-py3-none-any.whl

Download URL lr_autotag-0.1.0-py3-none-any.whl
Size 17.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
01e9893df14d7a023ffc17bee91030aa835113f3665488a3a5dd98e5fcaa7208
BLAKE2b-256 checksum
How to use checksums
083dc64498b6e8782020995c0341883758f173062010bfa83c4797f1086e6a9d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.0.1 CPython/3.12.8

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 24, 2024.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page