PHPackages                             angeo/module-aeo-brand-visibility - 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. [API Development](/categories/api)
4. /
5. angeo/module-aeo-brand-visibility

ActiveMagento2-module[API Development](/categories/api)

angeo/module-aeo-brand-visibility
=================================

Live AI brand visibility audit for Magento 2. Queries ChatGPT, Claude, Perplexity, Gemini and Groq with brand-probing prompts and scores real-world AI recall, citation rate and recommendation presence. Extends angeo/module-aeo-audit v3 via CheckerInterface as the 17th built-in signal.

1.1.0(1w ago)02↑1400%MITPHPPHP ~8.2.0||~8.3.0||~8.4.0

Since May 16Pushed 1w agoCompare

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

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

angeo/module-aeo-brand-visibility
=================================

[](#angeomodule-aeo-brand-visibility)

[![Packagist Version](https://camo.githubusercontent.com/68e9a5f2d342bd4da16a2fe750f19599263e51ff869fddebe0b9dc513378ec55/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f616e67656f2f6d6f64756c652d61656f2d6272616e642d7669736962696c6974792e737667)](https://packagist.org/packages/angeo/module-aeo-brand-visibility)[![Packagist Downloads](https://camo.githubusercontent.com/1525d5df29ad8fddb532d953a950b7046663a16d681dfb547b203b752541fc43/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f616e67656f2f6d6f64756c652d61656f2d6272616e642d7669736962696c6974792e737667)](https://packagist.org/packages/angeo/module-aeo-brand-visibility)[![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)

**Live AI brand visibility audit for Magento 2 — queries ChatGPT, Claude, Perplexity, Gemini and Groq with brand-probing prompts and scores real-world AI recall, citation rate and recommendation presence.**

`angeo/module-aeo-brand-visibility` is an open-source Magento 2 module that answers one question: *when someone asks ChatGPT "where should I buy X?", does your store appear in the answer?* It runs configurable prompts across all major AI providers, detects brand signals in responses, and scores your visibility from 0 to 100 with a letter grade.

---

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

[](#table-of-contents)

- [What it measures](#what-it-measures)
- [Supported AI providers](#supported-ai-providers)
- [Requirements](#requirements)
- [Installation](#installation)
- [Quick start](#quick-start)
- [Admin Panel](#admin-panel)
- [CLI usage](#cli-usage)
- [Full configuration reference](#full-configuration-reference)
    - [General](#general)
    - [AI Providers](#ai-providers)
    - [Query Prompts](#query-prompts)
    - [Scoring](#scoring)
    - [Cron](#cron)
- [Setup guides](#setup-guides)
    - [Groq API key (free)](#groq-api-key-free)
    - [OpenAI API key](#openai-api-key)
    - [Anthropic Claude API key](#anthropic-claude-api-key)
    - [Google Gemini API key](#google-gemini-api-key)
    - [Perplexity API key](#perplexity-api-key)
- [Scoring explained](#scoring-explained)
- [How to improve your score](#how-to-improve-your-score)
- [Integration with angeo/module-aeo-audit](#integration-with-angeomodule-aeo-audit)
- [Related modules](#related-modules)

---

What it measures
----------------

[](#what-it-measures)

Each AI query result is analysed for five signals:

SignalDescription**Mentioned**Your brand name appears in the AI response**Recommended**AI actively suggests your store as a destination**URL Cited**Your domain is included in the answer**1st Position**Your store is the first recommendation**Positive Sentiment**Response tone about your brand is positiveEach signal has a configurable weight. The overall score is a weighted average across all successful query results, converted to 0–100 and graded A–F.

---

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

[](#supported-ai-providers)

ProviderModelsCostNotes**Groq**llama-3.3-70b-versatile, mixtral-8x7b**Free**Best starting point — 14,400 req/day, no card**Perplexity**sonar, sonar-pro, sonar-deep-researchPaidLive web search — most realistic signal**OpenAI**gpt-4.1, gpt-4.1-mini, gpt-4oPaid**Anthropic Claude**claude-sonnet-4-6, claude-haiku-4-5Paid**Google Gemini**gemini-2.5-flash-preview, gemini-2.0-flashFree tier + paidEnable one or more providers. Each active provider runs all configured prompts, and results are aggregated into a single score.

---

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

[](#requirements)

- PHP 8.2, 8.3, or 8.4
- Magento 2.4.6 / 2.4.7 / 2.4.8 (Adobe Commerce / Mage-OS supported)
- `angeo/module-aeo-audit` ^3.0
- `ext-curl`

> **v1.1.0 compatibility note**: this module requires `angeo/module-aeo-audit` v3.0 or newer. If you're on v2.x of the audit module, either update both, or pin this module to ^1.0 which still works against v2.x.

---

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

[](#installation)

```
composer require angeo/module-aeo-brand-visibility
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:flush
```

---

Quick start
-----------

[](#quick-start)

**Step 1 — Configure your brand**

Go to **Stores → Configuration → Angeo AEO → Brand Visibility → General**:

1. **Brand Name** → your store name as AI systems know it (e.g. `Angeo`)
2. **Brand Domain** → your domain without protocol (e.g. `angeo.dev`)
3. **Store Category** → what you sell (e.g. `Magento development tools`)

**Step 2 — Enable a free provider (Groq)**

Go to **Groq Settings**:

1. Get a free API key at [console.groq.com](https://console.groq.com) — no credit card
2. **Enable Groq** → `Yes`
3. **Groq API Key** → paste your `gsk_...` key
4. **Save Config**

**Step 3 — Run your first audit**

```
bin/magento angeo:aeo:brand-visibility
```

Or from Admin Panel: **Marketing → Angeo AEO → Brand Visibility → Run Audit**

---

Admin Panel
-----------

[](#admin-panel)

**Marketing → Angeo AEO → Brand Visibility**

### Run Audit

[](#run-audit)

The main dashboard with:

- **Score ring** — overall score 0–100 with letter grade (A–F)
- **Signal breakdown** — mention rate, recommendation rate, URL citation rate, 1st position rate, positive sentiment rate
- **Results table** — per-provider, per-prompt responses with detected signals highlighted
- **Action plan** — prioritised recommendations to improve your score
- **Single Query Tester** — test one provider + one prompt without saving to history

### Audit History

[](#audit-history)

Grid view of all past audit runs with:

- Date, brand, score (colour-coded), grade (badge), triggered by, query count, error count
- Signal pills showing signal rates at a glance
- Click any row action → **View** for full detail page with raw AI responses

### Configuration

[](#configuration)

**Stores → Configuration → Angeo AEO → Brand Visibility**

---

CLI usage
---------

[](#cli-usage)

```
# Full audit — all enabled providers, all enabled prompts
bin/magento angeo:aeo:brand-visibility

# Force fresh queries — bypass cache
bin/magento angeo:aeo:brand-visibility --refresh

# Test a single provider
bin/magento angeo:aeo:brand-visibility --provider=groq

# Test a single provider + specific prompt
bin/magento angeo:aeo:brand-visibility --provider=chatgpt --prompt=brand_direct

# Output as JSON (useful for CI pipelines)
bin/magento angeo:aeo:brand-visibility --format=json

# CI mode — exit code 1 if score below threshold
bin/magento angeo:aeo:brand-visibility --fail-on=70
```

OptionValuesDescription`--refresh` / `-r`flagBypass cache, force live queries`--provider``chatgpt` `claude` `perplexity` `gemini` `groq`Test one provider only`--prompt``recommendation` `category` `brand_direct` `product_search` `comparison` `gift_guide`Test one prompt type only`--format``table` `json` `markdown`Output format. Default: `table``--fail-on``0`–`100`Exit 1 if overall score is below this value---

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

[](#full-configuration-reference)

**Path:** Stores → Configuration → Angeo AEO → Brand Visibility

---

### General

[](#general)

FieldDefaultDescriptionBrand Name*(store name)*Your brand name as AI systems know itBrand Domain—Your domain without protocol (e.g. `angeo.dev`). Used for URL citation detection.Brand Keywords—Comma-separated aliases the AI may use to refer to your brandStore Category—What you sell (e.g. `Magento 2 development tools`). Used in prompts.Top Products / Services—Newline-separated product or service names for product search promptsCache Results (hours)12How long to cache audit results. `0` = always run live.Enable CronNoRun automatically on a schedule---

### AI Providers

[](#ai-providers)

Each provider has its own section. Enable the ones you have API keys for.

#### ChatGPT (OpenAI)

[](#chatgpt-openai)

FieldDefaultDescriptionEnable ChatGPTNoAPI Key—Starts with `sk-`. Stored encrypted.Modelgpt-4.1`gpt-4.1-mini` is fastest and cheapest.Max Tokens800Maximum response length.Request Timeout (s)30#### Claude (Anthropic)

[](#claude-anthropic)

FieldDefaultDescriptionEnable ClaudeNoAPI Key—Starts with `sk-ant-`. Stored encrypted.Modelclaude-sonnet-4-6`claude-haiku-4-5` is fastest and cheapest.Max Tokens800Request Timeout (s)60#### Perplexity

[](#perplexity)

FieldDefaultDescriptionEnable PerplexityNoAPI Key—Stored encrypted.Modelsonar`sonar-pro` for deeper web search. `sonar-deep-research` for most thorough results.Max Tokens800Request Timeout (s)60Perplexity performs live web searches — may be slower.> **Note:** Perplexity uses live web search, making it the most realistic indicator of actual AI visibility. It reflects what customers would see today, not what was in training data months ago.

#### Gemini (Google)

[](#gemini-google)

FieldDefaultDescriptionEnable GeminiNoAPI Key—Stored encrypted.Modelgemini-2.5-flash-preview-05-20`gemini-2.0-flash` has a free tier.Max Tokens800Request Timeout (s)30#### Groq (Free)

[](#groq-free)

FieldDefaultDescriptionEnable GroqNoAPI Key—Starts with `gsk_`. No credit card required.Modelllama-3.3-70b-versatileBest quality on free tier.Max Tokens800Request Timeout (s)30Free tier: **30 RPM, 14,400 requests/day**.

---

### Query Prompts

[](#query-prompts)

Six prompt types are available. Enable or disable each individually.

Prompt KeyExample query sent to AI`recommendation`"What are the best online stores to buy \[category\]?"`category`"Where can I buy \[category\] online?"`brand_direct`"Tell me about \[brand\] — what do they sell and what is their website?"`product_search`"I'm looking for \[top products\] online. Which stores do you recommend?"`comparison`"Compare \[brand\] with other \[category\] stores online."`gift_guide`"Which online stores have the best \[category\] for gifts?"Additional settings:

FieldDefaultDescriptionQueries per Provider3How many prompts to run per enabled provider per auditDelay Between Queries (ms)500Rate limiting delay between individual API callsSystem Prompt*(default)*Instructions sent to each AI model before the queryCustom Prompts—Additional prompts, one per line, format: `key: prompt text`---

### Scoring

[](#scoring)

Signal weights determine the contribution of each detected signal to the overall score:

SignalDefault Weight1st Position2.0Recommended1.5URL Cited1.5Mentioned1.0Positive Sentiment0.5Grade thresholds:

ScoreGrade90–100A75–89B60–74C40–59D0–39F---

### Cron

[](#cron)

FieldDefaultDescriptionEnable CronNoRun audit automatically on a scheduleSchedule`0 6 * * *`Standard cron expression. Default: daily at 6:00 AM.Results from cron runs appear in **Audit History** with `triggered_by: cron`.

---

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

[](#setup-guides)

### Groq API key (free)

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

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

---

### OpenAI API key

[](#openai-api-key)

1. Go to [platform.openai.com](https://platform.openai.com) → sign in or create account
2. **API keys → Create new secret key**
3. Copy the key (starts with `sk-`) — shown only once
4. In Magento: **... → ChatGPT Settings → API Key**

---

### 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. **Create API key in new project**
3. Copy the key
4. In Magento: **... → Gemini Settings → API Key**

---

### Perplexity API key

[](#perplexity-api-key)

1. Go to [perplexity.ai/settings/api](https://perplexity.ai/settings/api)
2. **Generate** → copy the key
3. In Magento: **... → Perplexity Settings → API Key**

---

Scoring explained
-----------------

[](#scoring-explained)

Each AI query produces a `BrandQueryResult` with five boolean signals. Signals are weighted and averaged:

```
query_score = sum(signal_weight for each detected signal) /
              sum(all_signal_weights) * 100

```

The overall score is the average of all successful query scores. Failed queries (API errors) are excluded from the average.

**Example with default weights:**

- 1st Position detected → +2.0
- Recommended detected → +1.5
- URL Cited not detected → 0
- Mentioned detected → +1.0
- Positive Sentiment detected → +0.5

```
query_score = (2.0 + 1.5 + 1.0 + 0.5) / (2.0 + 1.5 + 1.5 + 1.0 + 0.5) * 100
            = 5.0 / 6.5 * 100 = 76.9 → Grade B

```

---

How to improve your score
-------------------------

[](#how-to-improve-your-score)

Signal missingRoot causeFixNot mentionedAI has no knowledge of your brandPublish content that AI systems crawl: Dev.to, Reddit, GitHubURL not citedDomain not in AI training data or live indexInstall [`angeo/module-llms-txt`](https://packagist.org/packages/angeo/module-llms-txt) to give AI systems a structured map of your siteNot recommendedNo authority signals in AI-accessible contentAdd Product and Organization JSON-LD via [`angeo/module-rich-data`](https://packagist.org/packages/angeo/module-rich-data)Not 1st positionCompetitors have stronger AI presenceIncrease external mentions: guest posts, Packagist downloads, GitHub starsNegative sentimentPoor reviews or negative coverageAddress public feedback; ensure AI-crawlable content is positiveRun `bin/magento angeo:aeo:audit` for a full 15-signal technical AEO audit to identify and fix the infrastructure issues that block AI indexing.

---

Integration with angeo/module-aeo-audit
---------------------------------------

[](#integration-with-angeomodule-aeo-audit)

When `angeo/module-aeo-audit` v3.0+ is installed (required dependency), this module adds a `brand_visibility` checker to the AEO audit pipeline as the **16th signal** alongside the 15 built-in ones.

```
# Full 16-signal audit including brand visibility
bin/magento angeo:aeo:audit

# Skip brand visibility (saves API calls) — runs only the 15 built-in technical checks
bin/magento angeo:aeo:audit --category=technical,feed

# Run only live signals (this checker — live_signal category is reserved for third-party live checks)
bin/magento angeo:aeo:audit --category=live_signal
```

Brand visibility is registered with:

- **Category**: `live_signal` — calls external APIs
- **Severity**: `critical` — headline AEO metric
- **Weight**: 1.0 — top-tier signal in the score

Pass/warn/fail status is driven by your configured score thresholds (default pass = 80, warn = 60).

### Custom-checker authors

[](#custom-checker-authors)

This module is the canonical example of how to extend the audit pipeline. v3 checker contract:

```
public function check(\Magento\Store\Api\Data\StoreInterface $store): CheckResult;
public function getCategory(): string;   // CheckerInterface::CATEGORY_*
public function getSeverity(): string;   // CheckerInterface::SEVERITY_*
```

Extending `\Angeo\AeoAudit\Model\Checker\AbstractChecker` is the easiest path — you get `HttpCache` + `StoreUrlSampler` + JSON-LD parsing helpers + result factory methods for free.

---

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

[](#related-modules)

ModulePurpose[`angeo/module-aeo-audit`](https://packagist.org/packages/angeo/module-aeo-audit)15-signal CLI audit — robots/llms/schema/UCP/feeds/etc.[`angeo/module-llms-txt`](https://packagist.org/packages/angeo/module-llms-txt)Auto-generates llms.txt and llms.jsonl[`angeo/module-rich-data`](https://packagist.org/packages/angeo/module-rich-data)Product, Organization, FAQPage JSON-LD schema[`angeo/module-openai-product-feed`](https://packagist.org/packages/angeo/module-openai-product-feed)ChatGPT Shopping product feed[`angeo/module-ucp`](https://packagist.org/packages/angeo/module-ucp)Universal Commerce Protocol `/.well-known/ucp`[`angeo/module-ai-description-updater`](https://packagist.org/packages/angeo/module-ai-description-updater)Bulk AI product description generation---

License
-------

[](#license)

MIT — free to use, modify, and distribute.

---

Author
------

[](#author)

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

###  Health Score

41

—

FairBetter than 87% of packages

Maintenance98

Actively maintained with recent releases

Popularity3

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity52

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

Every ~11 days

Total

2

Last Release

12d ago

PHP version history (2 changes)1.0.0PHP &gt;=8.2

1.1.0PHP ~8.2.0||~8.3.0||~8.4.0

### Community

Maintainers

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

---

Tags

aeoai-visibilitybrand-auditbrand-monitoringchatgptclaudeecommercegeminigenerative-engine-optimizationllmmagento2magento2-moduleperplexityphpGeminiclaudemagento2ChatGptperplexityangeogroqaeoai-seoai engine optimizationai visibilitybrand visibilitybrand recallai auditbrand monitoring

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/angeo-module-aeo-brand-visibility/health.svg)

```
[![Health](https://phpackages.com/badges/angeo-module-aeo-brand-visibility/health.svg)](https://phpackages.com/packages/angeo-module-aeo-brand-visibility)
```

###  Alternatives

[mollie/magento2

Mollie Payment Module for Magento 2

1131.8M12](/packages/mollie-magento2)[smile/elasticsuite

Magento 2 merchandising and search engine built on ElasticSearch

8054.6M39](/packages/smile-elasticsuite)[run-as-root/magento2-prometheus-exporter

Magento2 Prometheus Exporter

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

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

1010.0k22](/packages/loki-magento2-components)[mage-os/module-inventory-reservations-grid

Add a grid with the list of inventory reservations.

1512.6k](/packages/mage-os-module-inventory-reservations-grid)[mage-os/module-admin-activity-log

The Admin Activity extension makes it easy to track all admin activity with comprehensive audit logging.

293.3k](/packages/mage-os-module-admin-activity-log)

PHPackages © 2026

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