Skip to main content
AI tutorials

How to Audit Brand Visibility Across AI Engines with EEO

Learn how to use EEO, an open community toolkit for Everything Engine Optimization, to audit brand visibility across AI engines, run CLI and Docker workflows, publish machine-readable brand information, and contribute verified cards, taxonomies, and engine presets.

How to Audit Brand Visibility Across AI Engines with EEO

What is EEO?

EEO stands for Everything Engine Optimization, an umbrella term covering SEO, AEO, GEO, and LLMO. The project helps brands understand and improve how they appear in answers generated by AI engines.

EEO combines three related capabilities:

  • EEO Audit: asks AI engines questions that real buyers might ask, then measures brand visibility in the returned answers. Reports include the original answers for inspection.
  • Brand registry: stores machine-readable brand cards that follow the eeo.brand.v1 schema. Brands can claim cards through domain verification in a public pull request.
  • Site generator: turns brand cards into a static site with llms.txt, JSON-LD, and a robots.txt file that allowlists AI crawlers.

The project is designed to be open, dependency-free where possible, and inspectable. Its broader rules and five-rule conduct pact for optimization providers are documented in the EEO standard.

Why AI brand visibility matters

When a buyer asks an AI engine for a recommendation, the response is assembled from information the model has read, such as articles, reviews, and listing pages. A brand's own description may not reach the model in a structured format.

EEO addresses this problem by giving brands an open format for stating their facts, a public process for proving domain ownership, and tools that make the resulting information readable by engines, developers, and buyers.

Choose an EEO workflow

The repository provides several entry points. Choose the one that matches your goal:

  • Use eeo-local.html for a quick browser-based audit without installing anything.
  • Use cli.cjs for repeatable checks, batch audits, datasets, and scheduled retests.
  • Use the Docker image to run a community brand site locally.
  • Use server.cjs and the web/ project for a self-hosted web edition of the audit tool.
  • Use the GitHub Action, MCP server, or Chrome extension when integrating audits into development or research workflows.

Run a single-file audit

1. Download and open the tool

Download eeo-local.html from the repository and open it in a browser. This edition does not require Node.js, package installation, or a server.

2. Select engines and provide keys

Choose engines from the catalog, which contains 26 presets, including 11 China-native engines. Paste the API keys required by the selected engines. The tool keeps these keys in the browser's localStorage.

3. Complete the brand form

Enter the brand information and select the relevant industry. Then run the audit. EEO asks buyer-oriented questions and evaluates how prominently the brand appears in the answers.

4. Inspect and export the report

The report includes an S-to-D grade, awareness and mention scores, a breakdown by engine, and every original answer. You can export the result as JSON or print it to PDF for sharing and review.

Run audits from the CLI

The command-line workflow requires Node 18 or newer. The CLI has no dependency installation step for its core workflow.

1. Create the configuration file

Copy the example configuration and fill in the engine settings and API keys that you plan to use:

cp config.example.json config.json

Keep the configuration appropriate for your local environment and do not commit secrets to a public repository.

2. Check one brand

Run a single brand audit by providing the brand name and industry:

node cli.cjs check 蜜雪冰城 --industry 餐饮

The CLI sends the configured audit requests and produces the corresponding visibility results.

3. Run a batch audit

Place brand names in a text file, one per line, and write the results to CSV:

node cli.cjs batch brands.txt --csv result.csv

This is useful when comparing multiple brands or creating a repeatable reporting process.

4. Audit a dataset

Use a dataset-driven command when you want to process brands from an industry category:

node cli.cjs dataset 白酒 --limit 10

The --limit option keeps the example run small. Use node cli.cjs --help to see all available commands, including watch for scheduled retests.

Run a community brand site with Docker

The Docker workflow generates a brand site from datasets/brands-1k.json. It does not require API keys because it serves the generated brand information rather than running an engine audit.

docker build -t eeo-community .
docker run -p 8080:80 eeo-community

After the container starts, open http://localhost:8080. The site provides one page per brand and includes llms.txt, JSON-LD, and robots.txt support for AI crawlers.

This Docker setup is different from the self-hosted audit server. For the audit server, inspect server.cjs and config.example.json. The web interface can be built with:

cd web
npm install
npm run build

A prebuilt web interface is also included in public/.

Understand the repository structure

  • eeo-local.html is the single-file audit tool with 26 engine presets.
  • cli.cjs provides check, batch, dataset, and watch workflows.
  • core.cjs contains the shared audit engine used by the CLI, MCP server, and GitHub Action.
  • server.cjs is the self-hosted server edition, while web/ contains its React and Vite source.
  • action/ contains the GitHub Action for running brand visibility audits in CI.
  • mcp/ contains the MCP server for Claude Desktop, Cursor, and Windsurf.
  • extension/ contains the Chrome MV3 quick-check extension.
  • datasets/ contains the full brand collection and curated seed data.
  • platform/ contains claim verification and finalization scripts.
  • standards/taxonomy/ contains industry traits and buyer-question banks.
  • tools/ contains generators for sites, llms.txt, schemas, and indexes.

Claim or add a brand card

Claim an existing card

Brands should first search datasets/ for an existing card. The claim process is described in platform/README.md and uses domain verification through a public pull request.

This process provides a visible record that the brand controls the verified domain associated with the card.

Add a missing brand

If the brand is not listed, create and submit a card according to CONTRIBUTING.md. Follow the repository's schema and contribution rules before opening the pull request.

Advanced workflows and contribution tips

Connect compatible AI endpoints

Engine watchers can propose new engine presets for the detection catalog. The CLI, self-hosted server, and MCP server can also connect to OpenAI-compatible endpoints through config.json. Review the contribution guidance before adding a preset or changing detection behavior.

Automate recurring audits

Use the CLI's watch command for scheduled retests. For repository automation, the action/ directory provides a GitHub Action that can run visibility audits in CI. The repository also includes workflows for claim verification, claim finalization, and monthly self-audits.

Use the MCP server in AI tools

The MCP server is available for Claude Desktop, Cursor, and Windsurf. It reuses the shared audit engine, allowing compatible clients to access the project's audit capabilities through an MCP integration. Configure it with the same general engine and key settings described by config.example.json.

Extend industry taxonomies

Taxonomy contributors can add industry trait libraries and buyer-question banks under standards/taxonomy/. Acceptance rules are documented in the taxonomy README. Adding an industry alias is described as an easy first contribution.

Generate machine-readable publishing assets

The site-generation tools can turn brand cards into a static information site. The generated output is intended to make brand facts easier for engines and other tools to discover through llms.txt, JSON-LD, and crawler rules.

Keep audits interpretable

EEO reports preserve every original engine answer rather than exposing only a score. When comparing runs, review the per-engine breakdown and the source answers alongside awareness and mention scores. This makes it easier to distinguish a broad visibility change from a result caused by one engine or one question.

For repeatable results, keep the industry selection, brand data, engine configuration, and batch input consistent between runs. When adding a new engine or taxonomy, document the change so later reports can be compared fairly.

Conclusion

EEO provides an open workflow for measuring how AI engines describe brands and for publishing brand facts in a structured format. Start with eeo-local.html for a no-install audit, move to the CLI for batch or scheduled work, and use Docker or the self-hosted server when you need a local community instance.

Once you understand the basic workflow, you can claim brand cards, contribute taxonomy data, add engine presets, integrate audits into CI, or connect the MCP server to compatible AI development tools. The project is released under the Apache License 2.0, while the standard and taxonomy files use the licenses documented in the repository.