{
"url": "https://example.com/",
"finalUrl": "https://example.com/",
"ok": true,
"score": 29,
"maxScore": 100,
"grade": "F",
"geoScore": 40,
"statusCode": 200,
"responseTimeMs": 16,
"pageBytes": 577,
"truncated": false,
"checks": [
{
"id": "title_present",
"category": "meta",
"label": "Title tag present",
"status": "pass",
"points": 8,
"maxPoints": 8,
"details": "Title: \"Example Domain\"",
"fix": null
},
{
"id": "title_length",
"category": "meta",
"label": "Title length 30-60 chars",
"status": "warn",
"points": 0,
"maxPoints": 4,
"details": "Title is 14 characters.",
"fix": "Rewrite the title to 30-60 characters so it is not truncated in search results."
},
{
"id": "description_present",
"category": "meta",
"label": "Meta description present",
"status": "fail",
"points": 0,
"maxPoints": 8,
"details": "No meta description found.",
"fix": "Add a meta description of 70-160 characters summarising the page."
},
{
"id": "description_length",
"category": "meta",
"label": "Description length 70-160 chars",
"status": "fail",
"points": 0,
"maxPoints": 4,
"details": "No description to measure.",
"fix": "Adjust the meta description to 70-160 characters."
},
{
"id": "canonical_present",
"category": "meta",
"label": "Canonical URL declared",
"status": "warn",
"points": 0,
"maxPoints": 3,
"details": "No rel=canonical link found.",
"fix": "Add <link rel=\"canonical\"> pointing at the preferred URL for this page."
},
{
"id": "viewport_present",
"category": "meta",
"label": "Viewport meta present (mobile)",
"status": "warn",
"points": 0,
"maxPoints": 3,
"details": "No viewport meta found.",
"fix": "Add <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">."
},
{
"id": "h1_single",
"category": "content",
"label": "Exactly one H1 heading",
"status": "fail",
"points": 0,
"maxPoints": 8,
"details": "No H1 found.",
"fix": "Use exactly one H1 that states the page's main topic."
},
{
"id": "h2_present",
"category": "content",
"label": "H2 subheadings present",
"status": "warn",
"points": 0,
"maxPoints": 4,
"details": "0 H2 heading(s) found.",
"fix": "Structure the page with H2 subheadings for each main section."
},
{
"id": "word_count",
"category": "content",
"label": "At least 300 words of visible text",
"status": "fail",
"points": 0,
"maxPoints": 6,
"details": "27 words of visible text.",
"fix": "Expand the page copy to at least 300 words of substantive, server-rendered text."
},
{
"id": "image_alt",
"category": "content",
"label": "Image alt text coverage >= 80%",
"status": "pass",
"points": 4,
"maxPoints": 4,
"details": "No <img> tags on the page.",
"fix": null
},
{
"id": "lang_present",
"category": "content",
"label": "html lang attribute present",
"status": "warn",
"points": 0,
"maxPoints": 3,
"details": "No lang attribute on <html>.",
"fix": "Add a lang attribute to the <html> tag, e.g. <html lang=\"en\">."
},
{
"id": "https",
"category": "technical",
"label": "Served over HTTPS",
"status": "pass",
"points": 6,
"maxPoints": 6,
"details": "Final URL: https://example.com/",
"fix": null
},
{
"id": "status_200",
"category": "technical",
"label": "HTTP status 200",
"status": "pass",
"points": 6,
"maxPoints": 6,
"details": "Status: 200",
"fix": null
},
{
"id": "indexable",
"category": "technical",
"label": "Page is indexable (no noindex)",
"status": "pass",
"points": 5,
"maxPoints": 5,
"details": "No noindex directive; Googlebot allowed.",
"fix": null
},
{
"id": "robots_txt",
"category": "technical",
"label": "robots.txt present",
"status": "warn",
"points": 0,
"maxPoints": 4,
"details": "No robots.txt at the origin root.",
"fix": "Publish a robots.txt at the site root with your crawl rules and sitemap location."
},
{
"id": "sitemap",
"category": "technical",
"label": "XML sitemap discoverable",
"status": "warn",
"points": 0,
"maxPoints": 4,
"details": "No sitemap found via robots.txt or /sitemap.xml.",
"fix": "Generate an XML sitemap and reference it from robots.txt with a Sitemap: line."
},
{
"id": "og_tags",
"category": "social",
"label": "Open Graph tags present",
"status": "warn",
"points": 0,
"maxPoints": 6,
"details": "No og: tags found.",
"fix": "Add og:title, og:description, og:image and og:type so shared links render properly."
},
{
"id": "twitter_card",
"category": "social",
"label": "Twitter card declared",
"status": "warn",
"points": 0,
"maxPoints": 3,
"details": "No twitter:card meta found.",
"fix": "Add <meta name=\"twitter:card\" content=\"summary_large_image\">."
},
{
"id": "jsonld_present",
"category": "social",
"label": "JSON-LD structured data present",
"status": "warn",
"points": 0,
"maxPoints": 7,
"details": "No JSON-LD structured data found.",
"fix": "Add JSON-LD structured data (e.g. Article, Product, WebPage) describing the page entity."
},
{
"id": "jsonld_valid",
"category": "social",
"label": "JSON-LD parses as valid JSON",
"status": "warn",
"points": 0,
"maxPoints": 4,
"details": "No JSON-LD to validate.",
"fix": "Fix the JSON-LD syntax so search engines and AI systems can parse it."
}
],
"geo": {
"score": 40,
"aiCrawlerAccess": {
"GPTBot": "allowed",
"ClaudeBot": "allowed",
"PerplexityBot": "allowed",
"Google-Extended": "allowed",
"CCBot": "allowed"
},
"llmsTxt": false,
"checks": [
{
"id": "llms_txt",
"label": "llms.txt present for AI systems",
"status": "warn",
"points": 0,
"maxPoints": 25,
"details": "No llms.txt at the origin root.",
"fix": "Publish an llms.txt that summarises the site and links its key pages for AI systems."
},
{
"id": "ai_crawlers",
"label": "AI crawlers allowed in robots.txt",
"status": "pass",
"points": 30,
"maxPoints": 30,
"details": "GPTBot: allowed; ClaudeBot: allowed; PerplexityBot: allowed; Google-Extended: allowed; CCBot: allowed.",
"fix": null
},
{
"id": "geo_structured_data",
"label": "Structured data available to AI/search parsers",
"status": "fail",
"points": 0,
"maxPoints": 15,
"details": "No JSON-LD found.",
"fix": "Add valid JSON-LD describing the page entity so AI systems can cite it accurately."
},
{
"id": "geo_metadata",
"label": "Title and description complete for citation snippets",
"status": "warn",
"points": 5,
"maxPoints": 10,
"details": "Title: present; description: missing.",
"fix": "Complete the title and meta description; AI answers quote them when citing pages."
},
{
"id": "geo_server_rendered",
"label": "Content readable without JavaScript (>= 300 words raw HTML)",
"status": "fail",
"points": 0,
"maxPoints": 10,
"details": "27 words in raw HTML."
}
]
},
"_note": "Response truncated for documentation purposes"
}
curl --location --request GET 'https://zylalabs.com/api/14801/seoscore+api/38378/audit+one+page?url=https://example.com' --header 'Authorization: Bearer YOUR_API_KEY'
{
"results": [
{
"url": "https://example.com/",
"finalUrl": "https://example.com/",
"ok": true,
"score": 29,
"maxScore": 100,
"grade": "F",
"geoScore": 40,
"statusCode": 200,
"responseTimeMs": 17,
"pageBytes": 577,
"truncated": false,
"checks": [
{
"id": "title_present",
"category": "meta",
"label": "Title tag present",
"status": "pass",
"points": 8,
"maxPoints": 8,
"details": "Title: \"Example Domain\"",
"fix": null
},
{
"id": "title_length",
"category": "meta",
"label": "Title length 30-60 chars",
"status": "warn",
"points": 0,
"maxPoints": 4,
"details": "Title is 14 characters.",
"fix": "Rewrite the title to 30-60 characters so it is not truncated in search results."
},
{
"id": "description_present",
"category": "meta",
"label": "Meta description present",
"status": "fail",
"points": 0,
"maxPoints": 8,
"details": "No meta description found.",
"fix": "Add a meta description of 70-160 characters summarising the page."
},
{
"id": "description_length",
"category": "meta",
"label": "Description length 70-160 chars",
"status": "fail",
"points": 0,
"maxPoints": 4,
"details": "No description to measure.",
"fix": "Adjust the meta description to 70-160 characters."
},
{
"id": "canonical_present",
"category": "meta",
"label": "Canonical URL declared",
"status": "warn",
"points": 0,
"maxPoints": 3,
"details": "No rel=canonical link found.",
"fix": "Add <link rel=\"canonical\"> pointing at the preferred URL for this page."
},
{
"id": "viewport_present",
"category": "meta",
"label": "Viewport meta present (mobile)",
"status": "warn",
"points": 0,
"maxPoints": 3,
"details": "No viewport meta found.",
"fix": "Add <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">."
},
{
"id": "h1_single",
"category": "content",
"label": "Exactly one H1 heading",
"status": "fail",
"points": 0,
"maxPoints": 8,
"details": "No H1 found.",
"fix": "Use exactly one H1 that states the page's main topic."
},
{
"id": "h2_present",
"category": "content",
"label": "H2 subheadings present",
"status": "warn",
"points": 0,
"maxPoints": 4,
"details": "0 H2 heading(s) found.",
"fix": "Structure the page with H2 subheadings for each main section."
},
{
"id": "word_count",
"category": "content",
"label": "At least 300 words of visible text",
"status": "fail",
"points": 0,
"maxPoints": 6,
"details": "27 words of visible text.",
"fix": "Expand the page copy to at least 300 words of substantive, server-rendered text."
},
{
"id": "image_alt",
"category": "content",
"label": "Image alt text coverage >= 80%",
"status": "pass",
"points": 4,
"maxPoints": 4,
"details": "No <img> tags on the page.",
"fix": null
},
{
"id": "lang_present",
"category": "content",
"label": "html lang attribute present",
"status": "warn",
"points": 0,
"maxPoints": 3,
"details": "No lang attribute on <html>.",
"fix": "Add a lang attribute to the <html> tag, e.g. <html lang=\"en\">."
},
{
"id": "https",
"category": "technical",
"label": "Served over HTTPS",
"status": "pass",
"points": 6,
"maxPoints": 6,
"details": "Final URL: https://example.com/",
"fix": null
},
{
"id": "status_200",
"category": "technical",
"label": "HTTP status 200",
"status": "pass",
"points": 6,
"maxPoints": 6,
"details": "Status: 200",
"fix": null
},
{
"id": "indexable",
"category": "technical",
"label": "Page is indexable (no noindex)",
"status": "pass",
"points": 5,
"maxPoints": 5,
"details": "No noindex directive; Googlebot allowed.",
"fix": null
},
{
"id": "robots_txt",
"category": "technical",
"label": "robots.txt present",
"status": "warn",
"points": 0,
"maxPoints": 4,
"details": "No robots.txt at the origin root.",
"fix": "Publish a robots.txt at the site root with your crawl rules and sitemap location."
},
{
"id": "sitemap",
"category": "technical",
"label": "XML sitemap discoverable",
"status": "warn",
"points": 0,
"maxPoints": 4,
"details": "No sitemap found via robots.txt or /sitemap.xml.",
"fix": "Generate an XML sitemap and reference it from robots.txt with a Sitemap: line."
},
{
"id": "og_tags",
"category": "social",
"label": "Open Graph tags present",
"status": "warn",
"points": 0,
"maxPoints": 6,
"details": "No og: tags found.",
"fix": "Add og:title, og:description, og:image and og:type so shared links render properly."
},
{
"id": "twitter_card",
"category": "social",
"label": "Twitter card declared",
"status": "warn",
"points": 0,
"maxPoints": 3,
"details": "No twitter:card meta found.",
"fix": "Add <meta name=\"twitter:card\" content=\"summary_large_image\">."
},
{
"id": "jsonld_present",
"category": "social",
"label": "JSON-LD structured data present",
"status": "warn",
"points": 0,
"maxPoints": 7,
"details": "No JSON-LD structured data found.",
"fix": "Add JSON-LD structured data (e.g. Article, Product, WebPage) describing the page entity."
},
{
"id": "jsonld_valid",
"category": "social",
"label": "JSON-LD parses as valid JSON",
"status": "warn",
"points": 0,
"maxPoints": 4,
"details": "No JSON-LD to validate.",
"fix": "Fix the JSON-LD syntax so search engines and AI systems can parse it."
}
],
"geo": {
"score": 40,
"aiCrawlerAccess": {
"GPTBot": "allowed",
"ClaudeBot": "allowed",
"PerplexityBot": "allowed",
"Google-Extended": "allowed",
"CCBot": "allowed"
},
"llmsTxt": false,
"checks": [
{
"id": "llms_txt"
}
]
}
}
],
"_note": "Response truncated for documentation purposes"
}
curl --location --request POST 'https://zylalabs.com/api/14801/seoscore+api/38380/batch+audit' --header 'Authorization: Bearer YOUR_API_KEY'
--data-raw '{"urls": ["https://example.com/", "https://www.iana.org/"]}'
注册后,每个开发者都会被分配一个个人 API 访问密钥,这是一个唯一的字母和数字组合,用于访问我们的 API 端点。要使用 SEO评分 API 进行身份验证,只需在 Authorization 标头中包含您的 bearer token。
| 标头 | 描述 |
|---|---|
授权
|
必需
应为 Bearer access_key. 订阅后,请查看上方的"您的 API 访问密钥"。
|
因为分数完全是基于获取的HTML、状态和头部的规则 排除时间是故意的 如果分数发生变化 页面(或其robots.txt / llms.txt)发生了变化
对两者都不是。它准确地审计原始HTML,就像大多数爬虫首次看到的那样,并且报告仅涵盖页面和技术信号 - 没有虚构的反向链接、排名或实验室指标
最多25 每批调用返回每个URL的结果和摘要在一个响应中 更大的列表应分批调用
该页面对AI搜索的可见性:llms.txt是否存在,robots.txt是否允许GPTBot ClaudeBot PerplexityBot Google-Extended和CCBot,是否存在有效的JSON-LD结构化数据,标题和描述是否完整到足以被AI答案引用,内容是否可以在没有JavaScript的情况下可读,是否通过HTTPS提供了规范URL
不 私有地址 回环地址和链接本地地址被拒绝 审计只覆盖公共页面 并且最多读取512 KB的页面