skills/seo/technical/indexing/SKILL.md
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.
npx skillsauth add kostja94/marketing-skills indexingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
Check for project context first: If .claude/project-context.md or .cursor/project-context.md exists, read it for site URL and indexing goals.
Identify issue from GSC (see google-search-console for Coverage report, issue types, diagnosis workflow). Then apply fix below.
| 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 |
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.
| 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 |
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 |
metadata.robots = { index: false } or <meta name="robots" content="noindex"> or X-Robots-Tag| 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.
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:
robots.txt to block noindex pages (crawler must access the page to read the noindex directive)Post-removal cleanup:
| 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).
data-ai
When the user wants to add or optimize Twitter Card metadata for X (Twitter) link previews. Also use when the user mentions "Twitter Card," "twitter:card," "twitter:image," "twitter:title," "X preview," or "tweet preview." For Facebook/LinkedIn previews, use open-graph.
testing
When the user wants to add or optimize Open Graph metadata for social sharing. Also use when the user mentions "Open Graph," "og:tags," "og:title," "og:image," "og:description," "Facebook preview," "LinkedIn preview," or "social share preview." For X (Twitter) link previews, use twitter-cards. For SERP title/description, use title-tag and meta-description.
tools
When the user wants to create, optimize, or structure Terms of Service page. Also use when the user mentions "terms of service," "terms and conditions," "terms of use," "user agreement," "ToS," "legal terms," "service agreement," or "terms page." For legal overview page, use legal-page-generator.
development
When the user wants to create or optimize a shipping or delivery information page. Also use when the user mentions "shipping," "delivery," "shipping policy," "delivery times," "shipping page," "free shipping," "shipping rates," "delivery options," "shipping info," "cross-border shipping," "international delivery," or "order tracking." For legal overview, use legal-page-generator.