| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
eCommerce (website_sale)
• Discuss (mail) • Website (website) • Invoicing (account) |
| Community Apps Dependencies | Show |
| Lines of code | 1250 |
| Technical Name |
ai_ecom_product_content |
| License | OPL-1 |
| Website | https://erpoxa.com/ |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
eCommerce (website_sale)
• Discuss (mail) • Website (website) • Invoicing (account) |
| Community Apps Dependencies | Show |
| Lines of code | 1250 |
| Technical Name |
ai_ecom_product_content |
| License | OPL-1 |
| Website | https://erpoxa.com/ |
AI Product Content Generator
Generate product descriptions, SEO metadata and image alt text with AI. One button on every product (no more confusing duplicates), the same wizard handles single-product, bulk, and "only-the-empty-fields" runs.
6 field types
Short description · website description · meta title · meta description · meta keywords · image alt.
One button, one wizard
Refactor 19.0.2.1 — collapsed two confusing stat-buttons ("AI Generate" + "AI Smart fill") into one AI Content button.
Only-missing preset
One click inside the wizard ticks only the fields that are empty across the selected products. Idempotent re-runs.
Three entry points
Per-product stat-button · bulk Actions menu · top menu (AI eCommerce → AI Content with empty picker).
The whole module in 26 seconds
Before/after consolidation · three entry points · annotated wizard · tone & length grid · per-product result · settings.
Each step below has its own annotated screenshot.
Test this module instantly
You can explore all features using the demo account. No setup required.
From two confusing buttons → one clear button
Earlier versions added two stat-buttons to the product form: AI Generate and AI Smart fill. Both opened the same wizard, with the same icon, just different default field selection. Users couldn't tell which was which. The refactor:
Two stat-buttons
- AI Generate — opens the wizard
- AI Smart fill — opens the same wizard, only-missing fields pre-ticked
"Which one do I click? They look identical."
One stat-button + a preset
- AI Content — opens the wizard
- Inside the wizard: "Only missing" preset button (replaces the second stat-button)
One entry point, zero confusion, same capability.
Per-product · bulk · top menu
All three open the same AI Content wizard. The Products picker is pre-populated differently depending on how you got there.
Per-product · the AI Content stat-button
ONE PRODUCTOpen any product → click the AI Content stat-button at the top. The wizard pre-fills that product. The button only adds itself to the product form — adjacent buttons (AI Translate, AI Suggestions, Generate Now) come from sibling modules and do different things.
Bulk · multi-select on the products list
N PRODUCTSStep-by-step:
- Open Sales → Products in list view (switch from kanban if needed).
- Optionally apply one of the four "Missing X" search filters at the top so only products with empty SEO / descriptions appear.
- Tick the checkboxes next to the rows you want — or click the master checkbox in the header to select the visible page (Odoo will then offer "Select all 10 000+").
- Click Actions in the breadcrumb header → the dropdown opens (annotated below).
- Scroll to the bottom and click AI Content.
What happens next — the wizard form opens with:
- Products picker pre-populated with every ticked row — full-width tag list, you can ✕ to drop products or type to add more
- Summary line at the top updates live: "Generate 4 field(s) on N product(s). Estimated time: ~Xs." (~6 s per product)
- Field tickboxes default to your Settings → AI Content · Defaults (tone, length); use the All / Descriptions / SEO / Clear presets to change selection in one click
- Overwrite off by default — already-filled fields are skipped, so re-running the bulk action is idempotent
- Click Generate → wizard runs sequentially per product, posts a per-row result table when done. Errors on individual products don't break the rest of the run.
Top menu · AI eCommerce → AI Content
EMPTY PICKEROpens the wizard with no products preselected. You pick them inside via the autocomplete (start typing a name or paste a list). Hard UserError with a friendly message if you click Generate without picking products — no silent runs.
One screen — five control regions
The wizard's Configure view shows a live ETA at the top, then five regions you can adjust in any order:
1. Products picker
Pre-populated when opened from a product form or list selection. Empty when opened from the top menu. Add/remove tags freely. Hard error if you click Generate with zero products.
2. Fields to generate
Six tickable cards: short description · long description · meta title · meta description · meta keywords · image alt. HTML structure is preserved in the long description.
3. Only missing REPLACES 2ND BUTTON
Inspects the products in the picker and ticks only the fields that are currently empty across them. Forces overwrite OFF. This is the consolidated form of the old "AI Smart fill" stat-button.
4. Style
Tone (Professional · Friendly · Premium · Playful · Technical · Persuasive) · Length (Short ~40w · Medium ~120w · Long ~250w) · Language. Tone description shown inline below the dropdown.
5. Overwrite toggle
Off by default — fields with existing content are skipped (idempotent re-runs). Tick to force regeneration. Also reachable as "Regenerate with overwrite" on the Done screen if a previous run skipped fields.
+ Extra instructions OPTIONAL
Free-text field forwarded to the LLM as additional guidance for this batch only. E.g. "Always end with: 'Free shipping over $50'". Doesn't persist between runs.
Never silent — per-product result table
Every run ends on a Done screen with a real result table. Errors on individual products don't break the rest of the run.
Updated
Lists which fields were written per product. Empty source fields are silently skipped, so you only see what actually got generated.
Skipped (already had content)
Yellow warning appears when fields were skipped because they already had content. One-click "Regenerate with overwrite" button on the Done screen reruns those.
Errors
Rate limit, API key issue, network blip. Other rows still complete — failures don't break the whole run. Full trace in AI eCommerce → Request Log.
Six concrete fields, six different outputs
Real example from one click on 1080p 128GB Lens Filter — actual output stored in the product, not mock-up text.
description_sale
1–2 lines · plain text · cart & quotes
website_description
rich HTML · headings, paragraphs, <ul> bullets
Elevate your photography with the 1080p 128GB Lens Filter, engineered to deliver exceptional clarity and precision. This filter is ideal for capturing stunning images in various lighting conditions…
- Multi-coated glass minimizes reflections and flare
- Ultra-thin frame avoids vignetting on wide-angle lenses
- Compatible with most professional camera systems
HTML structure (paragraphs, <ul> lists, headings) is generated and preserved exactly as the AI writes it — no post-processing.
website_meta_title
≤60 chars · <title> tag · Google SERP
website_meta_description
140–160 chars · SERP snippet
website_meta_keywords
5–10 lowercase keywords, comma-separated
product_template_image_ids.name
≤120 chars per image · Accessibility & Google Images
Updates every product image whose name is empty or matches the product name.
What Google sees — empty vs AI-generated
The AI-generated meta title + meta description are exactly what Google indexes. Empty fields make Google fall back to auto-generated boilerplate, hurting your CTR.
Empty SEO fields
- No
website_meta_title→ Google uses just the product name - No
website_meta_description→ Google scrapes random page text - No keywords → search engines have less context
- SERP snippet looks unappealing → low click-through
AI Content fills all three SEO fields
- Meta title with the product name + key positioning
- 140–160 char meta description that reads as marketing copy
- 5–10 relevant lowercase keywords for context
- SERP snippet looks professional → higher CTR
Three grouped blocks · Defaults · Brand · Behavior
| Block | Setting | What it does |
|---|---|---|
| Defaults | Default tone | Pre-selected in the wizard's tone dropdown. |
| · | Default length | Pre-selected in the wizard's length dropdown. |
| Brand | Brand voice / style guide | Free-text style guide included as a system message in every prompt. Sets a consistent voice across the entire catalog. |
| Behavior | Overwrite by default | Pre-ticks the wizard's Overwrite checkbox. Leave off to keep runs idempotent. |
Four "Missing X" filters on the products list
Don't hunt through thousands of products — apply a filter and see only the ones with empty SEO / descriptions, tick them all, run the wizard once.
description_sale
Missing short description
website_description
Missing website description
website_meta_title
Missing SEO meta title
website_meta_description
Missing SEO meta description
Three steps to generated content
Install the module
Depends on ai_ecom_base. OpenAI key configured once, reused here.
Set your brand voice
Settings → AI eCommerce → Product Content Generator. Tone, length, free-text style guide.
Generate
One product or 500 — same wizard. Smart Fill never overwrites your existing copy.
Plays well with the rest of Odoo
Stop writing product copy by hand
Install AI Product Content Generator and ship a new product page in minutes, not hours.
Built & supported by Erpoxa
An Odoo consultancy focused on scalable AI-powered modules and bespoke integrations. We answer fast and ship clean code.
Website
All apps, docs & portfolio
erpoxa.comOdoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module