Full-site blog health assessment scanning all blog files for quality scores, orphan pages, topic cannibalization, stale content, and AI citation readiness.
Library skill — the default version is maintained in GitHub; edits you make live in your own clone.
Performs a comprehensive blog health assessment across all posts in the project. Scans for quality scores, orphan pages, topic cannibalization, stale content, and AI citation readiness. Uses the canonical analyzer JSON as the score source and produces a prioritized action queue.
Scan the project for all blog content files:
.md, .mdx, .html, .astro, .svelte, .vue,
.tsx, and .jsx in common blog directories and CMS export folderscontent/posts/blog/src/content/_posts/pages/blog/articles/content/blog/**src/pages/blog/.git/,
dot-directories, node_modules/, vendor/, dist/, build/, .next/,
coverage/, reports/, generated exports, README, CHANGELOG, LICENSE,
config files, SKILL.md, package files, .env*, keys, and private notesIf no blog files are found in standard locations, ask for an allow-listed root or only search user-approved content directories. Do not scan the entire project root by default.
Run canonical analyzer output first and use it as the source of per-post scores:
python3 scripts/analyze_blog.py <blog-root> --batch --format json
Process files in chunks, cap parallel follow-up work to a small fixed number,
respect context limits, and aggregate deterministic JSON with file, score,
categories, issues, and metadata. Layer the site-wide checks below on top
of analyzer JSON, not separate scoring rubrics.
dateModified, lastUpdated, updated, and lastmod, including
timezone-normalized generated schema, then require freshness parityAdd site-wide technical checks before final recommendations:
blog-google when available for Core Web Vitals, GSC queries, URL
Inspection, indexing status, and GA4 contextSKIPPED: credentials unavailableAnalyze across all posts for keyword competition:
Build and analyze the internal link graph:
{ page -> [pages it links to] }{ page -> [pages linking to it] }Audit content freshness across all posts:
lastUpdated, dateModified, date, updatedAggregate all results into a comprehensive report:
## Blog Audit Report
**Audit Date:** [date]
**Total Posts:** N
**Average Score:** XX/100
### Health Overview
| Metric | Count |
|--------|-------|
| Posts Scoring 90+ (Excellent) | N |
| Posts Scoring 70-89 (Good) | N |
| Posts Scoring 50-69 (Needs Work) | N |
| Posts Scoring <50 (Poor) | N |
| Orphan Pages | N |
| Dead-End Pages | N |
| Cannibalization Issues | N |
| Stale or Decaying Content | N |
### Per-Post Scores
| Post | Score | Content | SEO | E-E-A-T | Technical | AI Citation | Issues |
|------|-------|---------|-----|---------|-----------|-------------|--------|
| [filename] | XX/100 | X/30 | X/25 | X/15 | X/15 | X/15 | [count] |
### Prioritized Action Queue (Lowest Score First)
| Priority | Post | Score | Top Issue | Recommended Action |
|----------|------|-------|-----------|--------------------|
| 1 | [file] | XX | [issue] | [action] |
| 2 | [file] | XX | [issue] | [action] |
### Topic Cannibalization
| Keyword | Competing Posts | Recommendation |
|---------|----------------|----------------|
| [keyword] | post-a.md, post-b.md | Merge / Redirect / Differentiate |
### Orphan Pages (No Inbound Links)
| Page | Inbound Links | Recommended Link Sources |
|------|---------------|--------------------------|
| [file] | 0 | post-a.md, post-b.md, post-c.md |
### Stale Content
| Post | Last Updated | Days Stale | Priority | Refresh Effort |
|------|-------------|------------|----------|----------------|
| [file] | [date] | [N] | High/Med/Low | Light/Moderate/Heavy |
Save timestamped Markdown and JSON exports under reports/, for example
reports/blog-audit-YYYY-MM-DD.md and reports/blog-audit-YYYY-MM-DD.json.
Do not overwrite a previous audit report.
After saving, inform the user:
- Report locations: [project-root]/reports/blog-audit-YYYY-MM-DD.md and
[project-root]/reports/blog-audit-YYYY-MM-DD.json
- Summary of findings (total posts, average score, critical issues count)
- Suggest running /blog analyze <file> on the lowest-scoring post first
- Suggest running /blog flow optimize for AI-citation SEO checks on key posts
For evidence-led audit prompts beyond this site-wide health pass, see /blog flow optimize (visibility, CTR, schema, extraction audits) and /blog flow win (dual-surface scorecard, conversion audit).