Skip to content

SEO Module

Module ID: seo | Type: Core (always enabled) | Weight: 30%

The SEO module extracts and scores fundamental search engine optimisation signals from raw HTML. It checks everything search engines use to understand, index, and rank your pages.


What It Checks

Check What It Looks For
Title tag Presence, length (50--60 chars optimal), uniqueness
Meta description Presence, length (120--160 chars optimal)
H1 heading Exactly one H1 per page
Heading hierarchy Proper nesting (no skipped levels)
Canonical URL <link rel="canonical"> present
Open Graph tags og:title, og:description, og:image, og:url
Twitter Card tags twitter:card, twitter:title, twitter:description
Structured data JSON-LD blocks with valid @type
Robots meta No accidental noindex/nofollow
Viewport meta Mobile-friendly viewport tag
Language attribute lang on the <html> element
Image alt text All <img> tags have descriptive alt attributes

Scoring Breakdown

The SEO score starts at 100 and deducts points for each issue:

Criterion Deduction Condition
Missing title -15 No <title> tag found
Title too short/long -5 Outside 30--70 character range
Missing meta description -10 No meta description tag
Meta description too short/long -5 Outside 70--200 character range
Missing H1 -10 No H1 tag on the page
Multiple H1s -5 More than one H1 tag
Missing canonical -5 No canonical link element
Missing Open Graph -5 Missing og:title or og:description
Missing robots meta -3 No robots meta tag
Accidental noindex -15 Page is set to noindex unintentionally
Missing viewport -5 No viewport meta tag
Missing lang attribute -3 No lang on html element
Images without alt -2 per image Up to -10 total

Auto-Detection

This module is always enabled (ALWAYS_ENABLED = True). It runs on every audit regardless of profile or detection signals.


Example Findings

P1 HIGH: Missing meta description
  The page has no meta description tag. Search engines will auto-generate
  a snippet, which may not represent your page well.
  Fix: Add <meta name="description" content="Your 120-160 char description">
  Effort: Low

P2 MEDIUM: Multiple H1 headings (3 found)
  Having more than one H1 dilutes the page's topic signal for search engines.
  Fix: Keep one H1 as the main heading, convert others to H2 or H3.
  Effort: Low

P2 MEDIUM: Missing Open Graph tags
  Social sharing previews will not display correctly without og:title,
  og:description, and og:image tags.
  Fix: Add OG meta tags in the <head> section.
  Effort: Low