← Content Effort Checker

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:

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.