High-performance, multi-engine SEO indexing CLI tool.
Automatically submit your sitemap URLs to Google, Bing, and Yandex — get your pages crawled and indexed faster.
| Feature | Description |
|---|---|
| Google Indexing API | Submits URLs directly via the official Indexing API v3 |
| Bing & Yandex Pings | Notifies search engines of sitemap updates via ping endpoints |
| IndexNow Protocol | Built-in support for the IndexNow bulk submission standard |
| Recursive Sitemap Parsing | Crawls sitemap index files and nested sitemaps automatically |
| Duplicate Prevention | SQLite-backed history database prevents re-submitting indexed URLs |
| Concurrency Control | Configurable parallel request limit to respect API rate limits |
| Progress Tracking | Real-time progress bar with per-URL status updates |
| Summary Reports | Aggregated statistics after each indexing run |
- Node.js v18.0.0 or higher
- A Google Cloud service account with the Indexing API enabled
- Your site verified in Google Search Console
# Clone the repository
git clone https://github.com/kilicdev/seo-indexer.git
cd seo-indexer
# Install dependencies
npm install
# Add your Google service account credentials
cp /path/to/your/service_account.json ./service_account.json
# Run the indexer
npm startStep-by-step guide
- Go to Google Cloud Console.
- Create a new project (e.g.,
seo-indexer). - Navigate to API & Services → Library and enable the Web Search Indexing API.
- Go to IAM & Admin → Service Accounts and create a new service account.
- Under the Keys tab, generate a new key in JSON format.
- Save the downloaded file as
service_account.jsonin the project root. - In Google Search Console, add the service account's
client_emailas an Owner of your property.
Note: The
service_account.jsonfile contains sensitive credentials. It is excluded from version control via.gitignore. Never commit this file to a public repository.
npm startThe interactive CLI will prompt you for:
? Enter your sitemap URL: https://example.com/sitemap.xml
? Concurrent request limit: 5
- Crawl — Recursively parses your sitemap (supports sitemap index files)
- Filter — Checks the local database and skips previously indexed URLs
- Index — Submits new URLs to Google via the Indexing API
- Ping — Notifies Bing and Yandex of your sitemap update
- Report — Displays aggregated results
╔══════════════════════════════════════════════╗
║ SEO INDEXER by kilicdev ║
║ Multi-Engine Indexing Tool v1 ║
╚══════════════════════════════════════════════╝
✔ Found 142 URLs.
✔ 38 new URLs to index. (104 skipped)
=== GOOGLE INDEXING API ===
Progress |████████████████████| 100% || 38/38 URLs
✔ Google Indexing complete.
=== BING & YANDEX SITEMAP PING ===
✔ Bing and Yandex pings sent successfully.
=== SUMMARY REPORT ===
┌─────────┬──────────┬─────────┬───────┐
│ (index) │ engine │ status │ count │
├─────────┼──────────┼─────────┼───────┤
│ 0 │ 'google' │ 'success' │ 38 │
└─────────┴──────────┴─────────┴───────┘
✔ All operations completed. Database updated.
seo-indexer/
├── src/
│ ├── index.js # CLI entry point & orchestration
│ ├── core/
│ │ ├── crawler.js # Recursive sitemap parser
│ │ └── db.js # SQLite persistence layer
│ ├── engines/
│ │ ├── google.js # Google Indexing API v3 engine
│ │ ├── indexnow.js # IndexNow protocol engine
│ │ └── pings.js # Legacy ping engine (Bing/Yandex)
│ └── utils/
│ └── logger.js # Colored console logging
├── package.json
├── LICENSE
├── CONTRIBUTING.md
└── .gitignore
| Engine | Method | Status |
|---|---|---|
| Indexing API v3 | ✅ Active | |
| Bing | Sitemap Ping | ✅ Active |
| Yandex | Sitemap Ping | ✅ Active |
| IndexNow | IndexNow Protocol | 🔧 Available (requires API key) |
┌─────────────┐ ┌──────────────┐ ┌───────────────┐
│ Sitemap │────▶│ Crawler │────▶│ URL Filter │
│ (XML) │ │ (Recursive) │ │ (SQLite DB) │
└─────────────┘ └──────────────┘ └──────┬────────┘
│
┌──────────────────┼──────────────────┐
▼ ▼ ▼
┌────────────┐ ┌────────────┐ ┌────────────┐
│ Google │ │ Bing │ │ Yandex │
│ Indexing │ │ Ping │ │ Ping │
│ API v3 │ │ │ │ │
└────────────┘ └────────────┘ └────────────┘
Contributions are welcome! Please read the Contributing Guide for details on the process for submitting pull requests.
This project is licensed under the MIT License — see the LICENSE file for details.
- Issues: GitHub Issues
- Discussions: GitHub Discussions