Use the checker in your own tools.
Send a public page URL. Get the score, the reasons behind it and a link to the saved result. No API key or AI account needed.
This API works with apps, scripts and AI assistants that can make HTTP requests. It checks published pages; it doesn’t accept unpublished drafts or uploaded documents.
OpenAPI specification · Plain-text overview
Check a page
curl https://tools.stuffonscreen.com/api/analyze \
-H 'Content-Type: application/json' \
-d '{"url":"https://example.com/article"}'Use a real, publicly accessible article URL. The response includes:
id: the saved result ID.score: an estimate from 0 to 100.categories: seven scores with weights, reasons, matched checks and page excerpts.improvements: three suggestions, in priority order. Impact refers to gaps in this rubric, not a forecast of ranking or traffic gains.analyzedAt,rubricVersionconfidenceandconfidenceReason: when the check ran, which rules it used and the limits of its reading.warnings: what the check couldn’t establish.
Open or share a result
Report: https://tools.stuffonscreen.com/contentEffort/{id}
JSON: GET https://tools.stuffonscreen.com/api/results/{id}These return the saved check without fetching or scoring the source page again. The URL, score, explanations and excerpts stay as they were when the check ran. Anyone with the link can view it. Reports are marked noindex and aren’t listed in the sitemap.
Check an updated page
POST /api/analyze
Content-Type: application/json
{"url":"https://example.com/article","fresh":true}This fetches the page again and creates a new report. The previous link still works. Without fresh, a result from the last six hours may be reused.
Using scores in an AI workflow
Publish a draft at a public URL, check it, then review the quoted examples and suggestions against the actual work. After making useful changes, run a fresh check and compare the reports.
A higher score doesn’t prove that a page is accurate, original or useful. Don’t add invented tests, sources or personal experience to raise it. The rules favour documented research and can miss good qualitative writing. Treat the score as feedback for a human review, not a pass/fail publishing gate.
These are independent rules inspired by the publicly discussed Google contentEffort concept. They do not reproduce Google’s private score or predict search rankings. No AI service is called during scoring.
Limits and errors
English pages only. Maximum URL length: 2,048 characters. Maximum HTML response: 2 MB. Fetch timeout: 15 seconds. Three redirects. The checker reads server-delivered HTML and does not run page JavaScript or bypass logins, paywalls or bot checks.
Send one analysis at a time. There is an approximate limit of 20 analysis requests per minute per connection at each Cloudflare location, and a shared allowance of 1,000 new fetch attempts per UTC day. Failed fetches count. Recent cached results and saved-report reads remain available after the daily allowance is used. On HTTP 429, respect the Retry-After header; the daily allowance resets at midnight UTC. Avoid repeated polling. The free service has no uptime guarantee.
400 Invalid URL or private address
403 Cross-origin browser request
404 Saved result not found (GET)
413 Request body too large
422 Blocked, unreadable, unsupported or insufficient page content
429 Checker busy or rate limit reached
503 Result storage unavailable
Error body: {"error":"Human-readable message", "code":"ERROR_CODE"}The API is available to server-side clients. Cross-origin browser requests are not enabled. Never submit private or sensitive URLs: successful analyses are stored as shareable reports.