Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Advanced Seo Laravel Package

aerni/advanced-seo

A Laravel package for advanced SEO management: define meta tags, Open Graph and Twitter Card data, canonical URLs, and robots directives in code. It keeps SEO configuration centralized, consistent, and easy to customize across your application.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The package is a first-class Statamic 6 addon, not a generic Laravel SEO library — despite the "Laravel/PHP package" framing, there is no value here for a plain Laravel application without Statamic content. Within Statamic, the architecture is genuinely well-factored: a Seo facade as the single access point, SeoSet / SeoSetConfig / SeoSetLocalization as the domain objects, a Context value object for resolution, and a ViewCascade/CascadeComposer pair that composes output through site defaults → collection/taxonomy defaults → entry overrides. The explicit rule that SEO output is computed state and must never be read or written directly from entries is the strongest maintainability signal in the repo. It means the merge precedence is centralized and testable rather than smeared across templates — exactly what a multi-site, multi-collection content org needs.

Integration feasibility. Feasibility is gated almost entirely by version floors, which are hard constraints rather than suggestions: PHP ^8.4, laravel/framework ^12.0, statamic/cms ^6.0. This is a narrow window — teams on Statamic 5 / Laravel 11 / PHP 8.3 are blocked outright, and the platform upgrade is a far larger project than the SEO addon. Second friction point is spatie/browsershot ^5.2: this pulls Node and a headless Chromium into the runtime image, converting a clean PHP deploy into a container with browser dependencies. Whether that is load-bearing or optional (OG image generation, rendered previews) is the single most important thing to determine before committing.

Technical risk. Three material risks. (1) Adoption: 18 stars and a single maintainer means you are plausibly one of a handful of production users; bus factor is 1 and there is no implied SLA. Mitigation exists in the Contracts/ layer — the storage contracts give you a clean fork point if the package stalls. (2) Dual-driver ambiguity: file/Stache (default) and Eloquent are both supported behind identical contracts, and the codebase explicitly warns "never assume Eloquent is active." A team that runs Stache locally and Eloquent in production is signing up for a class of bugs that only reproduce in prod. (3) Cache invalidation: Blink keys are namespaced advanced-seo::{type}::{handle}::{suffix} and flushed by prefix via SeoSet::flushBlink(). Prefix flushing on publish is correct in principle but is exactly the mechanism that silently serves stale meta after bulk imports or partial publishes.

Key questions.

  • Is spatie/browsershot required at runtime, or only for optional features? Can Chromium be excluded from the production image?
  • Is browser rendering synchronous on publish, or queued? A Chrome timeout must never block a content publish.
  • Does the package cover sitemaps, canonical URLs, robots directives, and redirects — or only meta + schema? Redirect handling is usually out of scope and is the most common gap.
  • What is the invalidation path for bulk operations (imports, saveQuietly(), programmatic publishes) versus the control-panel publish button?
  • Is statamic/eloquent-driver ^5.0 a dev-only dependency or a runtime requirement when the Eloquent driver is selected?
  • What is the maintainer's stated support policy and version-support window per Statamic major?
  • Does the CP Vue 3.5 / Tailwind 4 asset build ship prebuilt, or does it require a Node build step in your deploy pipeline?

Integration Approach

Stack fit. Greenfield Statamic 6 on Laravel 12 and PHP 8.4: strong fit, adopt early, before content authors establish ad-hoc SEO field conventions. Existing Statamic 5 estate: do not attempt to backport; sequence the platform upgrade first and treat the addon as a follow-on phase, not a co-requisite. Non-Statamic Laravel: no fit, stop here.

Migration path. Treat this as a data-shape migration, not a package install. Legacy SEO is typically per-entry fields (seo_title, meta_description) rendered by a Blade partial. The target shape splits that into site-level and collection-level defaults held in SeoSetConfig, with per-entry values demoted to overrides. Run a dual-read period: keep the legacy partial rendering from the old fields while the new cascade is wired in behind a feature flag, and diff the two outputs across a representative sample of entries before cutting over. Budget separately for redirects and URL history if the migration consolidates or renames URLs — assume the package does not solve this.

Compatibility. Multisite is handled properly via SeoSetLocalization per site, so localized metadata is a first-class concept rather than a bolt-on — validate this early if you run more than one site. Confirm which storage driver is active in each environment and enforce parity: same driver locally, in CI, and in production. Verify the control-panel asset build is reproducible in your pipeline and does not depend on a CDN at runtime.

Sequencing.

  1. Throwaway spike: stand up a Statamic 6 app, install the addon, confirm browser dependencies and asset build in a production-like container.
  2. Wire the Seo facade and ViewCascade into a single low-traffic collection; confirm the seo template variable shape.
  3. Prove invalidation: publish, unpublish, reorder, bulk import — assert output is fresh each time.
  4. Establish the "never touch SEO data on entries" rule as a code-review gate and lint rule before any team-wide rollout.
  5. Migrate collection by collection, with a short editor guide for the three-tier precedence model.
  6. Decommission legacy SEO fields only after a full crawl-and-diff against the old output.

Operational Impact

Maintenance. Pin exact versions. The dependency floors (PHP 8.4, Laravel 12, Statamic 6) indicate a maintainer who tracks platform majors quickly — good for security posture, unforgiving if your estate lags. Budget a recurring review at each Laravel and Statamic major release, and explicitly track upstream activity; at 18 stars, a six-month gap in commits should trigger a build-vs-fork decision rather than a wait-and-see.

Support. No commercial SLA. Documentation exists at advanced-seo.michaelaerni.ch and the in-repo agent guidance is unusually good, which partially offsets the bus-factor risk. Internally, name a single owner for the SEO domain layer — the facade and cascade are simple enough that one developer can hold it, but only if the ownership is explicit.

Scaling. Read cost is low: output is computed and Blink-cached under namespaced keys. The two scaling pressure points are (a) prefix-based cache flushes on publish, which become a hot path on large content sets and bulk imports — measure before assuming it is free; and (b) Browsershot, where every rendering operation spins a headless Chromium instance. If browser rendering is in scope, it must be queued with concurrency limits and memory headroom, and it must be isolated from the publish path.

Failure modes. Stale meta after an invalidation miss; editors misreading precedence and setting entry overrides when they intended a collection default; driver drift between local (Stache) and production (Eloquent); Chromium timeouts or OOM degrading OG output; control-panel asset build breakage after an addon or Tailwind upgrade. Only the first and fourth are silent — instrument a post-publish check that samples rendered output and alerts on divergence.

Ramp-up. Developer ramp-up is roughly one to two days to internalize the facade, Context, and the cascade. Editor ramp-up is shorter but needs a written one-pager on the three-tier model, because the entire value proposition — sensible site-wide defaults with targeted per-entry overrides — collapses into confusion if authors do not understand where their input lands in the merge order.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle