BL

Automated post-writing SEO validator providing a checklist and actionable fixes for blog content.

Install

mkdir -p .claude/skills/blog-seo-check && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/12483" && unzip -o skill.zip -d .claude/skills/blog-seo-check && rm skill.zip

Installs to .claude/skills/blog-seo-check

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Post-writing SEO validation with pass/fail checklist covering title tag length and keyword placement, meta description quality, heading hierarchy and keyword density, internal/external link audit with anchor text analysis, canonical URL verification, Open Graph meta tags (og:title, og:description, og:image), Twitter Card validation, URL structure optimization, and image alt text presence. Produces prioritized fix list with specific recommendations. Use when user says "seo check", "check seo", "validate seo", "blog seo", "seo validation", "on-page seo", "title tag check", "meta description check", "heading check", "link audit".
634 chars✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Intermediate

Key capabilities

  • Validate title tag length and keyword placement
  • Assess meta description quality including statistics and call to action
  • Audit heading hierarchy for single H1 and no skipped levels
  • Analyze internal and external links for count, anchor text, and reachability
  • Verify canonical URL format and consistency

How it works

The skill reads a blog post, extracts its content and metadata, and then performs a series of checks against SEO best practices for title, meta description, headings, links, and URLs, generating a report with specific fixes.

Inputs & outputs

You give it
File path or URL of a completed blog post
You get back
complete SEO validation report with prioritized fixes

When to use blog-seo-check

  • Check SEO for blog post
  • Validate metadata
  • Audit link structure

About this skill

Blog SEO Check: Post-Writing Validation

Runs a comprehensive on-page SEO validation against a completed blog post and generates a pass/fail checklist with specific fixes for each failure. Designed to run after writing - catches issues before publishing.

Workflow

Step 1: Read Content

Read the target file and extract:

  • Frontmatter - title, description, date, lastUpdated, author, tags, canonical, og:image, slug/URL
  • Heading structure - H1, H2, H3 hierarchy with full text
  • Links - All internal and external links with anchor text
  • Meta tags - OG tags, Twitter Card tags, canonical URL
  • Body content - Full text for keyword and structural analysis

If the user provides a URL instead of a file path, use WebFetch to retrieve the page and extract the relevant elements.

Step 2: Title Tag Validation

CheckPass Criteria
Character count40-60 characters (no truncation in SERPs)
Keyword placementPrimary keyword in first half of title
Power wordContains at least one power word (e.g., Guide, Best, How, Why, Essential, Proven, Complete)
Truncation riskNo critical meaning lost if truncated at 60 chars
UniquenessNot generic - specific to the content

Step 3: Meta Description

CheckPass Criteria
Character count150-160 characters
Statistic includedContains at least one specific number or data point
Value propositionEnds with clear reader benefit or value proposition
Keyword presencePrimary keyword appears naturally (not stuffed)
No keyword stuffingKeyword appears at most once
Call to actionImplies action (learn, discover, find out, see)

Step 4: Heading Hierarchy

CheckPass Criteria
Single H1Exactly one H1 tag (the title)
No skipped levelsH1 -> H2 -> H3, never H1 -> H3 or H2 -> H4
Keyword in headingsPrimary keyword in 2-3 headings (natural, not forced)
Question format60-70% of H2 headings are questions
H2 count6-8 H2 sections for a standard blog post
Heading lengthEach heading under 70 characters

Step 5: Internal Links

CheckPass Criteria
Link count3-10 internal links per post
Anchor textDescriptive (not "click here" or "read more")
BidirectionalCheck if linked pages also link back (flag if not)
No orphan statusPost links to at least 3 other pages on the site
Link distributionLinks spread across the post, not clustered
No self-linksPost does not link to itself

Use Grep and Glob to scan the project for existing blog content and verify bidirectional linking where possible.

Step 5.5: Link Deduplication

CheckPass Criteria
No duplicate URLsEach URL appears at most once in body content
Best instance keptIf duplicates exist, keep the one with most descriptive anchor text
Navigation exemptHeader/footer nav links don't count toward body dedup
Fragment normalizationURLs with different #fragments treated as same URL

For each duplicate found:

  1. Normalize URLs (strip trailing slashes, query parameters, fragments)
  2. Score each instance by anchor text descriptiveness (keyword-rich > generic)
  3. Recommend keeping the highest-scored instance, removing others
  4. Deduct 1 point per duplicate from SEO Optimization score

Google records 1-2 anchor texts per URL per page (Zyppy 2023). Optimal: link to same URL once in body content; 5-10 internal links per 2,000 words; max ~50 total links per page.

Step 6: External Links

CheckPass Criteria
Source tierLinks to tier 1-3 sources only (authoritative, not SEO blogs)
Broken linksUse WebFetch to verify top external links are reachable
Rel attributesExternal links have appropriate rel attributes (nofollow for sponsored/UGC)
Link countAt least 3 external links to authoritative sources
No competitor linksNot linking to direct competitors unnecessarily

FLOW evidence triple (citations)

For every public statistic in the post, verify all three components:

  • Year anchor appears in prose ("In 2026," or "As of Q1 2026,") BEFORE the statistic, not buried in parentheses.
  • Inline citation names the publisher AND the document title (or report name).
  • Source block at the bottom of the post includes the URL plus retrieved YYYY-MM-DD for each cited source.

Posts that fail any of the three either drop the unverifiable claim or replace it with a verified alternative. See skills/blog/references/flow-alignment.md. For a one-shot prompt-driven check, see /blog flow optimize.

Step 7: Canonical URL

CheckPass Criteria
PresentCanonical URL is defined in frontmatter or meta tags
Correct formatFull absolute URL (https://domain.com/path)
Trailing slashConsistent with site convention (no mixed trailing slashes)
Self-referencingCanonical points to the page itself (unless intentional cross-domain)

Step 8: OG Meta Tags

CheckPass Criteria
og:titlePresent, matches or complements the title tag
og:descriptionPresent, 150-160 characters, compelling for social sharing
og:imagePresent, 1200x630 minimum dimensions, absolute URL
og:typeSet to "article" for blog posts
og:urlPresent, matches canonical URL
og:site_namePresent, matches site/brand name

Step 9: Twitter Card

CheckPass Criteria
twitter:cardSet to "summary_large_image" for blog posts
twitter:titlePresent, under 70 characters
twitter:descriptionPresent, under 200 characters
twitter:imagePresent, same as or similar to og:image
twitter:sitePresent if the site has a Twitter/X account

Step 10: URL Structure

CheckPass Criteria
LengthShort - under 75 characters for the path portion
Keyword presencePrimary keyword or close variant in the URL slug
No datesURL does not contain /2025/ or /2026/ date segments
No special charactersOnly lowercase letters, numbers, and hyphens
LowercaseEntire URL path is lowercase
No stop wordsMinimal use of "the", "a", "and", "of" in slug
No file extensionNo .html or .php in the URL (clean URLs)

Step 11: Generate Report

Output a comprehensive SEO validation report in this format:

## SEO Validation Report: [Title]

**File**: [path or URL]
**Date**: [check date]
**Overall**: [X/Y checks passed] - [PASS/NEEDS WORK/FAIL]

### Results

| # | Check | Status | Details | Fix |
|---|-------|--------|---------|-----|
| 1 | Title length | PASS | 52 chars | - |
| 2 | Title keyword | PASS | "keyword" in first half | - |
| 3 | Title power word | FAIL | No power word found | Add "Guide", "Essential", or "Complete" |
| 4 | Meta description length | PASS | 155 chars | - |
| 5 | Meta description stat | FAIL | No number found | Add a key statistic from the post |
| ... | ... | ... | ... | ... |

### Summary

**Passed**: [N] checks
**Failed**: [N] checks

### Priority Fixes
1. [Most impactful fix - what to change and where]
2. [Second most impactful fix]
3. [Third most impactful fix]

### Notes
- [Any observations about overall SEO health]
- [Suggestions for improvement beyond the checklist]

Status values:

  • PASS - Meets the criteria
  • FAIL - Does not meet the criteria, fix provided
  • WARN - Partially meets criteria or edge case, recommendation provided
  • N/A - Not applicable (e.g., no Twitter Card tags if site has no X account)

Optional: Live Performance Check (blog-google)

If the post has a published URL and blog-google credentials are available:

  1. Check credentials: python3 skills/blog-google/scripts/run.py google_auth --check --json
  2. If Tier 0+, run PageSpeed: python3 skills/blog-google/scripts/run.py pagespeed_check <url> --json
  3. Append to report:
    • Lighthouse Performance, Accessibility, Best Practices, SEO scores
    • CWV field data (LCP, INP, CLS) with traffic-light ratings
    • Top 3 opportunities with estimated savings
  4. Falls back silently if credentials unavailable or URL not published.

When not to use it

  • Before the blog post is written
  • When the user provides a URL but WebFetch is unavailable
  • When `blog-google` credentials are not available for live performance checks

Limitations

  • Requires a completed blog post
  • Relies on `WebFetch` for URL input
  • Live performance checks are optional and depend on `blog-google` credentials

How it compares

This skill provides a complete, automated SEO validation with a prioritized fix list, which is more thorough and efficient than manual SEO auditing.

Compared to similar skills

blog-seo-check side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
blog-seo-check (this skill)02moNo flagsIntermediate
seo-optimizer337moNo flagsIntermediate
seo-keyword-strategist14moNo flagsBeginner
content-trend-researcher309moReviewIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

seo-optimizer

davila7

Search Engine Optimization specialist for content strategy, technical SEO, keyword research, and ranking improvements. Use when optimizing website content, improving search rankings, conducting keyword analysis, or implementing SEO best practices. Expert in on-page SEO, meta tags, schema markup, and Core Web Vitals.

3381

seo-keyword-strategist

sickn33

Analyzes keyword usage in provided content, calculates density, suggests semantic variations and LSI keywords based on the topic. Prevents over-optimization. Use PROACTIVELY for content optimization.

12

content-trend-researcher

alirezarezvani

Advanced content and topic research skill that analyzes trends across Google Analytics, Google Trends, Substack, Medium, Reddit, LinkedIn, X, blogs, podcasts, and YouTube to generate data-driven article outlines based on user intent analysis

30126

seo-content-planner

sickn33

Creates comprehensive content outlines and topic clusters for SEO. Plans content calendars and identifies topic gaps. Use PROACTIVELY for content strategy and planning.

332

seo-keyword-cluster-builder

ComeOnOliver

SEO keyword clustering with topic organization, content hub architecture, internal linking strategies. Use for content strategy, keyword research, pillar page structures, or encountering cluster organization, hub architecture, internal linking errors.

00

seo-aeo-content-quality-auditor

Youssef-Ashraf2099

Audits content for SEO and AEO performance with scored reports, severity-ranked fix lists, and projected scores after fixes. Activate when the user wants to audit, review, or score content for SEO or AEO compliance.

00

Search skills

Search the agent skills registry