auditPage static method

List<SeoAuditResult> auditPage({
  1. String? title,
  2. String? description,
  3. String? canonicalUrl,
  4. String? ogImage,
  5. List<String>? keywords,
})

Audit specific values without reading from DOM

Implementation

static List<SeoAuditResult> auditPage({
  String? title,
  String? description,
  String? canonicalUrl,
  String? ogImage,
  List<String>? keywords,
}) {
  final results = <SeoAuditResult>[];

  if (title == null || title.isEmpty) {
    results.add(
      const SeoAuditResult(
        severity: AuditSeverity.error,
        rule: 'title-missing',
        message: 'Page title is empty.',
      ),
    );
  } else if (title.length > 60) {
    results.add(
      SeoAuditResult(
        severity: AuditSeverity.warning,
        rule: 'title-too-long',
        message: 'Title is ${title.length} chars (recommended: ≤60).',
      ),
    );
  }

  if (description == null || description.isEmpty) {
    results.add(
      const SeoAuditResult(
        severity: AuditSeverity.error,
        rule: 'description-missing',
        message: 'Meta description is empty.',
      ),
    );
  } else if (description.length > 160) {
    results.add(
      SeoAuditResult(
        severity: AuditSeverity.warning,
        rule: 'description-too-long',
        message:
            'Description is ${description.length} chars (recommended: ≤160).',
      ),
    );
  }

  if (canonicalUrl == null || canonicalUrl.isEmpty) {
    results.add(
      const SeoAuditResult(
        severity: AuditSeverity.warning,
        rule: 'canonical-missing',
        message: 'Canonical URL is not set.',
      ),
    );
  }

  if (ogImage == null || ogImage.isEmpty) {
    results.add(
      const SeoAuditResult(
        severity: AuditSeverity.warning,
        rule: 'og-image-missing',
        message: 'OG image is not set.',
      ),
    );
  }

  return results;
}