New

Just launched: Vueblocks, a brand-new search engine for Vue packages! Explore Vueblocks →

madbox-99/filament-seo

SEO management plugin for Filament v5 - meta tags, global settings, Schema.org, robots.txt
1,009
Install
composer require madbox-99/filament-seo
Latest Version:v0.1.3
PHP:^8.3
Laravel:12 · 13
License:MIT
Last Updated:Sep 24, 2026
Links: GitHub  ·  Packagist
Maintainer: MadBox-99

Filament SEO

SEO plugin for Filament v5 — meta tags, Open Graph, Schema.org and robots control, managed from one admin panel. Global settings live in a singleton page; per-page SEO for fixed named routes is a plain resource. Both feed the same public API: a Blade component that renders the <head> tags for any page, with most fields resolved model-first, then route, then global defaults — robots directives are the exception (see below).

Fix oldalak SEO-ja

Sorold fel a config/filament-seo.php-ban azokat a named route-okat, amelyeknek adminból szerkeszthető SEO-t adsz:

'routes' => [
    'home' => 'Főoldal',
    'contact' => 'Kapcsolat',
    'blog.index' => 'Blog',
],

'home_route' => 'home',

Majd futtasd:

php artisan seo:sync-routes

A parancs idempotens, figyelmeztet a nem létező route-okra, és a configból kivett sorokat nem törli. Tedd be a composer setup scriptbe a migrate után.

Kiírás

A layout <head> szekciójába:

<x-filament-seo::head />

Livewire alatt, ahol a címet a ->title() adja, a prop is átadandó, hogy ne keletkezzen két <title> tag:

<x-filament-seo::head :title="$title ?? null" />

Ahol van konkrét modell, add meg a feloldónak:

use Illuminate\Support\Facades\Storage;
use Madbox99\FilamentSeo\Facades\Seo;

Seo::for($product, fallbackTitle: $product->name)
    ->ogImage(Storage::url($product->image));

A feloldás mezőnként esik vissza: a modell SEO-rekordja, majd az aktuális route rekordja, végül a globális beállítások. Ez igaz a title, description, keywords, canonical, og:type és og:image mezőkre.

Kivétel a no_index és a no_follow: ezek nem esnek vissza mezőnként, hanem logikai VAGY-gyal kombinálódnak a modell és a route rekord között, és nincs hozzájuk globális alapértelmezés. Ha akár a modell, akár a route rekordja noindexet vagy nofollow-t ír elő, az oldal noindex/nofollow marad — a másik rekord "engedékenyebb" beállítása nem írja felül.

A SeoManager egy scoped singleton: egy kérésen belül a Seo::for()/Seo::ogImage() hívások felülírják egymást (last-writer-wins), és az állapot csak az adott kérés végéig él — Octane vagy más hosszú életű worker esetén sem szivárog át a következő kérésbe. Ha ugyanabban a kérésben több modellt is fel akarsz oldani egymás után, hívd a Seo::reset()-et a modellváltás előtt.

A site nevét a projekt adja meg, jellemzően az AppServiceProvider::boot()-ban:

use Madbox99\FilamentSeo\SeoManager;

SeoManager::siteNameUsing(fn () => resolve(GeneralSettings::class)->site_name);

Saját JSON-LD modellenként

use Illuminate\Database\Eloquent\Model;
use Madbox99\FilamentSeo\Contracts\ProvidesSchemaOrg;

class Product extends Model implements ProvidesSchemaOrg
{
    /** @return list<array<string, mixed>> */
    public function toSchemaOrg(): array
    {
        return [[
            '@context' => 'https://schema.org',
            '@type' => 'Product',
            'name' => $this->name,
        ]];
    }
}

Related Packages

rankbeam/laravel-seo-filament

Laravel SEO package for Filament 4 and 5 - a complete editor with Google and soc...

1,248 0
nomanur/filament-seo-pro

The definitive SEO toolkit for Filament — live analysis, Google preview, social...

3,715 13
fauzie811/filament-list-entry

List Entry for Filament Infolist

24,231 15
thiktak/filament-simple-list-entry

Simple List Entry for Infolist

6,782 23

Version History

Version Released PHP Laravel License
v0.1.3 ^8.3 ^12.0 || ^13.0 MIT
v0.1.2 ^8.3 ^12.0 || ^13.0 MIT
v0.1.1 ^8.3 ^12.0 || ^13.0 MIT
v0.1.0 ^8.3 ^12.0 || ^13.0 MIT