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

seopilot

v0.1.7

Published

Herramienta CLI para análisis SEO en sitios estáticos.

Readme

✈️ SEOpilot

Una herramienta CLI ligera para detectar errores SEO en sitios web estáticos de forma automática, simple y efectiva.


🚀 ¿Qué es SEOpilot?

SEOpilot es un analizador SEO para sitios generados con frameworks como React, Astro, Vue, Next.js (modo export), Vite, entre otros. Escanea archivos HTML y te reporta errores comunes de SEO como:

  • Múltiples etiquetas <h1>
  • Falta de <title> o <meta name="description">
  • Imágenes sin atributo alt
  • Falta de lang en la etiqueta <html>

Ideal para proyectos estáticos y flujos de CI/CD donde el SEO importa desde el principio.


🧪 Características

  • ✅ Fácil de usar: npx seopilot
  • ✅ Soporte para --verbose, --json, --limit, --fail-on-error
  • ✅ Análisis automático de Core Web Vitals con Lighthouse (LCP, FID, CLS, TBT, FCP, score)
  • ✅ Recomendaciones automáticas según resultados de Lighthouse
  • ✅ Funciona en cualquier framework moderno
  • ✅ Puede integrarse en CI (GitHub Actions, etc.)
  • ✅ Salida clara y útil para humanos o máquinas

🚦 Análisis Lighthouse y Core Web Vitals

SEOpilot ejecuta automáticamente Lighthouse sobre cualquier URL pública que le pases como argumento. Obtendrás métricas de Core Web Vitals y recomendaciones automáticas para mejorar el rendimiento y la experiencia de usuario.

Ejemplo de uso

npx seopilot https://www.tusitio.com

Salida esperada

🚦 Ejecutando Lighthouse para https://www.tusitio.com...

┌───────────────────────────────┐
│ Core Web Vitals:              │
│   lcp: '2.1 s',               │
│   fid: '30 ms',               │
│   cls: '0.01',                │
│   tbt: '120 ms',              │
│   fcp: '1.1 s',               │
│   score: 0.98                 │
└───────────────────────────────┘

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ 🔎 Recomendaciones Lighthouse:┃
┃ ✅ ¡Excelente! Tus métricas   ┃
┃ Core Web Vitals están dentro  ┃
┃ de los valores recomendados.  ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Si alguna métrica está fuera de los valores recomendados, SEOpilot te dará sugerencias claras para mejorar tu sitio.



📦 Instalación

Opción 1: Uso directo con npx

npx seopilot

Opción 2: Instalar como dependencia

npm i -D seopilot

Luego, en tu package.json:

"scripts": {
  "seo": "seopilot"
}

📁 Estructura recomendada

📦 tu-proyecto/
├─ dist/                  ← carpeta de salida (HTMLs generados)
├─ src/
├─ .github/workflows/    ← integración con CI
└─ ...

🧰 Comandos y Flags

🔍 Análisis básico

npx seopilot

📍 Especificar carpeta

npx seopilot --path src/testing

🗣️ Modo verbose (por archivo)

npx seopilot --verbose

🧪 Modo JSON (para máquinas)

npx seopilot --json

🛑 Falla si hay errores (para CI)

npx seopilot --fail-on-error

⏱️ Limitar cantidad de archivos analizados

npx seopilot --limit 20

🔀 Combinado

npx seopilot --path src/testing --verbose --limit 10 --fail-on-error

✅ Salida esperada

✅ Modo normal

📊 Resumen de errores:

❌ Imagen sin alt: hero.jpg — 2 ocurrencias
❌ Falta <meta name="description"> — 1 ocurrencias

✅ Modo verbose

📄 dist/index.html
   ❌ Imagen sin alt: hero.jpg
   ❌ Falta <title>

✅ Modo JSON

{
  "totalFilesScanned": 5,
  "errors": [
    {
      "file": "dist/index.html",
      "messages": ["Falta <title>", "Imagen sin alt: hero.jpg"]
    }
  ],
  "summary": {
    "Falta <title>": 1,
    "Imagen sin alt: hero.jpg": 2
  }
}

🤖 Integración con GitHub Actions

.github/workflows/seo-check.yml

name: SEO Check

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  seo:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repo
        uses: actions/checkout@v3

      - name: Install dependencies
        run: npm install

      - name: Build project
        run: npm run build

      - name: Run SEOpilot
        run: npx seopilot --fail-on-error

🧪 Ejemplo de archivos HTML para testeo

Colocá estos archivos en una carpeta src/testing/ y corré:

npx seopilot --path src/testing --verbose

📄 correct.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Test</title>
    <meta name="description" content="Página correcta" />
  </head>
  <body>
    <h1>Hola mundo</h1>
    <img src="logo.png" alt="Logo" />
  </body>
</html>

📄 no-title.html

<html lang="es">
  <head></head>
  <body>
    <h1>Falta título</h1>
  </body>
</html>

📄 multiple-h1.html

<html lang="es">
  <head>
    <title>Error</title>
  </head>
  <body>
    <h1>Uno</h1>
    <h1>Dos</h1>
  </body>
</html>

💡 Roadmap

  • [x] Soporte CLI completo
  • [x] Modo JSON
  • [x] CI con GitHub Actions
  • [ ] Configuración por archivo seopilot.config.ts
  • [ ] Reglas personalizadas
  • [ ] Modo web/interfaz gráfica
  • [ ] Autocorrección básica (opcional)

💬 Contribuciones

¡Son bienvenidas! Puedes:

  • Abrir issues
  • Sugerir nuevas reglas SEO
  • Proponer mejoras de UX
  • Enviar PRs

🧠 Autor

Creado por @estanisalpre — para que ningún proyecto se quede sin SEO por descuido.


🧭 Licencia

MIT — Usá, modificá, compartí. Pero no pongas <h1> múltiples o SEOpilot te va a encontrar 😈