agentleFS
notegpt-officialnotegpt-official/notegpt-skills/skills/seo/page-seo-checker/SKILL.md

page-seo-checker

Skill16 starsChanged 9 days agoMITView on GitHub

Check SEO compliance of any domain page based on internal SEO standards and page launch checklist, generating a visual HTML report. Automatically extracts domain from URL, supports production and test environments. Trigger keywords: check SEO, SEO check, check page SEO, page SEO compliance, SEO report. Activate when user provides a page URL and requests SEO compliance check.

1 other project uses a version of this.

Adopted by

Most recently taken up by

The file

Show its rules and text

We split this skill into the rules it gives an agent

22 rules. About 0 are common, 17 are distinctive, and 5 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈17

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 5

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Not required for the core 12-point audit, but available for keyword validation if needed

    line 20
  2. Distinctive:

    If connected, use it to verify the page's primary keyword KD level matches the original decision report

    line 21
  3. Distinctive:

    Check SEO compliance of a page

    line 28
  4. Distinctive:

    Run an SEO audit on a URL

    line 29
  5. Distinctive:

    Verify page SEO before publishing

    line 30
  6. Distinctive:

    Ask in one message:

    line 44
  7. Very specific:

    Test/Staging: domain contains test, staging, dev, localhost, or non-production subdomains

    line 60
  8. Distinctive:

    If the URL is unreachable (404/5xx), report the error immediately and stop — there's nothing to check.

    line 63
  9. Distinctive:

    Does NOT contain banned openings: "is an AI-powered tool that..." / "is the ultimate solution..." ✓/✗

    line 79
  10. Very specific:

    No articles (a/an/the) before tool name in Title ✓/✗

    line 80
  11. Distinctive:

    Does NOT contain banned buzzwords ("revolutionize", "game-changer", etc.) ✓/✗

    line 90
  12. Distinctive:

    No H3 used where H2 should be, no H4 used where H3 should be ✓/✗

    line 109
  13. Very specific:

    Every <img> has an alt attribute ✓/✗ (report count of missing alt)

    line 152
  14. Distinctive:

    If FAQ section exists: FAQPage schema with all 10 Q&A pairs ✓/✗

    line 172
  15. Very specific:

    Requirement: If the page is a localized version (ja/zh/ko path), hreflang tags must link back to all language variants including the …

    line 178
  16. Distinctive:

    All hreflang URLs are valid HTTPS ✓/✗

    line 185
  17. Very specific:

    Method: Search body content for the brand name (as specified by user) occurrences.

    line 190
  18. Distinctive:

    No instances of "an AI [tool]", "the AI [tool]", "a [tool name]" where tool name is the site's specific product ✓/✗ (report any violations …

    line 193
  19. Distinctive:

    If Check 11 is skipped (English-only page), total becomes 81.

    line 219
  20. Distinctive:

    Do not just say "fix it" — give the exact correction.

    line 300
  21. Distinctive:

    Before delivering the report, verify:

    line 306
  22. Distinctive:

    Fix recommendations provided: Every ✗ has a specific correction

    line 312

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Page SEO Checker — 12-Point Automated Audit

Given a live page URL (production or test environment), this Skill runs a 12-point automated SEO compliance check and produces a visual HTML report. It verifies that every page meets all hard constraints before going live.

This is the final step of the SEO automation pipeline — after content is written, images generated, and localization applied, run this check as the quality gate before publishing.


MCP Dependency

seo-web-cafe MCP can optionally be used in this Skill to validate keyword difficulty assumptions. If the page's target keyword was analyzed using seo-keyword-difficulty (Step 0), the checker can cross-reference: did the page actually target a 🟢/🟡 keyword, or was it written for a 🔴 keyword that should be pivoted?

MCP endpoint: mcp__seo-web-cafe__estimate_keyword_difficulty

  • Not required for the core 12-point audit, but available for keyword validation if needed
  • If connected, use it to verify the page's primary keyword KD level matches the original decision report

Trigger

Activate when the user asks to:

  • Check SEO compliance of a page
  • Run an SEO audit on a URL
  • Verify page SEO before publishing
  • Generate an SEO report

The user must provide a live URL (http/https) — this Skill checks real published pages, not draft Markdown.


Required Inputs (Collect First)

Before starting the audit, collect the following from the user:

  1. Page URL — the live page to check (production or test environment)
  2. Brand Name — the brand name that should appear in the page (needed for Check 1 and Check 12)

Ask in one message:

"To run the SEO audit, I need:

  1. The page URL to check
  2. Your brand name (for brand mention verification)

Please provide these before I start."

Once collected, proceed to Phase 0 below.


Phase 0: Identify Target

  1. URL — the page to check (provided by the user)
  2. Environment — auto-detect from URL:
    • Production: domain matches your-domain.com, etc.
    • Test/Staging: domain contains test, staging, dev, localhost, or non-production subdomains
  3. Language — auto-detect from URL path prefix (/ja/, /zh/, /ko/, or default English)

If the URL is unreachable (404/5xx), report the error immediately and stop — there's nothing to check.


Phase 1: 12-Point Automated Audit

For each check point, use WebFetch to read the live page, then verify the specific constraint. Each point produces a Pass ✓ or Fail ✗ result with details.

Check 1: Title Tag

  • Requirement: Title exists, contains brand name, 50-60 characters, no banned phrases
  • Method: Extract <title> from page HTML
  • Verify:
    1. Title tag exists and is non-empty ✓/✗
    2. Character count within 50-60 ✓/✗ (report actual count)
    3. Contains brand name (as specified by user) ✓/✗
    4. Does NOT contain banned openings: "is an AI-powered tool that..." / "is the ultimate solution..." ✓/✗
    5. No articles (a/an/the) before tool name in Title ✓/✗

Check 2: Meta Description

  • Requirement: Description exists, 150-160 characters, contains core keyword, no banned phrases
  • Method: Extract <meta name="description"> from page HTML
  • Verify:
    1. Description tag exists and is non-empty ✓/✗
    2. Character count within 150-160 ✓/✗ (report actual count)
    3. Contains at least 1 core keyword ✓/✗
    4. Does NOT contain banned buzzwords ("revolutionize", "game-changer", etc.) ✓/✗

Check 3: Canonical Tag

  • Requirement: <link rel="canonical"> exists and points to the correct self-referencing URL
  • Method: Extract canonical link from page HTML
  • Verify:
    1. Canonical tag exists ✓/✗
    2. Canonical URL matches the current page URL (ignoring query params/trailing slashes) ✓/✗
    3. Canonical URL uses HTTPS ✓/✗

Check 4: H-Tag Structure

  • Requirement: Proper hierarchy — exactly 1 H1, H2s for each section, no skipped levels
  • Method: Extract all <h1> through <h6> tags from page HTML
  • Verify:
    1. Exactly 1 H1 tag on the page ✓/✗ (report count)
    2. H1 contains brand/product name ✓/✗
    3. H2 tags present for all 8 sections (S1-S8) ✓/✗
    4. No H3 used where H2 should be, no H4 used where H3 should be ✓/✗
    5. H-tag hierarchy is sequential (H1 → H2 → H3, no H1 → H3 skips) ✓/✗

Check 5: Body Content — Character Limits

  • Requirement: Each section's content meets the character limits defined in page-writer
  • Method: Parse section content by <!-- S1-S8 --> HTML comments, or by H2 boundaries
  • Verify:
    1. S1 What Is: 200-300 chars ✓/✗ (report count)
    2. S2 Pain Point: P ≤ 200 chars ✓/✗ (report count)
    3. S3 Feature summary: ≤ 100 chars ✓/✗ (report count)
    4. S3 Each feature description: ~100 chars ✓/✗ (report count)
    5. S4 Each user group: ≤ 150 chars ✓/✗ (report count)
    6. S5 Each step: ~70 chars ✓/✗ (report count)
    7. S6 CTA: ≤ 150 chars ✓/✗ (report count)
    8. S7 Each review: ≥ 300 chars ✓/✗ (report count)
    9. S8 Each FAQ answer: 200-300 chars ✓/✗ (report count)

Check 6: Testimonials — Realism & Variety

  • Requirement: 6 reviews with at least 4 different narrative arcs, no banned patterns
  • Method: Extract review block content from S7
  • Verify:
    1. At least 6 distinct reviews present ✓/✗ (report count)
    2. No "I've been using X for Y months and it's amazing!" openings ✓/✗
    3. At least 4 different narrative arcs identifiable ✓/✗ (list arcs found)
    4. Each review ≥ 300 chars ✓/✗

Check 7: FAQ — Structure & Banned Patterns

  • Requirement: 10 FAQs, Q1 is "What is [Product]", no banned openings
  • Method: Extract FAQ block from S8
  • Verify:
    1. At least 10 FAQs present ✓/✗ (report count)
    2. Q1 asks "What is [Product] and what makes it different?" ✓/✗
    3. No "Absolutely!" or "Great question!" answer openings ✓/✗
    4. Each answer 200-300 chars ✓/✗ (report min/max)

Check 8: Image ALT Tags

  • Requirement: All <img> tags have non-empty, descriptive alt text containing keyword
  • Method: Extract all <img> tags and their alt attributes from page HTML
  • Verify:
    1. Every <img> has an alt attribute ✓/✗ (report count of missing alt)
    2. Alt text is non-empty (not just "") ✓/✗
    3. At least 1 image alt contains the core keyword ✓/✗
    4. Alt text describes content, not just "image" or "photo" ✓/✗

Check 9: Internal Links

  • Requirement: At least 3 internal links to other site pages, using keyword-rich anchor text
  • Method: Extract all <a> tags with href pointing to the same domain
  • Verify:
    1. At least 3 internal links present ✓/✗ (report count)
    2. Anchor text is descriptive (not "click here" or "learn more") ✓/✗
    3. Links point to other tool/content pages (not just homepage) ✓/✗

Check 10: Schema / Structured Data

  • Requirement: FAQ Schema (FAQPage) and/or Product Schema present in JSON-LD
  • Method: Extract <script type="application/ld+json"> blocks from page HTML
  • Verify:
    1. At least 1 JSON-LD block exists ✓/✗
    2. If FAQ section exists: FAQPage schema with all 10 Q&A pairs ✓/✗
    3. Schema is valid JSON (no syntax errors) ✓/✗
    4. Schema @type matches content (FAQPage for FAQ, Product/SoftwareApplication for tool pages) ✓/✗

Check 11: Hreflang Tags (if localized page)

  • Requirement: If the page is a localized version (ja/zh/ko path), hreflang tags must link back to all language variants including the English original
  • Method: Extract all <link rel="alternate" hreflang="..."> tags
  • Verify:
    1. Hreflang tags exist ✓/✗ (skip check if English-only page)
    2. Includes hreflang="en" pointing to original English page ✓/✗
    3. Includes hreflang="x-default" ✓/✗
    4. Includes hreflang for each available language variant ✓/✗
    5. All hreflang URLs are valid HTTPS ✓/✗

Check 12: Brand Name Count & Zero-Article Compliance

  • Requirement: Brand name appears exactly 10 times; no articles before tool names
  • Method: Search body content for the brand name (as specified by user) occurrences; also search for [a/an/the] [tool name] patterns
  • Verify:
    1. Brand name count = 10 ✓/✗ (report actual count and per-section distribution)
    2. No instances of "an AI [tool]", "the AI [tool]", "a [tool name]" where tool name is the site's specific product ✓/✗ (report any violations found)

Phase 2: Score Calculation

Scoring

Each check point is worth points based on its SEO impact:

#CheckPointsWeight
1Title Tag10High — Title is the #1 SEO signal
2Meta Description8High — CTR driver
3Canonical5Medium — Prevents duplication
4H-Tag Structure8High — Content hierarchy signal
5Body Content Limits10High — Readability + quality
6Testimonials5Medium — Trust signals
7FAQ8High — FAQ Schema eligibility
8Image ALT5Medium — Accessibility + image SEO
9Internal Links5Medium — Crawlability + authority flow
10Schema10High — Rich results eligibility
11Hreflang5Medium — International SEO (skip if N/A)
12Brand Count & Zero-Article5Medium — Brand consistency
Total86
  • If Check 11 is skipped (English-only page), total becomes 81. Scale score proportionally.
  • Pass ≥ 80% = Green (ready to publish)
  • Pass 60-79% = Yellow (fix critical items before publishing)
  • Pass < 60% = Red (do NOT publish — major issues need fixing first)

Phase 3: Generate HTML Report

Produce a standalone HTML file with the following sections:

Report Structure

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>SEO Audit Report — [URL]</title>
  <style>
    /* Clean, professional styling */
    /* Green ✓ / Red ✗ indicators */
    /* Collapsible details for each check */
    /* Summary score banner at top */
  </style>
</head>
<body>
  <header>
    <h1>SEO Audit Report</h1>
    <div class="meta">URL: [url] | Date: [date] | Env: [prod/test] | Lang: [en/ja/zh/ko]</div>
    <div class="score-banner">
      <span class="score">[X]/[total]</span>
      <span class="badge [green/yellow/red]">[Green/Yellow/Red]</span>
    </div>
  </header>

  <section class="checks">
    <!-- For each of the 12 checks -->
    <div class="check [pass/fail]">
      <h3>Check [N]: [Name]</h3>
      <span class="result">[✓ Pass / ✗ Fail]</span>
      <details>
        <summary>Details</summary>
        <table>
          <tr><td>Sub-check</td><td>Result</td><td>Value</td></tr>
          <!-- Each sub-verification item -->
        </table>
      </details>
      <div class="fix-if-fail">[If ✗: specific fix instruction]</div>
    </div>
  </section>

  <section class="summary">
    <h2>Summary & Action Items</h2>
    <ul>
      <!-- List all ✗ items with fix instructions -->
    </ul>
    <h2>Recommendation</h2>
    <p>[Green: Ready to publish / Yellow: Fix [N] items / Red: Do not publish]</p>
  </section>
</body>
</html>

Save the report as seo-audit-[domain]-[date].html in the current working directory.


Phase 4: Fix Recommendations

For each ✗ item, provide a specific, actionable fix:

CheckTypical Fix
Title too long/short"Shorten Title to 50-60 chars: suggested rewrite: [new title]"
Missing canonical"Add <link rel=\"canonical\" href=\"[url]\"> to <head>"
H-tag skip"Change H3 to H2 on [section], or add missing H2 before the H3 block"
Missing FAQ schema"Add JSON-LD block with FAQPage schema containing all 10 Q&A pairs"
Brand count off"Add/remove [N] brand mentions. Suggested positions: [list]"
Zero-article violation"Replace an AI background remover → AI background remover in [location]"

Do not just say "fix it" — give the exact correction.


Quality Checklist

Before delivering the report, verify:

  1. All 12 checks executed: None skipped (except Check 11 for English-only pages)
  2. URL was reachable: Page successfully fetched — if not, report error and stop
  3. Score calculated correctly: Total points match, percentage correct
  4. HTML report generated: File saved, visually clean and complete
  5. Fix recommendations provided: Every ✗ has a specific correction
  6. Decision category assigned: Green/Yellow/Red with clear publish/don't-publish recommendation

Resources

references/

  • references/seo-checklist.md — The full SEO checklist with all 12 points, sub-verification items, and expected values. Load this at the start of each audit to ensure completeness.
  • references/report-template.html — Starter HTML template for the audit report. Customize with actual data each run.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.