Surviving IndexNow - 10 Free IndexNow Plugins and Scripts to Boost Content Indexing
As a web developer, you're probably familiar with the challenges of getting your fresh content quickly indexed by search engines. IndexNow is an open-source protocol that revolutionizes this process by providing a direct, programmatic way to notify search engines about content changes.
IndexNow acts like a direct phone call to search engines, saying "Hey, I've got something new!" Instead of waiting for search engines to stumble upon your changes, you can instantly notify them about:
- New pages you've added
- Updates to existing content
- Pages you've deleted
It's a fast, efficient way to ensure your latest content shows up in search results quickly. Think of it as a speed boost for your website's visibility.
When you use IndexNow, you send a simple "ping" - a quick message - to participating search engines. Right now, this includes Bing, Yandex, Seznam.cz, Naver, and Yep.
Benefits include:
- Faster content discovery
- Less strain on your website's servers
- More energy-efficient web searching
- Simpler content management
November 2024: A New Beginning for IndexNow
As of November 2024, the search engines that support IndexNow include:
- Bing
- Yandex
- Seznam.cz
- Naver
- Yep
Potential Gotchas
- Not all search engines support IndexNow
- Requires maintaining an API key
- Needs careful implementation to avoid unnecessary pings
IndexNow, is not for all CMS
Many open-source CMS and eCommerce platforms have adopted the new IndexNow protocols, offering various solutions through plugins and extensions.
- WordPress
- Shopify
- PrestaShop
- Drupal
- Typo3
- MODX
- Opencart
- Joomla
- Shopware
- Bitrix24
However, for other CMS and blogging platforms like Ghost or static site generators, you will need to implement a manual approach to send your notifications.
IndexNow using simple Python Script
import requests
def index_now_ping(url, key, host):
"""
Send an IndexNow ping to notify search engines of content update
:param url: The URL of the updated content
:param key: Your unique IndexNow API key
:param host: Your website's domain
"""
indexnow_endpoint = "https://api.indexnow.org/indexnow"
payload = {
"host": host,
"key": key,
"urlList": [url]
}
try:
response = requests.post(indexnow_endpoint, json=payload)
if response.status_code == 200:
print(f"Successfully notified search engines about {url}")
else:
print(f"Indexing notification failed: {response.status_code}")
except requests.RequestException as e:
print(f"Error sending IndexNow ping: {e}")
IndexNow for WordPress users and developers
For WordPress developers, plugins like "IndexNow Bing Yandex" can automate the indexing process:
// Example WordPress hook for automatic indexing
function auto_index_on_post_update($post_id) {
$url = get_permalink($post_id);
send_indexnow_ping($url);
}
add_action('save_post', 'auto_index_on_post_update');
There are dozens of other WordPress extensions/ plugins to address the IndexNow issue:
- Official IndexNow Plugin by Microsoft Bing: Enables automated submission of URLs to multiple search engines without the need for site verification.
- Index Now SEO – Instant Indexing for Google, Bing, Yandex: Notifies search engines whenever website content is created, updated, or deleted, ensuring prompt indexing.
- All in One SEO (AIOSEO): A feature-rich SEO WordPress plugin that includes IndexNow support for faster content indexing.
- Rank Math SEO: An SEO plugin for WordPress that offers IndexNow integration, allowing for immediate notification to search engines about content changes. It is the number one choice SEO experts who prefer WordPress.
These smart plugins are like a quick nudge to search engines, saying "New content alert!" the moment you publish. Install, activate, and watch your latest posts zoom into search results faster than ever. Your website stays fresh, visible, and one step ahead.
Are you a Cloudflare's user? Activate IndexNow
If you are using Cloudflare, you can easily activate IndexNow, by activating "Crawler Hints" from Cache Settings -> Configuration, and it take care of everything.
Once you’ve enabled it, we will begin sending hints to search engines about when they should crawl particular parts of your website. Crawler Hints holds tremendous promise to improve the efficiency of the Internet.
Manually send IndexNow notifications for Static
Sites
For JAMstack or static site developers, you can integrate IndexNow into your build or deployment scripts:
It is a plain simple:
curl "https://api.indexnow.org/indexnow?url=https://yoursite.com/newpost&key=YOUR_KEY"
- First, generate your API Key
- Then host your API Key at the core of your website
- By then you can submit your URLs
curl "https://api.indexnow.org/indexnow?url=https://yoursite.com/newpost&key=YOUR_KEY"
Request
POST /IndexNow HTTP/1.1
Content-Type: application/json; charset=utf-8
Host: api.indexnow.org
{
"host": "www.example.org",
"key": "aded07616e744cc5aebd1dd7d016325f",
"keyLocation": "https://www.example.org/aded07616e744cc5aebd1dd7d016325f.txt",
"urlList": [
"https://www.example.org/url1",
"https://www.example.org/folder/url2",
"https://www.example.org/url3"
]
}
IndexNow - Free Script using Python
import os
import requests
import uuid
import logging
from typing import List, Optional
class IndexNowSubmitter:
def __init__(self, domain: str, api_key: Optional[str] = None):
"""
Initialize IndexNow submitter
:param domain: Your website's domain
:param api_key: Optional custom API key (generates if not provided)
"""
self.domain = domain
self.api_key = api_key or str(uuid.uuid4())
self.endpoint = "https://api.indexnow.org/indexnow"
# Configure logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - IndexNow - %(levelname)s: %(message)s'
)
self.logger = logging.getLogger(__name__)
def submit_urls(self, urls: List[str]) -> bool:
"""
Submit URLs to IndexNow participating search engines
:param urls: List of URLs to submit
:return: Submission success status
"""
payload = {
"host": self.domain,
"key": self.api_key,
"urlList": urls
}
try:
response = requests.post(
self.endpoint,
json=payload,
timeout=10
)
if response.status_code == 200:
self.logger.info(f"Successfully submitted {len(urls)} URLs")
return True
else:
self.logger.error(f"Submission failed: {response.status_code}")
return False
except requests.RequestException as e:
self.logger.error(f"Network error: {e}")
return False
def submit_sitemap(self, sitemap_path: str) -> int:
"""
Extract and submit URLs from a sitemap
:param sitemap_path: Path to XML sitemap
:return: Number of URLs submitted
"""
import xml.etree.ElementTree as ET
try:
tree = ET.parse(sitemap_path)
root = tree.getroot()
# Namespace handling for sitemaps
namespace = {'ns': 'http://www.sitemaps.org/schemas/sitemap/0.9'}
urls = [
url.find('ns:loc', namespace).text
for url in root.findall('.//ns:url', namespace)
]
self.submit_urls(urls)
return len(urls)
except Exception as e:
self.logger.error(f"Sitemap processing error: {e}")
return 0
def main():
# Example usage
indexer = IndexNowSubmitter(
domain="example.com",
api_key="your-unique-key"
)
# Submit individual URLs
new_urls = [
"https://example.com/new-blog-post",
"https://example.com/updated-page"
]
indexer.submit_urls(new_urls)
# Submit from sitemap
indexer.submit_sitemap("/path/to/sitemap.xml")
if __name__ == "__main__":
main()
RSS to IndexNow, Simple Free Script Apps
Create a Node.js script, then install Axios, and RSS-Parser
npm install axios rss-parser
Then you can copy and run the following code, that will submit all of your latest RSS items:
const axios = require('axios');
const Parser = require('rss-parser');
const parser = new Parser();
const INDEXNOW_API_URL = 'https://www.bing.com/indexnow';
const API_KEY = 'your-api-key-here'; // Replace with your IndexNow API key
const RSS_FEED_URL = 'https://example.com/rss'; // Replace with your RSS feed URL
async function fetchLatestLinks() {
try {
const feed = await parser.parseURL(RSS_FEED_URL);
const latestLinks = feed.items.map(item => item.link);
console.log('Latest links fetched:', latestLinks);
return latestLinks;
} catch (error) {
console.error('Error fetching RSS feed:', error.message);
return [];
}
}
async function submitToIndexNow(links) {
if (!links.length) {
console.log('No links to submit.');
return;
}
const payload = {
host: new URL(links[0]).hostname,
key: API_KEY,
keyLocation: `https://${new URL(links[0]).hostname}/indexnow-key.txt`,
urlList: links,
};
try {
const response = await axios.post(INDEXNOW_API_URL, payload, {
headers: {
'Content-Type': 'application/json',
},
});
if (response.status === 200) {
console.log('Links submitted successfully:', links);
} else {
console.error('Failed to submit links:', response.status, response.data);
}
} catch (error) {
console.error('Error submitting links:', error.message);
}
}
(async function () {
const latestLinks = await fetchLatestLinks();
await submitToIndexNow(latestLinks);
})();
Open-source Free IndexNow Solutions
1- IndexNow
This is a Python script, that makes it easy for website admins to update and submit their latest URLs, with IndexNow protocol. It supports Django apps as well as FastAPI.
2- indexnow for Go apps
Go package for submitting URLs for crawling using the IndexNow protocol
3- IndexNow Github Actions
A GitHub Action that automatically submits URLs to participating search engines through the IndexNow protocol.
This is an ideal solution for Static Site Generators, all it requires is the Sitemap.xml location.
4- indexnow-api-python
5- IndexNow-Submit – CLI tool to help with submitting content URLs to search engines
6- Laravel IndexNow Package
This is an ideal option for Laravel developers to activate IndexNow protocol.
7- IndexNow Submitter
IndexNow Submitter is a powerful and flexible TypeScript/JavaScript module for submitting URLs to search engines using the IndexNow protocol. It provides features such as caching, analytics, sitemap parsing, and more, making it an essential tool for SEO professionals and web developers.
Features
- Submit single URLs or batches of URLs to search engines using the IndexNow protocol
- Parse and submit URLs from sitemaps
- Instance-based caching to avoid resubmitting recently submitted URLs
- Analytics to track submission statistics
- Rate limiting to comply with search engine submission guidelines
- Configurable options for search engine, API key, host, batch size, and more
- Command-line interface (CLI) for easy use in scripts and automation
- TypeScript support for improved developer experience
- Comprehensive logging for debugging and monitoring
- Modular architecture for easy extension and customization
Should you use IndexNow?
Yes, using the IndexNow protocol is highly recommended for SEO professionals. It ensures faster indexing of website updates, improves content discovery, reduces server load, and enhances visibility on participating search engines, making it essential for competitive SEO strategies.