---
name: seofix-audit
description: Audit any website for SEO, GEO (AI search citations) and AEO (answer boxes and voice), then deliver a ready-to-implement Fix Pack with full page copy, schema and code for every finding. Use when someone shares a URL or domain and asks for an SEO audit, site review, ranking help, AI search visibility or fixes.
---

# ClaudeSEOFix Audit

An audit that ends with the work done, not a to-do list. Every finding ships with the fix: rewritten metadata, complete page copy for pages that should exist, paste-ready JSON-LD, code snippets and step-by-step checks. Branding on all deliverables: **ClaudeSEOFix.com**.

## Operating principles

1. **Evidence before verdicts.** Never report something as missing until it has been checked in the page's real HTML. Markdown converters (including WebFetch) often strip `<script type="application/ld+json">`, `<head>` tags and hidden accordion content.
2. **Every finding gets a fix.** If you can't write the fix, it isn't a finding yet. It's a question for the owner.
3. **Write from the site's own facts.** Page copy, schema and FAQs use only prices, services, names and claims published on the site or given by the user. Anything unknown is written as `[PLACEHOLDER]` and listed for the owner. Never invent statistics, results, reviews, dates or credentials.
4. **Be specific to this site.** Quote the actual title, heading or sentence. Name the URL. Generic advice ("improve your content") is not allowed.
5. **Name the limits.** Rankings, backlinks, search volume and field Core Web Vitals need external data. Say which tool provides each and don't guess.

## Workflow

Start immediately with a Full audit unless the user asks for a Quick one. Quick means: homepage plus up to 5 key pages, top 10 findings, and fixes for Critical and High items only. Set up a task list: Discover → Verify → Market check → Score → Fix Pack → Report → QA.

### 1. Discover

- Fetch the homepage, `/robots.txt`, `/sitemap.xml` (and any child sitemaps) and, if present, `/llms.txt`.
- Build a URL inventory from the sitemap, navigation, footer and in-body links. Record each URL's apparent type: home, service or product, category, article, case study, team, about, contact, legal or utility.
- Test common paths the site may lack (`/about`, `/blog`, `/faq`, `/pricing`) plus one nonsense URL, to confirm real 404 status codes.
- Full audit: fetch every content URL. Skip legal pages, login and account pages, and thank-you pages. Quick audit: the most commercially important pages.

### 2. Verify in real HTML

For every audited page, capture these from the raw HTML or a live browser DOM (not converted text):

- `<title>`, meta description, canonical, meta robots, `html lang`, hreflang, viewport
- every JSON-LD block: parse it, list its `@type`s, and note parse errors
- H1–H3 outline, image count, images missing alt text, lazy-loading, image formats and weights
- internal and external links with anchor text; nav and footer presence
- whether key content (FAQ answers, prices) is in the initial HTML or injected by JavaScript

Preferred method: open the site in an available browser tool and run one script that `fetch()`es each same-origin URL, parses it with `DOMParser` and returns a JSON summary. Fall back to `curl` from the shell if the network allows it. Use WebFetch only for reading copy.

**Crawler consistency check:** if two methods return different versions of a page (a different title, a missing canonical, older content), report it as a finding. It usually means a stale CDN or edge cache, or bot-specific rendering. Include a Search Console "URL Inspection → Test live URL" fix.

### 3. Market check

- **Intent map:** list the 10–20 queries a buyer would use (service + location, price questions, comparisons, "best X in Y"). Map each query to the page that should rank for it. Any query without a page becomes a content-gap finding.
- **Search reality:** run the top 5–8 queries through web search. Record who ranks and what format wins (list, table, local pack, video).
- **GEO probe:** ask 8–12 natural-language buyer questions through web search. Note whether the brand is cited or mentioned, and which sources are cited instead. Report a simple citation rate (cited in X of N answers), the top competing sources, and what those sources have that the site lacks.
- **Local signals** (for a local business): consistent name, address and phone; opening hours; a Google Business Profile link; and the local-language search layer. If the market searches in another language or script, check whether the site serves it.

### 4. Score with the checklist

Score each check **Pass (1)**, **Partial (0.5)**, **Fail (0)** or **N/A** (excluded). Dimension score = weighted points earned ÷ weighted points available × 10, rounded to one decimal place. Show the checklist in the report so the score can be reproduced.

**SEO (technical and on-page)**

| Check | Weight |
|---|---|
| Every indexable page returns 200, has a self-referencing canonical, and has no stray noindex | 3 |
| Unique titles, 30–60 characters, primary term near the front | 3 |
| Unique meta descriptions, 70–160 characters, specific and with a call to action | 2 |
| Exactly one descriptive H1; logical H2/H3s containing search terms | 2 |
| Clean, readable URLs; real 404s; no redirect chains | 1 |
| Sitemap declared, complete, with truthful lastmod | 1 |
| Every page reachable from the nav or body links; descriptive anchor text | 2 |
| Commercial page for every core offer and priority query | 3 |
| Alt text on content images; modern formats; sensible weights | 1 |
| Open Graph and Twitter tags with page-specific images | 1 |
| Server-rendered primary content; performance measured, or flagged as unmeasured | 1 |

**GEO (AI citation readiness)**

| Check | Weight |
|---|---|
| Organisation entity: schema with `@id`, logo, contact, address, `sameAs`, founder, founding date | 3 |
| Real, named experts with credentials, profile links and Person schema | 3 |
| Verifiable proof: case studies with results, attributed testimonials, client links | 3 |
| Fact-dense copy (prices, timelines, specs, numbers) stated plainly | 2 |
| Original expertise content (guides, data, point of view) | 3 |
| Consistent brand name across the site, schema and social profiles | 1 |
| AI crawlers allowed; content in the HTML; llms.txt present | 1 |
| GEO probe citation rate (≥50% Pass, 1–49% Partial, 0 Fail) | 3 |

**AEO (answer extraction)**

| Check | Weight |
|---|---|
| Direct 40–60 word answers under question-style headings | 3 |
| FAQPage schema that matches visible FAQs on every page that has them | 2 |
| Lists and real HTML tables for steps and comparisons | 2 |
| Clear definitions ("X is…") for core terms | 1 |
| Long-tail and pre-purchase questions covered | 2 |
| Local answer data: hours, area served, phone, map | 1 |
| Local-language answers where the market uses them | 1 |

Status labels: 8.0–10 **Strong**, 6.0–7.9 **On Track**, 4.0–5.9 **Needs Work**, below 4.0 **Critical**.

### 5. Build the Fix Pack

Give every finding a fix ID (`F1`, `F2`…), a priority and an owner. Priorities:
- **Critical:** blocks indexing or leaves a core offer unrankable.
- **High:** major trust, entity or content gap.
- **Medium:** meaningful but not urgent.
- **Quick Win:** under 30 minutes.

Each fix uses one of these templates.

**A. New page or page rewrite**
- Header: fixes (the finding), where (URL), who/effort (developer, writer or owner, plus hours)
- Spec table: URL, title tag (with character count), meta description (with count), H1, OG image brief, breadcrumb, schema types
- Full body copy, in order, with each heading tagged `H1`/`H2`/`H3`. Include a 40–60 word direct answer near the top, tables where comparisons exist, 4–6 FAQs, and a CTA using the site's real contact method
- Internal links to add *to* this page, and from it
- JSON-LD for the page

**B. Metadata or copy edit:** a table with columns Page | Field | Current (quoted) | Replace with (with character count).

**C. Schema:** complete JSON-LD linked through one organisation `@id` (`https://domain/#organization`). Generate FAQPage from the page's visible FAQs word for word. Don't add Review or AggregateRating markup for a business's own testimonials, because Google treats self-serving reviews as ineligible.

**D. Code or config:** the current snippet, then the replacement, with the file or component where it lives.

**E. Check or process:** numbered steps in the named tool (Search Console, Google Business Profile, CDN dashboard).

**F. Content plan:** for missing informational content, write one complete article plus briefs for the next 8–10 (title, target query, H2 outline, internal link target).

Copy rules:
- Match the site's voice, but put search terms in headings. Brand-voice lines can stay as small eyebrow text above the heading.
- Use the site's currency, spelling and units.
- Mark placeholders `[LIKE THIS]` and list them all at the end of the Fix Pack.
- If writing in a language you're less sure of, add a note to have a native speaker review it.

### 6. Produce deliverables

Save outputs in the session's output folder (never hard-code a machine path):

1. **Report** — `claudeseofix-audit-<domain>-<YYYY-MM-DD>.docx` and `.pdf`. Read the docx skill before building. Convert to PDF with LibreOffice.
2. **Code bundle** — `claudeseofix-<domain>-fixes.zip`, containing:
   - `schema/` — one file per page or template, as `<script type="application/ld+json">` blocks
   - `snippets/` — HTML, config and shell snippets
   - `llms.txt`
   - `README.txt` — maps each file to its fix ID
3. **Optional:** if the user wants to share the report, also offer an interactive HTML dashboard with the same content.

**Report structure:**
1. Cover — domain, "SEO · GEO · AEO Audit & Fix Pack", audit type, three score tiles, date, "Prepared with ClaudeSEOFix.com"
2. At a glance — 4-sentence summary, a score table with one-line takeaways, and how the audit was run
3. Pages audited — URL | type | notes
4. SEO, GEO and AEO sections — for each: the score and checklist results, then a findings table (Signal | Evidence | Status | Fix ID)
5. Market check — intent map, SERP snapshot, GEO probe results
6. Action plan — Fix ID | Priority | Issue | Owner | Effort | Impact
7. Fix Pack — an index table, then every fix in its template
8. What's working — strengths, with evidence
9. Placeholders to fill in, and what couldn't be measured (with the tool for each)
10. Glossary — SEO, GEO, AEO, E-E-A-T, schema, canonical

**Design system:**
- Font: Inter if available, otherwise Arial
- Page: US Letter or A4 to match the user's region, 1-inch margins
- Colours: ink `0F172A`, brand `0B3C5D`, accent `F26B38`, panel `F1F5F9`
- Status colours: Strong/Pass `15803D`, On Track `2563EB`, Needs Work/Partial `B45309`, Critical/Fail `B91C1C`
- Code blocks: monospace 7.5pt on `F1F5F9` with an accent left border
- Header: domain on the left, "ClaudeSEOFix.com" on the right
- Footer: "Audit & Fix Pack by ClaudeSEOFix.com" on the left, page number on the right
- Keep long JSON in the report to one representative example per type, and put the complete files in the bundle.

### 7. QA before delivery

- Parse every JSON-LD block (`json.loads`) and fix any errors.
- Recount the characters of every proposed title and meta description. Target 30–60 for titles and 70–160 for descriptions.
- Check every price, name and claim in the new copy against the crawl notes.
- Confirm every finding has a fix ID and every fix ID appears in the action plan.
- Validate the .docx, render the PDF to images, and inspect the cover, a findings page and a Fix Pack page for layout problems, including non-Latin scripts.
- List every placeholder in section 9.

### 8. Reply in chat

Keep it short:
- a score table
- the top three fixes, by fix ID
- the biggest strength
- one line on placeholders the owner must fill
- the files

Offer one next step: implement the fixes directly in their codebase or CMS, re-audit after changes, or compare against a named competitor.

## Re-audit mode

When the user asks to re-check a site audited before, load the earlier report or bundle if available. Then report per fix ID: **Done**, **Partly done**, **Not started** or **Regressed**. Add any new findings and show the score change for each dimension.
