Rankbeam SEO plugin screenshot
Dark mode ready
Multilingual support
Supports v5.x

Rankbeam SEO

Community

Give 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.

Supported versions:
5.x 4.x
Rankbeam avatar Author: Rankbeam

Package health

Beta

Automated checks of this plugin's Composer package

73 / 100
Security 52
Maintenance 100
Ecosystem 100
15 checks
Third-party plugin. This is built by the community, not the Filament team. Filament does not review, endorse, or vet the security of plugins outside the 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 .
Powered by Plumb Last scanned 19 hours ago

Documentation

Tests Latest Version on Packagist License: MIT

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 avatar Author: Rankbeam

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.

Plugins
1
Stars
1