Audit seo
Pre-production audit protocol for static websites — 10 sequential skills covering performance, accessibility, SEO, security, and more
npx -y skills add magallon/website-audit-toolkit --skill audit-seoAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
SEO audit for static websites hosted on cPanel. Reviews technical foundations that can block indexing (robots.txt, sitemap, canonicalization, HTTPS, security headers), on-page elements affecting SERP presentation (title tags, meta descriptions, heading structure, image SEO, internal linking), structured data with JSON-LD (Organization, SoftwareApplication, FAQPage, BreadcrumbList, HowTo), regional language configuration, Core Web Vitals alignment, Open Graph for social sharing, and E-E-A-T signals for B2B credibility. Run as the seventh audit in the pre-production protocol, after performance, code consistency, accessibility, responsive design, cross-browser, and conversion UX.
SKILL.md
14.6 KB, ~3.3k tokens by cl100k_base, as published. Nobody here has run it
SEO Audit
Static Websites on cPanel
SEO for a commercial B2B site has different priorities than SEO for blogs or e-commerce. The primary goal is not ranking for generic high-volume keywords — it is being found by decision-makers actively searching for solutions, appearing as a trustworthy result in SERP, and ensuring every page a prospect might visit is correctly indexed and optimized.
This audit covers technical foundations that can block indexing, on-page elements affecting SERP presentation and click-through, and structured data that communicates authority to search engines.
Guiding principle: Technical SEO enables ranking. Content quality earns it. Technical checks are the floor, not the ceiling.
Does not cover: domain authority, backlinks, keyword research, SERP competition, algorithm updates, or Search Console data — these are post-launch concerns.
Severity Levels
| Level | Description | Action |
|---|---|---|
| Critical | Blocks indexing or excludes pages from search | Fix before launch |
| High | Significantly affects SERP presentation or crawl | Fix before launch |
| Medium | Reduces SEO effectiveness without blocking indexing | Fix in first week |
| Low | Improvement opportunity with minor impact | Fix when convenient |
Integrity rule: A site cannot be considered SEO-ready if it has unresolved critical issues, regardless of how many other checks pass.
Section 1 — Crawlability and Indexing
1.1 robots.txt
Must exist at domain root and return HTTP 200. User-agent: * Allow: / Disallow: /thank-you/ Disallow: /404.html Sitemap: https://example.com/sitemap.xml
What to check:
robots.txtexists and returns HTTP 200- Sitemap referenced with full HTTPS URL
- No important pages blocked with
Disallow - CSS, JS, fonts, and image directories NOT blocked — Google needs to render pages
- No
Disallow: /blocking the entire site
Flag any Disallow on /assets/, /css/, /js/, /fonts/, or /images/ — prevents Google from rendering, causes ranking penalties.
1.2 Sitemap XML
Tells search engines which pages exist and when they were updated.
What to check:
sitemap.xmlexists and is accessible- Contains only canonical, indexable URLs — no thank-you pages, errors, or duplicates
lastmodreflects actual last modification date — not today's date on all pagespriorityreflects actual page importance (1.0 homepage, lower for secondary)- All URLs return HTTP 200 — no redirects or errors
- Referenced in
robots.txt - Trailing slash consistency — all with or all without
Full sitemap XML example: see
references/seo-templates.md
1.3 URL Structure
Rules:
- Lowercase only
- Separated by hyphens, not underscores
- No visible
.htmlextensions - Under 75 characters per URL
- No query parameters in main URLs
- HTTPS on all pages
Flag URLs with uppercase, underscores, visible extensions, or query parameters.
1.4 Canonicalization
What to check:
- Every page has a self-referencing canonical
- Canonical uses exact HTTPS — not HTTP
- www vs non-www consistency — choose one, apply everywhere
- Trailing slash consistency — canonical and internal links use same convention
- No page has a canonical pointing to a different page unintentionally
<link rel="canonical" href="https://example.com/solutions/">
If pages use query parameters (e.g., /demo/?category=legal), canonical must point to the clean URL.
1.5 Meta Robots
<!-- Pages to index (all main pages) -->
<meta name="robots" content="index, follow, max-snippet:150, max-image-preview:large">
<!-- Pages NOT to index -->
<meta name="robots" content="noindex, nofollow">
Pages that need noindex: thank-you/confirmation pages, 404 error page, any policy pages if preferred.
Critical flag: verify no main page has noindex accidentally.
1.6 HTTPS and Security Headers
What to check:
- Entire site serves over HTTPS
- SSL certificate valid and not expired
- HTTP → HTTPS redirect configured in
.htaccess - No mixed content (HTTP resources inside HTTPS pages)
Security headers in .htaccess:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "DENY"
Not direct ranking factors but contribute to E-E-A-T Trustworthiness — correct security headers signal technical professionalism.
Section 2 — On-Page Optimization
2.1 Title Tags
Highest individual impact on ranking. Must be unique per page.
Rules:
- 50-60 characters — Google truncates around 60
- Primary keyword near the beginning
- Unique per page — never duplicate titles
- Brand name at end (except homepage)
- Benefit-oriented, not technical description
What to check per page:
- Title unique — no page shares a title with another
- Between 50-60 characters
- Primary keyword in first 30 characters
- No keyword stuffing
- Title matches actual page content
2.2 Meta Descriptions
Not a direct ranking factor but determines SERP text. Affects CTR which is a relevance signal.
Rules:
- 150-160 characters
- Include primary keyword naturally
- Clear CTA — what the user should do
- Unique per page
- Accurately describes what the user will find
What to check per page:
- Meta description present on all pages
- Between 150-160 characters
- Not duplicated between pages
- Includes the page's primary keyword
- Ends with action or clear benefit
2.3 Heading Structure
Rules:
- One
<h1>per page — the main topic - Logical hierarchy: H1 → H2 → H3, no skipped levels
- H1 must contain primary keyword
- Headings as arguments, not labels
- Keyword in at least one H2
Heading argument test: Cover the logo and body copy. Read only the headings in sequence. A first-time visitor must understand the full value proposition from headings alone.
<!-- ❌ Headings as labels -->
<h1>Company Name</h1>
<h2>Features</h2>
<h2>How it works</h2>
<!-- ✅ Headings as arguments -->
<h1>Your documentation, searchable with AI in seconds</h1>
<h2>Find any answer without digging through documents</h2>
<h2>Companies that recovered their investment in under 2 months</h2>
2.4 Keyword in First 100 Words
Primary keyword must appear in the first paragraph of each page. Google gives more weight to content appearing early.
What to check:
- Primary keyword appears before word 100 in visible content
- Appearance is natural — not forced
- First paragraph directly answers what the user is searching for
2.5 Image SEO
What to check:
- All images have descriptive
alttext - Alt text describes the image, not a keyword list
- Descriptive filenames:
product-dashboard-results.webpnotIMG_001.webp - Images compressed (see Audit 04 — Performance for format details)
widthandheightdefined in HTML to prevent CLSloading="lazy"on below-fold imagesfetchpriority="high"on hero/LCP image
2.6 Internal Linking
Rules:
- Important pages well-linked from other pages
- Descriptive anchor text — never "click here" or "see more"
- No broken internal links
- Bidirectional where relevant
- 3-5 internal links per 1,000 words of content
- No orphan pages — all have at least one incoming link
<!-- ❌ Generic anchor text -->
<a href="/demo/">Click here</a>
<!-- ✅ Descriptive anchor text -->
<a href="/demo/">Try the interactive demo</a>
Section 3 — Structured Data (JSON-LD)
Schema markup helps search engines understand content meaning. It enables eligibility for rich results but does not guarantee them.
For static vanilla sites with JSON-LD in HTML, schema is verifiable via source code. Validate with Google Rich Results Test before launch.
Schemas to implement:
| Schema | Location | Purpose |
|---|---|---|
| Organization | Homepage | Company identity, contact, social links |
| SoftwareApplication | Homepage or Solutions | Product details, pricing, features |
| FAQPage | Page with FAQ content | FAQ rich results eligibility |
| HowTo | Process/implementation section | Step-by-step rich results |
| BreadcrumbList | Internal pages | Navigation context in SERP |
Full JSON-LD templates for all schemas: see
references/seo-templates.md
Validation checks:
- All JSON-LD is syntactically valid
- Validated with Google Rich Results Test before launch
- Organization schema on homepage
- No schema makes claims not backed by visible page content
- Schema data matches actual page content (prices, features, FAQs)
Section 4 — Language and Regional Configuration
4.1 Lang Attribute
<!-- Specify regional variant matching target market -->
<html lang="es-MX">
Use the specific regional variant (e.g., es-MX, es-CO, pt-BR, en-US) rather than just the language code. Affects spell checkers, screen readers, and regional relevance signals.
Check: lang attribute with correct regional variant present on <html> element of every page.
4.2 Hreflang (Conditional)
Only applies if the site has multiple language versions. If single-language, not needed.
<!-- Only if multilingual -->
<link rel="alternate" hreflang="es-MX" href="https://example.com/">
<link rel="alternate" hreflang="en" href="https://example.com/en/">
<link rel="alternate" hreflang="x-default" href="https://example.com/">
Section 5 — Open Graph and Social Sharing
Determines how pages appear when shared on LinkedIn, WhatsApp, and Facebook. For B2B sites where LinkedIn sharing is a distribution channel, this directly affects brand presentation.
Required per page:
<meta property="og:title" content="Page Title — Brand">
<meta property="og:description" content="Specific page description">
<meta property="og:image" content="https://example.com/assets/images/og-page-1200x630.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:url" content="https://example.com/page/">
<meta property="og:type" content="website">
<meta property="og:locale" content="es_MX">
<meta property="og:site_name" content="Brand Name">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Page Title — Brand">
<meta name="twitter:description" content="Specific page description">
<meta name="twitter:image" content="https://example.com/assets/images/og-page-1200x630.jpg">
OG image specs: 1200×630px, JPG or PNG (not WebP — LinkedIn doesn't fully support it), under 1 MB, text legible at thumbnail size.
What to check:
- All pages have complete Open Graph tags
og:imagepoints to 1200×630px image- OG image exists and is publicly accessible
og:urlmatches the canonical URL- Each page has unique
og:titleandog:description
Section 6 — E-E-A-T for B2B
E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness) is not a direct ranking factor but the framework Google uses to evaluate quality. For a new site without authority history, the most actionable signals in pre-production:
Experience:
- Case studies with specific numbers, not generic claims
- Real metrics documented — ROI, payback period, error reduction %
- Screenshots or demos of the actual system, not just mockups
Expertise:
- Technical content is accurate — no errors in product descriptions
- Terminology consistent across the site
- Claims are verifiable — no "99% accuracy" without evidence
Authoritativeness:
- Founder or team has verifiable public presence (LinkedIn linked)
- Company name and contact data consistent across site
- Company has a complete LinkedIn profile
Trustworthiness:
- HTTPS active
- Privacy policy and terms linked from footer
- Real, accessible contact data — email, phone, or messaging
- Information about who is behind the product — avoid corporate anonymity
- Product promises are achievable and backed by evidence
Specificity test for claims: Replace each claim with its opposite. If the opposite sounds absurd, the claim has no information value.
Section 7 — Core Web Vitals (Cross-Reference)
Core Web Vitals affect ranking when content quality is comparable between competitors. Technical performance checks are covered in Audit 04 — Performance. This section only verifies SEO alignment:
| Metric | Target | SEO Impact |
|---|---|---|
| LCP | < 2.5s | High — affects mobile ranking |
| INP | < 200ms | Medium — interactivity signal |
| CLS | < 0.1 | High — visual experience |
| TTFB | < 800ms | Server reference |
Cross-reference checks with Audit 04:
- Hero image has
fetchpriority="high"(affects LCP) - All images have
widthandheight(affects CLS) - Fonts loaded with
font-display: swap(affects CLS and LCP) - Non-critical JS has
defer(affects INP) - cPanel hosting has adequate cache configuration (affects TTFB)
Audit Output Format
SEO Audit — [Project Name]
Date: [Date]
Pages audited: [count]
Summary
Critical issues: X
High priority: X
Medium priority: X
Low priority: X
Indexability: [All pages indexable / Issues found]
Schema status: [Complete / Partial / Missing]
Overall SEO readiness: [Ready / Needs work / Critical blockers]
Critical Issues
[Issue title]
Category: [Crawlability / On-page / Schema / Social / E-E-A-T]
Page: [URL or all pages]
Issue: [What is wrong and SEO impact]
Fix: [Specific correction]
High Priority
[Same format]
Medium Priority
[Same format]
Low Priority
[Same format]
Recommended Fix Order
Indexation blockers — robots.txt, sitemap, noindex
Title tags and meta descriptions — SERP presentation
Heading structure — on-page signals
Schema markup — rich results eligibility
Open Graph — social sharing presentation
E-E-A-T signals — credibility improvements
Full pre-launch checklist and tools reference: see
references/checklist.md
What ships with it: 2 files
5.0 KB alongside SKILL.md
references/
- checklist.md1.3 KB
- seo-template.md3.7 KB
Gives 0 of the 12 instructions most design frontend skills give in ~3.3k tokens
Counted across 1,169 of the 1,878 authors here whose files we hold, read 2026-08-07
- Use CSS variables for color consistencyin 72 of 1169, across 23 files
- Commit to one bold aesthetic direction before codingin 72 of 1169, across 27 files
- Match implementation complexity to the aesthetic visionin 70 of 1169, across 20 files
- Add atmospheric background effects and texturesin 57 of 1169, across 9 files
- Use unexpected spatial compositions and layoutsin 56 of 1169, across 8 files
- Implement real working codein 55 of 1169, across 7 files
- Vary themes and aesthetics across different designsin 48 of 1169, across 7 files
- Launch chromium in headless modein 47 of 1169, across 4 files
- Close the browser when donein 47 of 1169, across 4 files
- Run provided scripts with help flag firstin 47 of 1169, across 4 files
- Wait for network idle statein 47 of 1169, across 4 files
- Use descriptive selectors for elementsin 47 of 1169, across 4 files
Said here and by no other author read
- Verify robots.txt exists and allows crawling.
- Check sitemap XML contains only canonical URLs.
- Ensure every page has a self-referencing canonical tag.
- Ensure primary keyword appears in first 100 words.
- Validate structured data using Google Rich Results Test.
- Specify regional variant in the html lang attribute.
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.