# Technical SEO Audit Record

Use one row per representative URL or URL class. Start with the expected state. Attach evidence. Do not mark a check complete because a tool shows green.

## Audit header

- Site / property:
- Production origin:
- Repository / commit:
- Environment:
- Audit question:
- In scope:
- Explicitly out of scope:
- Owner:
- Reviewer:
- Baseline date:
- Release / retest date:

## URL evidence table

| URL or class | Role | Expected state | Observed status | Crawl access | Index directive | Canonical | Internal source | Sitemap | Raw/rendered content | Owner | Decision | Retest |
|---|---|---|---:|---|---|---|---|---|---|---|---|---|
| | | | | | | | | | | | | |

## The 18 checks

### 01. Scope before crawl

**Expected outcome:** The first technical SEO error is often not on the site. It is an audit that never defined what the site is supposed to contain.

- [ ] The audit question is one sentence.
- [ ] Production host and environment are explicit.
- [ ] Intended public URLs are inventoried independently of the crawl.
- [ ] URL roles and expected states are defined.
- [ ] Tool exclusions are documented.
- [ ] Baseline evidence is saved.
- [ ] Each finding has an owner.
- [ ] Each fix has a verification method.
- [ ] Unknown URLs remain an investigation, not an automatic defect.

**Evidence links / files:**

**Finding:** Pass / Fail / Unresolved

**Action, owner, due date:**

**Retest result:**

### 02. Crawlability

**Expected outcome:** Crawlability is a route from known page to intended page—not a checkbox that says “robots allowed.”

- [ ] Every important page has at least one durable internal link.
- [ ] Navigation links render as anchors with href values.
- [ ] The production host returns the intended response anonymously.
- [ ] Redirects resolve in one hop where practical.
- [ ] Robots rules match the publishing decision.
- [ ] WAF/CDN does not challenge intended crawlers accidentally.
- [ ] Essential rendering resources are accessible.
- [ ] Orphan pages are reviewed, not merely counted.
- [ ] Sitemap discovery supplements rather than replaces architecture.

**Evidence links / files:**

**Finding:** Pass / Fail / Unresolved

**Action, owner, due date:**

**Retest result:**

### 03. Indexation

**Expected outcome:** A page can be reachable but intentionally absent, eligible but not selected, or indexed but rarely shown. Those are different states with different fixes.

- [ ] Every sampled URL has an intended index state.
- [ ] Important pages are crawlable and return 200.
- [ ] No accidental noindex or X-Robots-Tag exists.
- [ ] Private content uses authentication, not robots.txt.
- [ ] Declared canonical is appropriate and consistent.
- [ ] Sitemap includes intended canonical pages only.
- [ ] Primary content is present in fetchable output.
- [ ] Platform reports are dated and reconciled with live state.
- [ ] No indexing guarantee is claimed.

**Evidence links / files:**

**Finding:** Pass / Fail / Unresolved

**Action, owner, due date:**

**Retest result:**

### 04. Status and redirects

**Expected outcome:** HTTP is part of the content. A polished error page returning 200 is still telling machines the wrong story.

- [ ] Successful resources return 200.
- [ ] Missing resources return 404 or 410.
- [ ] Server failures remain 5xx.
- [ ] Permanent moves use a permanent server/framework redirect.
- [ ] Temporary moves are actually temporary.
- [ ] Redirects resolve in one hop where practical.
- [ ] Destination matches the original purpose.
- [ ] Internal links, canonicals, sitemaps, and structured data point directly.
- [ ] No generic homepage redirect hides missing content.

**Evidence links / files:**

**Finding:** Pass / Fail / Unresolved

**Action, owner, due date:**

**Retest result:**

### 05. Canonicalization

**Expected outcome:** Canonicalization is not a tag repair. It is agreement across the whole URL system.

- [ ] Duplicate clusters are inventoried.
- [ ] Representative URL is stable and publicly useful.
- [ ] Canonical target returns 200 and is indexable.
- [ ] Only one canonical declaration exists.
- [ ] Retired paths redirect directly.
- [ ] Internal links use the representative URL.
- [ ] Sitemap lists only the representative.
- [ ] Hreflang and structured data agree.
- [ ] Generated variants are reduced at the source.

**Evidence links / files:**

**Finding:** Pass / Fail / Unresolved

**Action, owner, due date:**

**Retest result:**

### 06. Parameters and facets

**Expected outcome:** A parameter is not automatically a problem. An uncontrolled parameter space is.

- [ ] Every parameter has a documented role.
- [ ] Internal links exclude tracking values.
- [ ] Parameter order is normalized.
- [ ] Invalid/repeated values are rejected or normalized.
- [ ] Indexable combinations are curated and owned.
- [ ] Empty or trivial states are not indexable.
- [ ] Robots, noindex, and canonical controls do not contradict each other.
- [ ] Pagination remains usable and discoverable.
- [ ] Logs are monitored for new crawl traps.

**Evidence links / files:**

**Finding:** Pass / Fail / Unresolved

**Action, owner, due date:**

**Retest result:**

### 07. XML sitemaps

**Expected outcome:** A sitemap is useful when it is truthful. Size alone does not make it complete.

- [ ] Sitemap uses the production origin.
- [ ] Entries come from published content.
- [ ] Only canonical indexable URLs are included.
- [ ] Every entry returns 200 directly.
- [ ] No draft, preview, parameter, redirect, or error URL appears.
- [ ] Each URL appears once.
- [ ] Lastmod is substantive and stable.
- [ ] Sitemap is referenced through the existing robots policy where appropriate.
- [ ] Submission reports are monitored.

**Evidence links / files:**

**Finding:** Pass / Fail / Unresolved

**Action, owner, due date:**

**Retest result:**

### 08. Site architecture

**Expected outcome:** A crawler can count links. Architecture explains relationships.

- [ ] Journal index exposes the guide.
- [ ] Guide hub links to all chapters.
- [ ] Every chapter links back to the hub.
- [ ] Previous/next sequence is complete.
- [ ] Breadcrumbs match visible hierarchy.
- [ ] Related links express a real relationship.
- [ ] Important links are normal anchors.
- [ ] No intended page is orphaned.
- [ ] No broken internal link exists.
- [ ] Global navigation remains focused.

**Evidence links / files:**

**Finding:** Pass / Fail / Unresolved

**Action, owner, due date:**

**Retest result:**

### 09. JavaScript rendering

**Expected outcome:** If the page’s purpose appears only after a successful client runtime, every runtime failure becomes a content failure.

- [ ] Initial response has the correct status.
- [ ] Title, description, canonical, and robots are present and consistent.
- [ ] H1 and primary copy are in initial HTML.
- [ ] Important links are available without interaction.
- [ ] JavaScript disabled still yields a useful document.
- [ ] Hydration does not replace metadata or meaning.
- [ ] Error/not-found routes use truthful statuses.
- [ ] Client bundle is justified and measured.
- [ ] Crawler inspection matches the intended page.

**Evidence links / files:**

**Finding:** Pass / Fail / Unresolved

**Action, owner, due date:**

**Retest result:**

### 10. Titles and snippets

**Expected outcome:** Metadata is not a bag of keywords. It is the smallest truthful explanation of why this URL exists.

- [ ] Every indexable guide page has a unique title.
- [ ] Every page has a unique useful description.
- [ ] The distinguishing topic appears clearly.
- [ ] Brand boilerplate is restrained.
- [ ] Title, H1, dek, and opening agree.
- [ ] No meta keywords are added.
- [ ] Metadata exists in initial HTML.
- [ ] Duplicates are tested automatically.
- [ ] Result rewrites are observed without making false guarantees.

**Evidence links / files:**

**Finding:** Pass / Fail / Unresolved

**Action, owner, due date:**

**Retest result:**

### 11. Structured data

**Expected outcome:** The most reliable schema is generated from the same content record the reader sees.

- [ ] Markup is generated from the visible content source.
- [ ] JSON serializes safely.
- [ ] Canonical and asset URLs are absolute and live.
- [ ] Article data matches the page.
- [ ] Breadcrumbs match visible navigation.
- [ ] Hub ItemList matches visible order.
- [ ] Entity IDs are stable and consistent.
- [ ] Dates are true and substantive.
- [ ] No unsupported FAQ, review, or rating markup exists.
- [ ] Current guidelines are checked before merge.

**Evidence links / files:**

**Finding:** Pass / Fail / Unresolved

**Action, owner, due date:**

**Retest result:**

### 12. Media discovery

**Expected outcome:** A beautiful image is not searchable evidence when its meaning exists nowhere else.

- [ ] Every media item has a defined purpose.
- [ ] Essential content is also available in text.
- [ ] Decorative images use empty alt.
- [ ] Informative alt text describes relevant meaning.
- [ ] Captions/transcripts exist where needed.
- [ ] Width and height or aspect ratio reserve space.
- [ ] Responsive sources are correct.
- [ ] LCP and lazy-loading decisions are measured.
- [ ] Asset URLs return correctly and cache appropriately.
- [ ] Media controls work by keyboard.

**Evidence links / files:**

**Finding:** Pass / Fail / Unresolved

**Action, owner, due date:**

**Retest result:**

### 13. International SEO

**Expected outcome:** International SEO is a content and routing system before it is an hreflang tag.

- [ ] Only real maintained locales are declared.
- [ ] Each locale has a stable URL.
- [ ] Visible content and metadata match the language.
- [ ] Each page self-canonicalizes appropriately.
- [ ] Hreflang codes are valid.
- [ ] Annotations are reciprocal.
- [ ] Alternates return 200 and are indexable.
- [ ] Language selector is visible and context-preserving.
- [ ] No forced geo redirect blocks access.
- [ ] x-default, if used, points to a real neutral destination.

**Evidence links / files:**

**Finding:** Pass / Fail / Unresolved

**Action, owner, due date:**

**Retest result:**

### 14. Core Web Vitals

**Expected outcome:** A performance score is a clue. The product is a page that becomes useful quickly, responds promptly, and stays visually stable for real people.

- [ ] Field and lab evidence are labeled separately.
- [ ] Device and date range are recorded.
- [ ] LCP element is identified.
- [ ] Slow interactions are profiled, not guessed.
- [ ] Layout-shift sources are visible and owned.
- [ ] Images and fonts follow existing delivery strategy.
- [ ] Client JavaScript is limited and measured.
- [ ] No useful content is removed for a score.
- [ ] Sibling routes are tested after shared fixes.
- [ ] Regression budgets and monitoring exist.

**Evidence links / files:**

**Finding:** Pass / Fail / Unresolved

**Action, owner, due date:**

**Retest result:**

### 15. Mobile and accessibility

**Expected outcome:** A page is not complete when it works only at the designer’s viewport with a mouse and perfect vision.

- [ ] One visible H1 and logical headings.
- [ ] Landmarks and source order are meaningful.
- [ ] Skip link works.
- [ ] All controls work by keyboard.
- [ ] Focus is visible and not obscured.
- [ ] Content reflows at 320 CSS pixels and zoom.
- [ ] Targets meet chosen WCAG 2.2 minimum behavior.
- [ ] Meaning is not color-, hover-, drag-, or motion-only.
- [ ] Reduced motion is respected.
- [ ] Mobile retains content, links, metadata, and function.
- [ ] Images and media have correct alternatives.

**Evidence links / files:**

**Finding:** Pass / Fail / Unresolved

**Action, owner, due date:**

**Retest result:**

### 16. Content overlap

**Expected outcome:** “Cannibalization” is not a diagnosis until two URLs compete for the same job.

- [ ] Every URL has a one-sentence page job.
- [ ] Related pages have visibly distinct intent or are consolidated.
- [ ] Primary content similarity is reviewed.
- [ ] Search data is contextualized by date and query/task.
- [ ] Canonical is not used to avoid a content decision.
- [ ] Merge destination fully serves the old intent.
- [ ] Redirects are direct and permanent when appropriate.
- [ ] Internal links and sitemap are updated.
- [ ] Post-change behavior is monitored without guaranteeing an outcome.

**Evidence links / files:**

**Finding:** Pass / Fail / Unresolved

**Action, owner, due date:**

**Retest result:**

### 17. AI search readiness

**Expected outcome:** The best AI-search optimization is a page that states something useful, proves it, and remains technically available.

- [ ] Page meets ordinary search technical requirements.
- [ ] Primary content is present in reliable HTML.
- [ ] Each major section answers a named question.
- [ ] Claims are explicit, dated where needed, and supported nearby.
- [ ] Original value is clear.
- [ ] Entities are named consistently.
- [ ] Crawler access policy is documented and tested through WAF/CDN.
- [ ] No hidden model instructions or citation bait.
- [ ] llms.txt, if considered, is labeled experimental and optional.
- [ ] Google/Bing AI reports are interpreted as visibility data, not guarantees.

**Evidence links / files:**

**Finding:** Pass / Fail / Unresolved

**Action, owner, due date:**

**Retest result:**

### 18. Monitoring and change control

**Expected outcome:** The strongest audit finding is one the next deployment cannot silently recreate.

- [ ] Repository and Vercel project are verified.
- [ ] Work happens in a clean worktree and focused branch.
- [ ] Existing tests pass before and after.
- [ ] Critical SEO invariants are automated.
- [ ] Preview is protected/noindex.
- [ ] Preview canonicals use production origin.
- [ ] Desktop, mobile, keyboard, zoom, and reduced motion are reviewed.
- [ ] Sitemap, robots, metadata, JSON-LD, and links are validated.
- [ ] Production requires explicit approval.
- [ ] Known-good rollback target is recorded.
- [ ] Live smoke test and monitoring cadence are assigned.
- [ ] Substantive updates receive true modified dates.

**Evidence links / files:**

**Finding:** Pass / Fail / Unresolved

**Action, owner, due date:**

**Retest result:**

## Release gate

- [ ] Repository and production origin verified.
- [ ] Existing baseline checks pass.
- [ ] Preview is protected/noindex.
- [ ] Production canonicals appear in preview output.
- [ ] All intended routes return 200.
- [ ] Unknown routes return correct 404.
- [ ] Metadata, JSON-LD, internal links, sitemap, and robots validated.
- [ ] Keyboard, zoom, mobile, reduced motion, and screen-reader spot checks pass.
- [ ] Performance shows no material regression.
- [ ] Production approval recorded.
- [ ] Rollback target recorded.
- [ ] Live smoke test owner assigned.

## Decision ledger

| Finding | Evidence | Expected state | Proposed change | Risk | Owner | Gate | Result |
|---|---|---|---|---|---|---|---|
| | | | | | | | |
