npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

open-aeo

v1.1.1

Published

An open-source MCP server for Answer Engine Optimization (AEO) monitoring.

Readme

open-aeo

An open-source AEO (Answer Engine Optimization) citation monitor built as an MCP server. Track whether your domain is cited by AI answer engines like Perplexity, directly inside Claude.

What it does

  • aeo_check — live citation check for a single query
  • aeo_report — batch check across multiple queries
  • aeo_history — view historical citation data over time
  • aeo_analyse — fetch and analyse a competitor page that beat you
  • aeo_recommend — citation check plus prioritised content recommendations
  • aeo_gap_report — find queries where competitors are cited but you are not
  • aeo_gap_history — view historical gap analysis data

Why

Enterprise tools like Profound and Conductor solve this problem for large teams at enterprise pricing. open-aeo is the self-hosted, open alternative — runs locally, costs cents per report, no subscription.

Prerequisites

Installation

Option 1 — npx (recommended)

npx -y open-aeo install

This prompts for your Perplexity API key, asks whether you're using Claude Code, Claude Desktop, or both, and writes the configuration automatically. Restart Claude after it completes.


Option 2 — manual (git clone)

Requires pnpm >= 9.

git clone https://github.com/open-aeo/open-aeo.git
cd open-aeo
pnpm install && pnpm run build

Then add to your Claude Desktop config (replacing the path):

{
  "mcpServers": {
    "open-aeo": {
      "command": "node",
      "args": ["/absolute/path/to/open-aeo/dist/index.js"],
      "env": {
        "PERPLEXITY_API_KEY": "your-key-here"
      }
    }
  }
}

Verify

Start a new conversation and ask: "What MCP tools do you have available?" — Claude will list all connected tools.

Usage

Ask Claude:

  • "Check if linear.app is cited for 'best project management tool for software teams'"
  • "Run an AEO report for these 5 queries"
  • "Show me my citation history for last week"
  • "Analyse this competitor page that keeps beating me"
  • "What should I do to get cited for this query?"
  • "Find gaps where competitors are cited but I'm not"

Tools

| Tool | Description | |------|-------------| | aeo_check | Run a live citation check for one query. Returns whether your domain or brand was cited, its position, and which competitors appeared instead. | | aeo_report | Batch citation check across multiple queries. Returns a summary and per-query results. Adds a 2-second delay between requests to avoid rate limits. | | aeo_history | Retrieve past citation check results from local storage. Filterable by query and domain. | | aeo_gap_report | Run citation checks across a set of queries and return only those where competitors appear but your domain does not. | | aeo_gap_history | Retrieve historical gap analysis results from local storage. | | aeo_analyse | Fetch and analyse a specific competitor URL. Returns a structural breakdown of the page — FAQ sections, schema markup, content depth, freshness signals — so you understand why it was cited. | | aeo_recommend | Run a fresh citation check for a query, then automatically fetch and analyse the competitor pages that appeared instead of you. Returns a prioritised list of specific content and schema tasks to improve your citation chances. |

Architecture

The codebase follows a port/adapter pattern. Interfaces define the contract; implementations can be swapped without changing any tool logic.

src/
  index.ts                   entry point, reads env vars, starts the MCP server
  core/
    types.ts                 all shared interfaces
    citationParser.ts        detects citations in engine responses
    contentAnalyser.ts       fetches competitor pages, generates recommendation tasks
  ports/
    IAnswerEngine.ts         interface for answer engine adapters
    IStorage.ts              interface for storage adapters
  adapters/
    PerplexityApi.ts         answer engine: Perplexity via sonar model
    JSONStorage.ts           storage: writes to ~/.open-aeo/
    PageFetcher.ts           fetches competitor URLs, extracts page signals
  mcp/
    tools.ts                 tool handler functions
    server.ts                MCP server, tool registration

Data storage

All data is stored locally at ~/.open-aeo/. No cloud, no telemetry.

  • ~/.open-aeo/history.json — citation check history
  • ~/.open-aeo/competitor-history.json — competitor page analysis history

Override the storage location with OPEN_AEO_STORE_PATH (must be an absolute path).

Environment variables

| Variable | Required | Description | |----------|----------|-------------| | PERPLEXITY_API_KEY | Yes | Your Perplexity API key. Get one at https://www.perplexity.ai/api-platform | | OPEN_AEO_STORE_PATH | No | Custom absolute path for data storage. Defaults to ~/.open-aeo/ |

Documentation

Full documentation is in the docs/ folder, including tool reference, how citation detection works, storage reference, and study data with evidence charts.

Contributing

See CONTRIBUTING.md.

License

MIT