SEO

Debug why a page is not indexed

Find out why a specific page is missing from Google, or used to show up in search and has now disappeared: inspect its index status and coverage state, the canonical Google chose, robots.txt and noindex blocks, fetch errors and sitemap membership, then check the live page, and end with the one fix that applies.

The playbook

"Why isn't this page indexed" has about eight possible answers, and Search Console's URL Inspection API gives most of them directly. The job is to read the inspection result correctly, confirm it against the live page, and stop at one diagnosis.

Steps

  1. Confirm the URL belongs to the connected property. The URL must be under the property this connection is pinned to. If the site has both a domain property and a URL-prefix property, or www and non-www, run google_search_console.list_sites and check. An inspection against the wrong property fails or lies.

  2. Inspect the URL. google_search_console.inspect_url with the URL (up to ten per call if several pages are affected). Read every column: verdict, coverage state, indexing state, robots.txt state, page fetch state, last crawl time, the Google canonical against the user canonical, sitemaps, referring URLs, and rich result issues.

  3. Diagnose from the coverage state.

    • "URL is unknown to Google": Google has never seen it. Not in any sitemap and no referring URLs is the usual reason. Continue with sitemap-health and internal-link-audit.
    • "Discovered - currently not indexed": Google knows the URL and has not bothered to crawl it. A priority problem: too few internal links, or a very large site. Internal links and a fresh sitemap entry are the levers.
    • "Crawled - currently not indexed": Google fetched it and chose not to index it. The hardest case. Usually thin or near-duplicate content, or a page type Google has decided is low value. Check whether similar pages on the site are indexed and how this one differs.
    • Blocked by robots.txt (robots.txt state DISALLOWED or fetch state BLOCKED_ROBOTS_TXT): fetch /robots.txt yourself and find the matching rule.
    • Excluded by noindex (indexing state BLOCKED_BY_META_TAG or BLOCKED_BY_HTTP_HEADER): fetch the page and confirm the tag or header. Ask whether it is intended before calling it a bug.
    • Fetch errors (NOT_FOUND, SERVER_ERROR, SOFT_404, REDIRECT_ERROR, ACCESS_DENIED): fetch the page now and compare with the last crawl time. If it is fine now, the error was transient and a recrawl fixes it; if not, the page is broken.
    • Google chose a different canonical (google canonical differs from user canonical, or the coverage state says so): Google decided another URL is the real one. Inspect that URL too. Either the site's canonical tag is wrong, or the two pages are near-duplicates and Google is right.
    • "Alternate page with proper canonical tag": working as intended. The canonical is indexed instead. Not a problem unless the canonical is wrong.
  4. Check the live page with your own browsing. Status code, the canonical tag, meta robots and X-Robots-Tag, and whether the main content is present in the raw HTML. Compare with what Google saw at the last crawl time; a fix deployed after that time has not been seen yet.

  5. Check whether it ever earned impressions. google_search_console.query with dimensions: ["page", "date"] over 90 days ending 3 days ago and a filters entry with dimension: "page", operator: "equals" and the URL. A page that had impressions and then stopped was indexed and dropped; a page with none may never have been.

  6. Report. Per URL: the coverage state, the diagnosis in one sentence, the evidence columns that support it, the single fix, and how to verify it: re-inspect after the next crawl, which cannot be scheduled and may take days to weeks. Do not promise when.

Gotchas

  • Inspection reports the indexed version, not the live one. If the page changed after the last crawl time, the result describes the old page.
  • The API is quota-limited per property. A handful of URLs is the right scale; for a whole section of the site continue with index-coverage-review, which samples.
  • Not indexed can be correct. Tag pages, filtered listings, thin variants and paginated archives are often better left out. Say when the state looks intended.
  • A canonical pointing at another page the site owns is not a bug by itself. It is a decision; the question is whether it is the right one.
  • Property mismatches produce confident nonsense. Inspecting https://www.example.com/page against a property for https://example.com/ returns an error or an unrelated result.

Sequel CLI

Install Sequel skills into your agent

One command connects your agent to Sequel and installs the Sequel skill, so it knows this playbook exists and reads it when a question matches. The CLI signs you in, provisions a scoped API key and writes the config for you.

Already have an MCP client?

https://api.sequel.sh/mcp

Point it at this URL and sign in when prompted, or send an API key from Settings as a Bearer token. Skills come with it; nothing else to install. Manual setup per client

  1. 1

    Install the Sequel CLI

    One line installs the latest CLI with whatever package manager you have.

    curl -fsSL https://sequel.sh/install | sh
  2. 2

    Sign in

    Authenticate in your browser and pick an organization.

    sequel login
  3. 3

    Install into your agent

    Writes the MCP config and installs the Sequel skill file for agents that support skills. Pick an agent from the list, or target one directly by its slug.

    sequel install
    • Claude Code
      sequel install claude-code
    • Claude
      sequel install claude
    • Cursor
      sequel install cursor
    • VS Code
      sequel install vscode
    • Windsurf
      sequel install windsurf
    • Zed
      sequel install zed
    • Codex
      sequel install codex
    • OpenClaw
      sequel install openclaw
    • Hermes
      sequel install hermes

More like this

Other SEO skills

Analyze high-ranking landing pages

See which pages perform best in organic search: the landing pages that earn the most clicks and impressions, the queries behind each one, and how they compare with competitor estimates from Ahrefs.

Audit internal links to important pages

Audit the site's own internal linking: crawl navigation and body links between the site's pages to find valuable pages with too few inbound internal links, orphan pages, and the handful of cross-links that would lift striking-distance rankings.

Audit or draft an llms.txt

Check whether the site has an llms.txt, whether it follows the spec and points at the pages that matter, and if it is missing draft one from the pages Search Console shows people actually find, so AI assistants get a curated map of the site instead of guessing.

Audit redirect chains and loops

Follow every redirect on the URLs Search Console still sends traffic to, on the sitemap, and on backlinked pages, to find chains, loops, redirects to the homepage, and temporary redirects that should be permanent, so link equity and crawl budget stop leaking.

Audit referring domain quality

Grade the domains linking to a site by authority, traffic and link count, spot concentration risk and link-farm patterns, and separate the referring domains that carry weight from the ones that are noise.

Audit titles and meta descriptions

Compare the title and meta description of each top page against the queries it actually ranks for in Search Console, and find missing, duplicate, truncated or misaligned metadata on the pages where a rewrite would earn the most clicks.

Put this playbook to work

Connect a source, ask the question, and the agent follows these steps. Free to start.