{
"success": true,
"audited_at_unix": 1793492119,
"network": {
"requested_url": "https://www.python.org/",
"final_url": "https://www.python.org/",
"status_code": 200,
"content_type": "text/html; charset=utf-8",
"response_time_ms": 46,
"bytes_downloaded": 53214,
"redirect_count": 0,
"redirect_chain": []
},
"quality_score": {
"score": 68,
"grade": "C",
"errors_count": 1,
"warnings_count": 4,
"passed_count": 5,
"skipped_rules": [],
"warnings": [
"Your title is shorter than recommended (30–60 characters). Consider adding primary keywords or brand context.",
"Your meta description should usually be between 120 and 160 characters so it is descriptive without being cut off.",
"No canonical tag was found. Adding a self-referencing canonical tag prevents duplicate content issues caused by URL parameters.",
"Found 5 <h1> headings on the page. Consolidating into a single primary H1 is generally recommended."
],
"errors": [
"No XML sitemap was detected at common locations."
],
"breakdown": [
{
"rule_id": "indexability_status",
"category": "Indexability",
"passed": true,
"severity": "passed",
"max_points": 25,
"points_impact": 0,
"message": "This page appears open to indexing, which is normally what you want for pages intended to rank."
},
{
"rule_id": "title_check",
"category": "Title",
"passed": false,
"severity": "warning",
"max_points": 15,
"points_impact": -6,
"message": "Your title is shorter than recommended (30–60 characters). Consider adding primary keywords or brand context."
},
{
"rule_id": "meta_description_check",
"category": "Meta Description",
"passed": false,
"severity": "warning",
"max_points": 12,
"points_impact": -5,
"message": "Your meta description should usually be between 120 and 160 characters so it is descriptive without being cut off."
},
{
"rule_id": "canonical_check",
"category": "Canonical",
"passed": false,
"severity": "warning",
"max_points": 10,
"points_impact": -5,
"message": "No canonical tag was found. Adding a self-referencing canonical tag prevents duplicate content issues caused by URL parameters."
},
{
"rule_id": "xml_sitemap_check",
"category": "Sitemap",
"passed": false,
"severity": "error",
"max_points": 10,
"points_impact": -10,
"message": "No XML sitemap was detected at common locations."
},
{
"rule_id": "copy_depth_check",
"category": "Copy Depth",
"passed": false,
"severity": "warning",
"max_points": 7,
"points_impact": -7,
"message": "Found 5 <h1> headings on the page. Consolidating into a single primary H1 is generally recommended."
},
{
"rule_id": "image_alt_check",
"category": "Images",
"passed": true,
"severity": "passed",
"max_points": 6,
"points_impact": 0,
"message": "Image ALT text coverage looks good. ALT text should briefly describe the image where it adds meaning."
},
{
"rule_id": "links_health_check",
"category": "Links",
"passed": true,
"severity": "passed",
"max_points": 5,
"points_impact": 0,
"message": "Your internal linking looks reasonably healthy and anchor text appears descriptive."
},
{
"rule_id": "json_ld_check",
"category": "Structured Data",
"passed": true,
"severity": "passed",
"max_points": 8,
"points_impact": 0,
"message": "1 schema block(s) detected."
},
{
"rule_id": "open_graph_check",
"category": "Open Graph",
"passed": true,
"severity": "passed",
"max_points": 4,
"points_impact": 0,
"message": "All core Open Graph tags are present."
}
]
},
"diagnostics": {
"http_ok": true,
"likely_client_rendered": false,
"notes": []
},
"ai_visibility": {
"status": "healthy",
"score": 95,
"grade": "A",
"badge": "Readable by AI",
"explanation": "AI assistants and AI search engines can read this page's content and are allowed to fetch it.",
"content_visible_without_js": true,
"visible_word_count": 1160,
"robots_txt_checked": true,
"crawlers": [
{
"name": "GPTBot",
"operator": "OpenAI",
"purpose": "training",
"allowed": true
},
{
"name": "OAI-SearchBot",
"operator": "OpenAI",
"purpose": "search",
"allowed": true
},
{
"name": "ChatGPT-User",
"operator": "OpenAI",
"purpose": "user",
"allowed": true
},
{
"name": "ClaudeBot",
"operator": "Anthropic",
"purpose": "training",
"allowed": true
},
{
"name": "Claude-SearchBot",
"operator": "Anthropic",
"purpose": "search",
"allowed": true
},
{
"name": "Claude-User",
"operator": "Anthropic",
"purpose": "user",
"allowed": true
},
{
"name": "PerplexityBot",
"operator": "Perplexity",
"purpose": "search",
"allowed": true
},
{
"name": "Perplexity-User",
"operator": "Perplexity",
"purpose": "user",
"allowed": true
},
{
"name": "Google-Extended",
"operator": "Google",
"purpose": "training",
"allowed": true
},
{
"name": "Applebot-Extended",
"operator": "Apple",
"purpose": "training",
"allowed": true
},
{
"name": "CCBot",
"operator": "Common Crawl",
"purpose": "training",
"allowed": true
},
{
"name": "meta-externalagent",
"operator": "Meta",
"purpose": "training",
"allowed": true
}
],
"blocked_search_crawlers": [],
"blocked_training_crawlers": [],
"structured_data_present": true,
"llms_txt": {
"checked": true,
"found": false,
"url": "https://www.python.org/llms.txt",
"status_code": 404
},
"findings": [],
"notes": [
"No /llms.txt found. It is an optional, emerging convention that gives AI tools a curated summary of the site."
]
},
"cards": {
"title": {
"heading": "Title",
"status": "warning",
"primary_text": "Welcome to Python.org",
"badge": "21 characters",
"subtext": "Your title is shorter than recommended (30–60 characters). Consider adding primary keywords or brand context."
},
"meta_description": {
"heading": "Meta description",
"status": "warning",
"primary_text": "The official home of the Python Programming Language",
"badge": "52 characters",
"subtext": "Your meta description should usually be between 120 and 160 characters so it is descriptive without being cut off."
},
"indexability": {
"heading": "Indexability",
"status": "healthy",
"primary_text": "index, follow",
"badge": "Indexable",
"subtext": "This page appears open to indexing, which is normally what you want for pages intended to rank."
},
"canonical": {
"heading": "Canonical",
"status": "warning",
"primary_text": null,
"badge": "Missing",
"subtext": "No canonical tag was found. Adding a self-referencing canonical tag prevents duplicate content issues caused by URL parameters."
}
},
"_note": "Response truncated for documentation purposes"
}
curl --location --request GET 'https://zylalabs.com/api/14633/pagesignal+seo+and+ai+visibility+audit+api/37612/audit+a+url+via+get+query+parameters?url=https://www.python.org' --header 'Authorization: Bearer YOUR_API_KEY'
{
"success": true,
"audited_at_unix": 1793492482,
"network": {
"requested_url": "https://www.python.org/",
"final_url": "https://www.python.org/",
"status_code": 200,
"content_type": "text/html; charset=utf-8",
"response_time_ms": 93,
"bytes_downloaded": 52897,
"redirect_count": 0,
"redirect_chain": []
},
"quality_score": {
"score": 68,
"grade": "C",
"errors_count": 1,
"warnings_count": 4,
"passed_count": 5,
"skipped_rules": [],
"warnings": [
"Your title is shorter than recommended (30–60 characters). Consider adding primary keywords or brand context.",
"Your meta description should usually be between 120 and 160 characters so it is descriptive without being cut off.",
"No canonical tag was found. Adding a self-referencing canonical tag prevents duplicate content issues caused by URL parameters.",
"Found 5 <h1> headings on the page. Consolidating into a single primary H1 is generally recommended."
],
"errors": [
"No XML sitemap was detected at common locations."
],
"breakdown": [
{
"rule_id": "indexability_status",
"category": "Indexability",
"passed": true,
"severity": "passed",
"max_points": 25,
"points_impact": 0,
"message": "This page appears open to indexing, which is normally what you want for pages intended to rank."
},
{
"rule_id": "title_check",
"category": "Title",
"passed": false,
"severity": "warning",
"max_points": 15,
"points_impact": -6,
"message": "Your title is shorter than recommended (30–60 characters). Consider adding primary keywords or brand context."
},
{
"rule_id": "meta_description_check",
"category": "Meta Description",
"passed": false,
"severity": "warning",
"max_points": 12,
"points_impact": -5,
"message": "Your meta description should usually be between 120 and 160 characters so it is descriptive without being cut off."
},
{
"rule_id": "canonical_check",
"category": "Canonical",
"passed": false,
"severity": "warning",
"max_points": 10,
"points_impact": -5,
"message": "No canonical tag was found. Adding a self-referencing canonical tag prevents duplicate content issues caused by URL parameters."
},
{
"rule_id": "xml_sitemap_check",
"category": "Sitemap",
"passed": false,
"severity": "error",
"max_points": 10,
"points_impact": -10,
"message": "No XML sitemap was detected at common locations."
},
{
"rule_id": "copy_depth_check",
"category": "Copy Depth",
"passed": false,
"severity": "warning",
"max_points": 7,
"points_impact": -7,
"message": "Found 5 <h1> headings on the page. Consolidating into a single primary H1 is generally recommended."
},
{
"rule_id": "image_alt_check",
"category": "Images",
"passed": true,
"severity": "passed",
"max_points": 6,
"points_impact": 0,
"message": "Image ALT text coverage looks good. ALT text should briefly describe the image where it adds meaning."
},
{
"rule_id": "links_health_check",
"category": "Links",
"passed": true,
"severity": "passed",
"max_points": 5,
"points_impact": 0,
"message": "Your internal linking looks reasonably healthy and anchor text appears descriptive."
},
{
"rule_id": "json_ld_check",
"category": "Structured Data",
"passed": true,
"severity": "passed",
"max_points": 8,
"points_impact": 0,
"message": "1 schema block(s) detected."
},
{
"rule_id": "open_graph_check",
"category": "Open Graph",
"passed": true,
"severity": "passed",
"max_points": 4,
"points_impact": 0,
"message": "All core Open Graph tags are present."
}
]
},
"diagnostics": {
"http_ok": true,
"likely_client_rendered": false,
"notes": []
},
"ai_visibility": {
"status": "healthy",
"score": 95,
"grade": "A",
"badge": "Readable by AI",
"explanation": "AI assistants and AI search engines can read this page's content and are allowed to fetch it.",
"content_visible_without_js": true,
"visible_word_count": 1106,
"robots_txt_checked": true,
"crawlers": [
{
"name": "GPTBot",
"operator": "OpenAI",
"purpose": "training",
"allowed": true
},
{
"name": "OAI-SearchBot",
"operator": "OpenAI",
"purpose": "search",
"allowed": true
},
{
"name": "ChatGPT-User",
"operator": "OpenAI",
"purpose": "user",
"allowed": true
},
{
"name": "ClaudeBot",
"operator": "Anthropic",
"purpose": "training",
"allowed": true
},
{
"name": "Claude-SearchBot",
"operator": "Anthropic",
"purpose": "search",
"allowed": true
},
{
"name": "Claude-User",
"operator": "Anthropic",
"purpose": "user",
"allowed": true
},
{
"name": "PerplexityBot",
"operator": "Perplexity",
"purpose": "search",
"allowed": true
},
{
"name": "Perplexity-User",
"operator": "Perplexity",
"purpose": "user",
"allowed": true
},
{
"name": "Google-Extended",
"operator": "Google",
"purpose": "training",
"allowed": true
},
{
"name": "Applebot-Extended",
"operator": "Apple",
"purpose": "training",
"allowed": true
},
{
"name": "CCBot",
"operator": "Common Crawl",
"purpose": "training",
"allowed": true
},
{
"name": "meta-externalagent",
"operator": "Meta",
"purpose": "training",
"allowed": true
}
],
"blocked_search_crawlers": [],
"blocked_training_crawlers": [],
"structured_data_present": true,
"llms_txt": {
"checked": true,
"found": false,
"url": "https://www.python.org/llms.txt",
"status_code": 404
},
"findings": [],
"notes": [
"No /llms.txt found. It is an optional, emerging convention that gives AI tools a curated summary of the site."
]
},
"cards": {
"title": {
"heading": "Title",
"status": "warning",
"primary_text": "Welcome to Python.org",
"badge": "21 characters",
"subtext": "Your title is shorter than recommended (30–60 characters). Consider adding primary keywords or brand context."
},
"meta_description": {
"heading": "Meta description",
"status": "warning",
"primary_text": "The official home of the Python Programming Language",
"badge": "52 characters",
"subtext": "Your meta description should usually be between 120 and 160 characters so it is descriptive without being cut off."
},
"indexability": {
"heading": "Indexability",
"status": "healthy",
"primary_text": "index, follow",
"badge": "Indexable",
"subtext": "This page appears open to indexing, which is normally what you want for pages intended to rank."
},
"canonical": {
"heading": "Canonical",
"status": "warning",
"primary_text": null,
"badge": "Missing",
"subtext": "No canonical tag was found. Adding a self-referencing canonical tag prevents duplicate content issues caused by URL parameters."
}
},
"_note": "Response truncated for documentation purposes"
}
curl --location --request POST 'https://zylalabs.com/api/14633/pagesignal+seo+and+ai+visibility+audit+api/37613/audit+a+url+with+a+json+body' --header 'Authorization: Bearer YOUR_API_KEY'
--data-raw '{
"url": "https://www.python.org",
"check_sitemap_and_robots": true,
"sample_limit": 8
}'
{
"success": true,
"network": {
"requested_url": "https://www.python.org/",
"final_url": "https://www.python.org/",
"status_code": 200,
"content_type": "text/html; charset=utf-8",
"response_time_ms": 92,
"bytes_downloaded": 52897,
"redirect_count": 0,
"redirect_chain": []
},
"title": {
"status": "warning",
"value": "Welcome to Python.org",
"length": 21,
"badge": "21 characters",
"duplicate_count": 0,
"all_titles": [
"Welcome to Python.org"
],
"explanation": "Your title is shorter than recommended (30–60 characters). Consider adding primary keywords or brand context."
},
"meta_description": {
"status": "warning",
"value": "The official home of the Python Programming Language",
"length": 52,
"badge": "52 characters",
"duplicate_count": 0,
"all_descriptions": [
"The official home of the Python Programming Language"
],
"explanation": "Your meta description should usually be between 120 and 160 characters so it is descriptive without being cut off."
},
"indexability": {
"status": "healthy",
"is_indexable": true,
"is_followable": true,
"raw_directives": "index, follow",
"meta_robots": null,
"meta_googlebot": null,
"x_robots_tag": null,
"badge": "Indexable",
"explanation": "This page appears open to indexing, which is normally what you want for pages intended to rank."
},
"canonical": {
"status": "warning",
"value": null,
"resolved_url": null,
"is_present": false,
"is_self_referencing": false,
"duplicate_count": 0,
"badge": "Missing",
"explanation": "No canonical tag was found. Adding a self-referencing canonical tag prevents duplicate content issues caused by URL parameters."
},
"social_and_technical": {
"open_graph": {
"og:type": "website",
"og:site_name": "Python.org",
"og:title": "Welcome to Python.org",
"og:description": "The official home of the Python Programming Language",
"og:image": "https://www.python.org/static/opengraph-icon-200x200.png",
"og:image:secure_url": "https://www.python.org/static/opengraph-icon-200x200.png",
"og:url": "https://www.python.org/"
},
"twitter_card": [],
"missing_recommended_og": [],
"charset": "utf-8",
"viewport": "width=device-width, initial-scale=1.0",
"language": "en"
},
"structured_data": {
"status": "healthy",
"blocks_detected": 1,
"valid_blocks": 1,
"invalid_blocks": 0,
"summary": "1 schema block(s) detected.",
"blocks": [
{
"index": 1,
"is_valid_json": true,
"schema_types": [
"WebSite"
],
"context": "https://schema.org",
"errors": [],
"raw_preview": {
"@context": "https://schema.org",
"@type": "WebSite",
"url": "https://www.python.org/",
"potentialAction": "<object @type=SearchAction>"
}
}
]
},
"diagnostics": {
"http_ok": true,
"likely_client_rendered": false,
"notes": []
},
"ai_visibility": {
"status": "healthy",
"score": 100,
"grade": "A",
"badge": "Readable by AI",
"explanation": "AI assistants and AI search engines can read this page's content and are allowed to fetch it.",
"content_visible_without_js": true,
"visible_word_count": 1106,
"robots_txt_checked": false,
"crawlers": [
{
"name": "GPTBot",
"operator": "OpenAI",
"purpose": "training",
"allowed": null
},
{
"name": "OAI-SearchBot",
"operator": "OpenAI",
"purpose": "search",
"allowed": null
},
{
"name": "ChatGPT-User",
"operator": "OpenAI",
"purpose": "user",
"allowed": null
},
{
"name": "ClaudeBot",
"operator": "Anthropic",
"purpose": "training",
"allowed": null
},
{
"name": "Claude-SearchBot",
"operator": "Anthropic",
"purpose": "search",
"allowed": null
},
{
"name": "Claude-User",
"operator": "Anthropic",
"purpose": "user",
"allowed": null
},
{
"name": "PerplexityBot",
"operator": "Perplexity",
"purpose": "search",
"allowed": null
},
{
"name": "Perplexity-User",
"operator": "Perplexity",
"purpose": "user",
"allowed": null
},
{
"name": "Google-Extended",
"operator": "Google",
"purpose": "training",
"allowed": null
},
{
"name": "Applebot-Extended",
"operator": "Apple",
"purpose": "training",
"allowed": null
},
{
"name": "CCBot",
"operator": "Common Crawl",
"purpose": "training",
"allowed": null
},
{
"name": "meta-externalagent",
"operator": "Meta",
"purpose": "training",
"allowed": null
}
],
"blocked_search_crawlers": [],
"blocked_training_crawlers": [],
"structured_data_present": true,
"llms_txt": {
"checked": false,
"found": false,
"url": "",
"status_code": null
},
"findings": [],
"notes": [
"robots.txt was not checked, so AI crawler rules are unknown and excluded from the score."
]
},
"quality_score": {
"score": 75,
"grade": "C",
"skipped_rules": [
"xml_sitemap_check"
],
"warnings": [
"Your title is shorter than recommended (30–60 characters). Consider adding primary keywords or brand context.",
"Your meta description should usually be between 120 and 160 characters so it is descriptive without being cut off.",
"No canonical tag was found. Adding a self-referencing canonical tag prevents duplicate content issues caused by URL parameters.",
"Found 5 <h1> headings on the page. Consolidating into a single primary H1 is generally recommended."
],
"errors": []
}
}
curl --location --request GET 'https://zylalabs.com/api/14633/pagesignal+seo+and+ai+visibility+audit+api/37614/fast+metadata+and+json-ld+extraction?url=https://www.python.org' --header 'Authorization: Bearer YOUR_API_KEY'
{
"success": true,
"audited_at_unix": 1793492922,
"final_url": "https://www.python.org/",
"status_code": 200,
"ai_visibility": {
"status": "healthy",
"score": 95,
"grade": "A",
"badge": "Readable by AI",
"explanation": "AI assistants and AI search engines can read this page's content and are allowed to fetch it.",
"content_visible_without_js": true,
"visible_word_count": 1160,
"robots_txt_checked": true,
"crawlers": [
{
"name": "GPTBot",
"operator": "OpenAI",
"purpose": "training",
"allowed": true
},
{
"name": "OAI-SearchBot",
"operator": "OpenAI",
"purpose": "search",
"allowed": true
},
{
"name": "ChatGPT-User",
"operator": "OpenAI",
"purpose": "user",
"allowed": true
},
{
"name": "ClaudeBot",
"operator": "Anthropic",
"purpose": "training",
"allowed": true
},
{
"name": "Claude-SearchBot",
"operator": "Anthropic",
"purpose": "search",
"allowed": true
},
{
"name": "Claude-User",
"operator": "Anthropic",
"purpose": "user",
"allowed": true
},
{
"name": "PerplexityBot",
"operator": "Perplexity",
"purpose": "search",
"allowed": true
},
{
"name": "Perplexity-User",
"operator": "Perplexity",
"purpose": "user",
"allowed": true
},
{
"name": "Google-Extended",
"operator": "Google",
"purpose": "training",
"allowed": true
},
{
"name": "Applebot-Extended",
"operator": "Apple",
"purpose": "training",
"allowed": true
},
{
"name": "CCBot",
"operator": "Common Crawl",
"purpose": "training",
"allowed": true
},
{
"name": "meta-externalagent",
"operator": "Meta",
"purpose": "training",
"allowed": true
}
],
"blocked_search_crawlers": [],
"blocked_training_crawlers": [],
"structured_data_present": true,
"llms_txt": {
"checked": true,
"found": false,
"url": "https://www.python.org/llms.txt",
"status_code": 404
},
"findings": [],
"notes": [
"No /llms.txt found. It is an optional, emerging convention that gives AI tools a curated summary of the site."
]
}
}
curl --location --request GET 'https://zylalabs.com/api/14633/pagesignal+seo+and+ai+visibility+audit+api/37615/ai+visibility+check+for+chatgpt+claude+and+perplexity?url=https://www.python.org' --header 'Authorization: Bearer YOUR_API_KEY'
注册后,每个开发者都会被分配一个个人 API 访问密钥,这是一个唯一的字母和数字组合,用于访问我们的 API 端点。要使用 PageSignal SEO 和 AI 可见性审计 API 进行身份验证,只需在 Authorization 标头中包含您的 bearer token。
| 标头 | 描述 |
|---|---|
授权
|
必需
应为 Bearer access_key. 订阅后,请查看上方的"您的 API 访问密钥"。
|
每个端点返回与SEO和人工智能可见性相关的各种数据 GET和POST端点提供全面的审计报告,包括质量分数 错误和警告 元数据提取端点返回标题 元描述 Open Graph标签和JSON-LD验证 人工智能可见性检查端点提供一个分数 表明AI模型是否可以读取页面 以及有关允许抓取器的详细信息
关键字段包括`success`、`audited_at_unix`、`network`(包含`requested_url`、`status_code`和`response_time_ms`的详细信息)以及`quality_score`(包含`score`、`grade`、`errors_count`和`warnings`)。AI可见性端点包括`ai_visibility`,包含`score`、`status`和`crawlers`的详细信息
返回的数据采用JSON格式结构。每个响应包含一个顶级对象,其中字段指示成功状态、时间戳、网络详情和特定的审计结果。例如,`quality_score`对象包含用于分数和警告的嵌套字段,使其易于解析和程序化使用
GET和POST端点提供技术SEO见解,包括元标签 JSON-LD验证和整体质量评分 元数据提取端点专注于提取关键元数据元素而AI可见性端点评估AI模型是否可以访问和读取内容详细说明允许的爬虫和可见性状态
响应数据被组织成不同的部分,例如 `network`、`quality_score` 和 `ai_visibility` 每个部分包含相关的子字段 例如 `network` 包括 URL 细节和响应指标,而 `quality_score` 汇总审计结果,包括错误和警告,使用户能够快速识别问题
数据来源于对提供的URL的分析,包括其HTML结构、元标签和robots.txt文件。API根据既定的SEO最佳实践和AI可见性标准进行检查,以确保结果的准确性和相关性,并通过系统审计维护数据质量
典型的用例包括优化网页以提高搜索引擎优化确保人工智能模型能够访问内容以及验证结构化数据格式如JSON-LD 网站管理员和搜索引擎优化专业人士可以利用这些见解来提升页面排名增强在人工智能驱动搜索中的可见性并确保遵守搜索引擎优化标准
用户可以分析 `quality_score` 以识别需要改进的地方,例如修复元标签或解决警告 `network` 部分提供性能指标,而 AI 能见度得分有助于确保内容对 AI 模型可访问 这些数据可以指导 SEO 改进和内容优化的战略决策