Full-site blog health assessment scanning all blog files for quality scores, orphan pages, topic cannibalization, stale content, and AI citation readiness. Runs canonical batch analysis before site-wide checks. Produces per-post scores and a prioritized action queue. Use when user says "audit blog", "blog audit", "site audit", "blog health", "audit all posts", "check all blogs".
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 jsonProcess 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:
[project-root]/reports/blog-audit-YYYY-MM-DD.md and
[project-root]/reports/blog-audit-YYYY-MM-DD.json/blog analyze <file> on the lowest-scoring post first/blog flow optimize for AI-citation SEO checks on key postsFor 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).
aec971a
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.