lbonnet/seo-bundle
lbonnet/seo-bundle is a lightweight SEO package for PHP applications that centralizes page titles, meta descriptions, canonical URLs, and Open Graph tags. It offers simple configuration and helpers to keep metadata consistent across views, with room to grow as the project matures.
--fail-on. That means a PM can treat SEO regressions the same way as failing tests: a PR that introduces broken hreflang, missing meta, or bad canonicals stops the build. This is a policy decision (which severities block a deploy) expressible as a single flag, not a bespoke integration.hreflang_missing_x_default issues across 94 distinct pages signals one broken layout, not 94 broken pages. That reframes a backlog item from "94 tickets" to "one template change," which is a roadmap-level insight, not just nicer output.Consider it when:
Look elsewhere when:
Also note the version: this is 0.5.0. The interface is settling but the project has not declared stability. Adopt it behind a CI job where a breaking change costs you a config edit, not a production incident.
For executives: This is a low-cost way to stop shipping SEO regressions. Today, structural SEO mistakes — broken canonical tags, missing hreflang, malformed metadata — are found weeks later in a crawl, after they've been indexed. This package turns those checks into a build step: if a change would break SEO hygiene at or above a severity we choose, the deploy fails. On a 152-page site it condenses 161 raw issues into an 11-line summary and points at the nine that actually block a release. Crucially, it surfaces whether a defect is systemic — one template affecting 94 pages — or isolated, which is the difference between a one-line fix and a 94-ticket backlog. The stored report is stable and machine-readable, so trend reporting can be layered on later without re-platforming.
For engineering: No configuration, no migration, no runtime dependency in the request path — it's a CLI over an existing report. The contract is narrow and deliberate: --fail-on alone determines the exit code; adding -v to a green build keeps it green. Console output is never terminal-sniffed, so piped and redirected output is byte-identical to a live run and needs no CI-specific flags. The detail view lists exactly the issues that decide the exit code, with a line accounting for what's counted but not shown; -v restores the full listing. The summary is derived from the same report object as the detail, so the two cannot drift. Page URLs remain terminal hyperlinks. If you were pasting or grepping full output, add -v — that's the entire upgrade. The JSON report is unchanged and has always carried every issue.
How can I help you explore Laravel packages today?