Blog Quality Checklist
Blog quality scoring checklist

Score each blog post against this checklist. Used by /blog analyze.
# 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 |
Overview
Score each blog post against this checklist. Used by /blog analyze.
Manual install (npx, ZIP)
Claude Code
npx skills add AgriciDaniel/claude-blog --skill blog-quality-scoring-checklist -g -a claude-codeClaude.ai / desktop
Codex, Cursor, other agents
Connects with Agent Alley MCP · agentalley.io/mcp
Files included
quality-scoring.md7.9 KB
Read quality-scoring.md here
AgriciDaniel/
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
- Word count per paragraph (split on double newlines, flag > 150, critical > 200)
- Sentence count per paragraph (flag > 3 sentences)
- Flesch-Kincaid score (default target 60-70, acceptable 55-75; adjust for audience)
- Heading frequency (flag gaps > 300 words between H2s)
- Summary box presence in first 500 characters (accept "TL;DR", "Key Takeaways", "Summary", or "Quick Answer")
- Average sentence length (target 15-20, flag > 22)
- Sentences over 20 words (flag if > 25% of total)
- Passive voice percentage (flag > 10%, high priority > 15%)
- AI trigger word density (flag > 5 per 1,000 words)
- Transition word percentage (target 20-30%, flag < 15% or > 35%)
SEO Optimization
- Title tag length (frontmatter, target 40-60 chars)
- Heading hierarchy (regex for
^#{1,6}, no skipped levels) - Meta description length (frontmatter, target 150-160 chars)
- Internal link count (regex for relative URLs or same-domain links)
- External link count and tier classification
- URL structure check (lowercase, no stop words)
E-E-A-T Signals
- Author attribution presence (frontmatter
authorfield) - Citation format (regex for
\([^)]+\(http) - Unsourced statistics (numbers without attribution nearby)
- Self-promotion patterns (brand name frequency, max 1)
- First-person markers ("we tested", "in our experience")
Technical Elements
- Image count (regex for
!\[or<img) - Image alt text presence (images without alt attribute)
- Chart count (regex for
<svgor<figure) - Schema presence (search for structured data markers)
- OG meta tags (frontmatter
ogImage,coverImage) loading="lazy"on first image (flag as LCP issue)- lastUpdated presence (frontmatter check)
AI Citation Readiness
- Opening citable passage after each H2 (target 120-180 words after about 50-word answer sentence)
- Question-format heading ratio (target 60-70% of H2s)
- Visible Q&A presence when template calls for FAQ
- Table presence with
<thead>(for AI extraction) - robots.txt AI bot allowance (site-level check)
| 1 | # Blog Quality Scoring Checklist |
| 2 | |
| 3 | Score 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], 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 | |
| 74 | When 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 | |
| 121 | These can be detected programmatically: |
| 122 | |
| 123 | ### Content Quality |
| 124 | Word count per paragraph (split on double newlines, flag > 150, critical > 200) |
| 125 | Sentence count per paragraph (flag > 3 sentences) |
| 126 | Flesch-Kincaid score (default target 60-70, acceptable 55-75; adjust for audience) |
| 127 | Heading frequency (flag gaps > 300 words between H2s) |
| 128 | Summary box presence in first 500 characters (accept "TL;DR", "Key Takeaways", "Summary", or "Quick Answer") |
| 129 | Average sentence length (target 15-20, flag > 22) |
| 130 | Sentences over 20 words (flag if > 25% of total) |
| 131 | Passive voice percentage (flag > 10%, high priority > 15%) |
| 132 | AI trigger word density (flag > 5 per 1,000 words) |
| 133 | Transition word percentage (target 20-30%, flag < 15% or > 35%) |
| 134 | |
| 135 | ### SEO Optimization |
| 136 | Title tag length (frontmatter, target 40-60 chars) |
| 137 | Heading hierarchy (regex for `^#{1,6} `, no skipped levels) |
| 138 | Meta description length (frontmatter, target 150-160 chars) |
| 139 | Internal link count (regex for relative URLs or same-domain links) |
| 140 | External link count and tier classification |
| 141 | URL structure check (lowercase, no stop words) |
| 142 | |
| 143 | ### E-E-A-T Signals |
| 144 | Author attribution presence (frontmatter `author` field) |
| 145 | Citation format (regex for `\([^)]+\(http`) |
| 146 | Unsourced statistics (numbers without attribution nearby) |
| 147 | Self-promotion patterns (brand name frequency, max 1) |
| 148 | First-person markers ("we tested", "in our experience") |
| 149 | |
| 150 | ### Technical Elements |
| 151 | Image count (regex for `!\[` or `<img`) |
| 152 | Image alt text presence (images without alt attribute) |
| 153 | Chart count (regex for `<svg` or `<figure`) |
| 154 | Schema presence (search for structured data markers) |
| 155 | OG meta tags (frontmatter `ogImage`, `coverImage`) |
| 156 | `loading="lazy"` on first image (flag as LCP issue) |
| 157 | lastUpdated presence (frontmatter check) |
| 158 | |
| 159 | ### AI Citation Readiness |
| 160 | Opening citable passage after each H2 (target 120-180 words after about 50-word answer sentence) |
| 161 | Question-format heading ratio (target 60-70% of H2s) |
| 162 | Visible Q&A presence when template calls for FAQ |
| 163 | Table presence with `<thead>` (for AI extraction) |
| 164 | robots.txt AI bot allowance (site-level check) |
| 165 |
Details
- Updated
- Sep 18, 2026
- License
- MIT
- Stars on the repo
- ★ 2,219
- Checked
- Source
- AgriciDaniel/claude-blog ↗
- Creator
- AgriciDaniel · 129 listings
Similar skills
See all →
SkillArticle Illustration Generator
SkillArticle Cover Designer
SkillArticle Content Extractor
SkillArticle CTA Designer
SkillBrand Story Video Prompts
SkillArticle Writer From NotesMore from AgriciDaniel
SkillAgent Browsing Auditor
SkillAI Search Optimization
SkillBacklink Profile Analysis
SkillAmazon Ads Auditor
SkillApple Search Ads Auditor
SkillAttribution Auditor