Score your webpage for SEO, GEO, LLMO, AEO & Core Web Vitals — all running 100% locally in your browser.
Keywords: AEO · SEO · GEO · LLMO · CWV · Answer Engine Optimization · Generative Engine Optimization · LLM Optimization · Core Web Vitals · Chrome Extension · Privacy-First · Transformers.js
AEO Score Calculator is a Chrome Manifest V3 extension that analyzes any webpage and returns a comprehensive optimization score across five disciplines:
| Category | Focus | Score Range |
|---|---|---|
| AEO | Answer Engine Optimization (EEAT, Relevance, Structure, Freshness) | 0–100 |
| SEO | Search Engine Optimization (Technical, On-Page, Links, Images) | 0–100 |
| GEO | Generative Engine Optimization (Citations, Statistics, Structured Answers) | 0–100 |
| LLMO | LLM Optimization (Crawlability, Completeness, Direct Answers, Clarity) | 0–100 |
| CWV | Performance (Core Web Vitals: LCP, CLS, INP + supporting metrics: FCP, TTFB — via Performance API) | 0–100 |
An overall score combines all five categories equally (20% each) into a single number. Each category includes actionable suggestions ranked by severity (critical, warning, info).
- 5-in-1 Scoring Engine — SEO, GEO, LLMO, AEO, and Core Web Vitals scores in a single click
- 100% Local Processing — All analysis runs in-browser via Transformers.js. No data leaves your machine
- Local LLM Inference — Multilingual BERT (5-class star sentiment → tone) and MiniLM (embeddings) run locally — no API keys, no network calls
- Performance / Web Vitals — Core Web Vitals (LCP, CLS, INP) and supporting metrics (FCP, TTFB) measured via the browser's Performance API
- Actionable Suggestions — Prioritized recommendations: critical issues, warnings, and improvement tips
- Tabbed Dashboard — Switch between AEO, SEO, GEO, LLMO, and CWV views with category-specific breakdowns
- Privacy-First Architecture — Zero telemetry, zero tracking, zero external requests
- Offline-Ready — Models are bundled locally (~188 MB total
dist/after build). Works without an internet connection
Extension popup with AEO/SEO/GEO/LLMO/CWV tabs and score breakdown
- Open the AEO Score Calculator listing on the Chrome Web Store.
- Click Add to Chrome and confirm the installation.
Updates install automatically when new versions are published to the store.
-
Clone the repository
git clone https://github.com/YOUR_USERNAME/aeo-score-calculator.git cd aeo-score-calculator -
Install dependencies and build
bun install bun run build
-
Load in Chrome
- Open
chrome://extensions/ - Enable Developer mode (top-right toggle)
- Click Load unpacked
- Select the
dist/folder
- Open
- Navigate to any webpage you want to analyze
- Click the extension icon in your Chrome toolbar
- Click "Analyze Current Page"
- Switch tabs to view AEO, SEO, GEO, LLMO, or CWV scores
- Review suggestions for each category and implement improvements
Set a custom shortcut for instant analysis:
- Go to
chrome://extensions/shortcuts - Find AEO Score Calculator
- Assign your preferred shortcut (e.g.,
Ctrl+Shift+Aor⌘+Shift+A) - Press your shortcut on any page to open the analyzer
| Score | Rating | What It Means |
|---|---|---|
| 80–100 | 🟢 Excellent | Well-optimized across all disciplines |
| 60–79 | 🔵 Good | Solid foundation with room for improvement |
| 40–59 | 🟡 Needs Work | Several areas need attention |
| 0–39 | 🔴 Significant Optimization Needed | Major improvements required |
Each category shows sub-scores with their weights:
AEO — EEAT (40%), Relevance (30%), Structure (20%), Freshness (10%) + LLM bonuses SEO — Technical (30%), On-Page (35%), Link Profile (20%), Image SEO (15%) GEO — Citability (30%), Factual Density (25%), Structured Answers (25%), Authority (20%) LLMO — Crawlability (20%), Completeness (30%), Direct Answers (30%), Clarity (20%) CWV — LCP (35%), CLS (25%), INP (25%), FCP (10%), TTFB (5%) (LCP, CLS, INP are the three official Core Web Vitals; FCP and TTFB are supplementary)
Overall Score = AEO × 20% + SEO × 20% + GEO × 20% + LLMO × 20% + CWV × 20%
The scoring engine uses a combination of heuristic analysis, local LLM inference, and the browser Performance API to evaluate your page:
- EEAT: Author presence, citations, schema markup, trust signals, content depth
- Relevance: Title quality, meta description, heading structure, content depth, images
- Structure: Heading hierarchy, lists, tables, paragraphs, images
- Freshness: Age-based decay — <30d=1.0, <90d=0.7, <180d=0.4, older=0.1
- SEO Technical: Canonical URL, viewport, HTTPS, semantic HTML, H1 count
- SEO On-Page: Title length, description length, heading count, word count
- GEO Citability: Quotation count, statistics density, citation patterns, external links
- GEO Structured Answers: FAQ presence, comparison tables, step-by-step guides, answer capsules
- Tone: Multilingual BERT star sentiment (1–5 stars) mapped to a 0–1 tone score
- Uniqueness: MiniLM text embeddings — embedding magnitude as uniqueness proxy
- LCP (Largest Contentful Paint): Measures loading performance — target <2.5s (Core Web Vital)
- CLS (Cumulative Layout Shift): Measures visual stability — target <0.1 (Core Web Vital)
- INP (Interaction to Next Paint): Measures interactivity — target <200ms (Core Web Vital)
- FCP (First Contentful Paint): Measures time to first visible content — target <1.8s (supporting metric)
- TTFB (Time to First Byte): Measures server response time — target <800ms (supporting metric)
- Backlink profile (requires external data)
- Domain authority (requires external data)
- Social signals (requires external data)
| Technology | Version | Purpose |
|---|---|---|
| Chrome Manifest V3 | v3 | Extension platform |
| Vite | v6 | Build tool + dev server |
| CRXJS | v2 | Vite plugin for Chrome extensions |
| React | v19 | Popup UI |
| TypeScript | v5.7 | Type-safe development |
| Tailwind CSS | v4 | Utility-first styling |
| Transformers.js | v2.17 | In-browser LLM inference |
| ONNX Runtime Web | v1.14 | WASM-based model execution |
| Vitest | v3 | Unit testing |
| Priority | Feature | Status |
|---|---|---|
| 🔴 High | Chrome Web Store publication | ✅ Done |
| 🔴 High | Core Web Vitals integration | ✅ Done |
| 🟡 Medium | Historical score tracking | 📋 Planned |
| 🟡 Medium | Export results as PDF/JSON | 📋 Planned |
| 🟡 Medium | Batch URL analysis | 📋 Planned |
| 🟢 Low | Firefox / Edge support | 💡 Idea |
| 🟢 Low | Custom scoring weights | 💡 Idea |
| 🟢 Low | AI-powered suggestion generation | 💡 Idea |
┌─────────┐ ANALYZE_PAGE ┌────────────┐ EXTRACT_CONTENT ┌──────────────┐
│ Popup │ ──────────────────► │ Background │ ────────────────► │ Content │
│ (React) │ ◄────────────────── │ (SW) │ ◄──────────────── │ Script │
│ │ AnalysisResult │ │ ExtractedContent│ │
└─────────┘ └─────┬──────┘ └──────────────┘
│
CALCULATE_LLM │
─────────────────►│◄──────────────────────────┐
LLM Scores │ │
▼ │
┌─────────────┐ │
│ Offscreen │ │
│ Document │ │
│ (Transformers│ │
│ .js) │ │
└──────────────┘ │
├── manifest.config.ts # MV3 manifest definition
├── vite.config.ts # Vite + CRXJS configuration
├── popup.html # Popup HTML entry
├── offscreen.html # Offscreen document for LLM
├── public/models/ # Local ML models (~186 MB ONNX; full dist ~188 MB)
├── scripts/
│ └── download-models.ts # Script to download models from HuggingFace
├── src/
│ ├── background/ # Service worker (DOM-free)
│ ├── content/ # Content script (DOM extraction)
│ ├── offscreen/ # Offscreen document (Transformers.js)
│ ├── popup/ # React 19 popup UI
│ ├── lib/
│ │ ├── types.ts # Shared TypeScript interfaces
│ │ ├── aeo-calculator.ts # Main calculator + finalizeAll
│ │ ├── aeo-scoring.ts # AEO heuristic scoring
│ │ ├── aeo-extraction.ts # DOM extraction functions
│ │ ├── seo-scoring.ts # SEO scoring module
│ │ ├── geo-scoring.ts # GEO scoring module
│ │ ├── llmo-scoring.ts # LLMO scoring module
│ │ ├── cwv-scoring.ts # Core Web Vitals scoring (LCP, CLS, INP, FCP, TTFB)
│ │ ├── llm/ # Local LLM inference
│ │ └── messaging/ # Typed messaging system
│ └── components/ # React UI components
├── tests/ # Vitest unit tests
├── icons/ # Extension icons
└── dist/ # Built extension (load in Chrome)
bun install # Install dependencies
bun run dev # Development with hot reload
bun run build # Production build → dist/
bun run test # Watch mode tests
bun run test:run # Single-run tests
bun run download-models # Download ML models from HuggingFaceContributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License — see the LICENSE file for details.