Skip to content

Releases: Clear-pH/llm-seo-generator

v1.3.2

Choose a tag to compare

@dbreck dbreck released this 09 Sep 16:29

Changed

  • Diagnostic logging is now opt-in. The plugin wrote roughly fifteen "Starting to load dependencies" / "Successfully loaded …" / "… initialized" lines to the PHP error log on every request (front end, admin and WP-CLI, where they surface on stderr). Those boot-time lines are removed. All remaining informational messages (provider registration, request/response traces, image conversion steps, API-key presence checks) go through a new llm_seo_log() helper and are silent unless define('LLM_SEO_DEBUG', true); is set in wp-config.php. Errors and warnings (missing files, failed requests, image read/convert failures) still log unconditionally.

(1.3.0 and 1.3.1 shipped without changelog entries.)

v1.2.0

Choose a tag to compare

@dbreck dbreck released this 12 Apr 14:10

Features

  • Image browser on both Single Image and Bulk Process tabs lets you find, view, and select images missing Alt Text, Captions, and/or Descriptions without opening the WordPress media library.
  • Filter checkboxes narrow results by which metadata fields are missing.
  • Single Image tab: clicking a browsed image selects it directly for generation.
  • Bulk Process tab: multi-select with Select All / Deselect All and a "Use Selected for Bulk Processing" button that feeds chosen images into the existing bulk workflow.
  • Paginated results (24 per page) with page navigation for large media libraries.
  • Missing-field badges on each thumbnail show at a glance which fields need attention (Alt, Cap, Desc).

v1.1.0

Choose a tag to compare

@dbreck dbreck released this 11 Apr 17:01

Features

  • Provider model lists are now fetched live from the Anthropic and OpenAI APIs with a 12-hour cache, falling back to a built-in list when no API key is configured.
  • Model cache is automatically invalidated when the Claude or OpenAI API key is saved.
  • Bulk "Find Images" now reports a per-field breakdown of what's missing (e.g. "312 missing Alt Text, 180 missing Caption") so it's clear what will actually be written.
  • Title is now treated as a tag-along field in "Only add missing metadata" mode: it doesn't gate which images get selected, but it's regenerated on every image that does get processed — so you can refresh filename-based titles while filling in missing alt/caption/description.

Fixes

  • OpenAI settings (api_key, model, max_tokens, temperature) were never registered via register_setting(), so they silently failed to save through options.php. Now registered correctly.
  • Claude and OpenAI radios in the provider picker were disabled whenever the provider was "Not Available," creating a chicken-and-egg where you couldn't select them to reach the config tab and enter an API key. The radios are now always selectable.
  • $provider_id was referenced before being assigned inside the per-attachment loop in handle_bulk_generate_media. The active provider is now fetched once up front with early validation.
  • parse_media_response used to throw on any missing field, so a partial LLM response (e.g. alt text returned but caption omitted) would discard the entire image's metadata including the valid parts. It now saves whatever fields the LLM did return.
  • JSON extraction now uses a brace-balanced parser that handles nested objects, escaped quotes, and } inside string values. Markdown code fences are stripped before parsing.
  • "Only add missing metadata" mode previously overwrote existing non-title metadata because generation always wrote every selected field. Now existing alt text, captions, and descriptions are preserved — only missing fields are asked for, generated, and saved.
  • PDFs and videos are explicitly excluded from bulk processing (queries already filter on post_mime_type => 'image'; this release confirms and documents that behavior).

Changes

  • Bulk "missing" mode now skips the LLM call entirely for images where nothing needs generating, saving tokens.
  • The per-attachment prompt is narrowed to only the fields that actually need to be written, so Claude/OpenAI never generates content that will be discarded.
  • Bulk processing mode description updated to reflect the new Title behavior.