Skip to content
PN Scripts

Plugins

Headwright

Title, description, canonical, robots, Open Graph, Twitter, hreflang and validated JSON-LD for every Laravel page, set in one fluent call and printed by one Blade component.

  • Laravel 12/13
  • Blade
  • schema.org JSON-LD
  • PHP 8.2+
  • Coming soon

Coming soon

Not published on its store yet, so there is no buy or download link. PN Scripts does not take payment for it here.

Controller code using the Seo facade next to the rendered head tags of the page

What it solves

The gap

Laravel leaves page metadata to hand-written Blade: titles and canonicals drift between templates, hreflang links are forgotten for one locale, Open Graph tags are copied badly, and hand-made JSON-LD silently misses the properties that rich results need.

What it is

Headwright gives each request one SEO state that controllers fill fluently, builds hreflang from your routes and locales, validates JSON-LD as it is added, and prints all tags from one component, escaped and in a fixed order.

How you use it

One call per page, one component per layout, and JSON-LD that cannot be shipped incomplete.

For Laravel developers who build shops, blogs and multilingual sites and want correct metadata without maintaining it in every template.

Who it is for

Use it when

  • A multilingual shop that needs hreflang and Product JSON-LD on every product page
  • A blog where editors override the title or robots of single posts
  • An agency template that sets organization data and defaults once for all client sites

Built for

  • Laravel developers building shops, blogs and multilingual sites
  • Agencies that maintain several Laravel sites and want one way to do metadata

What is inside

One call in the controller

Seo::title(), description(), image(), type() and robots() set the page's metadata in one chain. Titles follow a site-wide template, descriptions are cleaned of tags and cut at a word boundary, and the canonical URL defaults to the current address without query strings.

Every locale linked

alternatesForRoute() and alternatesForCurrentRoute() build an hreflang link for each locale of a named route and an x-default, and og:locale with its alternates follows the app locale. A callback covers sites that put locales on separate domains.

JSON-LD that is checked

The builders for Organization, Product, Article, BreadcrumbList and FAQPage output clean schema.org data, and Seo::jsonLd() refuses an object that misses what Google requires, listing every problem. The output is encoded so that text in your data cannot break out of the script tag.

Overrides per record

Add the HasSeo trait to a model, define defaults from its own fields, and save overrides for single records: a custom title, noindex, another image or canonical URL. Seo::for($model) applies both in the right order.

Specs

Availability
Coming soon
Vendor
PN Scripts
Type
Package
Platforms
Laravel
Pricing
One-time purchase Price to be announced.
License
Proprietary
Deployment
Download (Composer package ZIP)
Maturity
v1.0.0

Compatibility

Platform or runtime Supported versions Tested up to
Laravel 12 or newer 13.35
PHP 8.2 or newer 8.4

Stack

  • Laravel 12/13
  • Blade
  • schema.org JSON-LD
  • PHP 8.2+

Headwright is coming soon

It is finished and tested. It is not on sale yet; this page will say where to get it when it is.

Coming soon

Not published on its store yet, so there is no buy or download link. PN Scripts does not take payment for it here.

Questions

A Laravel package that sets and prints SEO metadata: title, description, canonical, robots, Open Graph, Twitter, hreflang and validated JSON-LD, with per-record overrides for Eloquent models.

PHP 8.2 or newer and Laravel 12 or 13. It was tested on Laravel 13.35 and 12.69 with PHP 8.4.

Sitemaps, robots.txt, redirects and checks with Google's tools. Validation covers the required properties of the five built-in types, not the whole schema.org vocabulary.

The package is covered by 44 Testbench tests that compare the exact HTML and JSON output, run on Laravel 12 and 13, and it was installed from its ZIP into a fresh Laravel application, where the buyer test found and fixed a case of tags carrying over between requests in one process. Created with AI assistance; the package was checked by PN Scripts with 44 Testbench tests that compare the exact HTML and JSON output, on Laravel 12 and 13, and by installing the ZIP into a fresh Laravel 13 application.

It is not on sale yet. When it is, this page will link to the store; PN Scripts does not take payment on this site.