Skip to content

chinkan/aeo-score-chrome-ext

Repository files navigation

AEO Score Calculator — Chrome Extension

Version License Manifest V3 React 19 TypeScript Privacy

Score your webpage for SEO, GEO, LLMO, AEO & Core Web Vitals — all running 100% locally in your browser.

Install from Chrome Web Store

Keywords: AEO · SEO · GEO · LLMO · CWV · Answer Engine Optimization · Generative Engine Optimization · LLM Optimization · Core Web Vitals · Chrome Extension · Privacy-First · Transformers.js


🚀 What It Does

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).


✨ Features

  • 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

📸 Screenshots

AEO Score Calculator popup showing overall score and category tabs
Extension popup with AEO/SEO/GEO/LLMO/CWV tabs and score breakdown


📦 Installation

Option 1: Chrome Web Store (recommended)

  1. Open the AEO Score Calculator listing on the Chrome Web Store.
  2. Click Add to Chrome and confirm the installation.

Updates install automatically when new versions are published to the store.

Option 2: Load Unpacked (development)

  1. Clone the repository

    git clone https://github.com/YOUR_USERNAME/aeo-score-calculator.git
    cd aeo-score-calculator
  2. Install dependencies and build

    bun install
    bun run build
  3. Load in Chrome

    • Open chrome://extensions/
    • Enable Developer mode (top-right toggle)
    • Click Load unpacked
    • Select the dist/ folder

🎮 How to Use

  1. Navigate to any webpage you want to analyze
  2. Click the extension icon in your Chrome toolbar
  3. Click "Analyze Current Page"
  4. Switch tabs to view AEO, SEO, GEO, LLMO, or CWV scores
  5. Review suggestions for each category and implement improvements

⌨️ Keyboard Shortcut

Set a custom shortcut for instant analysis:

  1. Go to chrome://extensions/shortcuts
  2. Find AEO Score Calculator
  3. Assign your preferred shortcut (e.g., Ctrl+Shift+A or ⌘+Shift+A)
  4. Press your shortcut on any page to open the analyzer

📊 Understanding Your Score

Overall Score Ranges

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

Category Breakdowns

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%


✅ Score Validation

The scoring engine uses a combination of heuristic analysis, local LLM inference, and the browser Performance API to evaluate your page:

Heuristic Scoring (No LLM)

  • 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

LLM Scoring (Local Inference)

  • Tone: Multilingual BERT star sentiment (1–5 stars) mapped to a 0–1 tone score
  • Uniqueness: MiniLM text embeddings — embedding magnitude as uniqueness proxy

Core Web Vitals + Supporting Metrics (Performance API)

  • 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)

What's NOT Scored (Yet)

  • Backlink profile (requires external data)
  • Domain authority (requires external data)
  • Social signals (requires external data)

🛠 Tech Stack

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

🗺 Roadmap

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

🏗 Architecture

┌─────────┐    ANALYZE_PAGE    ┌────────────┐  EXTRACT_CONTENT  ┌──────────────┐
│  Popup  │ ──────────────────► │ Background │ ────────────────► │ Content      │
│ (React) │ ◄────────────────── │ (SW)       │ ◄──────────────── │ Script       │
│         │   AnalysisResult    │            │   ExtractedContent│              │
└─────────┘                     └─────┬──────┘                   └──────────────┘
                                      │
                    CALCULATE_LLM     │
                    ─────────────────►│◄──────────────────────────┐
                    LLM Scores        │                           │
                                      ▼                           │
                               ┌─────────────┐                    │
                               │  Offscreen   │                    │
                               │  Document    │                    │
                               │ (Transformers│                    │
                               │  .js)        │                    │
                               └──────────────┘                    │

📁 Project Structure

├── 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)

📝 Commands

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 HuggingFace

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License — see the LICENSE file for details.

About

Privacy-first Chrome extension that scores SEO, GEO, LLMO, AEO, and CWV, then provides AI-friendly optimization tips for faster coding workflows.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

  •  

Packages

 
 
 

Contributors