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
- Passed: GitHub Actions pinned to SHA
- Skipped: GitLab CI includes pinned to SHA
- Passed: Open security advisories
- Passed: Dependabot PR responsiveness — No open Dependabot PRs.
- Skipped: Renovate MR responsiveness
- Passed: Dependabot or Renovate configured
- Passed: Dependency update cooldown configured
- Passed: Provides a security policy
- Passed: Abandoned or archived — No consulted source marks the package abandoned (packagist, github).
- Passed: Commit and release recency — Active: last commit 1 days ago; last release 1 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
- Installation
- What you get
- Requirements
- Usage
- Structured data (optional)
- Testing
- Translations
- Guides
- License
rankbeam/laravel-seo-filament is the free Laravel SEO package for Filament 4 and 5.
Add its complete SEO editor to any 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.
#Several languages
The core keeps one seo_meta row per (model, locale). Pass the locales a page is published in
and the section renders one tab per language — each editing its own row, with counters for
that language's script (an empty Japanese title shows 0 / 30, an English one 0 / 60), its
own preview and its own fallback indicators, badged with the number of fields set:
static::seoSection(locales: ['en', 'it', 'ja']); // or SEOFields::make(locales: [...])
Or once for every resource, in the published config:
php artisan vendor:publish --tag=seo-filament-config
// config/seo-filament.php
'locales' => ['en', 'it', 'ja'],
Untouched languages never get a placeholder row. When the page runs a translatable plugin
(Filament's getActiveSchemaLocale() — the spatie translatable plugins implement it), the
section follows the page's own locale switcher instead of showing tabs. With neither, it edits
the app locale's row, as before.
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.
#Translations
The editor's labels follow app()->getLocale() (the content locales it edits are a separate matter — see Several languages). Publish the strings with php artisan vendor:publish --tag=seo-filament-lang to override a label, or contribute a language — rules and glossary in the core repository's TRANSLATING.md. Seventeen languages ship: English, Italian, German, French, Spanish, Brazilian Portuguese, Dutch, Turkish, Russian, Polish and, since 1.10, Japanese, Simplified and Traditional Chinese (zh_CN, zh_TW), Korean, Greek, Ukrainian and Czech.
#Guides
- Laravel Filament SEO: previews, canonicals and fallback sources
- Laravel SEO: the complete guide
- Best Laravel SEO packages compared
#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
Spotlight Pro
Browse your Filament Panel with ease. Filament Spotlight Pro adds a Spotlight like Command Palette to your Filament Panel.
Dennis Koch
Custom Fields
Eliminate custom field migrations forever. Let your users create and manage form fields directly in Filament admin panels with 20+ built-in field types, validation, and zero database changes.
Relaticle