Installation
Requirements
Magento 2.4.x — tested on 2.4.9, compatible with previous 2.4.* releases. PHP 8.1–8.5. Works with both the default Luma theme and the Hyvä theme — the module runs entirely in the admin and writes standard catalog attributes, so your storefront renders the improved content with no template changes. Depends on the free codingrow/module-core module, installed automatically. Requires an API key from at least one AI provider for the improve/rewrite step (Anthropic, OpenAI, Google or OpenRouter) and, for translation, either a machine-translation key (DeepL) or an LLM used as the translator. All AI and translation usage is billed to you directly by the provider — Codingrow never marks it up.
Setup steps
- Add the credentials you'll receive by email to
auth.jsonin your Magento project root:{ "http-basic": { "repo.codingrow.com": { "username": "...", "password": "..." } } } composer config repositories.codingrow composer https://repo.codingrow.comcomposer require codingrow/module-ai-babel-enchanterbin/magento module:enable Codingrow_BabelEnchanterbin/magento setup:upgrade && bin/magento setup:di:compile && bin/magento cache:flush(setup:di:compileis required on a production deployment; you can skip it on a developer setup)- Paste your license key into Admin → Stores → Configuration → Codingrow → AI Babel Enchanter → License → License Key, save, then flush the cache.
Configuration
Stores → Configuration → Codingrow → AI Babel Enchanter.
| Setting | What it does | Default | Notes |
|---|---|---|---|
| License Key | The license key issued for this domain. | — | Accepts a single-module key or a Codingrow subscription key. Without a valid license the module does not run. |
| Enable | Master switch for the module. | No | Requires a valid license and at least one provider API key. |
| Enhancement provider | Provider, model and API key that rewrite and improve the text (the improve/rewrite engine). | — | Use Load models next to the Model field instead of typing an id. |
| Translation provider | How target languages are produced: a machine-translation service (DeepL) or an LLM used as the translator, with its model and key. | — | Translate with the same LLM as the improve step, or with a dedicated MT key for lower per-character cost. |
| SEO options | Toggles for what gets generated: meta title, meta description, meta keywords, URL key. | — | Turn off anything you don't want the module to touch. |
| Resilience | Circuit-breaker: auto-retry on transient failures, cooldown hours before retrying, pause after N consecutive errors. | — | Protects a long run when the provider is out of credit or rate-limiting. |
Uninstallation
Set Enable to No and save to stop all processing immediately — your catalog content stays exactly as it is. If you want to revert to the original text first, run a rollback (see the User guide). To remove the module entirely: bin/magento module:disable Codingrow_BabelEnchanter then composer remove codingrow/module-ai-babel-enchanter.
Providers & cost
Choosing providers
AI Babel Enchanter has two independent provider slots: one for the improve/rewrite step (an LLM) and one for translation (an LLM or a dedicated machine-translation service such as DeepL). You bring your own keys, and all usage is billed to you directly by the provider you pick — Codingrow never marks it up. Pick the improve model for quality, and translate with either the same LLM or a cheaper per-character MT key.
Anthropic (Claude models)
- Sign in at console.anthropic.com.
- Go to console.anthropic.com/settings/keys.
- Click Create Key, name it (e.g. "AI Babel Enchanter"), and copy the value.
- Paste it into the provider slot with Provider set to Anthropic, then use Load models.
OpenAI (GPT models)
- Sign in at platform.openai.com.
- Go to platform.openai.com/api-keys.
- Click Create new secret key, name it, and copy it immediately — it is shown only once.
- Paste it into the provider slot with Provider set to OpenAI, then use Load models.
Google (Gemini models)
- Sign in at aistudio.google.com with a Google account.
- Go to aistudio.google.com/app/apikey.
- Click Create API key, choose or create a Google Cloud project, and copy the key.
- Paste it into the provider slot with Provider set to Google, then use Load models.
OpenRouter (one key, many providers' models)
- Sign in at openrouter.ai.
- Go to openrouter.ai/keys.
- Click Create Key, name it, and copy the value.
- Paste it into the provider slot with Provider set to OpenRouter, then use Load models.
DeepL (machine translation)
- Sign in at deepl.com/pro-api.
- Open Account → API keys and copy your Authentication Key.
- Paste it into the Translation provider slot with the translator set to DeepL.
DeepL is priced per character (about €20 per 1M characters), usually cheaper than an LLM for straight translation. You can also skip DeepL entirely and translate with the same LLM as the improve step.
Load models — no model id to type
After the API key is in place, save the section and click Load models under the Model field: the module calls the provider's own model-list endpoint with your key and fills a dropdown with every model your key can actually use — pick from the list instead of typing an id. A manual text input remains as a fallback for a model id that isn't in the list yet. A link right below the field always points to the correct key page for whichever provider is currently selected.
Estimating the cost of a full-catalog run
A full pass has two cost drivers that add up per product: improve (LLM tokens, priced per million) and translate (characters, priced per million, times the number of target languages). Use the calculator below to size a run before you launch it — it is a purely indicative estimate; your real numbers depend on content length and the models you choose.
Full-catalog run cost calculator
Estimate what one full pass over your catalog costs. Two cost drivers add up per product: improve (LLM tokens, priced per million) and translate (characters, priced per million, multiplied by the number of target languages). Everything is billed to you directly by the AI/translation provider — this is a purely indicative estimate.
| Improve model | ~ improve / product | Full-catalog improve ~ |
|---|---|---|
| Gemini 2.x Flash | ~€0.0004 | ~€2 |
| OpenAI gpt-4o-mini | ~€0.0006 | ~€3 |
| Claude Haiku 4.5 | ~€0.004 | ~€20 |
| Claude Sonnet 4.5 | ~€0.015 | ~€75 |
User guide
Profiles and persona prompt
Everything the module does is organized into profiles. A profile is a reusable configuration you run against a slice of the catalog: which attributes it may touch, the pipeline of steps to apply, an optional exclusive category so the profile only ever operates on products in that category, and a persona prompt — free-text instructions that set the tone of voice and rules for the rewrite. Profiles are anti-revert: a product already processed by a profile is skipped on the next run unless you reset it, so re-running is safe.

Groups and steps (the pipeline)
Inside a profile you define groups of steps that run in order. The two core step types are improve (rewrite/enhance the source text with the enhancement provider) and translate (produce the target-language versions). The normal pipeline is improve → translate: the source language is rewritten first, then the improved text is what gets translated, so every store view inherits the better copy instead of translating the old text. Grouping lets you scope different steps to different attributes and run them as one operation.
Cross-sell, related and up-sell (AI relations)
Three independent toggles let a profile propose cross-sell, related and up-sell products using the AI. The model only ever suggests real SKUs from your catalog — it cannot invent a product that doesn't exist — and the suggestions are written into Magento's native cross-sell/related/up-sell links, so they appear in the standard storefront blocks. Turn on only the relation types you want the module to manage.

Dry-run preview (and rendered)
Before anything is written, run a profile in dry-run: the module generates the proposed content for a sample of products and shows it side by side with the current text, including a rendered preview so you see how the improved description will actually look on the page — not just raw text. Nothing is saved in dry-run; it's there to validate the persona prompt and the pipeline before you commit to a full run.

The "Enrichments & Translations" grid
The "Enrichments & Translations" tab is the working grid: every generated field for every product and language, paginated and filterable. You can edit any generated value inline before or after it is applied — the AI output is a starting point, not a lock — and each row keeps a link back to the original text, so you can restore the original for that field with one action if you don't like the result. This is the human-in-the-loop layer over the automated pipeline.

Rollback
Every value the module writes is reversible. Beyond per-row restore original in the grid, the babel:rollback CLI command reverts content in bulk — by profile, by product, or the whole run — back to the text that was in place before the module touched it. Because the original is always preserved, a full-catalog run is never a one-way door.

Queue and credit circuit-breaker
Long runs are processed through a queue you can watch, pause and resume. The built-in circuit-breaker (configured under Resilience) protects the run: on repeated provider errors — most often the provider running out of credit or rate-limiting — it pauses after N errors, waits the configured cooldown, and can auto-retry transient failures instead of failing the whole batch. When you top up credit or the limit resets, resume the queue and it continues where it stopped.

Command line (CLI)
Everything can be driven from the CLI for scheduling and large runs.
| Command | What it does |
|---|---|
bin/magento babel:run | Runs a profile (improve/translate pipeline) over its target products — the standard way to launch a full-catalog pass. |
bin/magento babel:rollback | Reverts generated content back to the original text, scoped by profile, product, or the entire run. |
bin/magento babel:queue | Inspects and controls the processing queue: status, pause, resume. |
