- Ajout de tobimori/kirby-seo via Composer
- snippet('seo/head') dans header.php (remplace les meta manuels)
- snippet('seo/schemas') dans footer.php pour JSON-LD
- Onglet SEO ajouté dans site.yml et tous les blueprints de pages
- Configuration SEO dans config.php (sitemap, robots, canonicalBase TODO)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.4 KiB
| title | intro |
|---|---|
| IndexNow | Notify search engines when your content changes |
Normally, search engines discover changes to your site on their own schedule, which can take days or weeks. IndexNow lets you skip the wait: whenever you save, publish, or move a page in Kirby, Kirby SEO notifies search engines so they can re-crawl right away.
IndexNow is supported by Bing, Yandex, Seznam, and others. Kirby SEO sends a single request to api.indexnow.org, which propagates to all participating search engines. Google does not support IndexNow but is not affected by it.
How it works
IndexNow is triggered on three events:
- A page is saved
- A page changes status (e.g. draft to listed)
- A page's slug changes
Only pages that are listed and not marked as noindex are submitted. On local environments (localhost), no requests are sent.
API key
IndexNow requires an API key to verify that you own the domain. Kirby SEO generates one automatically and caches it permanently. Search engines can verify it at https://example.com/indexnow-{key}.txt, which Kirby SEO serves as a route. You don't need to manage this yourself.
Related URLs
By default, only the changed page itself is submitted. But when a page changes, other pages might be affected too: a blog post's parent archive shows a different excerpt, or sibling pages have updated navigation.
You can configure rules to submit related URLs along with the changed page:
// site/config/config.php
return [
'tobimori.seo' => [
'indexnow' => [
'rules' => [
// when a blog post changes, also re-index its parent
'/blog/*' => ['parent' => true],
// when an article changes, re-index two levels of parents and specific URLs
'article' => ['parent' => 2, 'urls' => ['/blog', '/']],
// when a product changes, re-index siblings and all category pages
'product' => ['parent' => true, 'siblings' => true, 'templates' => ['category']],
],
],
],
];
Rules match either by URL pattern (/blog/*) or by template name (article). Each rule can use any combination of:
parent:truefor the direct parent, or a number for how many levels upchildren:truefor all descendants, or a number to limit depthsiblings:trueto include all pages at the same levelurls: an array of specific URLs to submittemplates: an array of template names, all pages with those templates will be submitted