Everything below reflects the current release (v1.0.0). From install to every upload arriving named, described and clean is about ten minutes of your attention.
You need WordPress 6.0+ on PHP 7.4+, an administrator login, and the plugin zip plus licence key from your purchase email. For AI alt text you\'ll also want an API key from Anthropic, OpenAI, Google or OpenRouter — the AI is optional, bills on your key at the provider\'s rates, and everything else works without it. One honest note: renaming existing images is inherently more invasive than renaming on upload, which is why the retro-fit logs every rename, skips images already named correctly, and checks the whole thumbnail set for collisions first.
Go to Plugins → Add New → Upload Plugin, choose the zip from your purchase email, install and activate. It adds a Media SEO item to the admin menu. Activation changes nothing retroactively — existing images are only touched when you run the tools yourself.
Open Media SEO → Licence and paste the key from your purchase email into the licence box — it's a long code starting VPC1., so paste the whole thing into the textarea rather than typing it. Keys are domain-based — no account, no phoning home.
Open Media SEO. The dashboard shows your alt-text coverage and a live preview: type a post title and watch the filename it would produce. The defaults are sensible — rename from post titles, kebab-case everything, write alt and title, strip EXIF — and most sites ship with them unchanged.
Alt text, image title and caption each have a template taking {post_title}, {filename} and {site_name}. The pipeline only fills empty fields unless you turn on overwrite. Captions are off by default because most themes display them on the page.
In the AI alt text card, pick a provider — Anthropic (Claude), OpenAI, Google Gemini or OpenRouter — paste your API key and press Validate key & fetch models. The key is checked against the provider itself, the live model list appears, and the cheapest vision-capable model is recommended and pre-selected. Press Test on the newest image to see a real generation with timing before committing. Every attempt lands in the log with the provider's actual error if it fails.
The Bulk retro-fit card works through every image attached to a post, in batches: renaming from post titles, filling texts, optionally AI-describing. Run it again to continue where it stopped — images already carrying the right name are skipped, so re-running is always safe.
The behaviours and safeguards you'll actually live with.
The filename is generated from the post title — lowercase, hyphens, accents transliterated (café → cafe), ampersands become “and”, length capped at a word boundary. On upload it's applied before the file is stored, so the clean name is the only name that ever existed. Uploads with no post context keep their own name, cleaned to kebab-case.
Handled by the same mechanism WordPress core uses: the second ten-great-cafe-ideas.jpg in a folder becomes -1, then -2, and so on. Nothing is ever overwritten — and the retro-fit checks the whole thumbnail set for collisions before renaming anything.
Empty alt boxes get filled; hand-written alt text is never touched unless you explicitly enable overwrite. Text the plugin itself generated (a humanised filename placeholder) is upgraded when a better source appears — for example when the image becomes a post's featured image.
JPEGs are stripped of camera details, timestamps and GPS before thumbnails are generated, so every size is born clean. Orientation is baked into the pixels first — nothing comes out sideways. With Imagick on the server the colour profile is kept; with GD the image is re-encoded at high quality. The dashboard tells you which engine your server has.
One provider, one key, one model. The generated alt describes the actual pixels with the post title as context, capped at alt-appropriate length. Costs land on your own API key at the provider's rates — one short vision call per image, a fraction of a cent on the cheap models. If a call fails, the template alt is already in place and the failure is logged with the provider's real error.
After fetching models, the dropdown shows prices per million input tokens — live from the API for OpenRouter, guide prices for the others — and marks the cheapest vision-capable model. That one is pre-selected unless you choose otherwise. You can refetch any time; your selection survives if the model still exists.
The moment an attachment becomes a post's featured image, it's renamed from the post title and described — which is exactly the path AI featured-image tools use, so their generated-image-af92x.png files come out right. An image that's also another post's featured image keeps its name.
Off by default. When on, renaming a post renames the images attached to it whose filenames derive from the old title — hand-named images are the owner's choice and stay put. Files, every thumbnail size and every reference (content, galleries, Elementor JSON, serialized meta) are updated together, and each rename is logged.
Batched (25 images per run, 5 with AI — one API call each), stateless between runs, idempotent: already-correct images are skipped, so “run it until it says done” is the whole procedure. The recent-renames log shows exactly what changed, old name → new name.
One textarea, one Save button. Paste the full VPC1.… key from your purchase email. The key covers the number of sites on your plan; move a site by deactivating on one and activating on another. Unlicensed, the free pipeline keeps working — Pro features pause with a notice, never a breakage.