indexnowkit/verify
indexnowkit/verify is a Laravel package for validating IndexNow integrations. It offers straightforward checks for key-file accessibility and configuration, helping you catch setup errors early so search engines can trust your indexing requests and discover content reliably.
Architecture fit
indexnowkit/core: service-provider bindings, publishable config, an artisan check command, a queued verification/submission job, and a PSR-16-backed RobotsCache on top of the framework cache. That is the right shape for this kind of package — framework glue in the adapter, crawler/verification semantics in core — and 0.4.0 moves further in that direction.max_redirects: 0 and verify.timeout, instead of whatever the application bound as http.client. PSR-18 has no mechanism to forbid redirect-following on a caller-supplied client, so a redirect-following client would surface the final 200 and silently neuter verify.redirect, verify.max_redirects, the redirect-target host check and loop detection. Verification is a crawler simulation; it needs a transport whose behaviour it controls. This is the correct boundary, and it is a meaningful correctness win.http.client (so proxies and instrumented clients keep working where they matter for actual POSTs). That is a defensible split, but it is a mental model users must be taught, and the verify.transport line of check graduating from warning to informational is the right affordance for that.Integration feasibility
indexnowkit/core ^0.13, no config migration implied by the notes, no database or route changes.http.client expecting pre-flight traffic to flow through it (corporate egress proxy, mTLS, instrumented/logging client, VCR-style recorder) loses that for verification. The app server must be able to reach verification targets directly, or the pre-flight will now fail where it previously "succeeded".VerifyServices::package() is now a delegator to OptionalPackage::verify(); callers should move to the core API directly.Technical risk
0.x minor. Semver permits it, but the practical effect is that verification results are not comparable across the upgrade: any prior run where a redirect-following client was bound may have under-reported redirect problems. If verify outcomes feed reporting, allow-lists or customer-facing status, treat pre-upgrade history as suspect rather than as a baseline.indexnowkit/core ^0.13 brings whatever else changed in core; the notes only cover the adapter-visible delta. Confirm there are no other public-surface changes before committing to the version.<base href>) and change queue timing (time_budget taken before verify.delay). Individually benign; together they change throughput and submission volume, which is a capacity question rather than a correctness one.RobotsCache::key() IPv6 fix (stripping [, ], :) is a strict improvement — a PSR-16-compliant store previously rejected the key and the class degraded to one robots fetch per process. Expect fewer robots fetches and more cache entries, i.e. lower load and slightly different cache-key shapes.Key questions
http.client is ignored — e.g. configuring the core's client discovery, or a dedicated binding? If not, that is a capability regression for locked-down networks and should be documented as such.VerifyServices::package() formally deprecated, with a stated removal version, or merely "preferred not to call"?http.client been removed from the published config/docs, or is it still documented for pre-flight where it now has no effect? Stale docs here will generate support load.<base> canonical fix move expected submission volume on a representative site?Stack fit
vendor:publish for config, one artisan command, one queue job. No framework-version friction is implied by the notes; confirm PHP constraint from core 0.13.php-http/discovery wiring). Since that client is now the only verification transport, "works on my machine" is no longer rescued by an app-supplied client — treat the discovered client as a first-class deployment prerequisite.Migration path
^0.13); resolve conflicts if the app pins an older core transitively.VerifyServices::package( and switch call sites to OptionalPackage::verify().http.client bindings, overrides and container decorations; classify each as submission-path (keep) or verification-path (no longer effective).check against a representative URL set and read the new verify.transport line to confirm which client does what.Compatibility
http.client, not schema drift.Sequencing
<base href> now passing canonical, (b) redirecting URLs now correctly failing rather than silently passing. Both are wins; both look like "the upgrade broke something" if not anticipated.verify.delay / visibility timeout if per-job throughput moved.Maintenance
VerifyServices::package()), with no urgency implied.Support
verify.transport line becoming informational is a genuine support win: it answers "which client did what" in one line of check output instead of a bisect.<base> canonical fix.Scaling
verify.timeout is now the sole knob. Watch for per-verify client construction — no keep-alive means more TLS handshakes at volume, so measure before scaling URL batches.time_budget being taken before verify.delay waits is the right fix for fitting inside a queue visibility timeout, but it reduces the work a job can complete within a given budget when a delay is configured. Re-check batch sizes and job timeout against real latency; a job that previously finished now may not.Failure modes
Ramp-up
check output correctly from day one.How can I help you explore Laravel packages today?