On-Page SEO Optimization
Title Tag
The title tag is the single most important on-page ranking factor.
Rules
| Rule | Value |
|---|---|
| Length | 50-60 characters (Google truncates at ~580px) |
| Primary keyword | Place within first 60 chars, ideally near the start |
| Brand | Append at end with separator: Primary Keyword - Brand |
| Uniqueness | Every page must have a unique title |
| Format | `Primary Keyword - Secondary Keyword |
Common patterns
Blog post: "How to [Action] [Topic] in [Year] | Brand"
Product: "[Product Name] - [Key Feature] | Brand"
Category: "[Category] - Shop [Subcategory] Online | Brand"
Homepage: "Brand - [Primary Value Proposition]"
Service: "[Service] in [Location] | Brand"
MCP Tool: Use analyze_page to extract and evaluate the current title tag, or generate_meta_suggestions to get AI-powered title recommendations.
Meta Description
Not a direct ranking factor, but directly impacts CTR (click-through rate) from search results.
Rules
| Rule | Value |
|---|---|
| Length | 150-160 characters (Google truncates at ~920px) |
| Primary keyword | Include naturally — Google bolds matching query terms |
| CTA | Include a call-to-action (Learn, Discover, Shop, Get) |
| Uniqueness | Every page must have a unique description |
| No quotes | Avoid double quotes — Google truncates at " |
Pattern
[Value proposition with keyword]. [Supporting detail]. [CTA].
MCP Tool: Use analyze_page or generate_meta_suggestions for current analysis + suggestions.
Heading Structure (H1-H6)
Headings define content hierarchy and help search engines understand page structure.
Rules
- One H1 per page — must contain primary keyword, should match search intent
- H2s for major sections — include secondary keywords naturally
- H3-H6 for subsections — maintain strict hierarchy (no skipping levels)
- Never use headings for styling — use CSS instead
- Never leave headings empty
Correct hierarchy
H1: Primary Topic (one only)
H2: Major Section 1
H3: Subsection
H3: Subsection
H2: Major Section 2
H3: Subsection
H4: Detail
H2: Major Section 3
Bad hierarchy (skipped levels)
H1: Topic
H3: Section (skipped H2!)
H5: Detail (skipped H4!)
MCP Tool: Use analyze_headings with targetKeyword parameter to validate structure and keyword presence.
Content Optimization
Keyword placement signals
| Location | Priority | Notes |
|---|---|---|
| Title tag | Critical | First 60 chars |
| H1 | Critical | Primary keyword |
| First 100 words | High | Natural mention early |
| H2/H3 headings | High | Secondary/related keywords |
| URL slug | High | Hyphenated, concise |
| Meta description | Medium | For CTR, not ranking |
| Image alt text | Medium | Describe image with keyword if relevant |
| Last paragraph | Low | Natural mention |
Content quality signals
- Word count by type:
- Blog post: 1,500-2,500+ words (topic-dependent)
- Product page: 300-1,000 words
- Category page: 500-1,000 words
- Landing page: 500-1,500 words
- Homepage: 400-800 words
- Readability: Flesch-Kincaid grade 6-8 for general audience
- Originality: 100% unique content, no thin/duplicate content
- Multimedia: Include images, videos, tables, lists to enhance engagement
- Freshness: Update content regularly, especially for time-sensitive topics
Keyword density
- No exact target — write naturally
- Primary keyword: 0.5-2% is typical for well-ranking pages
- Avoid keyword stuffing (repeating the same phrase unnaturally)
- Use semantic variations and related terms (LSI keywords)
MCP Tool: Use analyze_page with includeContent: true to get word count and content analysis.
Image SEO
Rules
| Element | Best Practice |
|---|---|
| Alt text | Descriptive, 125 chars max, include keyword where relevant. Decorative images: alt="" |
| File name | Descriptive with hyphens: blue-running-shoes.webp not IMG_4532.jpg |
| Format | WebP or AVIF preferred, JPEG for photos, PNG for transparency, SVG for icons |
| File size | Under 200KB per image, use compression tools |
| Dimensions | Specify width and height attributes to prevent CLS |
| Lazy loading | Add loading="lazy" to below-the-fold images |
| Responsive | Use srcset and sizes for responsive images |
Alt text patterns
Good: "Blue Nike running shoes on a trail"
Good: "SEO audit dashboard showing Core Web Vitals scores"
Bad: "image1"
Bad: "shoes shoes running shoes blue shoes nike shoes" (keyword stuffing)
Bad: (empty alt on non-decorative image)
MCP Tool: Use analyze_images to audit all images on a page for alt text, size, format, and lazy loading.
Internal Linking
Internal links distribute link equity (PageRank) and help search engines discover and understand your site structure.
Strategy
- Hub-and-spoke model: Pillar pages link to cluster pages and vice versa
- Contextual links: Link within body content (not just navigation) — these carry more weight
- Descriptive anchors: Use keyword-rich, descriptive anchor text (not "click here" or "read more")
- Limit per page: Reasonable number (under 100-150 total links; focus on quality)
- Fix orphan pages: Every indexable page should have at least one internal link pointing to it
- Link to deep pages: Don't just link to the homepage — distribute equity to important pages
- Prioritize above-the-fold: Links higher on the page may carry more weight
Anchor text rules
Good: "Learn about technical SEO auditing"
Good: "our guide to keyword research"
Bad: "click here"
Bad: "this article"
Bad: "https://example.com/page" (naked URL)
MCP Tool: Use analyze_internal_links to map all links, evaluate anchor text quality, and detect broken links.
URL Structure
Rules
- Keep URLs short and descriptive:
/seo-audit-checklistnot/p?id=123&cat=seo - Use hyphens, not underscores:
/technical-seonot/technical_seo - Lowercase only
- Include primary keyword
- Limit depth: 3-4 levels max (
/category/subcategory/page) - Avoid parameters when possible (use canonical if unavoidable)
- No stop words:
/seo-auditnot/the-complete-guide-to-seo-audit - Stable URLs — don't change URLs without 301 redirects
Open Graph & Twitter Cards
Essential for social sharing appearance and click-through from social platforms.
Required Open Graph tags
<meta property="og:title" content="Page Title">
<meta property="og:description" content="Page description">
<meta property="og:image" content="https://example.com/image.jpg">
<meta property="og:url" content="https://example.com/page">
<meta property="og:type" content="website">
Twitter Card tags
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Page Title">
<meta name="twitter:description" content="Page description">
<meta name="twitter:image" content="https://example.com/image.jpg">
Image requirements
- Minimum: 1200x630px for
summary_large_image - Aspect ratio: 1.91:1
- File size: Under 5MB
- Format: JPG, PNG, WebP, GIF
Canonical Tags
Prevent duplicate content issues by specifying the preferred version of a page.
Rules
- Every indexable page should have a self-referencing canonical:
<link rel="canonical" href="https://example.com/page"> - Use absolute URLs (not relative)
- Point to the HTTPS version
- Point to the non-www or www version (whichever is preferred)
- Don't canonical to a different page unless content is truly duplicate/very similar
- Don't canonical to a 404 or redirected URL
Quick Reference: On-Page Audit Checklist
| Element | Check | Pass Criteria |
|---|---|---|
| Title tag | Present, unique, correct length | 50-60 chars, contains keyword |
| Meta description | Present, unique, correct length | 150-160 chars, includes CTA |
| H1 | Present, single, contains keyword | Exactly one H1 with primary keyword |
| Heading hierarchy | No skipped levels | H1 > H2 > H3 (no jumps) |
| Images | Alt text present | All non-decorative images have descriptive alt |
| Internal links | Descriptive anchors | No "click here", relevant anchors |
| Canonical | Present, self-referencing | Absolute HTTPS URL |
| OG tags | Present | og:title, og:description, og:image, og:url |
| URL | Clean, keyword-rich | Hyphens, lowercase, concise |
| Content | Sufficient, original | Meets word count for page type |
Related Skills
- seo-technical-audit — for crawlability, speed, and indexing issues
- seo-schema-structured-data — for adding JSON-LD markup
- seo-content-strategy — for keyword research and content planning
- seo-mcp-tools-expert — for using MCP tools effectively
Key MCP Tools for On-Page SEO
| Tool | Use For |
|---|---|
analyze_page | Comprehensive on-page analysis with scoring |
analyze_headings | Heading structure validation |
analyze_images | Image alt text and optimization audit |
analyze_internal_links | Link mapping and anchor text analysis |
generate_meta_suggestions | AI-powered meta tag improvement suggestions |
See COMMON_MISTAKES.md for the 15 most frequent on-page SEO mistakes. See CHECKLISTS.md for step-by-step audit checklists. See EXAMPLES.md for before/after optimization examples.