Skip to content

chore(site): IndexNow ping for Bing/Yandex/Naver/Seznam fast-recrawl#182

Merged
ozzyfromspace merged 1 commit intomainfrom
claude/bing-site-indexing
May 8, 2026
Merged

chore(site): IndexNow ping for Bing/Yandex/Naver/Seznam fast-recrawl#182
ozzyfromspace merged 1 commit intomainfrom
claude/bing-site-indexing

Conversation

@ozzyfromspace
Copy link
Copy Markdown
Contributor

Summary

  • Adds IndexNow integration so Bing-family search engines recrawl changed pages within minutes of a production deploy instead of waiting for the next scheduled crawl. High-leverage for a docs site that grows with releases.
  • apps/site/public/2e71a5ced510106b3dfca644c1ccb49d.txt is the IndexNow proof-of-control file. The key itself is non-secret — the file's presence at the site root is what gates IndexNow acceptance.
  • apps/site/scripts/indexnow-ping.mjs reads the prerendered sitemap.xml, parses URLs, and POSTs to api.indexnow.org. Hard-gated on VERCEL_ENV === 'production'; previews / local / CI all hit the no-op path. No force override; only a INDEXNOW_DRY_RUN=1 mode that prints the payload without ever reaching the network.
  • Wired into both build and generate site scripts so whichever path Vercel auto-detects, the ping runs.

Bing Webmaster Tools verification was already completed via the GSC import path, so no msvalidate.01 meta tag is needed.

Test plan

  • pnpm --filter attaform-site generate end-to-end: 114 routes prerender, search index runs, IndexNow script gates correctly with [indexnow] skipped (VERCEL_ENV=undefined; production deploy required)
  • INDEXNOW_DRY_RUN=1 node scripts/indexnow-ping.mjs against the real generated sitemap — parses 36 URLs, prints the exact payload that would have been posted
  • robots.txt audit: User-agent: * allows Bingbot; Sitemap: directive present and correct
  • Key file lands in .output/public/ so it serves at https://www.attaform.com/2e71a5ced510106b3dfca644c1ccb49d.txt
  • After merge to main + Vercel production deploy: confirm [indexnow] OK (200|202) in the Vercel build log
  • In Bing Webmaster Tools after a few hours, confirm the ping shows up under Sitemaps → IndexNow

🤖 Generated with Claude Code

IndexNow is the shared push protocol used by Bing, Yandex, Naver, and
Seznam — POST a list of changed URLs to api.indexnow.org and the
crawlers refetch within minutes instead of waiting for the next
scheduled crawl. Worth wiring on a docs site that grows with releases.

Three pieces:

- `apps/site/public/<key>.txt` — proof-of-control file the IndexNow
  endpoint fetches to validate that the pinger owns the host. The key
  itself is non-secret; the file's presence at the site root is what
  gates acceptance.
- `apps/site/scripts/indexnow-ping.mjs` — reads the prerendered
  `.output/public/sitemap.xml`, extracts URLs via regex (sitemap is
  small enough to skip an XML parser dependency), and POSTs the
  payload. Hard-gated on `VERCEL_ENV === 'production'`; preview
  deploys, local builds, and CI all hit a no-op path. There is
  intentionally no force override — `INDEXNOW_DRY_RUN=1` exists for
  local validation but never reaches the network. Fail-soft: a
  network blip or non-OK response logs and exits 0 so a Bing outage
  never breaks our build.
- `apps/site/package.json` — `index:bing` script + chained after
  `index:search` in the `build` and `generate` pipelines.

Bing Webmaster Tools verification was completed earlier via the GSC
import path, so no `msvalidate.01` meta tag is needed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented May 8, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
attaform Ready Ready Preview, Comment May 8, 2026 11:53pm

@ozzyfromspace ozzyfromspace merged commit 8ab3295 into main May 8, 2026
12 checks passed
@ozzyfromspace ozzyfromspace deleted the claude/bing-site-indexing branch May 8, 2026 23:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant