MCP 서버

Web Validator by DigestSEO

io.github.AKzar1el/mcp-web-validator
개발자 도구 공개 · 연결 가능 MCP 2025-11-25

이 MCP로 할 수 있는 일

Audits public webpages and supplied HTML, CSS, JSON-LD, SEO metadata, accessibility signals, and links for validation issues.

audit_public_site
Audit public site
Use this for a bounded, sitemap-first audit of a public website the user owns or is authorized to inspect. It fetches at most 8 same-origin HTML pages per call, respects robots.txt, and returns compact page summaries plus deduplicated findings. It does not recursively follow HTML links, authenticate, execute JavaScript, fetch assets, or run site-wide link checks. Use page_offset to continue when more sitemap pages remain.
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['site_url'], 'properties': {'site_url': {'type': 'string', 'format': 'uri', 'maxLength': 2048, 'description': 'Authorized public website URL. The final public origin becomes the crawl boundary.'}, 'max_pages': {'type': 'integer', 'default': 5, 'maximum': 8, 'minimum': 1, 'description': 'Maximum same-origin pages to audit in this call, from 1 to 8.'}, 'page_offset': {'type': 'integer', 'default': 0, 'maximum': 250, 'minimum': 0, 'description': 'Zero-based sitemap-page offset for continuing a capped audit batch.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['site_url', 'discovery', 'pages_discovered', 'pages_selected', 'pages_audited', 'pages_partial', 'pages_failed', 'pages_skipped_robots', 'truncated', 'score_coverage_percent', 'pages', 'issue_groups', 'issue_groups_truncated', 'overview'], 'properties': {'error': {'type': 'string'}, 'pages': {'type': 'array', 'items': {'type': 'object', 'required': ['url', 'status', 'page_fetched', 'html_validation_status', 'html_errors', 'html_warnings', 'seo_errors', 'seo_warnings', 'schema_errors', 'schema_warnings', 'notes', 'top_findings'], 'properties': {'url': {'type': 'string'}, 'notes': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'status': {'enum': ['passed', 'needs_attention', 'partial', 'failed', 'skipped'], 'type': 'string'}, 'seo_errors': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'fetched_url': {'type': 'string'}, 'html_errors': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'http_status': {'type': 'integer', 'maximum': 299, 'minimum': 200}, 'failure_code': {'type': 'string'}, 'health_score': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'page_fetched': {'type': 'boolean'}, 'seo_warnings': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'top_findings': {'type': 'array', 'items': {'type': 'object', 'required': ['severity', 'category', 'message'], 'properties': {'message': {'type': 'string'}, 'category': {'enum': ['HTML', 'SEO', 'Schema', 'Accessibility'], 'type': 'string'}, 'severity': {'enum': ['error', 'warning', 'info'], 'type': 'string'}}, 'additionalProperties': False}}, 'html_warnings': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'schema_errors': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'schema_warnings': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'redirects_followed': {'type': 'integer', 'maximum': 3, 'minimum': 0}, 'html_validation_status': {'enum': ['completed', 'timeout', 'unavailable', 'not_run'], 'type': 'string'}}, 'additionalProperties': False}}, 'overview': {'type': 'object', 'required': ['kind', 'status', 'title', 'headline', 'detail', 'total', 'shown', 'truncated', 'counts'], 'properties': {'kind': {'enum': ['html', 'css', 'seo', 'schema', 'links', 'report', 'site'], 'type': 'string'}, 'shown': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'title': {'type': 'string'}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'counts': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'label', 'value', 'tone'], 'properties': {'key': {'type': 'string'}, 'tone': {'enum': ['error', 'warning', 'info', 'success'], 'type': 'string'}, 'label': {'type': 'string'}, 'value': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}}, 'detail': {'type': 'string'}, 'status': {'enum': ['passed', 'needs_attention', 'partial', 'failed', 'not_applicable'], 'type': 'string'}, 'headline': {'type': 'string'}, 'truncated': {'type': 'boolean'}, 'next_action': {'type': 'string'}}, 'additionalProperties': False}, 'site_url': {'type': 'string'}, 'discovery': {'enum': ['sitemap', 'root_only', 'partial'], 'type': 'string'}, 'truncated': {'type': 'boolean'}, 'sitemap_url': {'type': 'string'}, 'issue_groups': {'type': 'array', 'items': {'type': 'object', 'required': ['severity', 'category', 'message', 'affected_pages', 'example_urls'], 'properties': {'message': {'type': 'string'}, 'category': {'enum': ['HTML', 'SEO', 'Schema', 'Accessibility'], 'type': 'string'}, 'severity': {'enum': ['error', 'warning', 'info'], 'type': 'string'}, 'example_urls': {'type': 'array', 'items': {'type': 'string'}}, 'affected_pages': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}}, 'pages_failed': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'pages_audited': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'pages_partial': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'pages_selected': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'discovery_error': {'enum': ['robots_unavailable', 'sitemap_unavailable', 'sitemap_invalid'], 'type': 'string'}, 'next_page_offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'pages_discovered': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'audit_health_score': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'pages_skipped_robots': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'issue_groups_truncated': {'type': 'boolean'}, 'score_coverage_percent': {'type': 'integer', 'maximum': 100, 'minimum': 0}}, 'additionalProperties': False}
audit_public_webpage
Audit public webpage
Use this when the user provides one live public webpage URL. Fetches one bounded static HTML response, then runs HTML validation, SEO/accessibility-signal, and JSON-LD syntax checks. It checks links only when requested and does not crawl, execute JavaScript, authenticate, or fetch linked stylesheets. Use only URLs the user owns or is authorized to inspect.
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'maxLength': 2048, 'description': 'One authorized public HTTP(S) webpage URL; private pages, credentials, and custom ports are rejected.'}, 'max_links': {'type': 'integer', 'default': 15, 'maximum': 20, 'minimum': 1, 'description': 'Maximum links to check, from 1 to 20.'}, 'check_links': {'type': 'boolean', 'default': False, 'description': 'Whether to contact eligible public links found on the fetched page.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['html_errors', 'css_errors', 'seo_issues', 'schema_issues', 'links_checked', 'broken_links', 'html_warnings', 'html_info', 'html_messages', 'css_messages', 'seo_findings', 'schema_findings', 'links', 'seo_truncated', 'schema_truncated', 'html_total_messages', 'html_truncated', 'schema_blocks_checked', 'healthy_links', 'redirects', 'unreachable_links', 'links_requested', 'css_checked', 'failed_checks', 'overview', 'page_fetched'], 'properties': {'error': {'type': 'string'}, 'links': {'type': 'array', 'items': {'type': 'object', 'required': ['url', 'status', 'ok'], 'properties': {'ok': {'type': 'boolean'}, 'url': {'type': 'string'}, 'status': {'anyOf': [{'type': 'number'}, {'enum': ['blocked', 'failed'], 'type': 'string'}]}, 'message': {'type': 'string'}}, 'additionalProperties': False}}, 'overview': {'type': 'object', 'required': ['kind', 'status', 'title', 'headline', 'detail', 'total', 'shown', 'truncated', 'counts'], 'properties': {'kind': {'enum': ['html', 'css', 'seo', 'schema', 'links', 'report', 'site'], 'type': 'string'}, 'shown': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'title': {'type': 'string'}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'counts': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'label', 'value', 'tone'], 'properties': {'key': {'type': 'string'}, 'tone': {'enum': ['error', 'warning', 'info', 'success'], 'type': 'string'}, 'label': {'type': 'string'}, 'value': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}}, 'detail': {'type': 'string'}, 'status': {'enum': ['passed', 'needs_attention', 'partial', 'failed', 'not_applicable'], 'type': 'string'}, 'headline': {'type': 'string'}, 'truncated': {'type': 'boolean'}, 'next_action': {'type': 'string'}}, 'additionalProperties': False}, 'html_info': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'redirects': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'css_errors': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'seo_issues': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'css_checked': {'type': 'boolean'}, 'fetched_url': {'type': 'string'}, 'html_errors': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'http_status': {'type': 'integer', 'maximum': 299, 'minimum': 200}, 'broken_links': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'content_type': {'type': 'string', 'const': 'text/html'}, 'css_messages': {'type': 'array', 'items': {'type': 'object', 'required': ['line', 'message'], 'properties': {'line': {'type': 'number'}, 'context': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}}, 'page_fetched': {'type': 'boolean'}, 'seo_findings': {'type': 'array', 'items': {'type': 'object', 'required': ['severity', 'category', 'message'], 'properties': {'message': {'type': 'string'}, 'category': {'enum': ['SEO', 'Schema', 'Accessibility'], 'type': 'string'}, 'severity': {'enum': ['error', 'warning', 'info'], 'type': 'string'}}, 'additionalProperties': False}}, 'failed_checks': {'type': 'array', 'items': {'enum': ['fetch', 'html', 'css', 'links'], 'type': 'string'}}, 'healthy_links': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'html_messages': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'message'], 'properties': {'line': {'type': 'number'}, 'type': {'enum': ['error', 'warning', 'info'], 'type': 'string'}, 'column': {'type': 'number'}, 'message': {'type': 'string'}}, 'additionalProperties': False}}, 'html_warnings': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'links_checked': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'requested_url': {'type': 'string'}, 'schema_issues': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'seo_truncated': {'type': 'boolean'}, 'html_truncated': {'type': 'boolean'}, 'links_requested': {'type': 'boolean'}, 'schema_findings': {'type': 'array', 'items': {'type': 'object', 'required': ['severity', 'category', 'message'], 'properties': {'message': {'type': 'string'}, 'category': {'enum': ['SEO', 'Schema', 'Accessibility'], 'type': 'string'}, 'severity': {'enum': ['error', 'warning', 'info'], 'type': 'string'}}, 'additionalProperties': False}}, 'schema_truncated': {'type': 'boolean'}, 'unreachable_links': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'redirects_followed': {'type': 'integer', 'maximum': 3, 'minimum': 0}, 'html_total_messages': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'schema_blocks_checked': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}
audit_seo_metadata
Audit SEO metadata
Use this for a focused SEO/accessibility-signal check of supplied HTML. It does not fetch a live webpage; use audit_public_webpage for a URL.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['html'], 'properties': {'html': {'type': 'string', 'maxLength': 200000, 'minLength': 1, 'description': 'Raw HTML markup supplied by the user; this is not a webpage URL.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['issues', 'total_issues', 'truncated', 'overview'], 'properties': {'error': {'type': 'string'}, 'issues': {'type': 'array', 'items': {'type': 'object', 'required': ['severity', 'category', 'message'], 'properties': {'message': {'type': 'string'}, 'category': {'enum': ['SEO', 'Schema', 'Accessibility'], 'type': 'string'}, 'severity': {'enum': ['error', 'warning', 'info'], 'type': 'string'}}, 'additionalProperties': False}}, 'overview': {'type': 'object', 'required': ['kind', 'status', 'title', 'headline', 'detail', 'total', 'shown', 'truncated', 'counts'], 'properties': {'kind': {'enum': ['html', 'css', 'seo', 'schema', 'links', 'report', 'site'], 'type': 'string'}, 'shown': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'title': {'type': 'string'}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'counts': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'label', 'value', 'tone'], 'properties': {'key': {'type': 'string'}, 'tone': {'enum': ['error', 'warning', 'info', 'success'], 'type': 'string'}, 'label': {'type': 'string'}, 'value': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}}, 'detail': {'type': 'string'}, 'status': {'enum': ['passed', 'needs_attention', 'partial', 'failed', 'not_applicable'], 'type': 'string'}, 'headline': {'type': 'string'}, 'truncated': {'type': 'boolean'}, 'next_action': {'type': 'string'}}, 'additionalProperties': False}, 'truncated': {'type': 'boolean'}, 'total_issues': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}
check_broken_links
Check public links
Use this for a focused check of up to 20 public HTTP(S) links found in supplied HTML. It does not fetch base_url, follow redirects, or retain response bodies.
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['html'], 'properties': {'html': {'type': 'string', 'maxLength': 200000, 'minLength': 1, 'description': 'Raw HTML markup supplied by the user; this is not a webpage URL.'}, 'base_url': {'type': 'string', 'format': 'uri', 'description': 'Only resolves relative links; it does not fetch this webpage.'}, 'max_links': {'type': 'integer', 'default': 15, 'maximum': 20, 'minimum': 1, 'description': 'Maximum links to check, from 1 to 20.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['links', 'links_checked', 'healthy_links', 'redirects', 'unreachable_links', 'overview'], 'properties': {'error': {'type': 'string'}, 'links': {'type': 'array', 'items': {'type': 'object', 'required': ['url', 'status', 'ok'], 'properties': {'ok': {'type': 'boolean'}, 'url': {'type': 'string'}, 'status': {'anyOf': [{'type': 'number'}, {'enum': ['blocked', 'failed'], 'type': 'string'}]}, 'message': {'type': 'string'}}, 'additionalProperties': False}}, 'overview': {'type': 'object', 'required': ['kind', 'status', 'title', 'headline', 'detail', 'total', 'shown', 'truncated', 'counts'], 'properties': {'kind': {'enum': ['html', 'css', 'seo', 'schema', 'links', 'report', 'site'], 'type': 'string'}, 'shown': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'title': {'type': 'string'}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'counts': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'label', 'value', 'tone'], 'properties': {'key': {'type': 'string'}, 'tone': {'enum': ['error', 'warning', 'info', 'success'], 'type': 'string'}, 'label': {'type': 'string'}, 'value': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}}, 'detail': {'type': 'string'}, 'status': {'enum': ['passed', 'needs_attention', 'partial', 'failed', 'not_applicable'], 'type': 'string'}, 'headline': {'type': 'string'}, 'truncated': {'type': 'boolean'}, 'next_action': {'type': 'string'}}, 'additionalProperties': False}, 'redirects': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'healthy_links': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'links_checked': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'unreachable_links': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}
generate_validation_report
Generate validation report
Use this when HTML markup is already supplied. Combines Nu HTML validation with local CSS, SEO, accessibility-signal, and JSON-LD syntax checks. It does not fetch a webpage from base_url; use audit_public_webpage for a live URL.
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['html'], 'properties': {'css': {'type': 'string', 'maxLength': 200000, 'description': 'Optional raw CSS source. Linked stylesheets are not fetched.'}, 'html': {'type': 'string', 'maxLength': 200000, 'minLength': 1, 'description': 'Raw HTML markup supplied by the user; this is not a webpage URL.'}, 'base_url': {'type': 'string', 'format': 'uri', 'description': 'Only resolves relative links when check_links is true; it does not fetch this webpage.'}, 'max_links': {'type': 'integer', 'default': 15, 'maximum': 20, 'minimum': 1, 'description': 'Maximum links to check, from 1 to 20.'}, 'check_links': {'type': 'boolean', 'default': False, 'description': 'Whether to contact eligible public links found in the supplied HTML.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['html_errors', 'css_errors', 'seo_issues', 'schema_issues', 'links_checked', 'broken_links', 'html_warnings', 'html_info', 'html_messages', 'css_messages', 'seo_findings', 'schema_findings', 'links', 'seo_truncated', 'schema_truncated', 'html_total_messages', 'html_truncated', 'schema_blocks_checked', 'healthy_links', 'redirects', 'unreachable_links', 'links_requested', 'css_checked', 'failed_checks', 'overview'], 'properties': {'error': {'type': 'string'}, 'links': {'type': 'array', 'items': {'type': 'object', 'required': ['url', 'status', 'ok'], 'properties': {'ok': {'type': 'boolean'}, 'url': {'type': 'string'}, 'status': {'anyOf': [{'type': 'number'}, {'enum': ['blocked', 'failed'], 'type': 'string'}]}, 'message': {'type': 'string'}}, 'additionalProperties': False}}, 'overview': {'type': 'object', 'required': ['kind', 'status', 'title', 'headline', 'detail', 'total', 'shown', 'truncated', 'counts'], 'properties': {'kind': {'enum': ['html', 'css', 'seo', 'schema', 'links', 'report', 'site'], 'type': 'string'}, 'shown': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'title': {'type': 'string'}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'counts': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'label', 'value', 'tone'], 'properties': {'key': {'type': 'string'}, 'tone': {'enum': ['error', 'warning', 'info', 'success'], 'type': 'string'}, 'label': {'type': 'string'}, 'value': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}}, 'detail': {'type': 'string'}, 'status': {'enum': ['passed', 'needs_attention', 'partial', 'failed', 'not_applicable'], 'type': 'string'}, 'headline': {'type': 'string'}, 'truncated': {'type': 'boolean'}, 'next_action': {'type': 'string'}}, 'additionalProperties': False}, 'html_info': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'redirects': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'css_errors': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'seo_issues': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'css_checked': {'type': 'boolean'}, 'html_errors': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'broken_links': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'css_messages': {'type': 'array', 'items': {'type': 'object', 'required': ['line', 'message'], 'properties': {'line': {'type': 'number'}, 'context': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}}, 'seo_findings': {'type': 'array', 'items': {'type': 'object', 'required': ['severity', 'category', 'message'], 'properties': {'message': {'type': 'string'}, 'category': {'enum': ['SEO', 'Schema', 'Accessibility'], 'type': 'string'}, 'severity': {'enum': ['error', 'warning', 'info'], 'type': 'string'}}, 'additionalProperties': False}}, 'failed_checks': {'type': 'array', 'items': {'enum': ['fetch', 'html', 'css', 'links'], 'type': 'string'}}, 'healthy_links': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'html_messages': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'message'], 'properties': {'line': {'type': 'number'}, 'type': {'enum': ['error', 'warning', 'info'], 'type': 'string'}, 'column': {'type': 'number'}, 'message': {'type': 'string'}}, 'additionalProperties': False}}, 'html_warnings': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'links_checked': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'schema_issues': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'seo_truncated': {'type': 'boolean'}, 'html_truncated': {'type': 'boolean'}, 'links_requested': {'type': 'boolean'}, 'schema_findings': {'type': 'array', 'items': {'type': 'object', 'required': ['severity', 'category', 'message'], 'properties': {'message': {'type': 'string'}, 'category': {'enum': ['SEO', 'Schema', 'Accessibility'], 'type': 'string'}, 'severity': {'enum': ['error', 'warning', 'info'], 'type': 'string'}}, 'additionalProperties': False}}, 'schema_truncated': {'type': 'boolean'}, 'unreachable_links': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'html_total_messages': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'schema_blocks_checked': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}
validate_css
Validate CSS
Use this when raw CSS source is supplied. Parses it inside the Worker and returns syntax messages without contacting an external service.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['css'], 'properties': {'css': {'type': 'string', 'maxLength': 200000, 'minLength': 1, 'description': 'Raw CSS source supplied by the user.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['errors', 'overview'], 'properties': {'error': {'type': 'string'}, 'errors': {'type': 'array', 'items': {'type': 'object', 'required': ['line', 'message'], 'properties': {'line': {'type': 'number'}, 'context': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}}, 'overview': {'type': 'object', 'required': ['kind', 'status', 'title', 'headline', 'detail', 'total', 'shown', 'truncated', 'counts'], 'properties': {'kind': {'enum': ['html', 'css', 'seo', 'schema', 'links', 'report', 'site'], 'type': 'string'}, 'shown': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'title': {'type': 'string'}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'counts': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'label', 'value', 'tone'], 'properties': {'key': {'type': 'string'}, 'tone': {'enum': ['error', 'warning', 'info', 'success'], 'type': 'string'}, 'label': {'type': 'string'}, 'value': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}}, 'detail': {'type': 'string'}, 'status': {'enum': ['passed', 'needs_attention', 'partial', 'failed', 'not_applicable'], 'type': 'string'}, 'headline': {'type': 'string'}, 'truncated': {'type': 'boolean'}, 'next_action': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}
validate_html
Validate HTML
Use this when raw HTML markup is supplied. Sends that markup to the Nu HTML Checker hosted at validator.nu and returns validation messages. For a live URL, use audit_public_webpage.
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['html'], 'properties': {'html': {'type': 'string', 'maxLength': 200000, 'minLength': 1, 'description': 'Raw HTML markup supplied by the user; this is not a webpage URL.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['messages', 'total_messages', 'truncated', 'overview'], 'properties': {'error': {'type': 'string'}, 'messages': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'message'], 'properties': {'line': {'type': 'number'}, 'type': {'enum': ['error', 'warning', 'info'], 'type': 'string'}, 'column': {'type': 'number'}, 'message': {'type': 'string'}}, 'additionalProperties': False}}, 'overview': {'type': 'object', 'required': ['kind', 'status', 'title', 'headline', 'detail', 'total', 'shown', 'truncated', 'counts'], 'properties': {'kind': {'enum': ['html', 'css', 'seo', 'schema', 'links', 'report', 'site'], 'type': 'string'}, 'shown': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'title': {'type': 'string'}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'counts': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'label', 'value', 'tone'], 'properties': {'key': {'type': 'string'}, 'tone': {'enum': ['error', 'warning', 'info', 'success'], 'type': 'string'}, 'label': {'type': 'string'}, 'value': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}}, 'detail': {'type': 'string'}, 'status': {'enum': ['passed', 'needs_attention', 'partial', 'failed', 'not_applicable'], 'type': 'string'}, 'headline': {'type': 'string'}, 'truncated': {'type': 'boolean'}, 'next_action': {'type': 'string'}}, 'additionalProperties': False}, 'truncated': {'type': 'boolean'}, 'total_messages': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}
validate_schema_markup
Validate JSON-LD syntax
Use this for a focused JSON-LD syntax check of supplied HTML. It parses JSON only and does not validate Schema.org vocabulary semantics.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['html'], 'properties': {'html': {'type': 'string', 'maxLength': 200000, 'minLength': 1, 'description': 'Raw HTML markup supplied by the user; this is not a webpage URL.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['issues', 'total_issues', 'truncated', 'overview', 'blocks_checked'], 'properties': {'error': {'type': 'string'}, 'issues': {'type': 'array', 'items': {'type': 'object', 'required': ['severity', 'category', 'message'], 'properties': {'message': {'type': 'string'}, 'category': {'enum': ['SEO', 'Schema', 'Accessibility'], 'type': 'string'}, 'severity': {'enum': ['error', 'warning', 'info'], 'type': 'string'}}, 'additionalProperties': False}}, 'overview': {'type': 'object', 'required': ['kind', 'status', 'title', 'headline', 'detail', 'total', 'shown', 'truncated', 'counts'], 'properties': {'kind': {'enum': ['html', 'css', 'seo', 'schema', 'links', 'report', 'site'], 'type': 'string'}, 'shown': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'title': {'type': 'string'}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'counts': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'label', 'value', 'tone'], 'properties': {'key': {'type': 'string'}, 'tone': {'enum': ['error', 'warning', 'info', 'success'], 'type': 'string'}, 'label': {'type': 'string'}, 'value': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}}, 'detail': {'type': 'string'}, 'status': {'enum': ['passed', 'needs_attention', 'partial', 'failed', 'not_applicable'], 'type': 'string'}, 'headline': {'type': 'string'}, 'truncated': {'type': 'boolean'}, 'next_action': {'type': 'string'}}, 'additionalProperties': False}, 'truncated': {'type': 'boolean'}, 'total_issues': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'blocks_checked': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}
추가됨
audit_public_site
2026년 9월 17일 12:40 PM
추가됨
audit_public_webpage
2026년 9월 17일 12:40 PM
추가됨
generate_validation_report
2026년 9월 17일 12:40 PM
추가됨
check_broken_links
2026년 9월 17일 12:40 PM
추가됨
validate_schema_markup
2026년 9월 17일 12:40 PM
추가됨
audit_seo_metadata
2026년 9월 17일 12:40 PM
추가됨
validate_css
2026년 9월 17일 12:40 PM
추가됨
validate_html
2026년 9월 17일 12:40 PM