{% from "rule_metadata.html" import finding as rule_finding, overview as rule_overview, styles as rule_styles %} SEO Analysis Report - {{ executive_summary.overview.total_pages_analyzed|default(url) }} Pages {{ rule_styles() }} {% if report_status == "partial" %}
Analysis is partial. Review the reported errors and page status.
{% endif %} {% if score_source in ("static_html", "static_rule_heuristics") %}

Scores summarize completed static HTML checks.

{% endif %} {% if error %}
Analysis failed: {{ error }}
{% endif %} {% for analyzer_error in analysis_errors %}
{{ analyzer_error.analyzer|title }}: {{ analyzer_error.error }}
{% endfor %}

SEO Analysis Executive Summary

{% if executive_summary %} Analyzed {{ executive_summary.overview.total_pages_analyzed }} pages with an overall health status of {{ executive_summary.overview.overall_health }}. {% else %} Comprehensive SEO analysis report for {{ url }}. {% endif %}

{{ overall_score|number(0, '/100') }}
Overall Score
{% if executive_summary %}
{{ executive_summary.overview.successful_pages }}
Pages Analyzed
{{ executive_summary.key_metrics.critical_issues }}
Critical Issues
{{ issue_counts.unique|default(issue_counts.total) }}
Unique Issues
{% endif %}
{{ rule_overview(scoring_policies, scoring_versions, rule_coverage) }} {% include "site_analysis.html" %} {% if executive_summary.quick_wins %}

🎯 Quick Wins (High Impact, Low Effort)

{% for win in executive_summary.quick_wins %}
{{ win.title }} - {{ win.description }}
{% endfor %}
{% endif %}

Category Scores

Overall Score

{{ overall_score|number(0, '/100') }}
{% for category, score in category_scores.items() %}

{{ category|title }}

{{ score|number }}
{% if score is number %}{% endif %}
{% endfor %}

Issue Distribution

Category Performance

Issues Analysis

🔴 Critical: {{ issue_counts.critical }} 🟡 Warnings: {{ issue_counts.warning }} 🔵 Notices: {{ issue_counts.notice }} {% if aggregation_stats %} 📊 Aggregated: {{ (aggregation_stats.reduction_ratio * 100)|round|int }}% reduction {% endif %}
{% if aggregated_issues %}

Top Issues (Aggregated)

Search all {{ issues|length }} findings

{% for issue in aggregated_issues[:20] %}
[{{ issue.category }}] {{ issue.message }} {{ rule_finding(issue, page_limit=5) }}
{{ issue.count }} occurrence{% if issue.count > 1 %}s{% endif %} on {{ issue.pages_affected }} page{% if issue.pages_affected > 1 %}s{% endif %}
{% if issue.example_pages %}
Example pages:
    {% for page in issue.example_pages[:5] %}
  • {{ page }}
  • {% endfor %}
{% endif %}
{% endfor %} {% else %} {% for issue in issues[:20] %}
[{{ issue.category }}] {{ issue.message }} {{ rule_finding(issue) }}
{% endfor %} {% endif %} {% include 'findings.html' %}

Actionable Recommendations

{% if enhanced_recommendations %} {% for rec in enhanced_recommendations %}

{{ loop.index }}. {{ rec.title }}

{{ rec.priority }} {{ rec.effort }} effort

{{ rec.description }}

Impact: {{ rec.impact }}

Affected Pages: {{ rec.affected_pages }}

{% if rec.implementation %}
Implementation Guide
{{ rec.implementation }}
{% endif %}
{% endfor %} {% else %} {% for rec in recommendations %}

{{ loop.index }}. {{ rec }}

{% endfor %} {% endif %}

Performance Metrics

{% if performance_metrics %}

HTML Fetch Time Distribution

{% if performance_metrics.load_time_stats %}
Avg: {{ performance_metrics.load_time_stats.average|number(2, 's') }} | Min: {{ performance_metrics.load_time_stats.min|number(2, 's') }} | Max: {{ performance_metrics.load_time_stats.max|number(2, 's') }}
{% endif %}

Status Code Distribution

{% if performance_metrics.slowest_pages %}

Slowest Pages

{% for page in performance_metrics.slowest_pages[:5] %} {% endfor %}
URL HTML fetch time
{{ page.url|truncate(80) }} {{ page.time|number(2, 's') }}
{% endif %} {% endif %}

Page Analysis Summary

{% if pages_summary %} {% for page in pages_summary[:20] %} {% endfor %}
URL Score Status HTML fetch time Issues Analysis status
{{ page.url }} {{ page.score|number }} {{ page.status_code if page.status_code is not none else 'Unavailable' }} {{ page.load_time|number(2, 's') }} {{ page.issue_count }} {{ page.error or page.status or '' }}
{% if pages_summary|length > 20 %} {% endif %} {% if pages_truncated %}

Note: Showing top {{ pages_summary|length }} pages. {{ pages_truncated_count }} additional pages analyzed but not shown.

{% endif %} {% endif %}