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

@seobeast/seo-audit

v0.2.1

Published

Programmatic SEO audit library — 140+ rules across 20 categories. TypeScript-first, ESM, no browser required.

Readme

seobeast-audit

Full-site SEO audit with 140+ rules across 20 categories. Ships as both a Claude Code skill and a TypeScript npm library with proper ESM exports.

Claude Code Skill

claude install https://github.com/seobeast-co/seobeast-audit

Then in any Claude Code session:

/seobeast-audit https://yoursite.com

Spawns 6 specialist subagents in parallel (technical, content, performance, security, structured data, AEO) and returns a unified report with a composite 0–100 score.

Sample output:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  seobeast-audit  ·  https://example.com
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  Score: 58/100  [████████████░░░░░░░░]  Grade: D

  Technical SEO    [████████░░]  76/100   8 issues
  Content          [███████░░░]  68/100   5 issues
  Performance      [█████░░░░░]  52/100   11 issues
  Security         [████████░░]  80/100   3 issues
  Structured Data  [███░░░░░░░]  30/100   4 issues
  AEO              [██░░░░░░░░]  24/100   6 issues

── Critical ─────────────────────────────────────────
  ✗  GPTBot blocked in robots.txt  (AEO)
  ✗  No JSON-LD structured data  (Structured Data)

── High Priority ────────────────────────────────────
  ⚠  4 render-blocking scripts in <head>  (Performance)
  ⚠  Meta description missing  (Technical)

── Medium Priority ──────────────────────────────────
  ⚠  No llms.txt found  (AEO)
  ⚠  HSTS header not set  (Security)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  seobeast-audit · seobeast.co
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

npm Library

npm install @seobeast/seo-audit
import { createAuditor } from '@seobeast/seo-audit';

const auditor = createAuditor();
const result = await auditor.audit('https://example.com');

console.log(`Score: ${result.overallScore}/100  Grade: ${result.grade}`);

for (const category of result.categoryResults) {
  console.log(`  ${category.categoryId}: ${category.score}/100  (${category.failCount} failures)`);
}

With options:

const auditor = createAuditor({
  categories: ['core', 'security', 'aeo'],   // run specific categories only
  timeout: 10_000,                            // ms per request
  onCategoryComplete: (id, name, result) => {
    console.log(`${name}: ${result.score}/100`);
  },
});

Crawl mode (multi-page):

const result = await auditor.auditWithCrawl('https://example.com', {
  maxPages: 20,
  concurrency: 4,
});
console.log(`Crawled ${result.crawledPages} pages — score: ${result.overallScore}/100`);

Custom rules:

import { createAuditor, defineRule, registerRule, pass, fail } from '@seobeast/seo-audit';

registerRule(defineRule({
  id: 'custom-my-rule',
  name: 'My Custom Check',
  description: 'Checks for my specific requirement',
  category: 'core',
  weight: 5,
  run: ({ $ }) => {
    const el = $('#my-required-element');
    if (!el.length) return fail('custom-my-rule', '#my-required-element not found');
    return pass('custom-my-rule', '#my-required-element present');
  },
}));

const auditor = createAuditor();
const result = await auditor.audit('https://example.com');

Categories and Weights

| Category | Weight | What it checks | |---|---|---| | Core SEO | 14% | Title, description, H1, canonical, viewport, favicon, robots meta | | Performance | 12% | Render-blocking, lazy loading, image dimensions, resource hints, compression | | Content | 10% | Word count, headings, thin content, freshness, duplicate meta | | Technical SEO | 7% | Doctype, lang, charset, heading hierarchy, canonical-URL match | | Crawlability | 7% | robots.txt, sitemap, noindex, crawl directives | | Links | 6% | Internal links, anchor text, nofollow usage | | Security | 6% | HTTPS, HSTS, CSP, X-Frame-Options, mixed content | | Structured Data | 6% | JSON-LD, Organization, Article, BreadcrumbList, Product | | AEO Readiness | 5% | GPTBot/ClaudeBot/PerplexityBot access, llms.txt, passage citability | | Images | 5% | Alt text, dimensions, lazy load, modern formats, srcset | | E-E-A-T | 5% | Author, dates, about/contact pages, external citations | | Social | 3% | OG tags, Twitter Card | | Mobile | 3% | Viewport, font size, tap targets | | Accessibility | 3% | Heading order, form labels, landmark regions | | URL Structure | 2% | Length, hyphens vs underscores, descriptive slugs | | Redirects | 2% | Chain length, HTTPS enforcement, www consistency | | JavaScript | 1% | Render-blocking JS, CSR detection, external script count | | Internationalization | 1% | lang attribute, hreflang, charset | | HTML Validation | 1% | Doctype, charset placement, duplicate declarations | | Legal | 1% | Privacy policy, cookie consent, terms |

TypeScript API

import type {
  AuditResult,
  CategoryResult,
  RuleResult,
  AuditContext,
  AuditRule,
  AuditorOptions,
} from '@seobeast/seo-audit';

All types are exported. Full type definitions in src/types.ts.

Requirements

  • Node.js 18+
  • No browser required (pure HTTP + HTML parsing via cheerio)
  • No API keys required

License

MIT


For history tracking, content generation, and CMS publishing — seobeast.co