[Agent Tools](https://tools.openkrill.app/) / [Blog](https://tools.openkrill.app/blog)

# How to audit a page's on-page SEO, canonical tag and AI citation score: python.org/about/ across 4 tools

When a public page omits a self-referencing `rel="canonical"` link, hides links behind `javascript:` URLs, or publishes only site-wide `WebSite` schema instead of page-level `Article` or `FAQPage` markup, both classical search crawlers and AI answer engines lose clear signals about what to index and cite. We audited `https://www.python.org/about/` across 4 SEO tools to compare on-page HTML inspection, canonical-tag detection, and AI citation scoring.

By OpenKrill. Published 2026-10-20. Every HTTP status, rule finding and citation score below comes from live calls to [SEO Audit](https://tools.openkrill.app/tools/seo-audit) (`https://seoaudit.openkrill.app/mcp`) and rival packages on 2026-10-20 between 06:20 and 09:45 UTC.

## The short answer

On 2026-10-20, calling `audit_page` on `https://www.python.org/about/` returned in 1,380 ms and found **4 actionable issues** on an otherwise indexable 680-word page: 1 medium-severity finding (**3 `javascript:` links** that crawlers cannot follow) and 3 low-severity findings (**no `rel="canonical"` tag**, **2 generic internal anchor labels** such as `"More"`, and **1 image missing explicit `width` and `height` attributes**). Running `score_page_citation` on the same URL returned a **53 / 100 AI citation readiness score** in 1,220 ms, showing how adding question headings (+11 points), a 2-question FAQ block (+11 points), a sourced number (+8 points) and an author byline (+8 points) would lift the page by 38 points. You can run a site-wide AI crawler check in the browser on [AI Search Audit](https://tools.openkrill.app/ai-search-audit) or browse the workflow on [tools for SEO specialists](https://tools.openkrill.app/for/seo-specialist).

## Step 1: Inspect title, description, canonical tag and crawlable links with audit_page

Call `audit_page` on `https://seoaudit.openkrill.app/mcp` with any public URL. The server fetches the raw HTML with `robots.txt` respected and without executing client-side JavaScript, matching what non-rendering crawlers see:

```
{"method":"tools/call","params":{"name":"audit_page","arguments":{"url":"https://www.python.org/about/"}}}
```

In 1,380 ms, `audit_page` extracted the page's core metadata and matched every failed rule to its official Google Search Central or web.dev documentation URL:

- **Page metadata:** HTTP `200`, `indexable: true`, `language: "en"`, `wordCount: 680`, `internalLinks: 139`, `redirects: 0`, `title: "About Python™ | Python.org"` (`titleLength: 26`), `description: "The official home of the Python Programming Language"` (`descriptionLength: 52`), 1 `<h1>` heading, 1 image (with alt text, missing dimensions) and `structuredDataTypes: ["WebSite"]`.
- **Medium finding (`uncrawlable_links`):** `3 javascript: links` on the page. Fix: use an `<a>` element with a real `href` address so crawlers can follow it.
- **Low finding (`canonical_missing`):** No `rel="canonical"` link element in `<head>`. Fix: add a self-referencing canonical tag to every indexable page so query parameters or protocol variants consolidate cleanly.
- **Low finding (`generic_anchors`):** `2 links, such as "More"`. Fix: replace generic labels with anchor text that names the destination page.
- **Low finding (`images_dimensions`):** `1 of 1 images` lacks explicit `width` and `height` attributes, which can cause Cumulative Layout Shift (CLS) while loading.

## Step 2: Score AI citation readiness and site-wide AI crawler access

To check how well a single page is structured for answer engines to quote, call `score_page_citation`:

```
{"method":"tools/call","params":{"name":"score_page_citation","arguments":{"url":"https://www.python.org/about/"}}}
```

In 1,220 ms, `score_page_citation` graded `https://www.python.org/about/` at **53 / 100** across 10 weighted checks: it earned full marks on `answer_first` (14/14, 12-word opening sentence), `lists_tables` (11/11, 27 list items), `short_sentences` (9/9, median 20 words, 73 percent at 25 words or fewer) and `freshness` (8/8, newest date `2026-10-19`), partial marks on `structured_data` (6/11, only site-level `WebSite` schema) and `heading_hierarchy` (5/9), and 0 points on `question_headings` (0/11), `faq_block` (0/11), `cited_numbers` (0/8) and `author_line` (0/8).

For a domain-level check across up to 10 pages, call `audit_ai_search`:

```
{"method":"tools/call","params":{"name":"audit_ai_search","arguments":{"domain":"python.org"}}}
```

In 2,078 ms (reading 10 pages in 16 requests), `audit_ai_search` scored `python.org` at **4 / 12** (2 pass, 4 partial, 6 fail): `robots.txt` allows `Googlebot`, `GPTBot`, `OAI-SearchBot`, `ClaudeBot` and `PerplexityBot` at `/` and the homepage renders 1,101 words without JavaScript, but `https://www.python.org/llms.txt` returns HTTP `404` and `/download/alternatives/` has no structured comparison table.

## How 4 SEO audit tools compared on python.org/about/

We ran the same single-page check across 4 tools on 2026-10-20 (see also our [AI crawler audit tools comparison](https://tools.openkrill.app/compare/ai-crawler-audit-tools)):

| Tool | Result on python.org/about/ | Wall time | Setup | Score |
| --- | --- | --- | --- | --- |
| **OpenKrill SEO Audit** (`audit_page`) | Exact title (26 chars), description (52 chars), 1 H1, 680 words, 1 image, `WebSite` JSON-LD; flags missing canonical, 3 `javascript:` links, 2 generic anchors and missing image dimensions with Google Search Central links | 1,380 ms | None (remote MCP or web page) | 9.0 / 10 |
| **SiteAudit MCP** (`vdalhambra/siteaudit-mcp`) | Score 91; flags short title, short description and missing canonical across 8 passed checks, but omits rule source URLs | 2,857 ms (2,014 ms startup + 843 ms call) | Local package install | 8.2 / 10 |
| **python-seo-analyzer** (`pyseoanalyzer`) | Misreports `og:title` (`"Welcome to Python.org"`) as the page title, counts 211 words instead of 680, misses the absent canonical tag, and emits 180+ low-value anchor title warnings | 2,011 ms (after switching from Python 3.15 to 3.12) | Local Python CLI install | 6.2 / 10 |
| **Seobility SEO Checker** (`freetools.seobility.net`) | Not run: blocked by an HTTP 403 Cloudflare JavaScript challenge | not run | Interactive browser required | not run |

## How to connect SEO Audit in your AI client

Connect `https://seoaudit.openkrill.app/mcp` directly, or follow the step-by-step setup guides for [SEO Audit in ChatGPT](https://tools.openkrill.app/integrations/seo-audit/chatgpt), [SEO Audit in Claude](https://tools.openkrill.app/integrations/seo-audit/claude), [SEO Audit in Cursor](https://tools.openkrill.app/integrations/seo-audit/cursor) and [SEO Audit in Pi](https://tools.openkrill.app/integrations/seo-audit/pi).

## Frequently asked questions

### What SEO problems does this web page have, and how do I fix them?

Pass the URL to audit_page on https://seoaudit.openkrill.app/mcp. On https://www.python.org/about/, audit_page returned in 1,380 ms and flagged 4 issues with exact fixes: replace 3 javascript: links with crawlable href links, add a self-referencing rel=canonical tag, rewrite 2 generic anchor labels such as "More", and add width and height attributes to the page's image.

### Is my page missing a canonical tag or other on-page SEO basics?

Call audit_page with your URL to inspect its rel=canonical link, title tag, meta description, H1 count, word count, image alt text and dimensions, and JSON-LD structured data types in a single call. If the page is indexable and lacks a canonical link in the HTML head, audit_page triggers the canonical_missing rule and links Google's duplicate-URL consolidation guide.

### What is a free tool that audits a page's title, meta description and headings for SEO?

OpenKrill's SEO Audit MCP server at https://seoaudit.openkrill.app/mcp is free and requires no API key or signup. It includes audit_page for single-URL checks, audit_site for crawling up to 25 pages with robots.txt respected, score_page_citation for 0-to-100 AI citation readiness scoring, and audit_ai_search (also available on the web at tools.openkrill.app/ai-search-audit).

### What is the difference between audit_page and score_page_citation?

audit_page checks technical and on-page search fundamentals from Google Search Central and web.dev (indexability, canonical links, crawlable anchors, headings, meta tags and image dimensions). score_page_citation grades 10 structural habits that make a page easy to quote in answer engines (opening with a direct answer, question headings, an FAQ block, page-level JSON-LD, lists or tables, short sentences, sourced numbers, recent dates and an author byline) on a 100-point scale.

## Sources

- Single-page SEO, citation readiness and AI search runs on `python.org`: [SEO Audit MCP server](https://tools.openkrill.app/tools/seo-audit) (`https://seoaudit.openkrill.app/mcp`) and [AI Search Audit web page](https://tools.openkrill.app/ai-search-audit), recorded on 2026-10-20 between 06:20 and 09:45 UTC.
- Crawlable links and canonical consolidation rules: [Google Search Central: Make your links crawlable](https://developers.google.com/search/docs/crawling-indexing/links-crawlable) and [Consolidate duplicate URLs](https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls).
- Layout shift prevention: [web.dev: Optimize Cumulative Layout Shift](https://web.dev/articles/optimize-cls).
- Rival benchmarks: [SiteAudit MCP](https://github.com/vdalhambra/siteaudit-mcp) and [python-seo-analyzer](https://github.com/sethblack/python-seo-analyzer), tested on 2026-10-20.
