How to optimize a feed with AI
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.
This walkthrough does it in about fifteen minutes of your attention. You take a working Google Shopping feed, give it titles written for search, and change nothing in the catalog - not one product, not one attribute.
Same steps for anything else you want to fix; only the preset and the target change. Full reference in the AI optimization section.
1. Configure an AI provider
- Go to Stores → Configuration → Mirasvit Extensions → Developer → AI Configuration.
- Set Enable AI features to Yes.
- 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.
- Set Default AI provider to that provider.
- Save the configuration and flush the cache.
Until a provider is configured, the AI optimization screens open but nothing can run: Add New Profile, Preview and Generate Now are disabled and a warning banner explains why.
2. Create a profile from a preset
- Go to Catalog → Advanced Product Feeds → AI optimization.
- Click Add New Profile.
- On the What should this profile do? step, choose Title - Google Shopping.
- Click Continue.
The form opens already filled in: kind Text rewrite, target attribute name, a 150-character limit, and a prompt that encodes Google's own published title guidance - use the full 150 characters rather than the 70 everyone wrongly quotes, lead with brand and product type, tell variants apart, no price or promo language. You are editing a working profile, not writing one.
Nothing exists yet, though. The preset only prefills the form; the profile is created when you save it.
3. Point it at your feed
- In General information, give the profile a Name and a Code. The code is how a feed can reference it later, for example
title_google. - Under Apply to feeds, tick the Google Shopping feed.
That is the whole integration. One checkbox. Wherever the feed already emits {{ product.name }} it will emit the optimized title instead, and your feed template is not touched.
Leave Is active off for now. You want to preview before anything starts generating.
4. Preview on real products
- Click Preview.
- Leave Store view on Store view of the assigned feeds, set Products to 10, and leave Product IDs empty for a random sample.
- Click Generate preview.
Now read the Original and Optimized columns next to each other. This is your product data, from your store, run through the real pipeline. The footer tells you what the sample cost in tokens.
Not right? Edit the Prompt and preview again. Nothing is stored, so iterate as long as you like - and do it here rather than later, because a prompt fixed at this point costs you ten products, while the same prompt fixed after a full run costs your whole catalog twice over.
Common adjustments:
- Add a rule to the prompt, for example a house style or a brand name that must always come first.
- Tighten the product data budget with
{{ product.all_attributes:1200 }}if the model is being distracted by marketing copy. - Lower Default temperature in the Core AI configuration if the output varies too much between similar products.
5. Decide how values go live
Open Advanced and set Approve mode:
- Auto - publish generated values immediately if the preview convinced you.
- Manual - hold generated values for approval if you want to read every title before it ships. Your feed keeps serving the catalog titles until you approve.
On a first run against product titles, choose manual. You can always flip it to auto once the profile has earned your trust - and switching to auto releases everything that is waiting, in one go.
6. Enable it and let it run
- Set Is active to on.
- Click Save.
Done. The background job picks the profile up within a minute and grinds through the catalog in small portions, so nothing blocks your server and nothing runs away with your budget. You can close the tab.
Come back whenever you like: the coverage bar on the profile shows Covered, Pending, Failed, Awaiting approval and Tokens used, plus an estimate of how long the rest will take and roughly what it will cost to get there.
To see it working immediately, open Results and click Generate Now. That runs one batch straight away; the background process keeps going through the rest.
If nothing happens at all, check that Magento cron is running the feed group. Optimization is entirely cron-driven. You can also run it yourself: php bin/magento mirasvit:feed:ai:optimize --profile=title_google.
7. Review and approve
- Click Results on the profile.
- Read through the Original and Optimized columns. Use the State filter to look at one state at a time.
- Fix anything you disagree with by clicking the Optimized cell and typing. Your text becomes an override: it goes live immediately and the model will not overwrite it.
- When you are satisfied, click Approve All Pending (n), or approve rows individually.
A row marked Failed shows the reason underneath and is retried automatically. A row marked Not in the product data is a normal outcome - the product simply does not answer the question, and the feed will emit its original value.
8. Regenerate the feed
Go to Catalog → Advanced Product Feeds → Feeds, open the feed, and click Generate.
The feed now carries optimized titles for every product with an approved value, and the original catalog titles for everything else. Use Preview Feed to see it before you deliver it.
Your catalog, meanwhile, is byte for byte what it was when you started.
Going further
- Fill gaps instead of rewriting. Create an Attribute enrichment profile with Fill mode set to Only where the value is empty to populate
color,size,materialor a field your catalog does not even have, such askey_features. Read those in a feed asai:<code>_<attribute>. - Finish a category mapping. A Category mapping profile completes the products your manual category mapping leaves unmapped, and is very cheap because it answers once per distinct category path rather than once per product.
- Different feeds, different values. Skip Apply to feeds and reference the profile explicitly as
{{ product.ai:<code> }}in only the feeds that should use it. See Using AI values in a feed.