Audit Seo Geo
audit_seo_geoAudit source code for missing titles, meta descriptions, heading issues, canonical errors, hreflang gaps, invalid JSON-LD, missing alt text, robots.txt and llms.txt problems. Get structured findings with rule, severity, and fix.
Instructions
Audit a page, a component or a whole web project for the SEO and GEO signals that are actually in the source: a missing , and one longer or shorter than the width a result gives it; a missing meta description, and one outside the width a snippet gives it; more than one on a page; a heading level skipped in the outline; no canonical link at all; a canonical written as a relative URL in a self-contained document; a canonical left pointing at localhost or a staging host; an hreflang set that never lists the page itself; JSON-LD that does not parse, or that declares no @context or @type; JSON-LD declaring a type whose rich result Google has retired; an image with no alt attribute at all; robots.txt crawl rules, including the AI crawlers behind ChatGPT, Claude, Perplexity and Google's AI surfaces; a robots.txt that names no sitemap; no llms.txt beside it; and content that exists only once a script has run. It reads source and does not measure anything: no request is made to your site, nothing is rendered, and no finding is or can be a Core Web Vitals result, an indexing status or a ranking outcome — so do not call it expecting a vitals or ranking report. Absence is only ever claimed where it can be proven — a self-contained HTML document, or a whole directory — and a scan that hits its cap downgrades every absence claim to an unconfirmed note. Returns markdown plus structured output: findings (rule, severity, message, fix, doc, file, line), a severity summary, and a machine-readable notVisible list of what it could not check. A missing or non-directory path is returned as an error result, not as an empty audit. Pair with audit_performance for the delivery signals, audit_ux_copy for whether the writing earns the click, and seo_geo_guide for the guidance behind the rules.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | A single snippet to audit instead of a directory. Page rules only. | |
| path | No | Directory to audit. Absolute paths are strongly preferred. This is the useful mode — robots.txt, llms.txt, sitemap and project-wide metadata rules all need a directory. | |
| filename | No | Filename for the snippet, e.g. 'index.html' or 'page.tsx'. Load-bearing: a plain HTML file carries its whole <head> and can prove metadata absent, a framework component cannot. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| summary | Yes | Counts by severity. Always agrees with `findings` — it is derived from the same list. | |
| findings | Yes | Every finding, in the order the markdown report lists them. | |
| notVisible | Yes | What this audit structurally could not check, one limitation per entry. Read it as a peer of `findings`: silence on a subject named here is this tool's reach, not a clean result. Nothing any of these tools reports is measured. |