indexnowkit/console
IndexNowKit Console provides Artisan commands for submitting URLs to IndexNow-compatible search engines from Laravel. Run single or bulk submissions, manage API keys, and integrate search indexing into deployments or scheduled tasks.
symfony/console command, so the Laravel adapter (0.15.0) registers these classes directly. That removes custom $signature rendering and makes indexnow:submit-model, indexnow:check, indexnow:config, indexnow:key:generate first-class DX for the team and for support engineers.AbstractSubjectLoader (extend it, implement findOne/findMany) and SubjectSampler turn "support our non-standard Eloquent models" into a small, documented extension point rather than a fork. Scope custom work to the query, not the plumbing.indexnow:config masking adapter-only keys (previously history.pdo.dsn with its database password was printed in the table, in --json, and in the "configuration does not build" output intended for bug reports), creates the env file at 0600 before writing the key, warns on pre-existing wider permissions, and stops corrupting rotated keys containing $ or \. This is the difference between "we can ask a customer to paste indexnow:config output" and "we cannot".CommandDefinition::laravelSignature() is a real breaking change for anyone who rendered artisan signatures from definitions. Decide now whether we own a copy of the 32-line renderer from 0.4 or migrate to registering the package's command classes.sitemap and history now pin ^0.5, the adapters move together, and core requires ^0.13. That is a coordinated upgrade unit, which belongs in the dependency/upgrade plan rather than being discovered mid-sprint.Consider it when:
AbstractSubjectLoader (two methods) is acceptable work.--sample-class, per-class caps) to verify payloads before turning submission loose on production.ConfigSourceInterface is declared "Implement" tier (no method additions before a major, or before a minor listed under Changed while pre-1.0).laravelSignature() and are willing to migrate: either register the package's command classes via $this->commands([...]), or vendor the renderer from 0.4.Look elsewhere, or defer, when:
sitemap/history pinning ^0.5 and the core ^0.13 requirement mean coordinated releases, not piecemeal bumps.For executives: IndexNow submission is now a small, well-bounded capability rather than a bespoke integration. This release consolidates duplicated per-framework command code into the package itself, so our engineering cost shifts from writing and maintaining glue to configuring a few commands. It also closes three security issues that mattered to us operationally — credentials and connection strings no longer leak through the config command's table, JSON, or bug-report output; generated env files are created with restrictive permissions and pre-existing loose files are flagged; and key rotation no longer corrupts keys containing $ or \. The caveat is maturity: this is a 0.x line with a deliberate breaking removal (CommandDefinition::laravelSignature()), so we should pin versions, adopt the Laravel adapter and optional packages as one upgrade unit, and budget a short migration if we ever rendered artisan signatures ourselves.
For engineering: 0.5.0 moves the command classes, SubjectSampler, AbstractSubjectLoader, and Console\ConfigSourceInterface into the package with constructor injection for everything adapter-specific (runner, Vocabulary, env-file path, Check\SampleOptions). The Laravel adapter (0.15.0) drops its own artisan command classes and lets Illuminate\Console\Application::resolve() pick up the package's symfony/console commands; SubmitSubjectsCommand/ExplainCommand take a configurable $classArgument so Laravel keeps 'model' and Artisan::call('indexnow:submit-model', ['model' => Post::class]) continues to work. Use SubmitSubjectsOptions::DEFAULT_LIMIT instead of a literal 1000 for non-numeric --limit. Required action: audit for CommandDefinition::laravelSignature() usage — it is gone; register the package's command classes or carry the 0.4 renderer. Requires indexnowkit/core ^0.13, and upgrade sitemap/history together at ^0.5.
How can I help you explore Laravel packages today?