mulertech/seo-bundle
SEO toolkit for Laravel: manage meta tags, Open Graph, Twitter cards, canonical URLs, robots directives, JSON-LD structured data, and XML sitemaps from one bundle. Blade helpers keep head markup clean and consistent across pages.
faqPage, so the package now covers four schema types (blogPosting, service, breadcrumbList, faqPage). This lets you plan SEO surface area (article rich results, breadcrumbs in SERPs, FAQ blocks, service/entity markup) as a single track rather than a per-page bespoke effort.InvalidArgumentException naming the expected shape instead of silently rendering nothing. This converts "invisible SEO regression discovered at next audit" into a build-time/CI-time failure — a defensible engineering investment, and a decision to make explicitly: do you want schema errors to break the page in production, or fail loudly in tests only?breadcrumbList/faqPage lists render nothing (Google rejects entries-less blocks), and a Service with no description no longer emits "description": "". This reduces junk markup that dilutes crawl budget and can trigger validation warnings in Search Console — fewer false "we shipped schema" claims in reporting.Adopt when:
schema_org_json_ld('type', data)) rather than hand-written JSON-LD in Blade templates.blogPosting behind a BlogPostingSeoInterface, service with a string title, faqPage/breadcrumbList items with the expected keys), so the strictness is a safety net rather than a constant source of exceptions.@id linking).Look elsewhere or hold when:
For executives: This release makes our structured data trustworthy. Previously, a malformed SEO block rendered nothing and we only found out at the next audit — a silent loss of search visibility. Now bad data fails loudly and early, and the new FAQ block lets us mark up question-and-answer content we already publish. Net effect: fewer invisible SEO regressions, more consistent rich-result coverage, and less manual QA per release. Cost is contained — it's a small, focused library, not a platform commitment.
For engineering: v1.6.0 adds schema_org_json_ld('faqPage', items) for {question, answer} pairs, with answer passed through as HTML — markdown rendering and sanitisation stay in the application, so XSS responsibility is unchanged and explicitly ours. All types now validate: wrong shapes throw InvalidArgumentException with the expected structure, unknown types throw with the valid list, empty breadcrumbList/faqPage render nothing, and Service omits description when absent instead of emitting an empty string. Practical implications: wrap calls at trust boundaries (CMS input, user-generated content) or validate upstream, add per-template schema assertions to the test suite, and treat the exception messages as the contract when authoring data. No breaking API changes to existing valid call sites, but any code currently relying on silent no-op behaviour for bad data will now throw — audit those call sites before upgrading.
How can I help you explore Laravel packages today?