Rankbeam SEO
CommunityGive editors control of Laravel SEO inside any Filament resource: preview Google snippets and social cards live, manage canonical URLs and robots directives, validate images and schema.org JSON-LD, and see the exact metadata Rankbeam will publish.
Author:
Rankbeam
Package health
BetaAutomated checks of this plugin's Composer package
15 checks
- Failed: GitHub Actions pinned to SHA — View details on Plumb
- Skipped: GitLab CI includes pinned to SHA
- Passed: Open security advisories
- Passed: Dependabot PR responsiveness — No open Dependabot PRs.
- Skipped: Renovate MR responsiveness
- Failed: Dependabot or Renovate configured — No dependency updater configuration found. View details on Plumb
- Skipped: Dependency update cooldown configured
- Failed: Provides a security policy — View details on Plumb
- Passed: Abandoned or archived — No consulted source marks the package abandoned (packagist, github).
- Passed: Commit and release recency — Active: last commit 0 days ago; last release 57 days ago.
-
Passed:
composer.lock not committed by library
—
composer.lockis absent from the released dist archive. - Passed: Dist archive is lean
-
Passed:
Current Laravel version supported
—
Package dependencies resolve together with current Laravel
13.0. -
Passed:
Current PHP version supported
—
Constraint
^8.2supports current PHP8.5. - Skipped: Current Symfony version supported
filament/
namespace. Review the source and install at your own risk. Found
malware or an unresolved security issue the author won't
address?
Report it
.
Documentation
Add a complete SEO editor to any Filament 4 or 5 resource in two lines. Editors get live Google and social previews, focus keywords, canonical and robots controls, social-image validation, and clear indicators showing whether each value is manual or inherited from Rankbeam's fallback chain.
Free and MIT licensed. Values are stored through
rankbeam/laravel-seo, with no extra columns
on your resource tables.
Filament guide · Full documentation · Packagist
#Installation
composer require rankbeam/laravel-seo-filament
Installing this package pulls in the core (rankbeam/laravel-seo). If you have
not set the core up yet:
php artisan vendor:publish --tag=seo-config
php artisan migrate
#What you get
- Live Google and social previews while editors type.
- Title, description, focus keywords, canonical, robots, and social-image fields.
- Manual-versus-fallback source indicators for every effective value.
- Optional schema.org fields for breadcrumbs, FAQs, and products.
- Filament 4 and 5 support, tested in CI.
#Requirements
| Dependency | Version |
|---|---|
| PHP | 8.2 – 8.4 |
| Filament | 4.x or 5.x (both tested in CI; the test suite passes unchanged on both) |
| Core package | rankbeam/laravel-seo ^2.0 || ^3.0 |
Core 2 installs are supported under this constraint: when the newer
seoMetaForLocale() helper is not available, the forms hydrate through the
older seoMeta() relation.
#Contributing / local development
This repository consumes the core through a sibling path repository
(../laravel-seo); CI checks out both repositories side by side.
#Usage
The model behind your resource must use the core HasSEO trait:
use Rankbeam\Seo\Traits\HasSEO;
class Post extends Model
{
use HasSEO;
}
Then add the section to the resource — two lines:
use Rankbeam\Seo\Filament\Concerns\HasSEOFields;
class PostResource extends Resource
{
use HasSEOFields; // 1
public static function form(Schema $schema): Schema
{
return $schema->components([
TextInput::make('title'),
// ...
static::seoSection(), // 2
]);
}
}
static::seoSection(['title', 'description']) limits the section to a subset of fields
(title, description, focus_keywords, canonical, robots, og_image).
The tabbed Google/social preview is shown by default. Pass showPreview: false to omit it
(the source-indicators panel is unaffected):
static::seoSection(showPreview: false); // or SEOFields::make(showPreview: false)
Without the trait, SEOFields::make() returns the same section directly.
Upgrading: the preview view was replaced by the tabbed editor. If you published the package views, refresh or remove the stale copy — see
UPGRADING.md.
#Structured data (optional)
Add a second, optional section so editors can attach schema.org JSON-LD without code:
static::seoSchemaSection(), // or SEOSchemaFields::make()
It writes into the core seo_meta.schema_jsonld column and is pure UI binding over the
core schema builders — a one-toggle automatic breadcrumb
(BreadcrumbSchema::fromModelAncestors()) plus a repeater of FAQ (FAQSchema) and
Product (ProductSchema) blocks. Every built document is validated by the core
SchemaValidator; a malformed block (e.g. a Product with no offer) is rejected on save.
Schema it can't represent (a hand-authored @graph, an exotic @type, richer Product
fields) is preserved verbatim. See the
Filament guide for details.
#Testing
composer update --with "filament/filament:~4.0" && vendor/bin/pest # Filament 4 leg
composer update --with "filament/filament:~5.0" && vendor/bin/pest # Filament 5 leg
The suite covers render, live counter states, create + edit save round-trips
(including og:image upload), field clearing, URL validation, source-indicator
attribution for every resolver layer, focus-keyword round-trips, the editorial
preview (SERP + social tabs, the showPreview opt-out, the server-side preview
payload — manual-vs-fallback image source, known-local dimension measurement,
remote-image deferral, and shared-threshold warnings), and the structured-data
editor (FAQ / Product build + round-trip, automatic breadcrumb, validation
rejection, optimistic-concurrency reconciliation, and custom-schema preservation).
#Testbench note (provider order)
If you boot Filament in orchestra/testbench yourself, register Filament's
SupportServiceProvider before LivewireServiceProvider. Filament rebinds Livewire's
DataStore (which drops Livewire's registered instance); only Livewire's later mechanism
registration pins the resolved override as the shared instance. Package discovery produces
this order naturally in a real app — a hand-rolled provider list might not. The symptom of
getting it wrong is ViewErrorBag::put(): Argument #2 ($bag) must be of type MessageBag, null given on every Livewire test.
#License
MIT — see LICENSE.md.
The author
Rankbeam is open-core SEO infrastructure for Laravel, built around a free MIT Laravel SEO package and a native Filament SEO plugin. It covers metadata, canonical URLs, social cards, linked JSON-LD, XML sitemaps, and crawler controls; optional Pro tools add audits, monitoring, Google Search Console data, and automated workflows. Created and maintained by Valentin Goxhaj.
Featured Plugins
A selection of plugins curated by the Filament team
Blueprint
Filament Blueprint is a premium Laravel Boost extension that helps AI agents produce accurate, detailed implementation plans and security reports for Filament apps.
Filament
Data Lens
Advanced Data Visualization for Laravel Filament - a premium reporting solution enabling custom column creation, sophisticated filtering, and enterprise-grade data insights within admin panels.
Padmission
Spotlight Pro
Browse your Filament Panel with ease. Filament Spotlight Pro adds a Spotlight like Command Palette to your Filament Panel.
Dennis Koch