AEO Monitor & Optimizer — Complete guide
Install and configure AEO Monitor & Optimizer: API keys for the 5 LLMs, prompts, audits, visibility score, recommendations and dynamic llms.txt.
Overview
AEO Monitor & Optimizer measures your brand’s visibility in the answers of five AI assistants — ChatGPT (OpenAI), Claude (Anthropic), Perplexity, Gemini (Google) and Mistral — then generates concrete recommendations to improve it. The plugin sends your monitoring prompts to each enabled LLM, analyses the responses (brand mentions, domain citations, exact URLs, competitors), computes a 0–100 visibility score and serves a dynamic llms.txt file.
The plugin runs on a BYOK (Bring Your Own Key) model: you use your own API keys and calls go directly from your server to the official APIs. No data ever passes through DataFirefly.
Requirements
- WordPress 6.0 or later (tested up to 6.7)
- PHP 7.4 or later (8.1+ recommended)
- WooCommerce 7.0+ only for automatic product tracking and category-based prompt seeding (optional)
- At least one API key among: OpenAI, Anthropic, Perplexity, Google Gemini, Mistral
- Working WP-Cron (or a system cron hitting wp-cron.php) for scheduled audits
Installation
- Download the ZIP file from your DataFirefly customer account.
- In the WordPress admin, go to Plugins → Add New → Upload Plugin, select dfaeomonitor.zip and click Install Now.
- Click Activate. The plugin automatically creates its 6 database tables and schedules the weekly audit cron.
- Go to Settings → Permalinks and click Save (without changing anything) to refresh the rewrite rules for the llms.txt URL.
An AEO Monitor menu appears in the admin sidebar with six pages: Dashboard, Prompts, Results, Tracked pages, Recommendations and Settings.
Initial setup
1. Brand and site
In AEO Monitor → Settings, fill in:
- Brand name: the exact name LLMs should cite.
- Aliases / variants: other spellings or trade names (one per line). Each alias counts as a brand mention.
- Main domain: your domain without http or www (example: mystore.com). Any URL citation from this domain counts as a domain citation.
- Competitors: one brand per line. The plugin detects when an LLM talks about them instead of you and applies a score penalty.
2. LLM providers
Still in Settings, enable the providers you want to query and paste the matching API key:
- OpenAI — key from platform.openai.com. Recommended monitoring model: gpt-4o-mini. The plugin uses the Responses API with the web search tool.
- Anthropic — key from console.anthropic.com. Calls use the Messages API with the web search tool.
- Perplexity — key from perplexity.ai. The sonar-pro model with native citations: the richest provider in terms of sources.
- Google Gemini — key from Google AI Studio. Google Search grounding is enabled automatically.
- Mistral — key from console.mistral.ai. Web search when available, otherwise falls back to the model’s internal knowledge.
A single API is enough to get started, but three or more providers give a representative view. A weekly audit of 10 prompts across 5 LLMs (50 calls) typically costs between 0.30 and 1.20 EUR with the budget models.
3. Scheduling
- Audit cadence: weekly (recommended) or daily.
- Max prompts per audit: cap on prompts sent each run. Reminder: each prompt is sent to every enabled LLM.
- Request timeout: maximum duration of one API call (45 seconds by default).
- Automatic tracking: tick to automatically track every newly published WooCommerce product and, optionally, every new page.
- Dynamic llms.txt: enables the site response on the llms.txt URL.
Creating and managing prompts
A prompt is a question asked verbatim to the LLMs, phrased the way a real user would ask it. Examples: “What are the best SEO modules for PrestaShop?”, “Which shop do you recommend to buy leather sneakers in France?”
In AEO Monitor → Prompts you can:
- Create a prompt manually with an internal label, the question text, an intent (brand, product, category, competitor, informational), a language, and optionally a target URL whose citation you want to track.
- Generate default prompts: the dedicated button automatically creates brand prompts and one prompt per WooCommerce category, in the site language.
- Enable / disable a prompt without deleting it: only active prompts are sent during audits.
Attaching a target URL to a prompt lets you measure precisely whether LLMs point to the right page — the score gains 20 points when the exact URL is cited.
Running an audit
Three ways to trigger an audit:
- “Run an audit now” button on the dashboard — execution starts in the background within seconds.
- Scheduled cron — automatic according to the cadence chosen in the settings.
- WP-CLI — the wp dfaeo audit command runs the audit synchronously with details in the terminal.
During the audit, each active prompt is sent to each enabled provider with a 300 ms delay between calls. Responses are stored, analysed, and recommendations are generated automatically at the end of the run.
Understanding the visibility score
Each LLM response receives a 0–100 score computed as follows:
- +30 points if your brand is mentioned, plus a bonus up to +15 depending on the number of repetitions
- +25 points if your domain is cited in the sources
- +20 points if the prompt’s exact target URL is cited
- +5 points if the response contains sources
- Penalty up to -15 points depending on the number of competitor mentions
The dashboard aggregates these scores: overall average, brand mention rate, domain citation rate, trend over 7, 30 or 90 days and comparison across the five platforms.
Tracked pages and coverage score
The Tracked pages page lists the URLs whose LLM indexing you monitor. A page’s coverage score increases each time an LLM cites its exact URL and slightly decays with each audit without a citation (0.98 factor), reflecting the real freshness of your presence.
- Published WooCommerce products are added automatically when the option is enabled.
- You can manually add any URL with a type (page, product, post, category) and a priority from 1 to 10.
- High-priority pages with a low score automatically generate recommendations.
Recommendations
After each audit, the recommendation engine analyses struggling pages and proposes actions ranked by severity (high, medium, low):
- FAQ JSON-LD — ready-to-paste code block for the page head, with questions and answers generated from the content.
- Product schema — enriched structured data for WooCommerce product pages (price, availability, reviews) hydrated from the real product data.
- TL;DR summary — a 60 to 80 word paragraph to place at the top of the content, a format LLMs readily extract.
- Organization schema — reinforced brand identity to limit confusion and hallucinations about your company.
- robots.txt — allow rules for AI crawlers: GPTBot, ClaudeBot, PerplexityBot, Google-Extended.
- llms.txt priority — promotion of a strategic page in the dynamic llms.txt file.
Each recommendation can be marked In progress, Resolved or Dismissed. The proposed code appears in an expandable, copy-ready block.
The dynamic llms.txt file
When the option is enabled, your site responds on the llms.txt URL with a continuously generated Markdown index:
- Top references — the pages best detected by LLMs, ranked by coverage score.
- Priority pages — pages with priority 5 or higher not yet well detected.
- Catalog — your main WooCommerce categories.
- About — brand name, site URL and contact.
If the llms.txt URL returns a 404, re-save your permalinks in Settings → Permalinks. The dfaeo_llmstxt_lines filter lets developers modify the generated lines.
WP-CLI
Three commands are available for automation:
"wp dfaeo audit" runs a synchronous audit (option --prompts=5 to limit)
"wp dfaeo seed" generates default prompts from the brand and categories
"wp dfaeo report --days=30" prints the aggregated report (option --format=json or csv)
The report command is ideal for feeding a BI tool or an external dashboard via a system cron job.
Troubleshooting
- “No audit could start” — check that at least one provider is enabled with a valid API key and that at least one prompt is active.
- 401 / 403 errors in the results — the API key of the affected provider is invalid or expired. Errors are visible in each result’s detail.
- 429 errors — API quota reached at the provider. Reduce the number of prompts per audit or switch to weekly cadence.
- Cron does not fire — on low-traffic sites, WP-Cron only runs on visits. Set up a system cron hitting wp-cron.php every 15 minutes.
- llms.txt returns 404 — re-save the permalinks or deactivate and reactivate the plugin.
- Empty dashboard charts — normal before the first completed audit. Also check that no script blocker prevents Chart.js from loading from the jsdelivr CDN.
Uninstalling
Deactivation keeps all your data. Deleting the plugin from the Plugins page triggers a full cleanup: the 6 tables (prompts, runs, results, citations, pages, recommendations), the options and the cron tasks are permanently removed.
Privacy and GDPR
The plugin sends no data to DataFirefly and embeds no telemetry. The only outbound calls go to the LLM APIs you have enabled, using your keys. The prompts you write are transmitted to these third-party providers: avoid including customers’ personal data in them. API keys are stored in the WordPress options table of your database.