Not defending the standard, but I guess since this is a shared secret you don't want to put it at a well known location. There's a (slight) attack vector from having an attacker know the secret, since they can "launch" a crawl against a site. Maybe could get a crawler to access private URLs or something?
Another interesting feature I saw in the standard is that you can host keys in subdirectories too.
This wouldn’t be in a place like “.well-known/secret-key”, the key would still be part of the path. It’s just a well known prefix to put exactly this kind of thing.
Registrations MAY also contain additional information, such as the
syntax of additional path components, query strings, and/or fragment
identifiers to be appended to the well-known URI, or protocol-
specific details (e.g., HTTP [RFC7231] method handling).
So it could be: /.well-known/index-now/<key>
IndexNow would need to change the semantics of how they handle directories, as a key authorises only subdirectories.
I also notice there is an option for changing the filename of the IndexNow key file, but there is less flexibility about the directory it's hosted:
This seems like a potential vulnerability as if an attacker knows a text file path that contains a known (hex?) string it looks they could use it as a key?
So it’s an alternative to sitemaps, documents that can list incrementally all the web pages of a website with their last modification date-time, but with a push model instead of a pull model?
Yes, but of course only for the search engines that support it. Eg, Google is absent from the list, although they've already had a push/ping sitemap feature.
I thought so too, but search engines supporting IndexNow are supposed to tell each other about new pages, and there's a bit more of control since you can send just the urls you want instead of an entire sitemap.
If it was widely used it's win-win. More timely updates and less traffic crawling pages which haven't changed. That's if it ever becomes a reliable signal of page changes.
https://www.indexnow.org/
The idea is that you can push a notification to a search engine when content changes instead of waiting for the crawler to notice.
https://<searchengine>/indexnow?url=url-changed&key=your-key
You can also submit more than one URL with a POST.
You can notify Bing at https://www.bing.com/indexnow?url=url-changed&key=your-key
If you notify the IndexNow API endpoint it notifies Bing plus other search engines on your behalf:
https://api.indexnow.org/indexnow?url=url-changed&key=your-k...
This announcement is about how CloudFlare can now do this automatically for sites it hosts.
Some other hosts and CDNs support IndexNow, eg Akamai. See: https://blogs.bing.com/webmaster/october-2021/IndexNow-Insta...