# Final SEO / GEO / AEO Recheck — AI Coding Pricing

Project: AI Coding Pricing / Cost Hub
Slug: aicodingpricing
Domain: https://aicodingpricing.com
Tenant: site-aicodingpricing-20260521
Checked at: 2026-05-21T14:02:47Z
Source commit: 5d141b41e61f70d1f773de8b421b90b12592edfe
Cloudflare Pages production source: 5d141b4
Production deployment URL: https://1bd9892c.aicodingpricing.pages.dev
Verdict: SEO_GO

## Decision

SEO_GO for final SEO/GEO/AEO acceptance.

The two prior NO_GO blockers are resolved on production: P0 JSON-LD schema contracts now emit the required types, and all P0 frozen content-depth targets pass. Crawl/index basics, social metadata, canonical, H1, redirect aliases, sitemap exclusion, visible source/freshness language, and independent disclaimers were rechecked live.

Non-blocking follow-up: `/claude-code-cost` is indexed P1 and still misses its contracted `WebApplication` JSON-LD type; `/llms.txt` returns 404. These do not reopen the P0 remediation gate, but should be fixed before broader GEO hardening / GSC push.

## Resolved former blockers

### B1 — P0 schema contract

| Route | Expected schema | Live schema types | Status |
|---|---|---|---|
| `/` | WebApplication, WebSite, FAQPage | Answer, FAQPage, Question, WebApplication, WebSite | pass |
| `/claude-code-pricing` | Article, FAQPage, BreadcrumbList | Answer, Article, BreadcrumbList, FAQPage, ListItem, Question, WebSite | pass |
| `/claude-code-usage-limits` | Article, FAQPage, HowTo, BreadcrumbList | Answer, Article, BreadcrumbList, FAQPage, HowTo, HowToStep, ListItem, Question, WebSite | pass |
| `/codex-pricing` | Article, FAQPage, BreadcrumbList | Answer, Article, BreadcrumbList, FAQPage, ListItem, Question, WebSite | pass |
| `/codex-usage` | Article, FAQPage, HowTo, WebApplication | Answer, Article, BreadcrumbList, FAQPage, HowTo, HowToStep, ListItem, Question, WebApplication, WebSite | pass |
| `/cursor-pricing` | Article, FAQPage, BreadcrumbList | Answer, Article, BreadcrumbList, FAQPage, ListItem, Question, WebSite | pass |
| `/claude-code-vs-codex` | Article, FAQPage, BreadcrumbList | Answer, Article, BreadcrumbList, FAQPage, ListItem, Question, WebSite | pass |
| `/claude-code-vs-cursor` | Article, FAQPage, BreadcrumbList | Answer, Article, BreadcrumbList, FAQPage, ListItem, Question, WebSite | pass |
| `/pricing-changelog` | CollectionPage, ItemList, BreadcrumbList | BreadcrumbList, CollectionPage, ItemList, ListItem | pass |

### B2 — P0 content depth

| Route | Frozen target | Live parsed word count | Status |
|---|---:|---:|---|
| `/` | 900-1200 | 1225 | pass |
| `/claude-code-pricing` | 1000-1500 | 1073 | pass |
| `/claude-code-usage-limits` | 1200-1600 | 1313 | pass |
| `/codex-pricing` | 1000-1500 | 1078 | pass |
| `/codex-usage` | 1200-1600 | 1344 | pass |
| `/cursor-pricing` | 1000-1500 | 1041 | pass |
| `/claude-code-vs-codex` | 1200-1800 | 1491 | pass |
| `/claude-code-vs-cursor` | 1200-1800 | 1467 | pass |
| `/pricing-changelog` | 500-900 plus entries | 790 | pass |

## Technical SEO checks

| Check | Result |
|---|---|
| Production root | 200 |
| `www` hostname | 200 |
| `/robots.txt` | 200; allows `/`, disallows `/_state/`, points to sitemap |
| `/sitemap.xml` | 200; 22 URLs |
| Checked canonical routes | 23 live routes |
| Self-canonical | pass on checked routes |
| `noindex` | none found on checked indexable routes |
| H1 | exactly one H1 on checked routes |
| Title / meta description | pass on checked routes |
| OG/Twitter social metadata | pass on checked routes |
| Image alt | no missing alt found in live parser |
| P0 visible source/freshness/disclaimer | pass |
| `/llms.txt` | 404; P1 GEO hardening follow-up |

Robots evidence:

```text
User-Agent: *
Allow: /
Disallow: /_state/

Host: https://aicodingpricing.com
Sitemap: https://aicodingpricing.com/sitemap.xml
```

## Redirect / sitemap alias checks

| Alias | Live status | Location | Sitemap | Result |
|---|---:|---|---|---|
| `/codex-vs-claude-code` | 301 | `/claude-code-vs-codex` | absent | pass |
| `/cursor-vs-claude-code` | 301 | `/claude-code-vs-cursor` | absent | pass |
| `/privacy-policy` | 301 | `/privacy` | absent | pass |
| `/terms-of-service` | 301 | `/terms` | absent | pass |

## P1 / expansion-route review

P1 indexed routes are acceptable for launch as long-tail/support pages, with explicit follow-ups below. Several P1/P2 pages are intentionally below P0 frozen depth because `freeze_required=false`; they should be expanded before treating them as primary acquisition pages.

| Route | Priority | Word count | Target | Schema gap | Status |
|---|---|---:|---:|---|---|
| `/claude-code-cost` | P1 | 865 | 1000-1500 | WebApplication | follow-up |
| `/codex-limits` | P1 | 912 | 1200-1600 | none | follow-up |
| `/codex-vs-cursor` | P1 | 1067 | 1200-1800 | none | follow-up |
| `/api-vs-subscription` | P1 | 1351 | 1000-1500 | none | pass |
| `/github-copilot-pricing` | P1 | 838 | 1000-1500 | none | follow-up |
| `/github-copilot-vs-cursor` | P1 | 870 | 1200-1800 | none | follow-up |
| `/claude-max-vs-pro` | P1 | 887 | 1000-1500 | none | follow-up |
| `/chatgpt-pro-vs-claude-max` | P2 | 891 | 1000-1500 | none | follow-up |
| `/codex-pricing-changelog` | P1_SUPPORT | 708 | 500-900 plus entries | none | pass |
| `/claude-code-pricing-changelog` | P1_SUPPORT | 715 | 500-900 plus entries | none | pass |

P1 issues:

- `/claude-code-cost`: missing schema WebApplication
- `/llms.txt`: 404; add an LLM-readable site brief/index for GEO hardening.

## Source / deployment evidence

| Evidence | Value |
|---|---|
| Git HEAD | `5d141b41e61f70d1f773de8b421b90b12592edfe` |
| Branch | `main` |
| `origin/main` | `5d141b41e61f70d1f773de8b421b90b12592edfe` |
| Cloudflare Pages Production Source | `5d141b4` |
| Cloudflare Pages Production URL | https://1bd9892c.aicodingpricing.pages.dev |
| Source sync | pass — production source `5d141b4` matches pushed commit prefix |

Deployment list evidence:

```text
Production  main  5d141b4  https://1bd9892c.aicodingpricing.pages.dev  deployed
```

## Verified routes

- `/`
- `/claude-code-pricing`
- `/claude-code-usage-limits`
- `/codex-pricing`
- `/codex-usage`
- `/cursor-pricing`
- `/claude-code-vs-codex`
- `/claude-code-vs-cursor`
- `/pricing-changelog`
- `/claude-code-cost`
- `/codex-limits`
- `/codex-vs-cursor`
- `/api-vs-subscription`
- `/github-copilot-pricing`
- `/github-copilot-vs-cursor`
- `/claude-max-vs-pro`
- `/chatgpt-pro-vs-claude-max`
- `/codex-pricing-changelog`
- `/claude-code-pricing-changelog`
- `/about`
- `/contact`
- `/privacy`
- `/terms`
- Redirect aliases: `/codex-vs-claude-code`, `/cursor-vs-claude-code`, `/privacy-policy`, `/terms-of-service`

## Commands / probes run

```text
npm run verify
npx wrangler pages deployment list --project-name aicodingpricing
curl -I -L --max-redirs 0 https://aicodingpricing.com/
curl -I -L --max-redirs 0 https://www.aicodingpricing.com/
curl -I -L --max-redirs 0 https://aicodingpricing.com/robots.txt
curl -I -L --max-redirs 0 https://aicodingpricing.com/sitemap.xml
curl -I -L --max-redirs 0 https://aicodingpricing.com/llms.txt
custom live HTML parser for title/meta/canonical/noindex/H1-H3/schema/word count/img alt/social meta/sitemap/redirects/source/disclaimer
```

`npm run verify` result:

```json
{
  "ok": true,
  "routes_checked": 23,
  "redirects_checked": 4,
  "contract_routes": 21
}
```

Raw live audit JSON: `final-seo-recheck-live-audit.json`

## Final verdict

SEO_GO. P0 acceptance blockers are resolved; keep P1 `/claude-code-cost` WebApplication schema and `/llms.txt` as follow-up GEO hardening items.
