rodrigo@dev:~/blog/wordpress-ai-local-ollama-alt-text$ cd ..# back to the blog

pluginsRodrigo Antunes

Local AI in WordPress 7.0: from Ollama to bulk alt text

Two plugins that work together: one connects WordPress to your own Ollama server, the other uses that AI to write image alt text.

WordPress 7.0 ships with a native AI client, the AI Client. The idea is that any plugin can ask the AI for text without knowing which service sits behind it. What was missing was a simple way to plug it into a model running on your own machine, with no API key and no per-token cost.

Step 1: connect WordPress to Ollama

AI Provider for Ollama Local is that bridge. You point it at an Ollama server (local, in Docker or remote) and every model installed there, such as Llama 3, Mistral, Gemma or Phi, becomes available in the WordPress editor. Models are discovered automatically, and Settings → Connectors shows the live status.

  • +No API key, no sign-up and no subscription.
  • +The server address is read in order: wp-admin, PHP constant, environment variable and, finally, the default.
  • +No external dependencies: no Composer and no node_modules. GPL-2.0-or-later, open source on GitHub.
AI Provider for Ollama LocalpluginConnect WordPress 7.0 AI to your own Ollama serversee page →

Step 2: put the AI to work

Bulk Alt Text AI is the first practical use. Images without alt text hurt accessibility (WCAG/ADA) and Google Images, and filling a whole media library by hand is not realistic. The plugin audits the library and shows exactly which images have no description. You can apply your own text to any selection, with undo, and that part is free.

AI generation (on one image, on a selection, on the whole library or automatically on every upload) and the page scanner with accessibility and SEO signals are in the Pro version. Because it uses the WordPress 7.0 AI Client, it also works with your local Ollama, and the language and text length are configurable.

Bulk Alt Text AIBulk Alt Text AIpluginAI image alt text: audit and fix in bulksee page →
rodrigo@dev:~/blog$ ls --more
rodrigo@dev:~$