Alt-Text Optimizer Pro
Background & scheduled runs
Work through large media libraries in the background, trace runs and top up automatically overnight.
A few dozen images are comfortable to do right in the browser. With a few thousand, though, you don't want to leave your machine open for hours – that's what background runs via the Shopware message queue and the nightly automatic generation are for.
Browser run or background run?
| Browser run ("Generate all") | Background run ("Generate in background") | |
|---|---|---|
| Where does it run? | In the open admin tab | In your shop's message queue |
| Close the tab? | No – the run is tied to the tab | Yes, whenever you like |
| Progress | Live on the generation page | Traceable in the history |
| Good for | Single images, small batches, quick experiments | Large media libraries, adding a whole new language |
Both routes use the same configuration and the same language selection – the only difference is where the work happens.
Requirements
For background and scheduled runs to start at all, your shop needs to be running the usual Shopware background services:
- an active message consumer (
bin/console messenger:consume), - and the scheduled task worker for the nightly generation.
On most hosted Shopware installations both are running anyway (often as a systemd service or cron job). If a background run doesn't start, that's almost always the reason – ask your host or agency if you're unsure.
Generating in the background
The flow is the same as for a normal run: select images (or take all of them), check the languages – and instead of "Generate all", click "Generate in background". After that you can close the tab; the images are worked through piece by piece.
The languages are frozen at start. A running job sticks to exactly the language selection you started it with. If you change the target languages in the settings afterwards, that only affects the next run – running jobs don't change their behaviour halfway through.
History: tracing your runs
The "History" button in the module takes you to the list of all previous runs. Among other things, you can see which languages each run processed.
The run details hold the log per image and language, with one of four results:
- generated – the AI delivered a new text.
- inherited – the text came from the parent language (see multilingual alt texts), at no API cost.
- already present – a text already existed in that language, so it was skipped.
- error – with the concrete message. The most common ones are listed under troubleshooting.
That makes it easy to answer afterwards what a run cost and achieved – and why a particular image is still empty in a particular language.
Retrying failed images
If a run finished with errors, the run details offer a "Retry failed" button. It starts a follow-up run in "retry" mode covering exactly the failed images – with the same language selection as the original run.
What happens then depends on the "Skip existing alt texts" option:
- enabled (default): only the still-missing languages are generated.
- disabled: all languages of the affected images are recreated.
It's the most relaxed way to close the gaps after a rate limit or a brief hiccup at OpenAI – without repeating the entire run.
Nightly automatic generation
The scheduled run keeps your media library tidy in day-to-day operation: it takes your configured target languages and tops up every image in the selected folders that is missing an alt text in at least one target language.
In practice that means: upload new product images during the day, and by the next morning they have their alt texts – in every language, without you having to think about it.
The nightly run causes real API cost at OpenAI too. Deliberately restrict the folders to the areas where new images actually land (typically your product images) rather than releasing the entire media library.
Quick action right in the media library
For the in-between case you don't need the module at all: the media sidebar offers the quick action "Generate AI alt text". It creates the text for the selected image in all configured target languages.
If the image already has alt texts, a confirmation dialog asks before overwriting – so you won't lose anything by accident.
That leaves the common questions and error messages: FAQ & troubleshooting.