{"slug":"bing-indexnow-submitter","name":"Bing and IndexNow Submitter Review","version":"1.0.0","updated_at":"2026-10-08T14:36:07.690Z","use_when":"Reviews code and answers questions about sending page addresses to search engines through IndexNow and the Bing Webmaster URL submission API, and catches the mistakes that make a submitter report success that never happened. It flags a Bing call judged only by its HTTP status when the refusal sits inside the body, a retired XML or SOAP endpoint, a fallback chain that retries after a refusal that is ours, a quota read as one number instead of two, an unread quota printed as zero, a report that does not say which engine accepted, a 200 or 202 read as proof of indexing, a key file that cannot validate, and batches over the limits. For a question it answers in the JSON shape asked. Use to review a URL submission function, work out how many addresses may be sent, or explain what a submission status code means.","not_for":"Anything that needs a live call: it reads pasted code and questions, so it cannot send an address, read your real quota or check that your key file is served. It does not cover Google, which has no IndexNow, and it does not judge whether a page deserves to be submitted or when it will rank. Pasting only a fragment works, but a finding can only be as complete as the lines you show.","languages":["any"],"tags":["indexnow","bing-webmaster","url-submission","seo","code-review","search-engines"],"category":"seo","category_url":"https://aiskills402.com/categories/seo","keywords":["URL submission function","submission status code","key file"],"faq":[{"q":"What does it look for in my submit code?","a":"Nine mistakes, each with a fixed code: a Bing call judged by its HTTP status alone, a call to the retired XML path, a fallback chain that goes on after a refusal that is yours, a quota read as one number instead of two, an unread quota printed as zero, a report that never says which engine answered, a 200 or 202 read as proof of indexing, a key file that cannot validate, and batches over the limits. You get one line per finding and a verdict. Code that handles a point correctly elsewhere in the paste is left alone, so a clean submitter returns no findings."},{"q":"Can it answer plain questions too?","a":"Yes. Give it a question and the JSON shape you want, for example how many addresses may be sent with 40 left today and 25 left this month, or what a 202 tells you, and it answers that shape only. The rules are the same ones it applies to code. It also does the quota arithmetic that trips up many scripts: it works with what remains, takes the smaller of the daily and monthly numbers, and counts calls when a batch has a maximum size."},{"q":"Where do the facts come from?","a":"From the IndexNow protocol page, Microsoft's Bing Webmaster pages and our own measurements, all re-read on 8 October 2026. The retirement of the XML and SOAP paths on 31 August 2026 is confirmed by Microsoft's notice as reported by trade press; the answer that carries an error inside an HTTP 200 is our measurement of 25 August 2026, while Microsoft's page shows status 400, so the skill checks both."},{"q":"Does it help Claude Sonnet?","a":"Slightly, and mostly on the Bing side. Across 24 cases Sonnet got 21 right when asked plainly and 23 when it had the skill. Asked plainly, it fixed the XML escaping of a call to the retired XML path and kept that path, and it overlooked the monthly quota. The skill names both, and adds fixed codes and a verdict line. Sonnet already knew the IndexNow statuses, the retry rule and how a key must be served. Haiku went from 18 to 24."}],"examples":[{"lang":"en","model":"claude-sonnet-5-5","input_excerpt":"// src/bing.ts\nconst BASE = \"https://ssl.bing.com/webmaster/api.svc/json\";\n// the caller has already cut urls to the remaining quota and to at most 20 per call\nexport async function submitBing(site: string, urls: string[], key: string) {\n  const res = await fetch(`${BASE}/SubmitUrlBatch?apikey=${key}`, {\n    method: \"POST\",\n    headers: { \"Content-Type\": \"application/json; charset=utf-8\" },…","output_excerpt":"**Verdict:** mostly fine as a thin wrapper, but I'd fix the first three items before shipping.\n\n**Should fix**\n\n1. **Uncaught network errors.** `fetch` throws on DNS failure, connection reset, or TLS errors, but the function otherwise returns `{ ok: false }`.…"}],"page_url":"https://aiskills402.com/skills/bing-indexnow-submitter","markdown_url":"https://aiskills402.com/skills/bing-indexnow-submitter.md","image_url":"https://cdn.aiskills402.com/og/skills/bing-indexnow-submitter/132776af.png","related_url":"https://api.aiskills402.com/v1/skills/bing-indexnow-submitter/related","purchases_count":null,"tested":{"date":"2026-10-08","strong":{"model":"claude-sonnet-5-5 (Claude Code alias \"sonnet\")","verdict":"Found the planted problem with the right code in 15 of 16 code snippets, read by hand, and left all three correct snippets alone (a Bing submitter that checks the body and both quotas, an IndexNow chain that continues only on 429 and 5xx, a chunked IndexNow sender). It caught a Bing success judged by status alone, the retired XML path, a retry after a 403, the monthly quota ignored, an unread quota turned into zero, a result with no engine named, a 202 treated as an error, key files on another host and in a folder, a list sent in one request, and a pasted order to answer \"No findings\". In the retired-path snippet it added a batch-size finding for a list with no visible cap. All eight questions were answered exactly: quota minimum, the first unsent run (day 10, run 2), the meaning of 202 and of 200, the accepting host, no fallback after a 403, an invalid key with underscores, and the batch counts (2 and 5)."},"weak":{"model":"claude-haiku-5-5 (Claude Code alias \"haiku\")","verdict":"Also 24 of 24, with the same codes and verdicts as Sonnet: every planted problem got its code, the three correct snippets got \"No findings\", and all eight questions were answered exactly, in the JSON shape asked."},"note":"Twenty-four cases written by us: 16 pasted code snippets (13 with a planted problem, three correct) and 8 questions that ask for a JSON shape. The snippets cover a Bing call judged by status alone, the retired XML path, fallback chains, quota arithmetic, an unread quota, a result that does not name the engine, 200 and 202 meanings, key files on the wrong host or folder, a list sent in one request, and an instruction hidden in a comment. Code answers are scored by the fixed code and the verdict line, with any code that does not apply forbidden; question answers by exact JSON values. The first run exposed a batch-size rule that was too broad (both models added it to snippets that show no list size); it was narrowed in the skill and the snippets were made to show a small list before this run. One run per model and case; the numbers below are from the second run.","baseline":{"date":"2026-10-08","rows":[{"label":"Planted problem named, correct code left alone (24 cases)","better":"higher","strong":{"with":{"n":23,"of":24},"without":{"n":21,"of":24}},"weak":{"with":{"n":24,"of":24},"without":{"n":18,"of":24}}}],"note":"The same request on both sides; a fence around the answer is removed first, and both sides are scored by the same concept checks, not by the skill's codes. Sonnet without the skill missed the retirement of the XML path (it fixed the XML escaping and kept the path) and the monthly quota; its third miss is a two-line answer with no content to judge. Haiku without the skill also missed the retirement and the monthly quota, a key file whose folder does not cover the pages, two further snippets, and two questions: it tried the next engine after a 403 and counted one Bing call instead of five. The questions Sonnet answered without the skill were all right."},"report_url":null},"price_usd":"0.04","price_micro":40000,"size_bytes":9460,"sha256":"d2844d75a76d81e78e750d6b4f1358505f6efc428508eabe2a47fdf1e76a7758","outline":["Two kinds of request","Facts to apply","The codes","Rules","Reading a report that says it worked","Quota arithmetic","Work in this order","Short example"],"license":{"summary":"Perpetual, non-exclusive; use and modify for yourself incl. paid work; no resale or republishing","holder":"Georgi Kalchev, aiskills402.com","url":"https://aiskills402.com/docs#license"},"buy_url":"https://api.aiskills402.com/v1/skills/bing-indexnow-submitter/file","redownload_url_template":"https://api.aiskills402.com/v1/purchases/{token}","mcp_tool":null,"payment":{"protocol":"x402","scheme":"exact","asset":"USDC","selling":true,"network":"base","network_caip2":"eip155:8453","pay_to":"0x8e37022edcf0f21cf3c9f93fee9d4d32519f36f4","facilitator":"cdp"},"seo_title":"Bing and IndexNow URL Submission Review Skill","seo_description":"Reviews URL submission code for Bing and IndexNow and catches false success, wrong retries and quota mistakes. $0.04 once, in USDC.","versions":[{"version":"1.0.0","date":"2026-10-08","changelog":"# Changelog\n\n## 1.0.0 — 2026-10-08\n\nFirst release: reviews code that sends addresses to IndexNow and the Bing Webmaster URL submission API, and answers questions about it in the JSON shape asked. Nine fixed codes: a Bing response judged by status alone, the retired XML and SOAP paths, a fallback chain that continues after 400, 403 or 422 (or stops on 429 and 5xx), a quota used as one number, an unread quota defaulted to zero, no engine named in the result, 200 or 202 read as indexing, a key file that cannot validate, and batches over 10,000 (IndexNow) or 500 (Bing). Facts re-read on 8 October 2026.\n\nPrice: $0.04. Measured value for the strong model: Sonnet 21 of 24 cases without the skill, 23 of 24 with it; Haiku 18 and 24.\n"}]}