Skip to content

riiicil/RJ-Auto-Metadata

Repository files navigation

RJ Auto Metadata

License: AGPL v3 Python Version Version

AI-powered batch metadata generator for stock photographers, videographers, and graphic designers.


What is this?

RJ Auto Metadata is a desktop application that uses AI to automatically generate titles, descriptions, and keywords for your media files. It embeds the metadata directly into your files using ExifTool and exports ready-to-upload CSV files for all major stock platforms. If you have hundreds or thousands of images, vectors, or videos to keyword, this tool handles the heavy lifting.


Features

  • AI-powered metadata generation — title, description, and keywords generated by vision-capable AI models
  • Multi-provider support — Gemini, OpenAI, OpenRouter, Groq, Mistral, Blackbox, and Custom (any OpenAI-compatible endpoint)
  • Dynamic model fetching — click Fetch to load live model lists directly from each provider
  • Batch processing — configurable parallel workers and delay between API calls
  • Broad file format support — Images (JPG, PNG), Vectors (AI, EPS, SVG), Videos (MP4, MKV, AVI, MOV, etc.)
  • Direct metadata embedding — XMP-first strategy via ExifTool; format-specific handling per file type
  • Multi-platform CSV export — Adobe Stock, Shutterstock, 123RF, Vecteezy, Depositphotos, Miri Canvas
  • Advanced prompt customization — custom instruction, hint, inject keywords prepended to AI results
  • Custom Quality settings — choose Detailed / Balanced / Less, or unlock Custom mode to set your own min/max word and character limits
  • Auto retry — always-on failure recovery; failed files are automatically retried
  • Auto foldering — sorts output into Images / Vectors / Videos subfolders
  • Auto rename — renames output files to match the AI-generated title
  • Auto category — assigns platform categories based on AI analysis
  • Metadata embedding toggle — Enable or Disable EXIF/XMP writing per run
  • Persistent settings per provider — API keys, selected model, and base URL saved and restored per provider

Supported File Formats

Format Support Tools Required
JPEG (.jpg, .jpeg) Full — title, description, keywords (XMP + IPTC) Bundled
PNG (.png) AI metadata + CSV export; no EXIF embed (ExifTool limitation) Bundled
Adobe Illustrator (.ai) Partial — title, keywords via XMP-only Ghostscript
EPS (.eps) Partial — description, keywords via generic approach Ghostscript
SVG (.svg) AI metadata + CSV export; no EXIF embed Ghostscript + GTK3
Video (.mp4, .mkv, .avi, .mov, etc.) AI metadata + CSV export; frame-based analysis FFmpeg

Supported AI Providers

Provider Notes
Gemini Google — OpenAI-compatible endpoint; vision support; free tier available
OpenAI Responses API; vision support; paid
OpenRouter Routes to multiple upstream models (Anthropic, Google, xAI, Meta, etc.)
Groq High-speed inference; Llama 4 vision models; generous free tier
Mistral OpenAI-compatible endpoint; free tier available
Blackbox OpenAI-compatible endpoint
Custom Any OpenAI-compatible base URL you supply

Platform Support

OS Status Notes
Windows ✅ Full Installer + source code
macOS 🔵 Source only Manual tool installation required
Linux 🟠 Source only Manual tool installation required

System Requirements

  • Python 3.9+
  • pip
  • Python packages: pip install -r requirements.txt

External tools (required for full format support):

Tool Purpose Installer users Source users
ExifTool Metadata embedding Bundled Install manually
Ghostscript AI / EPS / SVG rendering Bundled Install manually
FFmpeg Video frame extraction Bundled Install manually
GTK3 Runtime (Windows) SVG via CairoSVG Handled by installer Install manually

Installation

Using the Installer (Windows — Recommended)

  1. Go to the Releases page
  2. Download the latest v3.x.x.zip and extract it
  3. Run setup.exe and follow the on-screen prompts
  4. Accept the GTK3 Runtime installation when prompted (required for SVG support)
  5. Launch from the Start Menu shortcut or desktop icon

Running from Source

  1. Clone the repository:

    git clone https://github.com/riiicil/RJ-Auto-Metadata.git
    cd RJ-Auto-Metadata
  2. Create and activate a virtual environment:

    python -m venv venv
    # Windows:
    .\venv\Scripts\activate
    # macOS / Linux:
    source venv/bin/activate
  3. Install Python dependencies:

    pip install -r requirements.txt
  4. Install external tools manually and add them to your system PATH:

  5. Run the application:

    python main.py

Usage

  1. Launch the application (python main.py or via the installed shortcut)
  2. Set folders — choose your Input and Output directories (must be different)
  3. Enter API key(s) — paste one key per line for the active provider
  4. Select provider and model — use the provider dropdown, then click Fetch to load available models
  5. Adjust settings (optional) — keywords count, workers, delay, quality, toggles
  6. Click Start Processing — the app processes all supported files in the Input folder
  7. Monitor logs — real-time progress, success/failure messages, and batch counts
  8. Review output — processed files appear in the Output folder; CSV files are ready for platform upload

Provider Rate Limits

Each provider enforces its own request and token quotas. Size your worker count, delay, and key pool accordingly to avoid HTTP 429 errors.

Google Gemini

Usage is subject to per-project limits across four dimensions: RPM (requests/minute), RPD (requests/day), TPM (tokens/minute), TPD (tokens/day). Exceeding any one dimension blocks further requests until the budget recovers.

Free tier example values (may change):

Model RPM TPM RPD
Gemini 2.5 Flash 10 250,000 500
Gemini 2.5 Flash-Lite 15 250,000 500
Gemini 2.5 Pro 5 250,000 25
Gemini 2.0 Flash 15 1,000,000 1,500
Gemini 2.0 Flash-Lite 30 1,000,000 1,500

See official Gemini rate limit docs for current quotas.

OpenAI

Per-minute and per-day quotas depend on your account tier and model family. Monitor usage in the OpenAI dashboard and review the rate limit guide.

OpenRouter

Effective limits depend on both OpenRouter's quotas and the upstream model provider. Monitor via the OpenRouter dashboard. Rotating multiple API keys or selecting models with more generous quotas helps maintain throughput.

Groq

Generous free-tier limits for supported models.

  • Llama 4 Vision Models (Scout / Maverick): ~30 RPM, 1,000 RPD
  • Text-only models: Higher limits (e.g., 30 RPM, 14,400 RPD for Llama 3.1 8B)

The app handles 429 Too Many Requests with automatic backoff across all providers.


CSV Export — Supported Platforms

All CSV files are written to your Output folder in real time as files are processed. Each platform gets its own dedicated file.

Platform File Format Notes
Adobe Stock adobe_stock_export.csv Filename, Title, Keywords, Category, Releases; numeric category IDs
Shutterstock shutterstock_export.csv Filename, Description, Keywords, Categories, Editorial, Mature, Illustration; auto illustration flag for vectors
123RF 123rf_export.csv oldfilename, 123rf_filename, description, keywords, country; platform-specific quoting
Vecteezy vecteezy_export.csv Filename, Title, Description, Keywords, License, Id; auto "vector" keyword filter; license set to "pro"
Depositphotos depositphotos_export.csv Filename, Title, Description, Keywords, Category, Nudity, Editorial
Miri Canvas miri_canvas_export.csv fileName, uniqueId, elementName, keywords, tier, contentType; tier set to "Premium"

Troubleshooting

ExifTool not found

  • Installer users: verify the tools/ subfolder exists with content. Check the log for specific errors.
  • Source users: install ExifTool and ensure it is in your system PATH (exiftool -ver should work in terminal).

Ghostscript errors (AI / EPS files)

  • Installer users: Ghostscript is bundled. If errors persist, check the log for path issues.
  • Source users: install Ghostscript and add it to PATH (gswin64c -version on Windows).

GTK3 errors (SVG files)

  • Installer users: the GTK3 installer may have been skipped during setup. Re-run the GTK3 Runtime installer.
  • Source users: install GTK3 Runtime and ensure CairoSVG can import it (python -c "import cairocffi").

FFmpeg errors (video files)

  • Installer users: FFmpeg is bundled. Check the log for path issues.
  • Source users: install FFmpeg and add it to PATH (ffmpeg -version should work in terminal).

Permission errors

  • Choose a different Output folder, or check write permissions on the current one.

API errors / 429 rate limits

  • Reduce worker count, increase delay, or add more API keys (one per line).
  • Switch to a model with a higher rate limit for your account tier.
  • The app retries automatically on transient errors.

License

Licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).

You are free to use, modify, and distribute this software. Any modified version run on a server must make the source code available to users. See the LICENSE file for full terms.

Dependencies carry their own licenses (MIT, Apache, LGPL, etc.). See the licenses/ folder.


Support & Contact

https://s.id/riiicil


Support the Project

If you find this tool useful, you can support its development via the QR code below.

Support QR Code

About

RJ Auto Metadata is a desktop application that uses AI to automatically generate titles, descriptions, and keywords for your media files.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors