Indexing skill

When the user wants to fix indexing issues from Search Console, use noindex, or implement Google Indexing API.

by kostja94·MIT license·★ 1,006 Stars on the repo·GitHub ↗

Use now

Files of Indexing

kostja94/main1 file shown
SKILL.md
Show the full text137 lines

SEO Technical: Indexing

Guides indexing troubleshooting and fix actions. For how to find and diagnose issues in GSC, see google-search-console.

When invoking: On first use, if helpful, open with 1–2 sentences on what this skill covers and why it matters, then provide the main output. On subsequent use or when the user asks to skip, go directly to the main output.

Scope (Technical SEO)

  • Fix actions: noindex, canonical, content quality, URL Inspection; verify robots.txt does not block (see robots-txt)
  • Noindex: Page-level index control; which pages to exclude and how. Complements robots-txt (path-level crawl control) and google-search-console (Coverage diagnosis)

Initial Assessment

Project context: Read root contextus.md when present and load only the modules relevant to this task. Without Contextus, use available project material or user-provided facts and ask for missing information; do not create a parallel context system.

Identify issue from GSC (see google-search-console for Coverage report, issue types, diagnosis workflow). Then apply fix below.

Crawled - Currently Not Indexed

Cause Action
Low quality, duplicate, off-topic Improve content, fix duplicates, set correct canonical
Static assets (CSS/JS) See below
Feed, share URLs with params Usually OK to ignore; or noindex, canonical to main URL
Important content pages Use URL Inspection, verify canonical/internal links/sitemap, Request indexing
Static Assets (Next.js / Vercel)

Vercel adds unique dpl= params to static assets per deploy, creating many "Crawled - currently not indexed" URLs.

Do Don't
Keep robots.txt allowing /_next/ Do not block /_next/ (breaks CSS/JS loading). See robots-txt
Accept static assets in GSC as expected Do not block /_next/static/css/ or ?dpl=
Use X-Robots-Tag for static assets CSS/JS should not be indexed; no SEO impact

Static assets in "Crawled - currently not indexed" is normal and expected.

Other Issue Types (from GSC Coverage)

Issue Fix
Excluded by «noindex» tag Remove noindex if accidental; keep if intentional
Blocked by robots.txt See robots-txt; remove Disallow for important paths
Redirect / 404 Fix URL or add redirect
Duplicate / Canonical Set correct canonical; usually OK
Soft-404 Page returns 200 but content says "not found" or empty—Google may treat as 404. Fix: return 404 status for truly missing pages; or add real content for 200 pages
Soft-404

A soft-404 occurs when a page returns HTTP 200 but the content indicates the page doesn't exist (e.g. "Page not found" message, empty state). Google may treat it as 404 and exclude from index.

Fix When
Return 404 Page truly doesn't exist; use proper 404 status
Add content Page is intentional (e.g. empty search results); ensure substantive content or use noindex
Redirect If URL moved, use 301 to correct destination

Noindex Usage

  • How: metadata.robots = { index: false } or <meta name="robots" content="noindex"> or X-Robots-Tag
  • Rationale: Not all site content should be indexed; noindex is a valid choice for many pages
  • Caution: Avoid noindex on important content pages
  • With robots.txt: robots.txt = path-level crawl control; noindex = page-level index control. Do not block noindex pages in robots.txt—crawlers must access the page to read the directive. Use both: robots for /admin/, /api/; noindex for /login/, /thank-you/, etc. See robots-txt for when to use which.
  • nofollow ≠ noindex: nofollow controls link equity only; it does not prevent indexing. To exclude from search, use noindex. See page-metadata for meta robots implementation.
Page Types That Typically Need Noindex
Category Page Types Typical Meta Reason
Auth & Account Login, Signup, Password reset, Account dashboard Login: noindex,nofollow; Signup: noindex,follow No search value; login indexed = security risk; signup follow allows crawl of Privacy/Terms links
Admin & Private Admin, Staging, Test pages, Internal tools noindex,nofollow Not for public; avoid discovery
Conversion Endpoints Thank-you, Confirmation, Checkout success, Download gate noindex,follow Post-conversion; no SERP value; allow link equity
System & Utility 404, Internal search results, Faceted/filter URLs noindex,follow or noindex,nofollow Thin/duplicate; 404 = error state
Legal Privacy, Terms, Cookie Policy (optional) Often noindex,follow Low-value indexed; reduces clutter
Duplicate & Thin Printer-friendly, Parameter URLs, Near-duplicate noindex,follow or canonical Duplicate content; canonical preferred when possible
Low-Value Media kit, Feedback board (external), Thin press noindex or index for brand queries Case-by-case

noindex,follow vs noindex,nofollow: Use noindex,follow for most cases—excludes from SERP but allows link equity. Use noindex,nofollow only for login (security), staging, or temporary test pages.

Page Removal Decision Framework

When intentionally removing a page from the web, choose the method based on whether a relevant alternative exists and whether the page should remain accessible:

Scenario Method Rationale
Has a closely related replacement page 301 redirect Preserves accumulated link signals and user flow
Content merged into a new page 301 redirect Direct old URL to the new canonical location
Permanently deleted, no alternative 410 Gone Explicitly signals permanent removal to search engines
Deleted, uncertain if permanent 404 Not Found Safe default; can reinstate later if needed
Still accessible but should not be indexed noindex Page remains available to users; excluded from SERP

Before removing: Check the URL's search traffic, backlinks, internal links, and conversion value. If the page has value, consider updating or merging rather than removing.

Common mistakes:

  • 404-ing pages that have relevant alternatives (wastes accumulated signals)
  • Redirecting all deleted pages to the homepage (breaks user intent)
  • Creating redirect chains (A → B → C) instead of direct redirects
  • Removing pages without cleaning up internal links pointing to them
  • Using robots.txt to block noindex pages (crawler must access the page to read the noindex directive)

Post-removal cleanup:

  1. Remove deleted URLs from XML sitemap; update and resubmit
  2. Update internal links to point directly to the final URL (avoid relying on redirects)
  3. For 301 redirects, ensure the target URL is in the sitemap
  4. In GSC, use URL Inspection to verify important pages; use Removals tool for temporary quick-hide (not permanent — use proper HTTP status or noindex)

Google Indexing API

Type Typical use
JobPosting Job boards
BroadcastEvent Live platforms

Requirements: Enable Indexing API, create service account, add owner in Search Console, request quota (default 200 URLs/day).

Output Format

  • google-search-console: Find and diagnose indexing issues in GSC
  • robots-txt: Path-level crawl control; when to use robots.txt vs noindex; do not block /_next/ or noindex pages
  • page-metadata: Meta robots implementation; noindex vs nofollow
  • xml-sitemap: Submit and maintain sitemap
  • indexnow: Faster indexing for Bing
  • canonical-tag: Resolve duplicate content
1---
2name: indexing
3description: When the user wants to fix indexing issues from Search Console, use noindex, or implement Google Indexing API. Also use when the user mentions "fix indexing," "not indexed," "Crawled - currently not indexed," "discovered - currently not indexed," "index coverage," "noindex," "noindex tag," "pages not indexed," "why not indexed," "request indexing," or "Google Indexing API." For sitemap, use xml-sitemap.
4metadata:
5 version: 1.0.1
6---
7 
8# SEO Technical: Indexing
9 
10Guides indexing troubleshooting and fix actions. For how to find and diagnose issues in GSC, see **google-search-console**.
11 
12**When invoking**: On **first use**, if helpful, open with 1–2 sentences on what this skill covers and why it matters, then provide the main output. On **subsequent use** or when the user asks to skip, go directly to the main output.
13 
14## Scope (Technical SEO)
15 
16- **Fix actions**: noindex, canonical, content quality, URL Inspection; verify robots.txt does not block (see **robots-txt**)
17- **Noindex**: Page-level index control; which pages to exclude and how. Complements **robots-txt** (path-level crawl control) and **google-search-console** (Coverage diagnosis)
18 
19## Initial Assessment
20 
21**Project context:** Read root `contextus.md` when present and load only the modules relevant to this task. Without Contextus, use available project material or user-provided facts and ask for missing information; do not create a parallel context system.
22 
23Identify issue from GSC (see **google-search-console** for Coverage report, issue types, diagnosis workflow). Then apply fix below.
24 
25## Crawled - Currently Not Indexed
26 
27| Cause | Action |
28|-------|--------|
29| Low quality, duplicate, off-topic | Improve content, fix duplicates, set correct canonical |
30| Static assets (CSS/JS) | See below |
31| Feed, share URLs with params | Usually OK to ignore; or noindex, canonical to main URL |
32| Important content pages | Use URL Inspection, verify canonical/internal links/sitemap, Request indexing |
33 
34### Static Assets (Next.js / Vercel)
35 
36Vercel adds unique `dpl=` params to static assets per deploy, creating many "Crawled - currently not indexed" URLs.
37 
38| Do | Don't |
39|----|-------|
40| Keep robots.txt allowing `/_next/` | Do not block `/_next/` (breaks CSS/JS loading). See **robots-txt** |
41| Accept static assets in GSC as expected | Do not block `/_next/static/css/` or `?dpl=` |
42| Use X-Robots-Tag for static assets | CSS/JS should not be indexed; no SEO impact |
43 
44Static assets in "Crawled - currently not indexed" is **normal and expected**.
45 
46## Other Issue Types (from GSC Coverage)
47 
48| Issue | Fix |
49|-------|-----|
50| Excluded by «noindex» tag | Remove noindex if accidental; keep if intentional |
51| Blocked by robots.txt | See **robots-txt**; remove Disallow for important paths |
52| Redirect / 404 | Fix URL or add redirect |
53| Duplicate / Canonical | Set correct canonical; usually OK |
54| **Soft-404** | Page returns 200 but content says "not found" or empty—Google may treat as 404. Fix: return 404 status for truly missing pages; or add real content for 200 pages |
55 
56### Soft-404
57 
58A soft-404 occurs when a page returns HTTP 200 but the content indicates the page doesn't exist (e.g. "Page not found" message, empty state). Google may treat it as 404 and exclude from index.
59 
60| Fix | When |
61|-----|------|
62| **Return 404** | Page truly doesn't exist; use proper 404 status |
63| **Add content** | Page is intentional (e.g. empty search results); ensure substantive content or use noindex |
64| **Redirect** | If URL moved, use 301 to correct destination |
65 
66## Noindex Usage
67 
68- **How**: `metadata.robots = { index: false }` or `<meta name="robots" content="noindex">` or X-Robots-Tag
69- **Rationale**: Not all site content should be indexed; noindex is a valid choice for many pages
70- **Caution**: Avoid noindex on important content pages
71- **With robots.txt**: robots.txt = path-level crawl control; noindex = page-level index control. Do **not** block noindex pages in robots.txt—crawlers must access the page to read the directive. Use both: robots for /admin/, /api/; noindex for /login/, /thank-you/, etc. See **robots-txt** for when to use which.
72- **nofollow ≠ noindex**: nofollow controls link equity only; it does **not** prevent indexing. To exclude from search, use noindex. See **page-metadata** for meta robots implementation.
73 
74### Page Types That Typically Need Noindex
75 
76| Category | Page Types | Typical Meta | Reason |
77|----------|------------|--------------|--------|
78| **Auth & Account** | Login, Signup, Password reset, Account dashboard | Login: `noindex,nofollow`; Signup: `noindex,follow` | No search value; login indexed = security risk; signup follow allows crawl of Privacy/Terms links |
79| **Admin & Private** | Admin, Staging, Test pages, Internal tools | `noindex,nofollow` | Not for public; avoid discovery |
80| **Conversion Endpoints** | Thank-you, Confirmation, Checkout success, Download gate | `noindex,follow` | Post-conversion; no SERP value; allow link equity |
81| **System & Utility** | 404, Internal search results, Faceted/filter URLs | `noindex,follow` or `noindex,nofollow` | Thin/duplicate; 404 = error state |
82| **Legal** | Privacy, Terms, Cookie Policy (optional) | Often `noindex,follow` | Low-value indexed; reduces clutter |
83| **Duplicate & Thin** | Printer-friendly, Parameter URLs, Near-duplicate | `noindex,follow` or canonical | Duplicate content; canonical preferred when possible |
84| **Low-Value** | Media kit, Feedback board (external), Thin press | `noindex` or index for brand queries | Case-by-case |
85 
86**noindex,follow vs noindex,nofollow**: Use `noindex,follow` for most cases—excludes from SERP but allows link equity. Use `noindex,nofollow` only for login (security), staging, or temporary test pages.
87 
88## Page Removal Decision Framework
89 
90When intentionally removing a page from the web, choose the method based on whether a relevant alternative exists and whether the page should remain accessible:
91 
92| Scenario | Method | Rationale |
93|----------|--------|-----------|
94| Has a closely related replacement page | **301 redirect** | Preserves accumulated link signals and user flow |
95| Content merged into a new page | **301 redirect** | Direct old URL to the new canonical location |
96| Permanently deleted, no alternative | **410 Gone** | Explicitly signals permanent removal to search engines |
97| Deleted, uncertain if permanent | **404 Not Found** | Safe default; can reinstate later if needed |
98| Still accessible but should not be indexed | **noindex** | Page remains available to users; excluded from SERP |
99 
100**Before removing**: Check the URL's search traffic, backlinks, internal links, and conversion value. If the page has value, consider updating or merging rather than removing.
101 
102**Common mistakes**:
103- 404-ing pages that have relevant alternatives (wastes accumulated signals)
104- Redirecting all deleted pages to the homepage (breaks user intent)
105- Creating redirect chains (A → B → C) instead of direct redirects
106- Removing pages without cleaning up internal links pointing to them
107- Using `robots.txt` to block noindex pages (crawler must access the page to read the noindex directive)
108 
109**Post-removal cleanup**:
1101. Remove deleted URLs from XML sitemap; update and resubmit
1112. Update internal links to point directly to the final URL (avoid relying on redirects)
1123. For 301 redirects, ensure the target URL is in the sitemap
1134. In GSC, use URL Inspection to verify important pages; use Removals tool for temporary quick-hide (not permanent — use proper HTTP status or noindex)
114 
115## Google Indexing API
116 
117| Type | Typical use |
118|------|-------------|
119| JobPosting | Job boards |
120| BroadcastEvent | Live platforms |
121 
122**Requirements**: Enable Indexing API, create service account, add owner in Search Console, request quota (default 200 URLs/day).
123 
124## Output Format
125 
126- **Action items**: Prioritized fixes
127- **References**: [Page indexing report](https://support.google.com/webmasters/answer/7440203)
128 
129## Related Skills
130 
131- **google-search-console**: Find and diagnose indexing issues in GSC
132- **robots-txt**: Path-level crawl control; when to use robots.txt vs noindex; do not block /_next/ or noindex pages
133- **page-metadata**: Meta robots implementation; noindex vs nofollow
134- **xml-sitemap**: Submit and maintain sitemap
135- **indexnow**: Faster indexing for Bing
136- **canonical-tag**: Resolve duplicate content
137 

Discussion

Alternatives

Agentic Browsing ReadinessAudit and fix agent readiness: the Lighthouse Agentic Browsing fraction, accessibility tree for agents, robots.txt and Content-Signal for AI agents, WAF treatment of agent traffic, llms.txt, Markdown delivery, ai-catalog.json, /.well-known discovery files, and WebMCP tools. Exclude AI citability and brand signals (seo-geo) and commerce protocol depth (seo-ecommerce).Marketing · MITBacklink Profile AnalysisBacklink profile analysis: referring domains, anchor text distribution, toxic link detection, competitor gap analysis. Works with free APIs (Moz, Bing Webmaster, Common Crawl) and DataForSEO extension. Use when user says backlinks, link profile, referring domains, anchor text, toxic links, link gap, link building, disavow, or backlink audit.Marketing · MIT/setup-cmsConnect a CMS to notfair SEO tools. Guides users through configuring WordPress, Strapi, Contentful, or Ghost — tests the connection, and writes credentials to .env.local. Once set up, seo-analysis automatically cross- references CMS content against Google Search Console data. Use whenever the user says "connect my CMS", "set up WordPress", "configure Strapi", "add Contentful", "connect Ghost", or "CMS setup". Also trigger if the user asks why no CMS data appears in a seo-analysis report. · MITBacklink checkBacklink profile for any domain — referring domains, authority, anchors, new/lost links, and a side-by-side vs a competitor. Use when asked "check my backlinks", "backlink profile of X", "who links to them", or "link gap vs competitor".Marketing · MIT