indexing
Skill0 starsChanged 2 days agoMITView on GitHub
Diagnose why a page is not indexed by Google or Bing and speed up discovery the legitimate way. Maps Search Console page indexing statuses (Crawled - currently not indexed, Discovered - currently not indexed, Duplicate without user-selected canonical, Soft 404, Blocked by robots.txt, noindex, Redirect error and more) to causes and fixes, runs URL Inspection through the API, explains Request Indexing limits, and submits changed URLs to IndexNow for Bing. Use when the user says 'not indexed', 'why isn't my page on Google', 'URL is unknown to Google', 'request indexing', 'IndexNow', 'new page not showing', or 'Discovered currently not indexed'.
5 other projects use a version of this.
Adopted by
Most recently taken up by
- epicx-labs/keytomic-claude-plugintheir own version, first seen Nov 1, 2026
- austintgriffith/ethskillstheir own version, first seen Oct 8, 2026
- BankrBot/openclaw-skillstheir own version, first seen Oct 8, 2026
- BankrBot/skillstheir own version, first seen Apr 28, 2026
- ffsshhttiikk/opencode-agents-skillstheir own version, first seen Feb 28, 2026
Other versions5 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 5
- BankrBot/skills★ 1.2ksame name
- BankrBot/openclaw-skills★ 1.2ksame name
- austintgriffith/ethskills★ 303same name
- ffsshhttiikk/opencode-agents-skills★ 2same name
- epicx-labs/keytomic-claude-plugin★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository44 other files it gives its agents.
- AGENTS.mdAGENTS.md
- agent-readySkill
- ai-citationsSkill
- ai-crawlersSkill
- ai-logsSkill
- ai-trackerSkill
- backlinksSkill
- cannibalizationSkill
- canonicalsSkill
- citabilitySkill
- comparison-pagesSkill
- competitorsSkill
- content-briefSkill
- content-decaySkill
- content-qualitySkill
- core-web-vitalsSkill
- ecommerce-seoSkill
- ga4-aiSkill
- ghost-publishSkill
- gsc-bingSkill
- hreflangSkill
- imagesSkill
- internal-linksSkill
- llms-txtSkill
- local-seoSkill
- measure-rollbackSkill
- onpageSkill
- platformsSkill
- pseo-quality-gateSkill
- quick-winsSkill
- redirects-migrationSkill
- schemaSkill
- seo-planSkill
- seo-reportSkill
- setupSkill
- site-architectureSkill
- sitemapsSkill
- static-site-publishSkill
- sxoSkill
- tech-auditSkill
- titles-metaSkill
- topic-clustersSkill
- weekly-checkSkill
- wordpress-publishSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
15 rules. About 0 are common, 12 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈12
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 22
Check in order: status and chain (200, no error redirect), robotsTxtGooglebot.allowed, noindex, xRobots, canonical (does it point to …
- Distinctive: line 23
Ask Google what it knows:
- Distinctive: line 32
Check again after Google has had time.
- Distinctive: line 55
Not in the page indexing documentation read: labels such as "Duplicate, submitted URL not selected as canonical" or "Crawl anomaly".
- Very specific: line 62
Internal links: Every page you care about needs a link from at least one other page, as a crawlable <a href>.
- Very specific: line 65
Google Indexing API: Only for pages with JobPosting or BroadcastEvent embedded in a VideoObject.
- Distinctive: line 75
Do not resubmit unchanged URLs to IndexNow, or hit Request Indexing repeatedly.
- Distinctive: line 76
Do not block a page in robots.txt to keep it out of the index: Google can still index the URL and cannot read a noindex on it.
- Distinctive: line 77
Do not use noindex to choose between duplicate pages on the same site.
- Distinctive: line 78
Do not pay for "indexing services" or use the Indexing API for non-job, non-livestream pages.
- Distinctive: line 79
Do not assume every page will be indexed.
- Distinctive: line 80
Do not remove a sitemap or redirect a page to "retry" indexing.
- Distinctive: line 90
Never promise a date for indexing.
- Distinctive: line 91
Read-only. The CLI does not request indexing.
- Distinctive: line 92
Do not inspect more URLs than needed.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Indexing: find the cause, then act
Goal: a specific cause for each non-indexed URL, taken from Google's own status for that URL, and a fix the user can make. Indexing is never guaranteed. Google says requesting a crawl does not guarantee a page appears in results quickly or at all, so the answer is often "fix the cause and wait", and the skill says so.
Inputs
- The URL(s) and the Search Console property (see the
setupskill for access).inspectneeds Full permission. - Whether the page is new or was indexed before.
Steps
- See what a crawler sees (works without credentials):
Check in order:npx sitetiller page https://example.com/the-page --jsonstatusandchain(200, no error redirect),robotsTxtGooglebot.allowed,noindex,xRobots,canonical(does it point to itself?),words. Any problem here is the likely cause; stop and fix it first. - Ask Google what it knows:
Output fields (from Google's URL Inspection API):npx sitetiller inspect example.com https://example.com/the-page --jsonverdict(PASS, PARTIAL, FAIL, NEUTRAL),coverageState(Google's text, as in the page indexing report),robotsTxtState(ALLOWED or DISALLOWED),indexingState(INDEXING_ALLOWED, BLOCKED_BY_META_TAG, BLOCKED_BY_HTTP_HEADER, BLOCKED_BY_ROBOTS_TXT),lastCrawlTime,pageFetchState(SUCCESSFUL, SOFT_404, BLOCKED_ROBOTS_TXT, NOT_FOUND, ACCESS_DENIED, SERVER_ERROR, REDIRECT_ERROR, ACCESS_FORBIDDEN, BLOCKED_4XX, INTERNAL_CRAWL_ERROR, INVALID_URL),googleCanonical,userCanonical,link(opens the same result in Search Console).googleCanonicalis absent when the page is not indexed. Limits: the API shows the version in Google's index. It cannot test a live URL; use the "Test live URL" button in Search Console for that. Quota: 2,000 queries per day and 600 per minute per property. Inspect the important pages, not the whole site. - Match the status to a cause with the table below. Statuses are Google's names from the Page indexing report.
- Fix, then validate. In Search Console use "Validate fix" on the issue. Google says validation typically takes up to about two weeks and can take much longer.
- Tell Google about the fix (see "Speeding discovery").
- Check again after Google has had time. Google says crawling can take from a few days to a few weeks for a new page or site.
Status map
| Status in Search Console | What Google says | Do this |
| Server error (5xx) | Googlebot got a 5xx | fix availability; check Crawl Stats host status; re-inspect |
| Redirect error | chain too long, loop, URL too long, or bad URL | repair the chain (page shows it); point to the final URL |
| Blocked by robots.txt | robots.txt blocks crawling | remove the block to index; to keep a page out, unblock and use noindex (a blocked page's noindex is never read) |
| URL marked 'noindex' | a noindex tag or header | remove it if the page should be indexed |
| Soft 404 | page reads "not found" but returns 200 | return a real 404/410 for missing pages, or add real content |
| Blocked due to unauthorized request (401) | Googlebot was asked to log in | remove the login or allow verified Googlebot |
| Not found (404) | page returned 404 | none if intentional; 301 to the new page if it moved |
| Blocked due to access forbidden (403) | server refused Googlebot | allow unauthenticated access for Googlebot |
| Blocked due to other 4xx issue | another 4xx | debug with URL Inspection |
| Crawled - currently not indexed | Google crawled the page and chose not to index it. Common, not always a problem | for an important page, improve and differentiate the content and internal links; no quick fix exists |
| Discovered - currently not indexed | Google knows the URL, has not crawled it, rescheduled to avoid overloading the site | usually wait; check the server can handle crawling |
| Alternate page with proper canonical tag | the page points to a canonical that is indexed | none; intended |
| Duplicate without user-selected canonical | duplicate of another page, no canonical declared, Google chose one | declare a canonical or make the page substantially different (see canonicals) |
| Duplicate, Google chose different canonical than user | Google prefers another URL | inspect both; make sure the declared canonical is truly the better, similar page |
| Page with redirect | non-canonical URL that redirects | usually none; only the target is indexed |
| Indexed, though blocked by robots.txt (warning) | indexed via links despite the block | to keep out: remove the block and use noindex; to index: unblock |
| Page indexed without content (warning) | Google could not read the content (for example cloaking or an unsupported format) | inspect the page and check what Google fetched |
Not in the page indexing documentation read: labels such as "Duplicate, submitted URL not selected as canonical" or "Crawl anomaly". If the user sees one, take Google's description from the issue's detail page; do not guess.
Two causes the status table cannot show:
- Mobile mismatch. Google indexes the mobile version; content, robots meta and structured data must match. Check it by hand.
- JavaScript. A
noindexin the original HTML may stop rendering; JavaScript cannot remove it.
Speeding discovery (what works and what does not)
- Internal links. Every page you care about needs a link from at least one other page, as a crawlable
<a href>. This is the first thing to do for a "Discovered" or orphan page (linkscommand,tech-auditskill). - Sitemap. Lists the URLs and helps discovery, especially on new sites (
sitemapsskill). - Request Indexing in Search Console (URL Inspection, owner or Full user). Google confirms a quota exists and publishes no number. Repeating a request for the same URL does not make it faster. Use it for a handful of important URLs after a fix. There is no API for it in this toolset.
- Google Indexing API. Only for pages with
JobPostingorBroadcastEventembedded in aVideoObject. Google says it does not support general pages. Do not recommend it for normal content. - IndexNow (Bing and other participating engines). Submit URLs that were added, updated or removed:
Needsnpx sitetiller indexnow https://example.com/new-page https://example.com/updated-page --json npx sitetiller indexnow --file changed-urls.txt --jsonINDEXNOW_KEYand the key file on the site (seesetup). The tool checks the key file first. Output:host,keyLocation,batches[]withstatus,meaning,count. Codes: 200 submitted, 202 received and key validation pending, 400 invalid format, 403 key invalid, 422 URLs not on the host or key mismatch, 429 too many requests. A 200 only means the engine received the URLs; IndexNow documents no indexing guarantee. The IndexNow FAQ lists Amazon, Bing, Naver, Seznam.cz, Yandex and Yep and does not mention Google, so do not expect Google to act on it. All URLs in one request must share a host; a request may hold up to 10,000 URLs. - Bing Webmaster Tools. Submit the sitemap and inspect the URL there. The
enginescommand shows queries where Bing has no data compared with Google (gsc-bingskill).
What not to do
- Do not resubmit unchanged URLs to IndexNow, or hit Request Indexing repeatedly. Both are documented as ineffective or discouraged.
- Do not block a page in robots.txt to keep it out of the index: Google can still index the URL and cannot read a noindex on it.
- Do not use noindex to choose between duplicate pages on the same site; Google advises against it for canonical selection.
- Do not pay for "indexing services" or use the Indexing API for non-job, non-livestream pages. Neither is supported by Google's documentation.
- Do not assume every page will be indexed. Google calls "Crawled - currently not indexed" common and its own decision to make.
- Do not remove a sitemap or redirect a page to "retry" indexing. Fix the cause.
Output to the user
- For each URL: the cause, with the command result that shows it (
pageandinspectfields). - The fix, in one sentence, and who does it.
- What to do next (validate fix, internal links, IndexNow for Bing) and when to look again, with Google's own time ranges.
- What is unknown: the Request Indexing quota is unpublished; indexing is not guaranteed.
Guardrails
- Quote Google's status names exactly; do not invent statuses or causes.
- Never promise a date for indexing. Google gives ranges (a few days to a few weeks; validation about two weeks, sometimes much longer).
- Read-only. The CLI does not request indexing; the user presses the button in Search Console.
- Do not inspect more URLs than needed; the API quota is 2,000 per day per property.
References
references/sources.md: Google, Bing and IndexNow documentation, checked 2026-11-12.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

