PHPackages                             angeo/module-ai-description-updater - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. angeo/module-ai-description-updater

ActiveMagento2-module[Utility &amp; Helpers](/categories/utility)

angeo/module-ai-description-updater
===================================

Automatically generate and update Magento 2 product descriptions using OpenAI, Anthropic Claude, or Google Gemini. Supports Google Sheets as SKU source, Google Drive CSV export, dry-run mode, per-store prompts and cron automation.

1.0.0(3w ago)02↑1400%MITPHPPHP &gt;=8.2

Since May 16Pushed 3w agoCompare

[ Source](https://github.com/angeo-dev/module-ai-description-updater)[ Packagist](https://packagist.org/packages/angeo/module-ai-description-updater)[ RSS](/packages/angeo-module-ai-description-updater/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (7)Versions (2)Used By (0)

angeo/module-ai-description-updater
===================================

[](#angeomodule-ai-description-updater)

[![Packagist Version](https://camo.githubusercontent.com/67eb3cf766f9736539c425ecd97c311f39304063cff7113187f1c47d436bff05/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f616e67656f2f6d6f64756c652d61692d6465736372697074696f6e2d757064617465722e737667)](https://packagist.org/packages/angeo/module-ai-description-updater)[![Packagist Downloads](https://camo.githubusercontent.com/c2788c9c83cab03cefa8bd68f1e043ac7224c3b17cd04192864f58f4f75dde60/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f616e67656f2f6d6f64756c652d61692d6465736372697074696f6e2d757064617465722e737667)](https://packagist.org/packages/angeo/module-ai-description-updater)[![PHP](https://camo.githubusercontent.com/0be43eddd7df02c94a0fbc04aaa13d5250351c44ab63a3782498d66280b1767a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d253345253344382e322d626c75652e737667)](https://php.net)[![Magento](https://camo.githubusercontent.com/360e2de1fd9c704bed173bb02c7cd39ec1713f893d985460f9493be3e29b4e0f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d6167656e746f2d322e342e782d6f72616e67652e737667)](https://magento.com)[![License: MIT](https://camo.githubusercontent.com/784362b26e4b3546254f1893e778ba64616e362bd6ac791991d2c9e880a3a64e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d677265656e2e737667)](LICENSE)

**Automatically generate and update Magento 2 product descriptions across all store views using AI — via CLI, cron, or Admin Panel.**

`angeo/module-ai-description-updater` is an open-source Magento 2 module for bulk AI-powered product description generation across multiple store views and languages. Supports OpenAI, Anthropic Claude, Google Gemini, and Groq (free, no credit card required). Results can be exported to Google Sheets automatically.

---

Table of contents
-----------------

[](#table-of-contents)

- [Why this module vs alternatives](#why-this-module-vs-alternatives)
- [Supported AI providers](#supported-ai-providers)
- [Requirements](#requirements)
- [Installation](#installation)
- [Quick start — Groq (free, 5 minutes)](#quick-start--groq-free-5-minutes)
- [Full configuration reference](#full-configuration-reference)
    - [General](#general)
    - [AI Provider](#ai-provider)
    - [OpenAI settings](#openai-settings)
    - [Claude settings](#claude-settings)
    - [Gemini settings](#gemini-settings)
    - [Groq settings](#groq-settings)
    - [Prompt](#prompt)
    - [Attributes](#attributes)
    - [Google Sheets — SKU source](#google-sheets--sku-source)
    - [Google Sheets — export](#google-sheets--export)
    - [Export / CSV](#export--csv)
    - [Cron](#cron)
- [CLI usage](#cli-usage)
- [Multi-store behaviour](#multi-store-behaviour)
- [Setup guides](#setup-guides)
    - [OpenAI API key](#openai-api-key)
    - [Anthropic Claude API key](#anthropic-claude-api-key)
    - [Google Gemini API key](#google-gemini-api-key)
    - [Groq API key (free)](#groq-api-key-free)
    - [Google Sheets — SKU source setup](#google-sheets--sku-source-setup)
    - [Google Sheets — export setup (Service Account)](#google-sheets--export-setup-service-account)
- [Log file](#log-file)
- [Related modules](#related-modules)

---

Why this module vs alternatives
-------------------------------

[](#why-this-module-vs-alternatives)

FeatureThis moduleCommercial alternativesCLI + Cron automation✓RarelyMulti-store (all store views)✓RarelyGroq — free tier, no card✓NowhereGoogle Sheets as SKU source✓NowhereGoogle Sheets export✓NowhereDry-run mode✓Rarely4 AI providers✓Usually 1MIT license✓RarelyPrice**Free**$99–$299/year---

Supported AI providers
----------------------

[](#supported-ai-providers)

ProviderModelsCostNotes**OpenAI**gpt-4.1, gpt-4.1-mini, gpt-4.1-nano, gpt-4oPaidBest quality/cost: gpt-4.1-mini**Anthropic Claude**claude-sonnet-4-6, claude-opus-4-6, claude-haiku-4-5PaidExtended thinking supported**Google Gemini**gemini-2.5-flash-preview, gemini-2.0-flash, gemini-2.0-flash-liteFree tier + paidFree tier has daily limits**Groq**llama-3.3-70b-versatile, llama-3.1-8b-instant, mixtral-8x7b**Free**14,400 req/day, no credit card---

Requirements
------------

[](#requirements)

- PHP 8.2+
- Magento 2.4.x / Adobe Commerce / Mage-OS
- `ext-curl`, `ext-openssl`

---

Installation
------------

[](#installation)

```
composer require angeo/module-ai-description-updater
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:flush
```

---

Quick start — Groq (free, 5 minutes)
------------------------------------

[](#quick-start--groq-free-5-minutes)

The fastest way to get started — Groq is free with no credit card required.

**Step 1 — Get a free API key**

Go to [console.groq.com](https://console.groq.com), create an account, go to **API Keys → Create API key**. The key starts with `gsk_`.

**Step 2 — Configure Magento**

Go to **Stores → Configuration → Angeo AEO → AI Description Updater**:

1. **General → Enable Module** → `Yes`
2. **General → Dry Run Mode** → `Yes` *(safe for first test)*
3. **AI Provider → AI Provider** → `Groq (Free — Llama / Mixtral)`
4. **Groq Settings → Groq API Key** → paste your `gsk_...` key
5. **Groq Settings → Model** → `Llama 3.3 70B Versatile (recommended)`
6. **Attributes → Generate Description** → `Yes`
7. Click **Save Config**

**Step 3 — Test with dry-run**

```
bin/magento angeo:ai-description:run --dry-run
```

Check `var/log/angeo_ai_description_updater.log` to preview what would be generated.

**Step 4 — Run on a single product first**

Disable Dry Run in admin, then:

```
bin/magento angeo:ai-description:run --sku=YOUR-TEST-SKU
```

Verify the result in the product edit page. If it looks good, run the full batch:

```
bin/magento angeo:ai-description:run
```

---

Full configuration reference
----------------------------

[](#full-configuration-reference)

**Path:** Stores → Configuration → Angeo AEO → AI Description Updater

---

### General

[](#general)

FieldDefaultDescriptionEnable ModuleNoMaster on/off switchDry Run ModeYesGenerate but do not save to Magento. Always test with this enabled first.Enable Detailed LoggingYesWrites to `var/log/angeo_ai_description_updater.log`Batch Size50Max products processed per run or cron execution---

### AI Provider

[](#ai-provider)

FieldDefaultDescriptionAI ProviderOpenAISelect one of: OpenAI (ChatGPT), Anthropic (Claude), Google (Gemini), Groq (Free)Only the selected provider's settings section is used. Switch providers at any time.

---

### OpenAI settings

[](#openai-settings)

*Used when AI Provider is set to OpenAI.*

FieldDefaultDescriptionOpenAI API Key—Starts with `sk-`. Stored encrypted.GPT Modelgpt-4.1`gpt-4.1-mini` is the best quality/cost balance.Temperature0.70.0 = deterministic, 2.0 = very creative. 0.7 recommended for product copy.Max Tokens800Maximum length of generated response.Request Timeout (s)30HTTP timeout. Increase if you get timeout errors.---

### Claude settings

[](#claude-settings)

*Used when AI Provider is set to Anthropic Claude.*

FieldDefaultDescriptionClaude API Key—Starts with `sk-ant-`. Stored encrypted.Claude Modelclaude-sonnet-4-6`claude-haiku-4-5` is fastest and cheapest. `claude-opus-4-6` is highest quality.Max Output Tokens1024Maximum response length.Request Timeout (s)60Extended thinking may need more — increase to 120 if needed.Enable Extended ThinkingNoLets Claude reason before writing. Higher quality, more tokens. Claude 4.x only.Thinking Token Budget2048Minimum 1024. Internal reasoning tokens — billed as output tokens.---

### Gemini settings

[](#gemini-settings)

*Used when AI Provider is set to Google Gemini.*

FieldDefaultDescriptionGemini API Key—Stored encrypted.Gemini Modelgemini-2.5-flash-preview-05-20`gemini-2.0-flash` is fast with a free tier.Temperature0.70.0–2.0.Max Output Tokens1024Gemini 2.x supports up to 8192.Request Timeout (s)30> **Note:** If you get `limit: 0` errors, create a new Google Cloud project and generate a fresh API key.

---

### Groq settings

[](#groq-settings)

*Used when AI Provider is set to Groq.*

FieldDefaultDescriptionGroq API Key—Starts with `gsk_`. Stored encrypted. No credit card required.Modelllama-3.3-70b-versatile`llama-3.3-70b-versatile` gives the best quality. `llama-3.1-8b-instant` is fastest.Temperature0.7Max Output Tokens1024Request Timeout (s)30Free tier: **30 requests/minute, 14,400 requests/day**.

---

### Prompt

[](#prompt)

FieldDefaultDescriptionSystem Role"You are a professional product copywriter..."The AI model's persona and instructions.Prompt Template*(see config)*Supports: `{{product_name}}`, `{{product_sku}}`, `{{store_name}}`LanguageenTarget language. Set per store view for multi-language stores.Include SEO KeywordsYesAppends SEO keyword optimisation instruction to the prompt.**Example prompt template:**

```
Write a professional and SEO-friendly product description for "{{product_name}}"
(SKU: {{product_sku}}) for our {{store_name}} online store.
Include key benefits, features, and use cases.
Format using HTML paragraphs. Keep it between 150 and 250 words.

```

---

### Attributes

[](#attributes)

FieldDefaultDescriptionGenerate DescriptionYesUpdates the main `description` attribute (HTML)Generate Short DescriptionYesUpdates `short_description`Short Description Max Length150Character limit for short descriptionGenerate Meta TitleNoUpdates `meta_title`Generate Meta KeywordsNoUpdates `meta_keyword`Generate Meta DescriptionNoUpdates `meta_description`> **Tip:** Enable meta attributes only after validating description quality. Test with `--dry-run` first.

---

### Google Sheets — SKU source

[](#google-sheets--sku-source)

Use a Google Spreadsheet as the source of SKUs to process instead of all active products.

FieldDefaultDescriptionEnableNoRead SKU list from a Google SpreadsheetSpreadsheet ID—From the URL: `/spreadsheets/d/[SPREADSHEET_ID]/edit`Sheet GID0Tab ID from URL `?gid=...`. Default `0` = first tab.SKU Column Index0Zero-based: `0` = column A, `1` = column B, etc.*No Service Account required — the spreadsheet must be set to "Anyone with the link can view".*

See [Google Sheets SKU source setup](#google-sheets--sku-source-setup) for step-by-step instructions.

---

### Google Sheets — export

[](#google-sheets--export)

Write generated descriptions back to a Google Spreadsheet after each run.

FieldDefaultDescriptionEnableNoExport results to Google SheetsService Account JSON—Full JSON key from Google Cloud Console. Stored encrypted.Spreadsheet ID—Target spreadsheet. Must be shared with the Service Account `client_email`.Sheet Tab NameSheet1Tab to write to.Clear Sheet Before WriteNoYes = overwrite all rows. No = append new rows.See [Google Sheets export setup](#google-sheets--export-setup-service-account) for step-by-step instructions.

---

### Export / CSV

[](#export--csv)

FieldDefaultDescriptionSave CSV ReportYesSave results to `var/angeo/ai_description_updater/`CSV Filename Pattern`ai_descriptions_{{date}}.csv`Supports `{{date}}` placeholder---

### Cron

[](#cron)

FieldDefaultDescriptionEnable CronNoEnable automatic scheduled runsSchedule`0 2 * * *`Standard cron expression. Default: daily at 2:00 AM.---

CLI usage
---------

[](#cli-usage)

```
# Run for all active store views
bin/magento angeo:ai-description:run

# Single SKU across all stores
bin/magento angeo:ai-description:run --sku=MY-SKU-001

# Single store view only
bin/magento angeo:ai-description:run --store=2

# Dry-run — generate but do not save
bin/magento angeo:ai-description:run --dry-run

# Combine options
bin/magento angeo:ai-description:run --sku=MY-SKU --store=2 --dry-run
```

OptionDescription`--sku=VALUE`Process a single SKU only. Bypasses batch size limit.`--store=VALUE`Process a single Magento store ID. Default: all active stores.`--dry-run`Generate but do not save. Overrides config setting.---

Multi-store behaviour
---------------------

[](#multi-store-behaviour)

When run without `--store`, the module processes **every active non-admin store view** sequentially.

For each store view:

- Product is loaded in that store's scope
- `{{store_name}}` in the prompt is replaced with the store view name
- Generated content is saved in that store's scope — not the global default scope

```
# List your store IDs
bin/magento store:list

# Run for a specific store only
bin/magento angeo:ai-description:run --store=3
```

---

Setup guides
------------

[](#setup-guides)

### OpenAI API key

[](#openai-api-key)

1. Go to [platform.openai.com](https://platform.openai.com) → sign in or create account
2. Click your profile → **API keys** → **Create new secret key**
3. Copy the key — shown only once (starts with `sk-`)
4. In Magento: **Stores → Configuration → Angeo AEO → AI Description Updater → OpenAI Settings → API Key**

> Add a payment method at [platform.openai.com/account/billing](https://platform.openai.com/account/billing) for production use.

---

### Anthropic Claude API key

[](#anthropic-claude-api-key)

1. Go to [console.anthropic.com](https://console.anthropic.com) → create account
2. **API Keys → Create Key**
3. Copy the key (starts with `sk-ant-`)
4. In Magento: **... → Claude Settings → API Key**

---

### Google Gemini API key

[](#google-gemini-api-key)

1. Go to [aistudio.google.com/app/apikey](https://aistudio.google.com/app/apikey)
2. Click **Create API key in new project**
3. Copy the key
4. In Magento: **... → Gemini Settings → API Key**

> If you get `limit: 0` errors: create a new Google Cloud project and generate a new key there.

---

### Groq API key (free)

[](#groq-api-key-free)

1. Go to [console.groq.com](https://console.groq.com) → create account — **no credit card required**
2. **API Keys → Create API key**
3. Copy the key (starts with `gsk_`)
4. In Magento: **... → Groq Settings → API Key**

Free tier: 30 requests/minute, 14,400 requests/day.

---

### Google Sheets — SKU source setup

[](#google-sheets--sku-source-setup)

**Step 1 — Create the spreadsheet**

Create a new spreadsheet at [sheets.google.com](https://sheets.google.com). Add SKUs in column A, one per row:

```
SKU
MY-SKU-001
MY-SKU-002
MY-SKU-003

```

**Step 2 — Make it publicly readable**

**Share** → **Change to anyone with the link** → **Viewer** → **Done**

**Step 3 — Get the Spreadsheet ID**

Copy the ID from the URL:

```
https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms/edit
                                       ↑ this is the Spreadsheet ID

```

**Step 4 — Configure in Magento**

- **Enable** → `Yes`
- **Spreadsheet ID** → paste ID
- **Sheet GID** → `0` (first tab) or `?gid=` value from URL for other tabs
- **SKU Column Index** → `0` for column A

---

### Google Sheets — export setup (Service Account)

[](#google-sheets--export-setup-service-account)

**Step 1 — Create a Google Cloud project**

Go to [console.cloud.google.com](https://console.cloud.google.com):

1. Click the project dropdown (top left) → **New Project**
2. Name it (e.g. `angeo-sheets`) → **Create**

**Step 2 — Enable Google Sheets API**

Left menu → **APIs &amp; Services → Library** → search `Google Sheets API` → **Enable**

**Step 3 — Create a Service Account**

Left menu → **IAM &amp; Admin → Service Accounts** → **Create Service Account**:

1. Choose **Application data** when asked what data you will access
2. Service account name: `angeo-ai-updater`
3. Click **Create and Continue** → skip optional role → **Done**

**Step 4 — Generate a JSON key**

Click the service account → **Keys** tab → **Add Key → Create new key** → **JSON** → **Create**

A JSON file downloads automatically. It looks like this:

```
{
  "type": "service_account",
  "project_id": "angeo-sheets",
  "client_email": "angeo-ai-updater@angeo-sheets.iam.gserviceaccount.com",
  "private_key": "-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----\n",
  "token_uri": "https://oauth2.googleapis.com/token"
}
```

Copy the `client_email` value — you need it in the next step.

**Step 5 — Share the spreadsheet with the Service Account**

1. Create a new spreadsheet at [sheets.google.com](https://sheets.google.com)
2. Click **Share**
3. Paste the `client_email` from the JSON (e.g. `angeo-ai-updater@angeo-sheets.iam.gserviceaccount.com`)
4. Set role to **Editor**
5. Click **Send**

**Step 6 — Configure in Magento**

Go to **Stores → Configuration → Angeo AEO → AI Description Updater → Google Sheets Export**:

1. **Enable** → `Yes`
2. **Service Account JSON** → paste the **entire contents** of the downloaded JSON file
3. **Spreadsheet ID** → copy from the spreadsheet URL
4. **Sheet Tab Name** → `Sheet1` (or your tab name)
5. **Clear Sheet Before Write** → `Yes` to overwrite, `No` to append
6. **Save Config**

**Verify:**

```
bin/magento angeo:ai-description:run --sku=ONE-SKU --dry-run
```

Dry-run does not export. Disable dry-run and run again — a row should appear in the spreadsheet.

---

Log file
--------

[](#log-file)

```
# Watch in real time
tail -f var/log/angeo_ai_description_updater.log

# Last 50 lines
tail -50 var/log/angeo_ai_description_updater.log
```

Log entries include: run start/complete, per-SKU status (`updated` / `dry_run` / `error`), AI API errors, Google Sheets export result.

---

Related modules
---------------

[](#related-modules)

ModulePurpose[`angeo/module-aeo-audit`](https://packagist.org/packages/angeo/module-aeo-audit)8-signal CLI audit — checks ChatGPT, Gemini and Perplexity visibility[`angeo/module-llms-txt`](https://packagist.org/packages/angeo/module-llms-txt)Auto-generates llms.txt and llms.jsonl from Magento catalogue[`angeo/module-rich-data`](https://packagist.org/packages/angeo/module-rich-data)Injects Product, Organization, FAQPage JSON-LD schema[`angeo/module-openai-product-feed`](https://packagist.org/packages/angeo/module-openai-product-feed)ChatGPT Shopping product feed generator[`angeo/module-aeo-brand-visibility`](https://packagist.org/packages/angeo/module-aeo-brand-visibility)Live brand visibility audit across ChatGPT, Gemini, Perplexity---

License
-------

[](#license)

MIT — free to use, modify, and distribute.

---

Author
------

[](#author)

**Ievgenii Gryshkun** · [angeo.dev](https://angeo.dev) ·

###  Health Score

39

—

LowBetter than 84% of packages

Maintenance95

Actively maintained with recent releases

Popularity3

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

24d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/557748?v=4)[angeo](/maintainers/angeo)[@angeo](https://github.com/angeo)

---

Tags

aeoai-seoanthropic-claudeautomationecommercegoogle-geminigroqllmmagento2magento2-moduleopenaiphpproduct-descriptionseoaiopenaiseoGeminiclaudemagento2product descriptionangeo

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/angeo-module-ai-description-updater/health.svg)

```
[![Health](https://phpackages.com/badges/angeo-module-ai-description-updater/health.svg)](https://phpackages.com/packages/angeo-module-ai-description-updater)
```

###  Alternatives

[run-as-root/magento2-prometheus-exporter

Magento2 Prometheus Exporter

68353.9k](/packages/run-as-root-magento2-prometheus-exporter)[mollie/magento2

Mollie Payment Module for Magento 2

1131.8M12](/packages/mollie-magento2)[loki/magento2-components

Core module for defining Alpine.js components with advanced AJAX features

1010.0k22](/packages/loki-magento2-components)[baldwin/magento2-module-url-data-integrity-checker

Magento 2 module which can find potential url related problems in your catalog data

282806.2k](/packages/baldwin-magento2-module-url-data-integrity-checker)[mage-os/module-inventory-reservations-grid

Add a grid with the list of inventory reservations.

1512.6k](/packages/mage-os-module-inventory-reservations-grid)[opengento/module-category-import-export

This module add the capability to import and export the categories from the back-office.

1310.2k1](/packages/opengento-module-category-import-export)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
