Vai al contenuto

Cos’è Rankbeam?

Rankbeam è un’infrastruttura SEO open-core per Laravel: un core gratuito MIT per metadati, URL canonical, anteprime social, JSON-LD collegato, sitemap e controlli dei crawler, con monitoraggio e flussi di lavoro Pro commerciali facoltativi. Risolve i dati SEO dai modelli e dalla configurazione dell’applicazione, genera gli stessi dati tipizzati in Blade, nell’head di Inertia o tramite un’API JSON e, con Pro, continua a controllarli dopo il deploy.

La famiglia di pacchetti

Rankbeam comprende tre pacchetti con una matrice di compatibilità comune:

PacchettoLicenzaFunzione
rankbeam/laravel-seoMIT, gratuitoCore: risoluzione dei metadati, grafo JSON-LD collegato, sitemap XML, controlli dei crawler, seo:audit gratuito e importatori
rankbeam/laravel-seo-filamentMIT, gratuitoCampi Filament 4/5 e anteprime dal vivo che scrivono nel seo_meta del core
rankbeam/laravel-seo-proCommercialeMotore operativo: scansioni in coda con punteggio da 0 a 100, gestione redirect, monitor 404 senza IP, crawler dei link interrotti, dati Search Console e assistenza AI con chiave propria

Il confine è esplicito. L’output SEO della pagina viene generato dal core MIT gratuito; il livello a pagamento aggiunge audit e monitoraggio in produzione. Pro è un pacchetto separato e non viene distribuito nel core gratuito.

A chi serve

Rankbeam è pensato per applicazioni Laravel in produzione con contenuti dinamici o associati a modelli, dove i dati SEO devono essere salvati, collegati ai modelli, multilingua, accessibili senza pannello e verificati. Per poche pagine statiche che richiedono soltanto titolo e descrizione può bastare un piccolo helper per i metatag. La nota su quando uno stack composto resta adeguato descrive questo caso.

Versioni supportate

La matrice è comune alla famiglia:

  • PHP 8.2–8.4.
  • Laravel 11, 12 e 13; Laravel 13 richiede PHP 8.3+.
  • Filament 4 e 5, facoltativo.

Cosa non sostituisce Rankbeam

Rankbeam coordina l’output SEO dell’applicazione Laravel. Non è un servizio di monitoraggio delle posizioni, una suite di ricerca delle parole chiave o un prodotto di analytics, e non promette posizionamenti, indicizzazione o citazioni AI. Per generare sitemap XML usa spatie/laravel-sitemap, lasciando contenuti, routing e analytics nell’applicazione.

Per iniziare, installa il core gratuito. Le sezioni seguenti descrivono una sostituzione reale in produzione. Pro e la lista d’attesa per il lancio sono su rankbeam.dev.

Perché evitare tre pacchetti con codice di collegamento

Un’app Laravel può avere uno stack SEO composto da un pacchetto che salva i metadati per modello, un secondo che aggiunge i campi Filament, un terzo che analizza le pagine e codice dell’applicazione che li tiene allineati. I singoli componenti possono funzionare bene; il costo aggiuntivo è mantenere le integrazioni tra loro.

Il caso riportato qui riguarda una sostituzione in produzione di quello stack con la famiglia Rankbeam. I numeri descrivono quell’intervento, non un risultato garantito per ogni applicazione.

L’applicazione di riferimento

Un sito Laravel di contenuti già in produzione, qui descritto senza identificarlo:

  • Sito ospedaliero e istituzionale, online da circa tre mesi al momento dell’intervento.
  • Migrato da WordPress, con circa 900 pagine nella sitemap.
  • Circa 20.000 visite al giorno.
  • Laravel 12, amministrazione Filament 4, frontend Blade e MySQL.

Prima della sostituzione usava questo stack:

LivelloPacchetto
Metadati salvati per modello nella tabella seoralphjsmit/laravel-seo
Campi SEO Filamentralphjsmit/laravel-filament-seo
Scanner delle paginebackstage/laravel-seo-scanner
Collegamenti tra i componentiCirca 30 classi specifiche dell’applicazione

I tre pacchetti sono stati rimossi e sostituiti con core, Pro e Filament di Rankbeam. Dopo l’esecuzione della suite SEO, l’applicazione si è avviata senza regressioni SEO rilevate. Le sezioni seguenti mostrano il codice di integrazione eliminato e quello inizialmente conservato.

Cosa è stato eliminato

La sostituzione ha eliminato 12 classi dell’applicazione: le funzioni equivalenti sono passate alla famiglia di pacchetti.

Classe eliminataFunzione precedenteOra fornita da
Services/SeoService.phpPunto d’ingresso SEO dell’applicazioneResolver del core e facade SEO
Services/SeoWarningEvaluator.phpSoglie per lunghezza di titolo/descrizione e dimensioni delle immaginiSEOWarningEvaluator del core, condiviso da audit, anteprima e scansione
Services/Seo/SeoAssetInspector.phpLettura delle dimensioni delle immagini localiLocalImageInspector del core
Jobs/ScanAllPagesSeo.phpInvio in coda della scansione del sitoPipeline di scansione Pro
Jobs/ScanPageSeo.phpScansione per paginaPageScanner Pro
Jobs/ScanPublicPageSeo.phpScansione delle pagine pubblichePipeline di scansione Pro
Models/SeoScanBatch.phpRegistrazione delle esecuzioniseo_scan_runs Pro
Filament/Pages/SeoDashboard.phpDashboard SEO amministrativaPlugin SeoDashboard Pro
Filament/Widgets/SeoScanProgressWidget.phpWidget di avanzamentoWidget di scansione Pro
Filament/Widgets/SeoTrendChartWidget.phpWidget degli andamentiWidget di scansione Pro
Facades/Seo.phpFacade dell’app sopra il pacchetto di archiviazioneFacade SEO del core
Console/Commands/RecoverLegacySeoMetadata.phpRecupero una tantum dei metadatiImportatori del core, seo:import-from

Il codice inizialmente conservato

L’intervento ha mantenuto il crawler dei link interrotti dell’applicazione: circa 17 classi tra job, checker, generatore dei seed, resolver delle sorgenti, due modelli, due enum, due eventi, risorsa Filament con tre widget e due comandi. Sono rimasti anche alcuni helper per metadati e schema: CustomSEO, EntitySeoSection, DynamicSeoDataResolver, SitewideSchema e SeoKeywords, per circa 22 classi aggiuntive. Le alternative Rankbeam sono arrivate in seguito: crawler Pro, modello correlato come destinazione e anteprima SERP/social di Filament per CustomSEO/EntitySeoSection, e grafo schema del core per SitewideSchema. L’adozione di quelle funzioni può trasferire al pacchetto anche queste responsabilità, circa tre dozzine di classi considerando l’intero insieme.

Il costo riguarda l’integrazione: le classi che fanno sì che una modifica ai metadati si rifletta nello scanner, nella dashboard e nell’head generato. Quel codice appartiene all’applicazione e richiede i suoi test e la sua manutenzione, anche quando i singoli pacchetti sono ben mantenuti.

Confronto affiancato

FunzioneStack composto: tre pacchetti e integrazioniFamiglia Rankbeam
Metadati salvati per modelloPacchetto per i metadatiCore, seo_meta, MIT
Archiviazione per linguaSpesso gestita dal codice di integrazioneCore, seo_meta con colonna locale
Campi SEO FilamentPacchetto Filament-SEOlaravel-seo-filament, MIT
Modifica dei dati SEO di un modello correlatoAdattamento del componente del campoResolver target: dedicato
Anteprima SERP e social dal vivoBlade/Alpine specifico dell’appAnteprima editoriale a schede integrata
Rendering headless: Inertia, Livewire e JSONL’app di riferimento usava Blade; gli altri stack richiedono integrazioneUn resolver → Blade, Inertia, Livewire e JSON, verificati dal contratto
Scanner e problemi ordinati per prioritàPacchetto scannerPro, pipeline di scansione e IssueRegistry
Punteggio da 0 a 100Codice di integrazione o assentePro, criteri pubblici e versionati
Redirect e recupero dei 404Altro pacchetto o codice specificoPro, gestore redirect e monitor 404 senza IP
Crawler dei link interrottiCostruito dall’applicazionePro, crawler con limiti e ripresa
Grafo schema JSON-LDBuilder e collegamenti @id gestiti dall’appCore, grafo Organization/WebSite/WebPage collegato
Sitemap XMLPacchetto sitemapCore, registro basato su spatie/laravel-sitemap
Importazione WordPress, Yoast e Rank MathScript dedicatiCore, seo:import-from e runbook
Manutenzione delle integrazioniL’applicazioneFamiglia di pacchetti con rilasci coordinati

Tre problemi del codice di integrazione

1 — Una famiglia con rilasci coordinati. Tre pacchetti hanno manutentori, changelog e calendari di aggiornamento diversi; il codice di collegamento deve assorbire le divergenze. Core, Pro e Filament di Rankbeam condividono una matrice di compatibilità e confini di aggiornamento documentati, per rendere espliciti i cambiamenti di comportamento.

2 — La lingua è una colonna dell’archivio. seo_meta è polimorfica e organizzata per lingua. I dati multilingua sono una riga per (model, locale), senza bisogno di introdurre un blob serializzato o una tabella di collegamento. La catena di priorità legge direttamente la lingua attiva.

3 — Rendering headless da un solo resolver. Rankbeam risolve un SEOData tipizzato e genera gli stessi dati in HTML, nel payload Head di Inertia o in un array JSON. Il contratto di rendering è condiviso da Blade, Inertia con Vue, React o Svelte e Livewire. Non serve un pannello di amministrazione: le funzioni Pro sono disponibili anche senza interfaccia Filament, tramite Artisan.

Cosa è escluso dal core gratuito

Rankbeam è open-core. La divisione tra pacchetti chiarisce cosa installi con composer require:

PacchettoLicenzaContenuto
rankbeam/laravel-seoMIT, gratuitoRisoluzione dei metadati, grafo JSON-LD, sitemap, seo:audit gratuito e importatori
rankbeam/laravel-seo-filamentMIT, gratuitoCampi e sezioni Filament che scrivono in seo_meta
rankbeam/laravel-seo-proCommercialeScansioni in coda, problemi per priorità e punteggio 0–100, redirect, monitor 404, crawler dei link interrotti, Search Console, assistenza AI e dashboard Filament

Il pagamento riguarda quindi l’audit SEO tecnico e il monitoraggio del sito: scansioni, punteggio, redirect, recupero dei 404 e crawler. Motore dei metadati, grafo schema, sitemap e audit gratuito nel processo dell’applicazione sono MIT e restano gratuiti.

Due caratteristiche operative:

  • Nessun controllo della licenza durante l’esecuzione. Pro viene concesso in licenza per progetto all’installazione. Non contatta il servizio licenze a runtime e non ha un interruttore remoto che possa fermare l’applicazione. La telemetria operativa è locale, destinata ai tuoi log e disattivabile; non viene inviata a Rankbeam.
  • AI con la tua chiave. L’assistenza AI facoltativa usa la tua chiave Anthropic, OpenAI, Google o quella del modello locale. Rankbeam non inoltra le richieste tramite propri proxy, non rivende token e non ne addebita il consumo. La funzione è disattivata per impostazione predefinita.

Quando lo stack composto resta adeguato

Per un solo <title> e una descrizione su poche pagine statiche basta un generatore di tag. Rankbeam diventa utile quando i dati SEO sono salvati, multilingua, associati a modelli, accessibili senza pannello e verificati, e le integrazioni tra pacchetti iniziano a richiedere manutenzione propria.

Migrare da WordPress riducendo il rischio

L’applicazione di riferimento proveniva da una migrazione WordPress di circa 900 pagine, con metadati Yoast o Rank Math da conservare. Il percorso Rankbeam separa importazione, verifica e dismissione:

  1. Coesistenza. Prepara Rankbeam accanto al sito attivo, senza rimuovere componenti.
  2. Importazione, prima in simulazione. seo:import-from yoast, rank-math e wordpress-csv leggono titoli, descrizioni, canonical, robots, parole chiave principali e valori social personalizzati. Gli importatori sono idempotenti e compilano solo i campi vuoti per impostazione predefinita; senza --overwrite non sovrascrivono i metadati già impostati, mentre --dry-run non scrive nulla.
  3. Passaggio dei redirect. Il core genera un CSV versionato; seo-pro:redirects-import di Pro valida ogni riga prima di scriverla, rifiutando cicli, destinazioni non sicure e duplicati.
  4. Verifica prima di eliminare. seo:audit --strict termina con codice diverso da zero in presenza di problemi e può bloccare la CI o il cambio di produzione. Il database WordPress resta intatto finché non scegli di eliminarlo.

La procedura completa è nel runbook WordPress; mappatura dei campi e gestione dei token sono in Migrazione da WordPress. Se provieni da un pacchetto SEO Laravel, come ralphjsmit, artesaos o Spatie, consulta il relativo percorso di migrazione.

Come si comporta su siti più grandi?

Due vincoli dell’applicazione di riferimento — risoluzione SEO su circa 20.000 richieste giornaliere e scansione dei link su circa 900 pagine — hanno benchmark nella suite. Verificano risultati deterministici, come numero di query e limiti dei job, anziché tempi di esecuzione adattati a una macchina specifica.

Cache del resolver: una lettura dalla cache già popolata non interroga il database. Con la cache facoltativa attiva, il risultato memorizzato evita l’intera catena. Il benchmark esegue 25 risoluzioni dello stesso modello:

Query al database
Senza cache, con rilettura di seo_meta a ogni risoluzione≥ 25
Risultato già in cache0

La cache è disattivata per impostazione predefinita. L’invalidazione rimuove le voci interessate quando cambiano seo_meta, un campo di contenuto o i valori predefiniti. Vedi Configurazione: cache.

Crawler dei link interrotti: esecuzione suddivisa su 900 pagine. Il benchmark usa un corpus generato di circa 900 pagine con il job reale:

  • Completa il lavoro in almeno 18 job, ciascuno limitato a 50 pagine.
  • Nessun job supera il limite di 50 pagine.
  • Controlla 1.800 link e registra ogni destinazione non funzionante come problema persistente confermato.

Limiti finiti per esecuzione e un tempo massimo per job contengono il lavoro. La validazione SSRF si applica al seed e a ogni passaggio di redirect; un lease nel database consente una sola esecuzione attiva per ambito. La guida alla configurazione in produzione descrive questi controlli.

Matrice di test

La matrice è comune ai pacchetti:

  • PHP 8.2–8.4.
  • Laravel 11, 12 e 13.
  • Filament 4 e 5.

Quando conviene unificare lo stack?

Nel caso descritto, coordinare tre pacchetti richiedeva più di una dozzina di classi, calendari di aggiornamento diversi e integrazioni specifiche per rendering e lingua. Trasferire quelle responsabilità a una famiglia compatibile ha ridotto il codice dell’applicazione. Il caso delle circa 900 pagine e 20.000 visite al giorno documenta quel risultato; la convenienza per un’altra app dipende dalle integrazioni che deve mantenere.

Parti dalla guida rapida: dall’installazione con Composer a un <head> completo in circa cinque minuti.

rankbeam/laravel-seo è distribuito con licenza MIT.