Ir al contenido

¿Qué es Rankbeam? ​

Rankbeam es infraestructura SEO open-core para Laravel: un núcleo MIT gratuito para metadatos, URL canónicas, tarjetas sociales, JSON-LD enlazado, sitemaps y control de rastreadores, con funciones comerciales opcionales de monitorización y gestión en Pro. Resuelve el SEO a partir de tus modelos y configuración, genera los mismos datos tipados mediante Blade, el head de Inertia o una API JSON y, con Pro, sigue comprobándolo después del despliegue.

La familia de paquetes ​

Rankbeam consta de tres paquetes que comparten una matriz de compatibilidad:

PaqueteLicenciaFunción
rankbeam/laravel-seoMIT, gratuitoNúcleo: resolución de metadatos, grafo JSON-LD enlazado, sitemaps XML, control de rastreadores, seo:audit gratuito e importadores
rankbeam/laravel-seo-filamentMIT, gratuitoCampos y vistas previas para Filament 4/5 que escriben en seo_meta del núcleo
rankbeam/laravel-seo-proComercialMotor operativo: scans en cola con puntuación de 0 a 100, redirecciones, monitor de 404 sin IP por defecto, rastreador de enlaces rotos, datos de Search Console y asistencia de IA con tu propia clave

La separación es deliberada. La generación de la página es MIT y gratuita; la capa de pago es la auditoría y monitorización de producción. Pro es un paquete independiente y no se distribuye dentro del núcleo gratuito.

Para quién está pensado ​

Rankbeam resulta útil cuando el SEO se guarda, se vincula a modelos, usa varios idiomas, funciona sin panel y se audita: una aplicación Laravel en producción con contenido dinámico o basado en modelos. Para unas pocas páginas estáticas que solo necesitan título y descripción, un generador pequeño de metadatos puede encajar mejor. La nota sobre cuándo basta un stack combinado detalla ese caso.

Versiones compatibles ​

Una matriz para toda la familia:

  • PHP 8.2–8.4 (Laravel 11); 8.2–8.5 (Laravel 12); 8.3–8.5 (Laravel 13)
  • Laravel 11 / 12 / 13; Laravel 13 requiere PHP 8.3 o superior.
  • Filament 4 / 5, opcional.

Qué no sustituye Rankbeam ​

Rankbeam coordina la salida SEO de tu aplicación Laravel. No es un servicio alojado de seguimiento de posiciones, investigación de palabras clave ni analítica, y no promete posicionamiento, indexación o citas de IA. Para generar sitemaps XML utiliza spatie/laravel-sitemap, y deja el contenido, las rutas y la analítica en tu aplicación.

Puedes instalar el núcleo gratuito o seguir leyendo el caso de sustitución real en producción. Pro y la oferta inicial están en rankbeam.dev.

Por qué no combinar tres paquetes con código propio ​

Muchas aplicaciones Laravel tienen un stack SEO: un paquete guarda metadatos por modelo, otro añade campos Filament, otro analiza páginas y una capa específica de la aplicación hace que coincidan. Cada pieza puede funcionar bien por separado; el coste está en las conexiones y en mantener ese código propio.

Esta página documenta una sustitución real en producción de ese stack por la familia Rankbeam. Las cifras siguientes corresponden a ese caso medido.

La aplicación de referencia ​

Un sitio Laravel real en producción, anonimizado aquí:

  • Sitio de contenido hospitalario e institucional, con unos tres meses en producción.
  • Migrado desde WordPress, con unas 900 páginas según el sitemap.
  • Unas 20.000 visitas al día.
  • Laravel 12, administración Filament 4, frontend Blade y MySQL.

Su stack SEO antes del cambio:

CapaPaquete
Almacenamiento de metadatos en tabla seo por modeloralphjsmit/laravel-seo
Campos SEO Filamentralphjsmit/laravel-filament-seo
Escáner de páginasbackstage/laravel-seo-scanner
Integración entre ellosUnas 30 clases específicas de la aplicación

Se retiraron los tres paquetes, se instalaron core, Pro y Filament de Rankbeam y se ejecutó la suite SEO. La aplicación arrancó con cero regresiones SEO detectadas por esa suite. A continuación se detalla qué código de integración desapareció.

Qué eliminó el cambio ​

La sustitución eliminó 12 clases propias porque sus funciones pasaron a la familia de paquetes:

Clase eliminadaFunción anteriorSustitución
Services/SeoService.phpPunto de entrada SEO de la aplicaciónResolvedor y fachada SEO del núcleo
Services/SeoWarningEvaluator.phpUmbrales de longitud de título/descripción y tamaño de imagenSEOWarningEvaluator del núcleo, compartido por auditoría, vista previa y scan
Services/Seo/SeoAssetInspector.phpInspección de dimensiones de imágenes localesLocalImageInspector del núcleo
Jobs/ScanAllPagesSeo.phpDespacho del scan completo en colaProcesamiento de scans de Pro
Jobs/ScanPageSeo.phpScan por páginaPageScanner de Pro
Jobs/ScanPublicPageSeo.phpScan de página públicaProcesamiento de scans de Pro
Models/SeoScanBatch.phpRegistro de ejecucionesseo_scan_runs de Pro
Filament/Pages/SeoDashboard.phpPanel SEO administrativoPlugin SeoDashboard de Pro
Filament/Widgets/SeoScanProgressWidget.phpProgreso del scanWidgets de scan de Pro
Filament/Widgets/SeoTrendChartWidget.phpTendencias de scansWidgets de scan de Pro
Facades/Seo.phpFachada propia sobre el paquete de almacenamientoFachada SEO del núcleo
Console/Commands/RecoverLegacySeoMetadata.phpRecuperación puntual de metadatos anterioresImportadores del núcleo, seo:import-from

Qué ocurrió con el resto

El cambio conservó deliberadamente el rastreador de enlaces rotos de la aplicación: unas 17 clases entre job, comprobador, constructor de URL iniciales, resolvedor de fuentes, dos modelos, dos enums, dos eventos, recurso Filament y tres widgets, y dos comandos. También se conservaron algunos helpers de metadatos y datos estructurados: CustomSEO, EntitySeoSection, DynamicSeoDataResolver, SitewideSchema y SeoKeywords. En total, unas 22 clases más. No se eliminaron el primer día porque las sustituciones de Rankbeam llegaron después: el rastreador de enlaces rotos Pro, el destino de modelo relacionado y las vistas previas SERP/sociales de Filament, y el grafo de datos estructurados del núcleo. Al adoptar esas funciones, esa superficie personalizada —unas tres docenas de clases en total— pasa a ser responsabilidad de los paquetes.

El problema no es que esos paquetes sean malos. Es que las clases que los conectan para que un cambio de metadatos aparezca en el escáner, el panel y el head son código específico de tu aplicación, con mantenimiento, pruebas e incidencias a tu cargo.

Comparación ​

CapacidadStack combinado: tres paquetes y código propioFamilia Rankbeam
Metadatos por modeloPaquete de metadatosCore, seo_meta, MIT
Almacenamiento por idiomaHabitualmente código de integraciónCore, columna de idioma en seo_meta
Campos SEO FilamentPaquete Filament-SEOlaravel-seo-filament, MIT
Editar el SEO de un modelo relacionadoAdaptar el componente de camposResolvedor target: integrado
Vista previa SERP y social en directoBlade/Alpine propioVista editorial integrada con pestañas
Renderizado Inertia / Livewire / JSONLa referencia usaba Blade; otros stacks requieren integraciónUn resolvedor para Blade, Inertia, Livewire y JSON, con pruebas del contrato
Escáner y problemas priorizadosPaquete de escánerPro, scans e IssueRegistry
Puntuación de 0 a 100Código propio o ningunaPro, reglas transparentes y versionadas
Redirecciones y recuperación de 404Otro paquete o código propioPro, gestor de redirecciones y monitor sin IP por defecto
Rastreador de enlaces rotosPropio en la aplicación de referenciaPro, rastreo acotado y reanudable
Grafo JSON-LDConstructor y enlaces @id manualesCore, grafo enlazado Organization/WebSite/WebPage
Sitemaps XMLPaquete de sitemapsCore, registro que utiliza spatie/laravel-sitemap
Importación WordPress / Yoast / Rank MathScripts puntualesCore, seo:import-from y procedimiento
Quién mantiene la integraciónTúLa familia de paquetes, con publicaciones coordinadas

Tres dificultades del código de integración ​

1. Una familia coherente con publicaciones coordinadas. Tres paquetes independientes tienen tres responsables, historiales y ritmos de actualización. El código propio absorbe las diferencias. Rankbeam core, Pro y Filament comparten una matriz de compatibilidad y límites de actualización documentados, para anunciar los cambios de comportamiento antes de que dos paquetes dejen de coincidir.

2. El idioma como columna de almacenamiento. seo_meta es polimórfico y está delimitado por idioma. El SEO multilingüe usa una fila por (modelo, idioma), sin depender de un bloque serializado o una tabla de integración adicional. La precedencia del resolvedor lee el idioma activo de forma nativa.

3. Renderizado desde un único resolvedor. Rankbeam resuelve un SEOData tipado y genera los mismos datos como HTML, contenido del Head de Inertia o array JSON. Un contrato compartido lo comprueba para Blade, Inertia con Vue/React/Svelte y Livewire. No requiere panel administrativo: las funciones Pro también se ejecutan desde artisan.

Qué no incluye el núcleo gratuito ​

La separación open-core permite conocer lo que obtienes antes de ejecutar composer require:

PaqueteLicenciaContenido
rankbeam/laravel-seoMIT, gratuitoResolución de metadatos, grafo JSON-LD, sitemaps, seo:audit gratuito e importadores
rankbeam/laravel-seo-filamentMIT, gratuitoCampos y secciones Filament que escriben en seo_meta
rankbeam/laravel-seo-proComercialScans en cola, problemas priorizados, puntuación de 0 a 100, redirecciones, monitor de 404, rastreador de enlaces rotos, Search Console, IA y panel Filament

Se paga por la auditoría SEO técnica y monitorización del sitio: scans, puntuación, redirecciones, recuperación de 404 y rastreador. El motor de metadatos, grafo, sitemaps y auditoría dentro del proceso son MIT y permanecen gratuitos.

Dos propiedades concretas:

  • Sin comprobación de licencia en tiempo de ejecución. Pro tiene licencia por proyecto al instalarse. No se comunica con Rankbeam ni tiene un interruptor remoto que pueda detener la aplicación. Emite telemetría operativa local para tus registros, que puedes desactivar; no se envía a Rankbeam.
  • IA con tu propia clave. La asistencia opcional usa tu proveedor Anthropic, OpenAI, Google o modelo local. Rankbeam no actúa como intermediario, mide ni revende el consumo. Está desactivada por defecto.

Cuándo basta el stack combinado

Si solo necesitas un <title> y una descripción en unas pocas páginas estáticas, basta un generador de etiquetas. Rankbeam aporta más cuando el SEO está guardado, usa varios idiomas, se vincula a modelos, funciona sin panel y se audita, y la integración ya supone código real que debes mantener.

Migrar desde WordPress con verificaciones antes del cambio ​

La referencia fue una migración WordPress de unas 900 páginas, con años de trabajo en Yoast/Rank Math que conservar. El proceso permite verificar antes de retirar el sistema anterior:

  1. Coexistir. Prepara Rankbeam junto al sitio activo sin retirar nada todavía.
  2. Importar, primero con dry run. seo:import-from yoast / rank-math / wordpress-csv lee títulos, descripciones, canonical, robots, palabras clave y valores sociales. Es idempotente y solo rellena campos vacíos por defecto. Sin --overwrite conserva los metadatos existentes; --dry-run no escribe.
  3. Trasladar redirecciones. El núcleo genera un CSV versionado; seo-pro:redirects-import valida cada fila, rechazando bucles, destinos inseguros y duplicados antes de escribir.
  4. Verificar antes de eliminar. seo:audit --strict devuelve un código distinto de cero si detecta cualquier problema y sirve como condición de CI o del cambio. La base WordPress permanece intacta hasta que decidas retirarla.

Consulta el procedimiento de migración y la referencia de campos y variables. Para cambiar desde un paquete SEO Laravel como ralphjsmit, artesaos o Spatie, consulta la guía de migración entre paquetes.

¿Cómo se comporta con más tráfico y páginas? ​

Las dos exigencias principales de la referencia —resolver SEO en unas 20.000 peticiones diarias y rastrear unas 900 páginas— tienen benchmarks en la suite. Verifican propiedades deterministas, como consultas y límites por job, no tiempos ajustados manualmente.

Caché del resolvedor: un acierto no consulta la base. Con la caché opcional activa, una resolución cacheada omite toda la cadena. El benchmark ejecuta 25 resoluciones del mismo modelo:

Consultas a la base
Sin caché; cada resolución relee seo_meta≥ 25
Acierto con caché caliente0

La caché está desactivada por defecto. Su invalidación elimina las entradas pertinentes al cambiar seo_meta, campos de contenido o valores predeterminados. Consulta Configuración: caché.

Rastreador de enlaces: trabajo acotado en 900 páginas. El benchmark procesa un corpus generado de unas 900 páginas con el job real:

  • Termina en 18 o más jobs acotados, con un máximo de 50 páginas por job.
  • Ningún job supera ese límite de 50 páginas.
  • Comprueba 1.800 enlaces y cada destino caído produce un hallazgo persistente confirmado.

Hay límites finitos por ejecución y un presupuesto de tiempo por job. La validación SSRF se aplica a la petición inicial y a cada salto de redirección. Un bloqueo temporal en la base permite una sola ejecución activa por ámbito. La guía de producción explica la operación.

Probado en los entornos compatibles ​

Una matriz para toda la familia:

  • PHP 8.2–8.4 (Laravel 11); 8.2–8.5 (Laravel 12); 8.3–8.5 (Laravel 13)
  • Laravel 11 / 12 / 13.
  • Filament 4 / 5.

¿Por qué mantener la integración de tres paquetes? ​

Si combinar paquetes te exige más de una docena de clases propias, adaptarte a ritmos de publicación ajenos, integrar el renderizado por stack y añadir idiomas manualmente, merece la pena evaluar una familia coordinada que asuma ese trabajo. El caso descrito la utiliza en una aplicación real de unas 900 páginas y 20.000 visitas diarias.

Empieza por el inicio rápido: de composer require a un <head> completo en cinco minutos.

rankbeam/laravel-seo se distribuye bajo la licencia MIT.