---
name: thisisahsaniqbal/technical-seo
source: https://app.decimal.ai/s/thisisahsaniqbal-technical-seo@1/SKILL.md
source_sha256: 5be963b8d59c
---

# Technical SEO

Audit fundamental technical SEO factors that affect crawlability and indexability.

## 1. Canonical URL

| Check | Status |
|---|---|
| `<link rel="canonical">` missing | ⚠️ WARN "Add canonical to prevent duplicate content" |
| Canonical present but empty `href` | ❌ FAIL |
| Canonical points to a different domain | ⚠️ WARN "Cross-domain canonical — verify this is intentional" |
| Canonical is relative (not absolute URL) | ⚠️ WARN "Use absolute URLs for canonical tags" |
| Canonical present and valid | ✅ PASS |
| Multiple canonical tags | ❌ FAIL "Only one canonical allowed per page" |
| Canonical is self-referencing | ✅ PASS (best practice) |

## 2. Robots meta

| Check | Status |
|---|---|
| `<meta name="robots" content="noindex">` | ⚠️ WARN "Page will not appear in search results" |
| `<meta name="robots" content="nofollow">` | ⚠️ WARN "Links on this page will not be followed" |
| `<meta name="robots" content="noindex, nofollow">` | ⚠️ WARN "Page excluded from search entirely" |
| `<meta name="robots" content="index, follow">` or absent | ✅ PASS "Page is indexable" |
| `<meta name="googlebot">` present | ✅ PASS — report its content |

## 3. Robots.txt references

Check if the page references or is affected by robots.txt:

- Look for `<meta name="robots">` directives
- If analysing a full site, check `robots.txt` at site root for:
  - `Disallow` rules that block the current page
  - `Sitemap` directive pointing to sitemap location
  - `Crawl-delay` directives (may slow indexing)

## 4. Sitemap references

| Check | Status |
|---|---|
| `<link rel="sitemap">` present | ✅ PASS |
| No sitemap reference found | ⚠️ WARN "Consider adding sitemap reference" |

If sitemap URL is available, verify:
- Valid XML format
- Contains the current page URL
- No URLs returning 4xx/5xx status codes

## 5. URL structure

Analyse the page URL (from `<link rel="canonical">` or `<meta property="og:url">`):

| Check | Status |
|---|---|
| URL contains uppercase letters | ⚠️ WARN "Use lowercase-only URLs" |
| URL contains underscores | ⚠️ WARN "Use hyphens instead of underscores" |
| URL contains special characters or spaces (encoded `%20`) | ⚠️ WARN "Simplify URL structure" |
| URL exceeds 100 characters | ⚠️ WARN "Keep URLs concise" |
| URL has double slashes (`//path`) | ❌ FAIL "Fix double slashes" |
| URL has trailing slash inconsistency | ⚠️ WARN "Be consistent with trailing slashes" |
| Clean, descriptive, lowercase with hyphens | ✅ PASS |

## 6. HTTP status hints

| Check | Status |
|---|---|
| `<meta http-equiv="refresh" content="0;url=...">` present | ⚠️ WARN "Use 301 redirects instead of meta refresh" |
| Page contains `window.location` redirect in inline script | ⚠️ WARN "JS redirects are not SEO-friendly" |

## 7. Indexability checklist

| Check | Status |
|---|---|
| Has `<title>` tag | Required for indexing |
| Has `<meta name="description">` | Required for SERP snippets |
| Has unique content (not empty `<body>`) | Required |
| Not blocked by `noindex` | Required |
| Has canonical URL | Recommended |
| Is HTTPS (check canonical/og:url) | ⚠️ WARN if HTTP |

## 8. Pagination

| Check | Status |
|---|---|
| `<link rel="prev">` / `<link rel="next">` present | ✅ PASS "Pagination properly marked" |
| Paginated content without prev/next | ⚠️ WARN "Add for multi-page content" |

## 9. Duplicate content signals

| Check | Status |
|---|---|
| Same `<title>` as canonical page but different URL | ⚠️ WARN |
| No canonical + URL has query parameters | ⚠️ WARN "URL parameters may create duplicate pages" |
| Multiple pages with identical meta description | ⚠️ WARN |

## Edge cases

- Next.js app router generates canonical tags automatically via the `metadata` export — audit the rendered HTML output
- `robots.txt` may not be accessible if auditing a single HTML file — note this limitation and skip robots.txt checks
- Pages behind authentication (login walls) may intentionally use `noindex` — flag as ⚠️ WARN but note context
- Single-page applications with client-side routing may have a single canonical URL for all "pages" — flag as ⚠️ WARN
- Staging/preview environments often have `noindex` — distinguish between intentional and accidental noindex when possible
- Pages with `rel="prev"` / `rel="next"` are deprecated by Google (since 2019) but still supported by Bing — note as informational, not FAIL