agentsclimarketplace

Onpage optimization

Skill thisisAhsanIqbal/nextjs-seo-audit/skills/onpage-optimization

AI Agent Skills for SEO auditing , 11 SKILL.md files that teach Cursor, Claude Code, Copilot & more to perform comprehensive SEO audits. Zero dependencies.

Install
npx -y skills add thisisAhsanIqbal/nextjs-seo-audit --skill onpage-optimization

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 7 stars7 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Validates heading hierarchy, keyword density and placement, and internal/external link structure. Use when auditing on-page SEO factors for an HTML page.

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

3.5 KB, as published. Nobody here has run it

On-Page Optimization

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.

1. Heading validation

Check all <h1> through <h6> elements:

CheckStatusRule
No headings at all❌ FAILEvery page must have at least one heading
No <h1> tag❌ FAILEvery page must have exactly one <h1>
Multiple <h1> tags⚠️ WARNRecommend a single <h1> per page
Hierarchy skipped (e.g. H2 → H4)⚠️ WARNHeadings should follow sequential order: H1 → H2 → H3
Empty heading (no text content)❌ FAILAll headings must have descriptive text
Single H1, proper hierarchy✅ PASSHeading structure is correct

2. Keyword analysis

If a target keyword is provided, check its usage across the page:

Keyword density

  • Calculate: (keyword_count / total_words) × 100
  • Ideal range: 1.0–3.0%
  • Below 1.0% → ⚠️ WARN "Keyword density is low"
  • Above 3.0% → ❌ FAIL "Keyword stuffing detected"
  • Within range → ✅ PASS

Keyword placement — check all of these:

LocationHow to checkMissing =
<title> tagDoes the title contain the keyword?⚠️ WARN
<h1> tagDoes the H1 text contain the keyword?⚠️ WARN
Meta descriptionDoes <meta name="description"> contain the keyword?⚠️ WARN
First <p> tagDoes the first paragraph contain the keyword?⚠️ WARN
Image alt textDoes any <img alt="..."> contain the keyword?⚠️ WARN

Title keyword position

  • Keyword at position 0 (start of title) → ✅ PASS "Best placement"
  • Keyword at position ≤ 20 → ✅ PASS "Near the start"
  • Keyword at position > 20 → ⚠️ WARN "Place it earlier for better ranking"

3. Link analysis

Examine all <a href="..."> elements:

Classify links

  • Internal: href starts with /, ./, ../, or #
  • External: href starts with http:// or https://

Checks

CheckThresholdStatus
Internal link count ≥ 3Minimum 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.

Edge cases

  • If no keyword is supplied, skip keyword analysis and note: "No target keyword supplied — skipping keyword analysis"
  • Count words by splitting text on whitespace; keyword matching is case-insensitive
  • For link classification, ignore javascript:, mailto:, and tel: hrefs
  • Single-page applications (SPAs) with hash-based routing (#/page) — treat #-prefixed hrefs as internal links
  • Next.js <Link> components render as standard <a> tags in HTML output — audit the rendered HTML, not the JSX
  • Pages with zero links (e.g. legal/privacy pages) should receive ⚠️ WARN, not ❌ FAIL

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.