Page SEO Check
Is this page technically fit to rank? Metadata, social preview, load performance, and availability in one call.
page-seo-check What it runs
- URL Health Check
Source: HTTP fetch (status code, response time, header analysis)
- Metadata Extraction
Source: HTTP fetch + HTML parsing (meta tag extraction)
- Social Preview Image Check
Source: HTTP fetch (Open Graph meta tag extraction)
- Page Speed Test
Source: Google PageSpeed Insights API (Lighthouse performance analysis)
The answer returns every step’s result, so your agent can show or check each one.
Inputs
| Field | Type | Required | What it is |
|---|---|---|---|
url | string | Yes | — |
How to call it
# Needs an API key. The whole check is charged once, at the listed price.
curl -X POST https://api.strale.io/v1/solutions/page-seo-check/execute \
-H "Authorization: Bearer $STRALE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"inputs": {
"url": "https://example.com/pricing"
},
"max_price_cents": 30
}' # No account. The first request answers 402 with the price in USDC;
# an x402 client pays it from your wallet and repeats the request.
curl -i -X POST https://api.strale.io/x402/v2/solutions/page-seo-check \
-H 'Content-Type: application/json' \
-d '{
"url": "https://example.com/pricing"
}' The bundle’s published example input.
Limitations
Checks HTTP response status and basic connectivity — does not assess content correctness or page rendering
From step: URL Health Check
What to do instead: Use page-exists for content-level existence (soft-404 detection), or screenshot-url for visual verification
Extracts meta tags from the initial HTML response — dynamically injected meta tags via JavaScript are not captured
From step: Metadata Extraction
What to do instead: Inspect the page in a browser for meta tags added by JavaScript.
Pages with more than 16 MiB of HTML are refused with a caller_input error naming the input field. The call is not charged, and the page is not retried through another fetch or rendering route.
From step: Metadata Extraction
Checks Open Graph and Twitter Card meta tags — dynamically injected OG tags via JavaScript may not be captured
From step: Social Preview Image Check
What to do instead: Inspect the rendered page in a browser for Open Graph tags added by JavaScript.
Pages with more than 16 MiB of HTML are refused with a caller_input error naming the input field. The call is not charged, and the page is not retried through another fetch or rendering route.
From step: Social Preview Image Check
Scores reflect a point-in-time test — site performance may vary throughout the day
From step: Page Speed Test
What to do instead: Schedule periodic tests (e.g., every 6 hours) and track the trend rather than relying on a single measurement
Results measured from a single geographic location — actual user experience varies by region
From step: Page Speed Test
What to do instead: Run tests at multiple times and average the scores, or use the lab data breakdown to identify bottlenecks independent of location
If Lighthouse cannot load the page because it is unavailable, blocks automated visitors, requires authentication or redirects in a loop, the call is refused. No score is returned and no charge is taken.
From step: Page Speed Test
What to do instead: Check the URL loads in a browser from a clean session, and that it is reachable without a login