{
"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/"]}'
Después de registrarte, a cada desarrollador se le asigna una clave de acceso a la API personal, una combinación única de letras y dígitos proporcionada para acceder a nuestro endpoint de la API. Para autenticarte con el SEOScore API simplemente incluye tu token de portador en el encabezado de Autorización.
| Encabezado | Descripción |
|---|---|
Autorización
|
Requerido
Debería ser Bearer access_key. Consulta "Tu Clave de Acceso a la API" arriba cuando estés suscrito.
|
Sin compromiso a largo plazo. Mejora, reduce o cancela en cualquier momento.
Porque la puntuación es pura regla sobre el HTML obtenido estado y encabezados El tiempo se excluye a propósito Si una puntuación cambia la página o su robots.txt llms.txt cambió
No a ambos Audita el HTML en bruto exactamente como la mayoría de los rastreadores lo ven por primera vez y el informe cubre solo señales en la página y técnicas Sin métricas de backlinks inventadas ranking o laboratorio
Hasta 25 Cada llamada por lote devuelve resultados por URL y el resumen en una sola respuesta las listas más grandes deben dividirse en llamadas
Qué tan visible es la página para la búsqueda de IA: si llms.txt existe, si GPTBot, ClaudeBot, PerplexityBot, Google-Extended y CCBot están permitidos por robots.txt, si hay datos estructurados JSON-LD válidos, si el título y la descripción son lo suficientemente completos para ser citados en una respuesta de IA, si el contenido es legible sin JavaScript y si se sirve una URL canónica a través de HTTPS
No las direcciones privadas de retorno y locales de enlace son rechazadas La auditoría cubre solo páginas públicas y lee como máximo 512 KB de la página