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

seo-solver

v0.2.3

Published

SEO audit and comparison CLI tool

Readme

seo-solver

CLI tool for SEO audits, page-to-page comparisons, and extracting SEO data from HTML.

Use seo-solver to check titles, descriptions, canonical tags, Open Graph, JSON-LD, robots.txt, and other SEO signals from the terminal before a release, in CI, or while comparing production against a preview build.

seo-solver validate https://example.com

Why seo-solver?

SEO regressions are easy to miss. A template change can drop a canonical tag, break Open Graph data, or change structured data without anyone noticing until after release.

seo-solver helps answer three practical questions:

  • what SEO data is on this page?
  • does it pass validation?
  • what changed between one version of a page and another?

Installation

seo-solver targets Node 22+ and is published as the seo-solver CLI package.

You can use the CLI without installing it globally, or install it with the package manager you already use.

Run without installing

pnpm

pnpm dlx seo-solver validate https://example.com

npm

npx seo-solver validate https://example.com

Yarn

yarn dlx seo-solver validate https://example.com

Bun

bunx seo-solver validate https://example.com

Install globally

pnpm

pnpm add -g seo-solver

npm

npm install -g seo-solver

Yarn

yarn global add seo-solver

Bun

bun add --global seo-solver

Optional Playwright backend

If you need browser-backed fetching for JavaScript-heavy pages, install the optional Playwright backend and browser binaries with your package manager of choice:

pnpm

pnpm add -g @seo-solver/fetch-playwright playwright
pnpm exec playwright install

npm

npm install -g @seo-solver/fetch-playwright playwright
npx playwright install

Yarn

yarn global add @seo-solver/fetch-playwright playwright
yarn playwright install

Bun

bun add --global @seo-solver/fetch-playwright playwright
bunx playwright install

Quick start

Validate a page:

seo-solver validate https://example.com

Compare production and preview:

seo-solver compare https://example.com https://preview.example.com

Extract normalized SEO data as JSON:

seo-solver extract https://example.com --format json

Print the current validation rule catalog:

seo-solver list-rules

Commands

| Command | Purpose | | --- | --- | | seo-solver validate <url> | Validate one page against SEO rules | | seo-solver compare <url-a> <url-b> | Compare SEO data between two pages | | seo-solver extract <url> | Extract normalized SEO data without validation | | seo-solver list-rules | Print the available validation rules |

Common use cases

Check a page before release

seo-solver validate https://preview.example.com

Use this before shipping a landing page, article, product page, or generated HTML.

Compare production and a new version

seo-solver compare https://example.com https://preview.example.com

Use this to spot unexpected changes in title, description, canonical, Open Graph, JSON-LD, robots.txt, and other extracted targets.

Extract SEO data for scripts or CI

seo-solver extract https://example.com --targets meta,opengraph,jsonld --format json

Use this when you want structured output for automation or custom checks.

Open artifacts in your editor

seo-solver extract https://example.com --editor code

Built-in editor presets are code, cursor, surf, and zed.

Browser-backed fetching

By default, the CLI uses the native fetcher. For pages that need browser-like behavior, install the optional Playwright backend and run:

seo-solver validate https://example.com --fetcher playwright

More examples

# Compare only selected targets
seo-solver compare https://example.com https://preview.example.com --targets opengraph,meta

# Validate with pure JSON-LD validation (default)
seo-solver validate https://example.com --jsonld-runtime off

# Disable selected rules
seo-solver validate https://example.com --disable-rules opengraph/*

# Override rule severity
seo-solver validate https://example.com --severity-override opengraph/description-missing=error

# Keep normal compare output and also open diff artifacts in VS Code
seo-solver compare https://example.com https://preview.example.com --format json --editor code

Documentation

License

MIT