agentleFS
otomata-techotomata-tech/claude-skills/skills/seo-check/SKILL.md

seo-check

Skill1 starsChanged 5 months agoMITView on GitHub

Audit SEO, Open Graph, responsive design. Checks meta tags, OG image, robots.txt, sitemap, structured data, and mobile rendering.

5 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions5 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 5

    1. rainday/smart-blog-skills★ 35same name
    2. Quality-Max/free-qa-skills★ 13same name
    3. Nirusan/claude-config★ 7same name
    4. theYahia/yandex-webmaster-mcp★ 4same name
    5. getvibekits/vibe-coding-rules★ 0same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository3 other files it gives its agents.

The file

We split this skill into the rules it gives an agent

12 rules. 0 are common, 6 are distinctive, and 6 are very specific to this project.

  • 0

    Common

    Most of the 5 edited versions we read keep these.

  • 6

    Distinctive

    This author's own choices. Worth a look.

  • 6

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Search for index.html — common locations: ./index.html, public/index.html, frontend/index.html, src/index.html

    line 20
  2. Very specific:

    Read the HTML <head> from the source index.html and check:

    line 26
  3. Very specific:

    Check these <meta property="og:..."> tags in index.html:

    line 40
  4. Very specific:

    If og:image references an image file:

    line 55
  5. Distinctive:

    Read the image to check dimensions (should be 1200×630) and inspect visually

    line 57
  6. Distinctive:

    Check file size < 300KB

    line 58
  7. Very specific:

    Check for <script type="application/ld+json"> in index.html:

    line 71
  8. Distinctive:

    Look for these files in the static/public assets directory:

    line 79
  9. Distinctive:

    No authenticated/private pages included?

    line 91
  10. Very specific:

    Use o-browser (BrowserClient) to take screenshots of the production URL at multiple viewports:

    line 95
  11. Distinctive:

    Mobile: no horizontal overflow, text readable, touch targets ≥ 44px, navigation usable

    line 115
  12. Distinctive:

    Ask the user which issues to fix

    line 158

“Common” is measured: kept by at least 6 in 10 of the 5 edited versions of this file we could read. “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

SEO & Responsive Audit

Audit a web project's SEO metadata and responsive rendering from source code. Fix issues found.

Input

  • Work from the current project directory (cwd)
  • An optional URL argument for the responsive check (screenshots). If not provided, infer the production URL from CLAUDE.md, config files, or env vars.

Step 0: Locate Files

Find the HTML entry point and static assets:

  1. Search for index.html — common locations: ./index.html, public/index.html, frontend/index.html, src/index.html
  2. Find the static/public assets directory (where robots.txt, sitemap.xml, OG images live): public/, frontend/public/, static/
  3. Identify the production domain from CLAUDE.md, package.json homepage, env files, or nginx config

1. Meta Tags Audit

Read the HTML <head> from the source index.html and check:

CheckOptimal
<title>50–60 characters, includes brand + value prop
<meta name="description">120–160 characters, actionable
<link rel="canonical">Present, absolute URL
<html lang="...">Present
<meta name="viewport">Present

Report: present/missing/too short/too long for each.

2. Open Graph Audit

Check these <meta property="og:..."> tags in index.html:

TagRequired
og:titleYes — 50–60 chars
og:descriptionYes — under 200 chars
og:imageYes — URL to image
og:image:widthYes — 1200
og:image:heightYes — 630
og:urlYes — canonical URL
og:typeYes — website or article
og:site_nameRecommended

OG Image Validation

If og:image references an image file:

  1. Find the local file in the public/static assets directory
  2. Read the image to check dimensions (should be 1200×630) and inspect visually
  3. Check file size < 300KB
  4. Visual check: has a clear headline? Has a CTA or brand? Not just a generic illustration?

3. Twitter Card Audit

Check in index.html:

  • twitter:card — should be summary_large_image
  • twitter:title — present
  • twitter:description — present
  • twitter:image — present

4. Structured Data (JSON-LD)

Check for <script type="application/ld+json"> in index.html:

  • Present? Parse and validate JSON
  • Has @type — SoftwareApplication, WebSite, Organization, etc.
  • Has name, url, description
  • Schema matches the actual product/site

5. Crawler Files

Look for these files in the static/public assets directory:

robots.txt

  • Exists?
  • Has Sitemap: directive?
  • Blocks auth/api/admin routes?
  • Allows public pages?

sitemap.xml

  • Exists?
  • Valid XML?
  • Lists all public pages?
  • No authenticated/private pages included?

6. Responsive Design Check

Use o-browser (BrowserClient) to take screenshots of the production URL at multiple viewports:

from o_browser import BrowserClient

viewports = [
    ("mobile", 375, 812),     # iPhone 13
    ("tablet", 768, 1024),    # iPad
    ("desktop", 1440, 900),   # Standard desktop
]

async with BrowserClient(headless=True) as browser:
    for name, w, h in viewports:
        await browser.page.set_viewport_size({"width": w, "height": h})
        await browser.goto(url)
        await browser.page.wait_for_load_state("networkidle")
        await browser.screenshot(f"/tmp/responsive-{name}.png")

Then read each screenshot and check:

  • Mobile: no horizontal overflow, text readable, touch targets ≥ 44px, navigation usable
  • Tablet: layout adapts, no wasted space, images scale
  • Desktop: full layout, no broken sections

7. Output

Report Format

## SEO Audit: <project>

### Meta Tags
- ✅ title: "..." (XX chars)
- ❌ description: missing
- ...

### Open Graph
- ✅ og:title: "..."
- ⚠️ og:image: exists but no headline text
- ...

### Twitter Card
- ✅ All tags present

### Structured Data
- ✅ JSON-LD SoftwareApplication

### Crawler Files
- ✅ robots.txt
- ❌ sitemap.xml: missing

### Responsive
- ✅ Mobile: [screenshot]
- ⚠️ Tablet: horizontal overflow on hero section
- ✅ Desktop: OK

### Issues to Fix
1. [priority] description
2. ...

After Reporting

  • Ask the user which issues to fix
  • Fix them directly in source code (edit HTML, generate images, create files)
  • For OG image generation, use Python PIL to create/modify images with text overlay
  • For responsive issues, edit CSS/components in the project
  • Re-run affected checks after fixes

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.