skills/onpage-optimization/SKILL.md
Validates heading hierarchy, keyword density and placement, and internal/external link structure. Use when auditing on-page SEO factors for an HTML page.
npx skillsauth add thisisahsaniqbal/nextjs-seo-audit onpage-optimizationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Analyse the HTML page for heading structure, keyword usage, and link health.
Note: This skill owns internal link analysis. For external/outbound link strategy (dofollow/nofollow, anchor text quality, domain diversity), see the backlink-monitoring skill.
Check all <h1> through <h6> elements:
| Check | Status | Rule |
|---|---|---|
| No headings at all | ❌ FAIL | Every page must have at least one heading |
| No <h1> tag | ❌ FAIL | Every page must have exactly one <h1> |
| Multiple <h1> tags | ⚠️ WARN | Recommend a single <h1> per page |
| Hierarchy skipped (e.g. H2 → H4) | ⚠️ WARN | Headings should follow sequential order: H1 → H2 → H3 |
| Empty heading (no text content) | ❌ FAIL | All headings must have descriptive text |
| Single H1, proper hierarchy | ✅ PASS | Heading structure is correct |
If a target keyword is provided, check its usage across the page:
(keyword_count / total_words) × 100| Location | How to check | Missing = |
|---|---|---|
| <title> tag | Does the title contain the keyword? | ⚠️ WARN |
| <h1> tag | Does the H1 text contain the keyword? | ⚠️ WARN |
| Meta description | Does <meta name="description"> contain the keyword? | ⚠️ WARN |
| First <p> tag | Does the first paragraph contain the keyword? | ⚠️ WARN |
| Image alt text | Does any <img alt="..."> contain the keyword? | ⚠️ WARN |
Examine all <a href="..."> elements:
href starts with /, ./, ../, or #href starts with http:// or https://| Check | Threshold | Status |
|---|---|---|
| Internal link count ≥ 3 | Minimum 3 per page | ⚠️ WARN if below |
| Links with no anchor text (and no child <img>) | Any count > 0 | ⚠️ WARN |
| Internal links with rel="nofollow" | Any count > 0 | ⚠️ WARN "Prevents PageRank flow within your site" |
Always report the count of internal and external links found.
javascript:, mailto:, and tel: hrefs#/page) — treat #-prefixed hrefs as internal links<Link> components render as standard <a> tags in HTML output — audit the rendered HTML, not the JSXtesting
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.
development
Audits stylesheet loading, inline CSS volume, image alt text, image formats, and Next.js Image component usage. Use when checking page speed related to HTML structure. For render-blocking scripts, image dimensions, lazy loading, and resource hints, see the core-web-vitals skill.
development
Validates HTML5 semantic elements, ARIA landmarks, skip navigation, and page structure. Use when auditing semantic HTML, accessibility, or content structure for SEO. For the lang attribute, see the international-seo skill.
testing
Validates existing JSON-LD structured data and suggests relevant schemas based on auto-detected page type. Does NOT enforce all schema types — only checks what is applicable to the current page context. Use when auditing or generating structured data for search engine rich results.