SEO

The first-party filament-seo plugin morphs SEO meta onto any Eloquent model — Post, Doc, or your own — and renders the matching <head> tags and /sitemap.xml on the public site. It is part of the Docs stack plugin set and ships look-neutral: the clone renders the tags, the plugin only supplies the data.

What it does

  • HasSeo trait — attaches a seo_meta morph row (title, description, canonical URL, OG image URL) to any model.
  • SeoFields::make() — a drop-in Filament form field group added to the Post and Doc resource forms in the panel.
  • SeoTags::for($model)->toHtml() — emits <title>, meta description, canonical, Open Graph, X/Twitter card, and a JSON-LD WebPage block for the public layout.
  • Sitemap::xml() — helper that builds a sitemap <urlset> from a list of {loc, lastmod} URLs.
  • SEO settings page — singleton defaults (title, description, social image, X handle) with a share-card preview, registered under panel Settings.

Storage

Table Shape Purpose
seo_meta morph (seoable_type, seoable_id) Per-record SEO overrides
seo_settings singleton row Site-wide defaults

Public surface

The clone renders SeoTags in its <head> and exposes /sitemap.xml. When the Content API plugin is enabled, the nested seo relation is carried through the API payload, so API-published posts and docs keep their SEO meta for any downstream consumer.

See also

Built by Qcentic