Blog quality scoring checklist skill

Score each blog post against this checklist.

by AgriciDaniel·MIT license·★ 2,219 Stars on the repo·GitHub ↗

Use now

Files of Blog quality scoring checklist

AgriciDaniel/main1 file
quality-scoring.md
Show the full text165 lines

Blog Quality Scoring Checklist

Score each blog post against this checklist. Used by /blog analyze.

Content Quality (30 points)

Check Points Pass Criteria
Depth/comprehensiveness 7 Covers topic thoroughly, no major gaps
Readability 7 Match the audience; default Flesch 60-70, 55-75 acceptable; technical/YMYL topics may justify denser prose
Originality/unique value markers 5 Original data, case studies, first-hand experience
Sentence & paragraph structure 4 Avg sentence 15-20 words, ≤25% over 20; paragraphs 40-80 words; H2 every 200-300 words
Engagement elements 4 Summary box near the top, callouts, varied content blocks
Grammar/anti-pattern 3 Passive voice ≤10%, AI trigger words ≤5/1K, transition words 20-30%, clean prose

SEO Optimization (25 points)

Check Points Pass Criteria
Heading hierarchy with keywords 5 H1 → H2 → H3, no skips, keyword in 2-3 headings, H2 every 200-300 words
Title tag (40-60 chars, keyword, power word) 4 Front-loaded keyword, positive sentiment, brackets if applicable
Keyword placement/density 4 Natural integration (0.5-2%), no stuffing, present in first 100 words
Internal linking (3-10 contextual) 4 Descriptive anchor text, bidirectional, related content
URL structure 3 Short, keyword-rich, no stop words, lowercase
Meta description (150-160 chars) 3 Fact-dense, clear value prop; include a sourced statistic only when central to the page
External linking (tier 1-3) 2 3-8 outbound links to authoritative sources

E-E-A-T Signals (15 points)

Check Points Pass Criteria
Author attribution (accountable, with bio) 4 Named author/editor preferred; organization attribution acceptable with clear editorial ownership
Source citations (tier 1-3, inline format) 4 ([Source](url), year) format, 8+ unique stats, zero fabricated
Trust indicators (contact, about, transparency) 4 Site has contact page, about page, editorial policy
Experience signals (first-person markers) 3 "When we tested...", "In our experience...", original photos/data

Source citations gating rule: Sources must follow the FLOW evidence triple: year anchor in prose, inline citation with publisher and title, AND URL with retrieval date in compact retrieval notes, footnotes, or a bibliography. Sources without retrieval dates do not pass this criterion. Reference: flow-alignment.md.

Technical Elements (15 points)

Check Points Pass Criteria
Schema markup priority baseline 4 Article/BlogPosting + Person + Organization + BreadcrumbList; FAQPage optional only for visible Q&A entity support; dateModified current
Image optimization (alt text, format, lazy load) 3 AVIF/WebP, descriptive alt text, lazy except LCP
Structured data elements 2 Tables, lists, comparison blocks for AI extraction
Page speed signals (no render-blocking) 2 LCP < 2.5s, no render-blocking JS, fetchpriority on hero
Mobile-friendliness 2 Responsive, tap targets 48px+, no horizontal scroll, paragraphs ≤100 words
OG/social meta tags 2 og:title, og:description, og:image (1200x630), twitter:card

AI Citation Readiness (15 points)

Check Points Pass Criteria
Passage-level citability (120-180 word passages) 4 About 50-word direct-answer sentence followed by self-contained passage with stat + source
Q&A formatted sections 3 60-70% of H2s as questions, visible FAQ section when template calls for it
Entity clarity 3 Unambiguous topic entity, consistent terminology
Content structure for extraction 3 Answer-first, tables with <thead>, comparison formats
AI crawler accessibility 2 SSR/SSG, no JS-gated content, robots.txt allows AI bots

Total: 100 points

Scoring Bands
Score Rating Action
90-100 Exceptional Publish as-is, flagship content
80-89 Strong Minor polish, ready for publication
70-79 Acceptable Targeted improvements needed before publish
60-69 Below Standard Significant rework required
< 60 Rewrite Fundamental issues, start from outline

Priority Classification

When reporting issues, classify by priority:

Critical (Must Fix Before Publishing)
  • Fabricated statistics (zero tolerance)
  • Broken heading hierarchy (H1 → H3 skip)
  • Paragraphs > 200 words (Yoast red)
  • No source attribution on claims
  • Missing author attribution
  • Content behind JavaScript (invisible to AI crawlers)
  • Missing summary box near the top
High Priority
  • Missing answer-first formatting on H2 sections
  • Missing Article/Person/Organization/BreadcrumbList schema baseline
  • Missing visible Q&A section when the selected template calls for FAQ
  • Fewer than 8 sourced statistics
  • Missing meta description or lastUpdated
  • Title tag outside 40-60 character range
  • No internal links
  • Flesch score outside 55-75 range
  • No OG/social meta tags
  • Paragraphs > 150 words
  • Passive voice > 15%
  • AI trigger words > 8 per 1,000
Medium Priority
  • Fewer than 2 charts
  • Fewer than 3 images
  • Tier 4-5 sources present
  • Self-promotion > 1 mention
  • Sections exceeding 300 words between headings
  • Missing experience signals (no first-person markers)
  • Images not in AVIF/WebP format
  • loading="lazy" on LCP image
  • Average sentence length > 22 words
  • Transition words < 15% or > 35%
Low Priority
  • Paragraph length slightly above 80 words (but under 150)
  • Question-format H2 ratio outside 60-70%
  • Missing chart type diversity
  • Images without alt text
  • Missing external links to tier 1-3 sources
  • Entity terminology inconsistency

Quick Automated Checks

These can be detected programmatically:

Content Quality
  1. Word count per paragraph (split on double newlines, flag > 150, critical > 200)
  2. Sentence count per paragraph (flag > 3 sentences)
  3. Flesch-Kincaid score (default target 60-70, acceptable 55-75; adjust for audience)
  4. Heading frequency (flag gaps > 300 words between H2s)
  5. Summary box presence in first 500 characters (accept "TL;DR", "Key Takeaways", "Summary", or "Quick Answer")
  6. Average sentence length (target 15-20, flag > 22)
  7. Sentences over 20 words (flag if > 25% of total)
  8. Passive voice percentage (flag > 10%, high priority > 15%)
  9. AI trigger word density (flag > 5 per 1,000 words)
  10. Transition word percentage (target 20-30%, flag < 15% or > 35%)
SEO Optimization
  1. Title tag length (frontmatter, target 40-60 chars)
  2. Heading hierarchy (regex for ^#{1,6} , no skipped levels)
  3. Meta description length (frontmatter, target 150-160 chars)
  4. Internal link count (regex for relative URLs or same-domain links)
  5. External link count and tier classification
  6. URL structure check (lowercase, no stop words)
E-E-A-T Signals
  1. Author attribution presence (frontmatter author field)
  2. Citation format (regex for \([^)]+\(http)
  3. Unsourced statistics (numbers without attribution nearby)
  4. Self-promotion patterns (brand name frequency, max 1)
  5. First-person markers ("we tested", "in our experience")
Technical Elements
  1. Image count (regex for !\[ or <img)
  2. Image alt text presence (images without alt attribute)
  3. Chart count (regex for <svg or <figure)
  4. Schema presence (search for structured data markers)
  5. OG meta tags (frontmatter ogImage, coverImage)
  6. loading="lazy" on first image (flag as LCP issue)
  7. lastUpdated presence (frontmatter check)
AI Citation Readiness
  1. Opening citable passage after each H2 (target 120-180 words after about 50-word answer sentence)
  2. Question-format heading ratio (target 60-70% of H2s)
  3. Visible Q&A presence when template calls for FAQ
  4. Table presence with <thead> (for AI extraction)
  5. robots.txt AI bot allowance (site-level check)
1# Blog Quality Scoring Checklist
2 
3Score each blog post against this checklist. Used by `/blog analyze`.
4 
5## Content Quality (30 points)
6 
7| Check | Points | Pass Criteria |
8|-------|--------|---------------|
9| Depth/comprehensiveness | 7 | Covers topic thoroughly, no major gaps |
10| Readability | 7 | Match the audience; default Flesch 60-70, 55-75 acceptable; technical/YMYL topics may justify denser prose |
11| Originality/unique value markers | 5 | Original data, case studies, first-hand experience |
12| Sentence & paragraph structure | 4 | Avg sentence 15-20 words, ≤25% over 20; paragraphs 40-80 words; H2 every 200-300 words |
13| Engagement elements | 4 | Summary box near the top, callouts, varied content blocks |
14| Grammar/anti-pattern | 3 | Passive voice ≤10%, AI trigger words ≤5/1K, transition words 20-30%, clean prose |
15 
16## SEO Optimization (25 points)
17 
18| Check | Points | Pass Criteria |
19|-------|--------|---------------|
20| Heading hierarchy with keywords | 5 | H1 → H2 → H3, no skips, keyword in 2-3 headings, H2 every 200-300 words |
21| Title tag (40-60 chars, keyword, power word) | 4 | Front-loaded keyword, positive sentiment, brackets if applicable |
22| Keyword placement/density | 4 | Natural integration (0.5-2%), no stuffing, present in first 100 words |
23| Internal linking (3-10 contextual) | 4 | Descriptive anchor text, bidirectional, related content |
24| URL structure | 3 | Short, keyword-rich, no stop words, lowercase |
25| Meta description (150-160 chars) | 3 | Fact-dense, clear value prop; include a sourced statistic only when central to the page |
26| External linking (tier 1-3) | 2 | 3-8 outbound links to authoritative sources |
27 
28## E-E-A-T Signals (15 points)
29 
30| Check | Points | Pass Criteria |
31|-------|--------|---------------|
32| Author attribution (accountable, with bio) | 4 | Named author/editor preferred; organization attribution acceptable with clear editorial ownership |
33| Source citations (tier 1-3, inline format) | 4 | `([Source](url), year)` format, 8+ unique stats, zero fabricated |
34| Trust indicators (contact, about, transparency) | 4 | Site has contact page, about page, editorial policy |
35| Experience signals (first-person markers) | 3 | "When we tested...", "In our experience...", original photos/data |
36 
37**Source citations gating rule:** Sources must follow the FLOW evidence triple: year anchor in prose, inline citation with publisher and title, AND URL with retrieval date in compact retrieval notes, footnotes, or a bibliography. Sources without retrieval dates do not pass this criterion. Reference: `flow-alignment.md`.
38 
39## Technical Elements (15 points)
40 
41| Check | Points | Pass Criteria |
42|-------|--------|---------------|
43| Schema markup priority baseline | 4 | Article/BlogPosting + Person + Organization + BreadcrumbList; FAQPage optional only for visible Q&A entity support; dateModified current |
44| Image optimization (alt text, format, lazy load) | 3 | AVIF/WebP, descriptive alt text, lazy except LCP |
45| Structured data elements | 2 | Tables, lists, comparison blocks for AI extraction |
46| Page speed signals (no render-blocking) | 2 | LCP < 2.5s, no render-blocking JS, fetchpriority on hero |
47| Mobile-friendliness | 2 | Responsive, tap targets 48px+, no horizontal scroll, paragraphs ≤100 words |
48| OG/social meta tags | 2 | og:title, og:description, og:image (1200x630), twitter:card |
49 
50## AI Citation Readiness (15 points)
51 
52| Check | Points | Pass Criteria |
53|-------|--------|---------------|
54| Passage-level citability (120-180 word passages) | 4 | About 50-word direct-answer sentence followed by self-contained passage with stat + source |
55| Q&A formatted sections | 3 | 60-70% of H2s as questions, visible FAQ section when template calls for it |
56| Entity clarity | 3 | Unambiguous topic entity, consistent terminology |
57| Content structure for extraction | 3 | Answer-first, tables with `<thead>`, comparison formats |
58| AI crawler accessibility | 2 | SSR/SSG, no JS-gated content, robots.txt allows AI bots |
59 
60## Total: 100 points
61 
62### Scoring Bands
63 
64| Score | Rating | Action |
65|-------|--------|--------|
66| 90-100 | Exceptional | Publish as-is, flagship content |
67| 80-89 | Strong | Minor polish, ready for publication |
68| 70-79 | Acceptable | Targeted improvements needed before publish |
69| 60-69 | Below Standard | Significant rework required |
70| < 60 | Rewrite | Fundamental issues, start from outline |
71 
72## Priority Classification
73 
74When reporting issues, classify by priority:
75 
76### Critical (Must Fix Before Publishing)
77- Fabricated statistics (zero tolerance)
78- Broken heading hierarchy (H1 → H3 skip)
79- Paragraphs > 200 words (Yoast red)
80- No source attribution on claims
81- Missing author attribution
82- Content behind JavaScript (invisible to AI crawlers)
83- Missing summary box near the top
84 
85### High Priority
86- Missing answer-first formatting on H2 sections
87- Missing Article/Person/Organization/BreadcrumbList schema baseline
88- Missing visible Q&A section when the selected template calls for FAQ
89- Fewer than 8 sourced statistics
90- Missing meta description or lastUpdated
91- Title tag outside 40-60 character range
92- No internal links
93- Flesch score outside 55-75 range
94- No OG/social meta tags
95- Paragraphs > 150 words
96- Passive voice > 15%
97- AI trigger words > 8 per 1,000
98 
99### Medium Priority
100- Fewer than 2 charts
101- Fewer than 3 images
102- Tier 4-5 sources present
103- Self-promotion > 1 mention
104- Sections exceeding 300 words between headings
105- Missing experience signals (no first-person markers)
106- Images not in AVIF/WebP format
107- `loading="lazy"` on LCP image
108- Average sentence length > 22 words
109- Transition words < 15% or > 35%
110 
111### Low Priority
112- Paragraph length slightly above 80 words (but under 150)
113- Question-format H2 ratio outside 60-70%
114- Missing chart type diversity
115- Images without alt text
116- Missing external links to tier 1-3 sources
117- Entity terminology inconsistency
118 
119## Quick Automated Checks
120 
121These can be detected programmatically:
122 
123### Content Quality
1241. Word count per paragraph (split on double newlines, flag > 150, critical > 200)
1252. Sentence count per paragraph (flag > 3 sentences)
1263. Flesch-Kincaid score (default target 60-70, acceptable 55-75; adjust for audience)
1274. Heading frequency (flag gaps > 300 words between H2s)
1285. Summary box presence in first 500 characters (accept "TL;DR", "Key Takeaways", "Summary", or "Quick Answer")
1296. Average sentence length (target 15-20, flag > 22)
1307. Sentences over 20 words (flag if > 25% of total)
1318. Passive voice percentage (flag > 10%, high priority > 15%)
1329. AI trigger word density (flag > 5 per 1,000 words)
13310. Transition word percentage (target 20-30%, flag < 15% or > 35%)
134 
135### SEO Optimization
13611. Title tag length (frontmatter, target 40-60 chars)
13712. Heading hierarchy (regex for `^#{1,6} `, no skipped levels)
13813. Meta description length (frontmatter, target 150-160 chars)
13914. Internal link count (regex for relative URLs or same-domain links)
14015. External link count and tier classification
14116. URL structure check (lowercase, no stop words)
142 
143### E-E-A-T Signals
14417. Author attribution presence (frontmatter `author` field)
14518. Citation format (regex for `\([^)]+\(http`)
14619. Unsourced statistics (numbers without attribution nearby)
14720. Self-promotion patterns (brand name frequency, max 1)
14821. First-person markers ("we tested", "in our experience")
149 
150### Technical Elements
15122. Image count (regex for `!\[` or `<img`)
15223. Image alt text presence (images without alt attribute)
15324. Chart count (regex for `<svg` or `<figure`)
15425. Schema presence (search for structured data markers)
15526. OG meta tags (frontmatter `ogImage`, `coverImage`)
15627. `loading="lazy"` on first image (flag as LCP issue)
15728. lastUpdated presence (frontmatter check)
158 
159### AI Citation Readiness
16029. Opening citable passage after each H2 (target 120-180 words after about 50-word answer sentence)
16130. Question-format heading ratio (target 60-70% of H2s)
16231. Visible Q&A presence when template calls for FAQ
16332. Table presence with `<thead>` (for AI extraction)
16433. robots.txt AI bot allowance (site-level check)
165 

Discussion

Alternatives