Install
$ agentstack add skill-otomata-tech-claude-skills-seo-check ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
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:
- Search for
index.html— common locations:./index.html,public/index.html,frontend/index.html,src/index.html - Find the static/public assets directory (where
robots.txt,sitemap.xml, OG images live):public/,frontend/public/,static/ - Identify the production domain from CLAUDE.md, package.json homepage, env files, or nginx config
1. Meta Tags Audit
Read the HTML ` from the source index.html` and check:
| Check | Optimal | |-------|---------| | ` | 50–60 characters, includes brand + value prop | | | 120–160 characters, actionable | | | Present, absolute URL | | | Present | | ` | Present |
Report: present/missing/too short/too long for each.
2. Open Graph Audit
Check these ` tags in index.html`:
| Tag | Required | |-----|----------| | og:title | Yes — 50–60 chars | | og:description | Yes — under 200 chars | | og:image | Yes — URL to image | | og:image:width | Yes — 1200 | | og:image:height | Yes — 630 | | og:url | Yes — canonical URL | | og:type | Yes — website or article | | og:site_name | Recommended |
OG Image Validation
If og:image references an image file:
- Find the local file in the public/static assets directory
- Read the image to check dimensions (should be 1200×630) and inspect visually
- Check file size
inindex.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:
### 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
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: otomata-tech
- Source: otomata-tech/claude-skills
- License: MIT
- Homepage: https://otomata-tech.github.io/claude-skills/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.