Install
openclaw skills install @marcindudekdev/whydoesmysitesuckGrade any website 0-100 across categories like SEO, security, performance, accessibility, content, email auth and AI/LLM readiness, using the free whydoesmysitesuck.com API. Use when the user asks "why is my site bad/slow", "audit this website", "check my site's SEO/security", "how good is example.com", "score this domain", "compare these two sites", or wants an objective quality baseline for a URL before or after making changes.
openclaw skills install @marcindudekdev/whydoesmysitesuckReturns a 0-100 score, a letter grade and a per-category breakdown for any domain, from a 368-point audit. Free, read-only, one HTTP call.
Use it to answer "is this site any good, and where is it weak?" — and to get a before/after number when you change someone's site.
Free and self-service. Either send the user to https://whydoesmysitesuck.com/api, or register directly — ask the user for their email first, and use theirs, not an invented one; the key is emailed to that address.
curl -s -X POST https://whydoesmysitesuck.com/api/partner/register \
-H "Content-Type: application/json" \
-d '{"label": "My project", "email": "user@example.com"}'
# -> {"api_key": "wdmss_..."}
Store it as WDMSS_API_KEY. It is shown once in the response and emailed as a copy.
curl -s -H "X-API-Key: $WDMSS_API_KEY" \
https://whydoesmysitesuck.com/api/public/domain/example.com
Pass a bare domain — example.com, not https://example.com/pricing.
{
"domain": "example.com",
"score": 72,
"grade": "C",
"scanned_at": "2026-07-28 09:24:11",
"categories": [{"category": "Security", "score": 95}],
"report_url": "https://whydoesmysitesuck.com/scan/AbC123"
}
| Status | Meaning | What to do |
|---|---|---|
202 | Never scanned before — a scan just started | Wait ~30s, call the same URL again. Usually ready on the second try. |
429 | Out of free budget (3 new scans/min, 60 requests/min) | Honour Retry-After (60s). Don't hammer. |
422 | The last scan of this domain failed | The site is unreachable or blocking crawlers. Report that; don't retry in a loop. |
A "stale": true result is still valid — it's an older scan being refreshed in
the background. Use it, and poll again later if you need fresher data.
Good: "execlave.com scores 68 (D). Weakest: Legal & Privacy 31, Accessibility 44. Full breakdown: <report_url>"
Bad: dumping every category score as a table.
/scan/<id> pages to dodge the API. The API is free, faster
and stable; the HTML is not a contract.report_url, or the emailed full report from the site itself.