About
This skill performs comprehensive on-page SEO audits and optimizations for single pages, covering elements like title tags, meta descriptions, headers, and internal links. It triggers when users request page optimizations, SEO audits, or improvements to ranking signals, even without explicit "SEO" terminology. Developers can use it for stack-agnostic SEO analysis across any CMS or framework.
Quick Install
Claude Code
Recommendednpx skills add rampstackco/claude-skills -a claude-code/plugin add https://github.com/rampstackco/claude-skillsgit clone https://github.com/rampstackco/claude-skills.git ~/.claude/skills/seo-onpageCopy and paste this command in Claude Code to install this skill
Documentation
On-Page SEO
Optimize a single page for search relevance, click-through, and crawler comprehension. Stack-agnostic. Works on any CMS, framework, or static site.
When to use
- Auditing or optimizing a single page (homepage, product page, article, landing page)
- Writing or reviewing title tags and meta descriptions
- Fixing header structure or content hierarchy
- Reviewing internal links from or to a page
- Improving a page's CTR from search results
When NOT to use
- Site-wide crawl, indexing, or speed issues (use
seo-technical) - Keyword research or intent mapping (use
seo-keyword) - Competitor SERP analysis (use
seo-competitor) - Auditing many pages at once for prune/merge decisions (use
seo-content-audit)
Required inputs
- The page URL or the draft content if pre-launch
- The primary target query (one phrase the page should rank for)
- The page's role in the site (commercial, informational, navigational)
If the target query is unknown, run seo-keyword first or ask the user to name one.
The framework: 8 dimensions
A complete on-page audit covers eight dimensions. Score each as Pass, Needs work, or Fail. Note the specific fix.
1. Title tag
- One unique title per URL across the site
- Roughly 50 to 60 characters (longer gets truncated in SERPs)
- Primary query near the front
- Brand at the end if it earns inclusion
- Distinct from the H1 (often very similar, but should not be identical word-for-word)
2. Meta description
- One unique description per URL
- Roughly 150 to 160 characters
- Restates the value proposition, not the title
- Includes a soft CTA where natural
- Treats the description as ad copy that earns the click
3. Header structure
- Exactly one H1 per page
- H1 contains or paraphrases the primary query
- H2 sections cover the major sub-topics
- H3+ used only when an H2 has genuine sub-points
- No skipped levels (no H2 followed by H4)
- Headers describe sections accurately enough that a reader could navigate by them alone
4. Body content
- Opens with the primary user intent answered in the first paragraph
- Covers the topic comprehensively (define your competition's depth, then match or exceed it)
- Includes related entities and supporting concepts naturally
- Avoids keyword stuffing (write for the reader, not the bot)
- Reading level matches the audience (run a readability check)
- Paragraphs short enough to scan on mobile (3 to 5 lines)
5. Internal links
- At least 2 to 3 outbound internal links to closely related pages
- At least 2 to 3 inbound internal links from related pages
- Anchor text is descriptive, not "click here" or "learn more"
- Links to canonical URLs, not redirects
- No broken internal links
6. Images and media
- Every meaningful image has descriptive alt text (skip alt for purely decorative images)
- File names are descriptive ("blue-running-shoe.jpg" not "IMG_4032.jpg")
- Modern format used where supported (WebP, AVIF)
- Lazy loading on below-the-fold images
- Width and height attributes set to prevent layout shift
7. URL slug
- Lowercase, hyphen-separated
- Includes the primary query naturally (no stuffing)
- Short (under 60 characters where possible)
- No dates unless the page is genuinely time-bound
- No session IDs, tracking parameters, or random hashes
- Matches the site's URL pattern conventions
8. On-page schema
- Appropriate Schema.org type for the content (Article, Product, FAQPage, HowTo, Recipe, etc.)
- Required properties filled (review Schema.org docs for the type)
- Validates in Google's Rich Results Test or equivalent
- Matches what is visible on the page (do not lie to crawlers)
- Author and publisher schema linked correctly for content pages
Workflow
- Confirm the target query. If unclear, ask. Do not optimize without one.
- Render the page. View it as a user would. Read the content top to bottom.
- View the rendered HTML. Inspect the actual served markup, not just the visual page. Check
<title>,<meta>, headers, and schema in the source. - Run the 8-dimension framework. Score each, note specific fixes.
- Prioritize. Group fixes into Critical (broken or missing), Important (suboptimal), and Nice-to-have (polish).
- Write the report. Use the template in
references/audit-template.md. - Offer to draft fixes. If the user wants, draft the new title, meta, headers, or copy directly.
Failure patterns
When you spot one of these, push back before delivering.
- "Make it more SEO." Vague. Ask for the target query and what's broken first.
- "Add the keyword 5 times in the body." Keyword density is not a real ranking signal. Prioritize relevance and topical depth instead.
- Optimizing a page that is not crawlable or indexable. Check
seo-technicalfirst. No on-page work helps a noindexed page. - Optimizing a page with no clear user intent. A page that does not serve a real query will not rank no matter how well-tagged it is.
- Targeting the same query as another page on the site. This is cannibalization. Use
seo-content-auditto decide which page should rank.
Output format
Default output is a markdown audit at seo-audit-[page-slug].md in the project root. Structure:
- Page summary (URL, target query, role)
- Score across 8 dimensions
- Critical fixes
- Important fixes
- Nice-to-have polish
- Drafted replacements (if requested)
Keep audits under 1500 words. If a page needs more detail, link to deeper appendices.
Reference files
references/audit-template.md- Fillable audit template, copy and use.references/onpage-checklist.md- Quick-reference checklist for the 8 dimensions.references/title-and-meta-patterns.md- Patterns for writing strong titles and meta descriptions.
GitHub Repository
Frequently asked questions
What is the seo-onpage skill?
seo-onpage is a Claude Skill by rampstackco. Skills package instructions and resources that Claude loads on demand, so Claude can perform seo-onpage-related tasks without extra prompting.
How do I install seo-onpage?
Use the install commands on this page: add seo-onpage to Claude Code as a plugin, or clone its repository into your skills directory, then restart Claude so it picks up the skill.
What category does seo-onpage belong to?
seo-onpage is in the Meta category.
Is seo-onpage free to use?
Yes. seo-onpage is listed on AIMCP and free to install.
Related Skills
This skill provides a production-tested setup for Content Collections, a TypeScript-first tool that transforms Markdown/MDX files into type-safe data collections with Zod validation. Use it when building blogs, documentation sites, or content-heavy Vite + React applications to ensure type safety and automatic content validation. It covers everything from Vite plugin configuration and MDX compilation to deployment optimization and schema validation.
This skill enables developers to build applications with the Polymarket prediction markets platform, including API integration for trading and market data. It also provides real-time data streaming via WebSocket to monitor live trades and market activity. Use it for implementing trading strategies or creating tools that process live market updates.
This skill helps developers create OpenCode plugins that hook into 25+ event types like commands, files, and LSP operations. It provides the plugin structure, event API specifications, and implementation patterns for JavaScript/TypeScript modules. Use it when you need to intercept, monitor, or extend the OpenCode AI assistant's lifecycle with custom event-driven logic.
SGLang is a high-performance LLM serving framework that specializes in fast, structured generation for JSON, regex, and agentic workflows using its RadixAttention prefix caching. It delivers significantly faster inference, especially for tasks with repeated prefixes, making it ideal for complex, structured outputs and multi-turn conversations. Choose SGLang over alternatives like vLLM when you need constrained decoding or are building applications with extensive prefix sharing.
