Content Rules

Content Rules

Rules for validating content quality and SEO.

word-count

Checks page has sufficient content.

Thresholds

  • Very thin: <100 words (warning)
  • Light: 100-299 words (info)
  • Good: 300-1500 words (pass)

Examples

Warning:

<body> <h1>Welcome</h1> <p>Hello world.</p> </body> <!-- Warning: Very thin content (3 words) -->

Info:

<!-- 150 words of content --> <!-- Info: Light content (150 words). Consider 300+ for articles. -->

Configuration

rules: { 'word-count': { severity: 'info', // Docs often have short pages }, }

keyword-density

Analyzes keyword usage in content.

Checks

  • Title keywords appear in H1
  • Title keywords appear in body
  • Title keywords in meta description
  • Not keyword stuffing (>3% density)

Examples

Warning (stuffing):

<title>React Tutorial</title> <body> React is great. React is fast. React is popular. Use React today. Learn React now. React React React. </body> <!-- Warning: Possible keyword stuffing: "react" (15%) -->

Info (missing):

<title>React Tutorial</title> <h1>Getting Started</h1> <!-- Info: Title keyword "react" not found in H1 -->

Configuration

rules: { 'keyword-density': { severity: 'warning', }, }

readability

Analyzes content readability using Flesch-Kincaid.

Scores

  • 90-100: Very easy (5th grade)
  • 80-89: Easy (6th grade)
  • 70-79: Fairly easy (7th grade)
  • 60-69: Standard (8th-9th grade)
  • 50-59: Fairly difficult (10th-12th)
  • 30-49: Difficult (college)
  • 0-29: Very difficult (professional)

Checks

  • Flesch Reading Ease score > 50
  • Average sentence length < 25 words
  • Average syllables per word < 1.8

Examples

Warning:

<p> The implementation of algorithmic paradigms necessitates comprehensive understanding of computational complexity and asymptotic analysis methodologies. </p> <!-- Warning: Very difficult to read (Flesch score: 12) -->

Suggestions:

- Simplify language for broader audience - Break long sentences - Use simpler words

Configuration

rules: { 'readability': { severity: 'info', // Technical docs are often complex }, }

duplicate-content

Detects duplicate headings and title/H1 issues.

Checks

  • No duplicate H1 headings
  • Title and H1 not identical
  • No repeated heading text

Examples

Warning (duplicate H1):

<h1>About Us</h1> <h1>About Us</h1> <!-- Warning: Duplicate H1 headings -->

Info (identical title/H1):

<title>About Our Company</title> <h1>About Our Company</h1> <!-- Info: Title and H1 are identical. Consider varying. -->

Configuration

rules: { 'duplicate-content': { severity: 'warning', }, }

content-freshness

Checks for publication dates in content.

Checks

  • datePublished in JSON-LD
  • <time> elements with datetime
  • Schema.org date properties

Examples

Info (no date):

<article> <h1>React Hooks Guide</h1> <p>Content here...</p> </article> <!-- Info: No publication date found -->

Pass:

<article> <h1>React Hooks Guide</h1> <time datetime="2024-01-15">January 15, 2024</time> <p>Content here...</p> </article>

Pass (JSON-LD):

<script type="application/ld+json"> { "@type": "Article", "datePublished": "2024-01-15" } </script>

Configuration

rules: { 'content-freshness': { severity: 'info', }, }

Best Practices

Content Length by Type

Page Type Word Count
Blog post 1000-2000
Landing page 300-800
Product page 300-500
Documentation 500-1500
About page 300-600

Keyword Usage

  • Include primary keyword in title, H1, first paragraph
  • Use variations and related terms
  • Keep density under 2-3%
  • Write naturally

Readability Tips

  • Short sentences (15-20 words)
  • Simple words
  • Active voice
  • Break up long paragraphs
  • Use bullet points