Skip to content
Back to skills

Technical Seo

ASecurity

Audits sitemap references, robots.txt directives, canonical tags, crawlability, URL structure, redirect chains, and indexability. Use when checking technical SEO foundations or fixing crawl/index issues.

  • 7 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added June 2, 2026
content-marketinggonextjsgit

Works with

  • cli

Security analysis

A100/100

Scanned June 2, 2026

npx -y skills add thisisAhsanIqbal/nextjs-seo-audit --skill technical-seo --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Technical Seo?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Technical Seo
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/thisisahsaniqbal-technical-seo/badge)](https://www.skillsdirectory.com/skills/thisisahsaniqbal-technical-seo)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: technical-seo
description: >
  Audits sitemap references, robots.txt directives, canonical tags, crawlability,
  URL structure, redirect chains, and indexability. Use when checking technical SEO
  foundations or fixing crawl/index issues.
license: MIT
metadata:
  author: Muhammad Ahsan Iqbal (https://muhammadahsaniqbal.com)
  linkedin: https://www.linkedin.com/in/ahsan-iqbal-digitalmarketingexpert/
  version: "1.0"
---

# 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

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.