AI optimization
Your feed is only as good as your product data - and product data was written for your product pages, not for Google Shopping.
Titles read like catalog entries instead of search queries. Half the products have no color or material, so Merchant Center demotes them. Descriptions are full of HTML and promo copy that marketplaces reject. Everyone knows how to fix it: rewrite 20,000 titles, fill 40,000 missing attributes, map 800 categories. Nobody has the month it would take.
AI optimization does that work for you. You describe the job once, in plain English, and a language model works through the whole catalog in the background. Your feeds start emitting the better data. Your products are never touched.
The settings are located at Catalog → Advanced Product Feeds → AI optimization.
What you can do with it
| The problem | What you set up |
|---|---|
| Titles written for a product page, not for search | A Text rewrite profile that leads with brand and identifying attributes, up to Google's full 150 characters |
Products demoted for missing color, size, material | An Attribute enrichment profile that derives them from everything the catalog already knows |
| Hundreds of categories still unmapped after the manual pass | A Category mapping profile that finishes the job, and answers once per category path rather than once per product |
| Descriptions stuffed with HTML, prices and marketing claims | A Text rewrite profile that produces clean plain text, within the marketplace's character limit |
A field your catalog simply does not have, like key_features | An enrichment profile that invents the field for your feed only, with no new Magento attribute |
You start from a shipped preset, so none of this begins with a blank page.
Why it is safe to turn on
This is the part that matters most, and it is worth reading before anything else.
Your catalog is never modified. Generated values live in the extension's own storage. Nothing is written back to product attributes, so nothing changes on your storefront, in your admin grid, or in any integration that reads the catalog. Turn the profile off and everything is exactly as it was.
Your feeds cannot break. Feed generation never calls a language model - it only reads values that were already generated in the background. So:
- a feed can be generated at any moment, whatever state the optimization is in;
- an AI provider outage cannot delay or corrupt an export;
- adding AI optimization does not make feed generation any slower.
There is always a fallback. If a product has no generated value yet, the feed emits the raw catalog value, exactly as it does today. A half-finished profile produces a perfectly valid feed.
You can look before you leap. Preview runs the real thing on ten real products and shows you Original next to Optimized, without storing a byte. Iterate on your instruction until you like what you see - and only then let it loose on the catalog.
You can keep the final word. Set Approve mode to manual and nothing goes live until you have read it. Disagree with a sentence? Type over it. Your text wins, permanently.
How it works
- You create an AI profile: what to produce, for which attribute, and the instruction to follow. Start from a preset and edit it.
- You preview it on a handful of real products. This calls the model but stores nothing.
- You enable it. A cron job picks up a portion of pending products every minute and generates values in the background.
- Your feed reads those values - either because the profile is assigned to it (no feed editing at all), or because the feed content names an
ai:token. See Using AI values in a feed. - It keeps itself current. Change a product and its value is regenerated; leave it alone and nothing is re-sent, so a stable catalog costs nothing to maintain.
What it costs
You bring your own AI provider account, and you pay that provider for the tokens your profiles consume. There is no Mirasvit surcharge and no subscription.
The extension reports tokens, never a currency figure - it has no pricing data, and any amount it printed would be a guess that went stale the next time a provider changed its rates. Check your provider's pricing page and watch the Tokens used counter on each profile, which also projects how much more the profile needs to finish.
Three things keep the bill sensible, and they are on by default:
- Batching. Several products go into one model call, which is dramatically cheaper than one call each.
- No repeat work. A value is regenerated only when the product data behind it actually changes. Prices and stock are deliberately excluded from the prompt, so a repricing does not re-bill your catalog.
- Grouping. A category-mapping profile groups products that render the same prompt and answers each group once, caching the answer across runs. Thousands of products sharing a few hundred category paths cost a few hundred answers, not thousands.
Point your first profile at one feed and one attribute, preview it, and let it run. You will know what the whole catalog costs long before you have spent it - and --limit on the CLI command lets you cap a first run outright.
Before you start
| Requirement | Details |
|---|---|
| An AI provider account | OpenAI, Anthropic Claude, Google Gemini or xAI Grok. You supply and pay for the key. |
| Mirasvit Core with AI configured | At least one provider enabled with a valid key. Until then the screens open but nothing runs. |
| Magento cron | The feed group must be running. Optimization is entirely a background process. |
Configure a provider
AI credentials are shared by every Mirasvit extension, so they live in the Core module rather than in the feed settings.
Go to Stores → Configuration → Mirasvit Extensions → Developer → AI Configuration:
- Enable AI features: must be Yes, otherwise nothing runs anywhere.
- Default AI provider: used by any profile that does not name one of its own.
- Request timeout: how long a single request may take, in seconds. Empty means no timeout.
- Maximum tokens per request: an upper bound on a single response. Empty means no limit.
- Default temperature: 0 to 2, default 0.7. Lower is steadier and more repeatable, which is usually what a feed wants.
Then open the group for your provider - OpenAI Configuration, Claude Configuration, Google Gemini Configuration or xAI Grok Configuration - and set Enable, the API key and the model.
An individual profile can override the provider and model, so you can run bulk enrichment on a cheap model and your product titles on a strong one.
Until a provider is configured, the grid shows:
AI optimization is unavailable: no AI provider is configured. Profiles can be edited but nothing will run or spend until a provider is set up under Stores → Configuration → Mirasvit → AI. Your feeds keep generating with the raw product values in the meantime.
Profiles stay editable in that state; only Add New Profile, Preview and Generate Now are disabled.
Running in the background
The feed_process_ai_optimization cron job runs every minute. Each launch takes one portion - at most 100 products - per enabled profile, then stops. A large catalog converges over many short launches instead of one job that hogs the server, and a feed export never queues behind a model call.
Each profile also gets at most 30 seconds per launch. When it hits that ceiling the run simply reports:
Stopped at the per-profile time limit of 30s; the remaining work continues on the next run.
Overlapping launches are prevented, so a slow run costs the next tick rather than doubling up.
In a hurry, or catching up after cron was stopped? Drive it yourself with mirasvit:feed:ai:optimize - see Command Line Interface.
If a run fails, you get an admin notification rather than silence:
The last AI optimization run for "profile" failed: reason. Feeds keep generating with the raw product values until this is resolved.
Ready to try it
The fastest path is How to optimize a feed with AI - a Google Shopping feed with rewritten titles, start to finish.
📄️ AI profiles
A profile is one standing instruction: "write my product titles the way Google Shopping wants them." You set it up once, and it keeps applying itself - to today's catalog, and to every product you add next year.
📄️ Results and approval
Handing your product copy to a language model and hoping for the best is not a plan. This screen is the reason you do not have to.
📄️ Using AI values in a feed
A profile generates the values. Now the feed has to pick them up - and this is usually the step people brace for, expecting to rebuild templates they spent a day getting right.
📄️ Walkthrough - optimize a feed
Your product titles were written for your product pages. Google Shopping matches against something else entirely - brand, product type, and the attributes a shopper actually types. Rewriting every one of them by hand is the job nobody ever gets to.