• Home
  • /
  • Detailed Audit

Infestus SEO — Professional Website Audit Tool

Version: 2.0
Author: Infestus SEO | infestusseo.com
Contact: glasco@infestusseo.com

Overview

A comprehensive, professional-grade Python SEO audit tool designed for Infestus SEO client work. Performs 100+ automated checks across every factor that matters for Google, Bing, and Yahoo SEO, Google PPC quality scores, and Facebook Ads performance. Generates branded PDF reports and Google Docs, tracks historical data, and sends Gmail alerts for critical issues.

What Gets Audited (100+ Checks)

Technical SEO (25% weight)

Check

Description

HTTPS / SSL

Certificate validity, expiry, mixed content

HTTP→HTTPS Redirect

301 vs 302, redirect chains

WWW Canonicalization

www vs non-www consistency

robots.txt

Exists, sitemap reference, crawler blocking

XML Sitemap

Exists, URL count, lastmod tags, index

Canonical Tags

Present, HTTPS, self-referencing

Meta Robots

noindex, nofollow, X-Robots-Tag

Hreflang

Multi-language tag validation

DNS Records

A, MX, SPF, DMARC

Security Headers

HSTS, CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy

TTFB

Time to First Byte (<0.8s target)

Compression

Gzip/Brotli response compression

Cache-Control

Browser caching headers

Custom 404

Proper 404 status, soft 404 detection

URL Structure

Length, hyphens vs underscores, case, special chars

Character Encoding

UTF-8 declaration

On-Page SEO (20% weight)

Check

Description

Title Tag

Exists, length (50-60 chars), keyword presence, position, stuffing

Meta Description

Exists, length (150-160 chars), keyword, CTA

H1 Tag

Exists, count (only one), keyword presence

H2-H6 Tags

Present, hierarchy, keyword usage

Content Length

Word count (thin content detection)

Keyword Density

Per-page keyword optimization

E-E-A-T Signals

Contact info, About page, Privacy Policy, Terms, reviews, social proof

Images

Alt text, dimensions, lazy loading, WebP format

Internal Links

Count, anchor text quality, orphaned pages

External Links

Broken external links

Performance & Core Web Vitals (15% weight)

Check

Description

LCP

Largest Contentful Paint (≤2.5s good)

TBT/FID

Total Blocking Time proxy (≤200ms good)

CLS

Cumulative Layout Shift (≤0.1 good)

FCP

First Contentful Paint (≤1.8s good)

Speed Index

Visual loading speed (≤3.4s good)

TTI

Time to Interactive (≤3.8s good)

PageSpeed Score

Mobile + Desktop (0-100)

DOM Size

Element count (<1500 recommended)

Page Weight

Transfer size (<500 KB recommended)

Render-Blocking

CSS/JS blocking resources

Mobile (10% weight)

Check

Description

Viewport Meta Tag

Present and correctly configured

Responsive CSS

Media queries detected

Horizontal Scroll

No content overflow on mobile

Tap Target Sizes

≥44×44px for touch elements

Font Size

Readable on mobile (≥12px)

Flash/Plugin Content

Non-mobile-friendly elements

Structured Data (5% weight)

Check

Description

JSON-LD

Present, schema types identified

Microdata

Detected if JSON-LD absent

Schema Types

Organization, WebSite, LocalBusiness, BreadcrumbList

Local Business Schema

NAP in structured data

Security (5% weight)

Check

Description

HSTS

Strict-Transport-Security header

CSP

Content-Security-Policy header

X-Frame-Options

Clickjacking protection

X-Content-Type-Options

MIME sniffing protection

X-XSS-Protection

XSS filter header

Referrer-Policy

Referrer information control

Permissions-Policy

Browser feature permissions

Server Version

Version disclosure in headers

Cookie Consent

GDPR/CCPA banner detection

Social & PPC (8% weight)

Check

Description

Open Graph Tags

og:title, og:description, og:image, og:url, og:type

OG Image

Present, dimensions (1200×630 recommended)

Twitter Card

twitter:card, twitter:title, twitter:description, twitter:image

Facebook Pixel

Meta Pixel detection and event tracking

Facebook Domain Verification

Domain verification meta tag

PPC Landing Page Speed

Load time for ad landing pages

PPC Value Proposition

Clear H1/headline

PPC Call-to-Action

CTA buttons and forms

PPC Trust Signals

Reviews, certifications, guarantees

PPC Lead Capture

Form presence and length

PPC Transparency

About/Privacy pages for Google Ads

PPC Message Match

Ad-to-page relevance guidance

Local SEO (5% weight)

Check

Description

Phone Number (NAP)

Visible phone number

Address (NAP)

Physical address on page

Google Maps Embed

Maps integration

Google Business Profile

Link to GMB listing

LocalBusiness Schema

Structured data for local

Links (7% weight)

Check

Description

Broken Internal Links

4xx/5xx internal pages

Redirect Chains

3+ hop redirect chains

Broken External Links

Outbound broken links

Slow Internal Pages

Pages loading >3s

Site Crawl Summary

Total pages, issues overview

Headless Browser Checks (via Playwright)

Check

Description

JS Rendering

Page renders correctly with JavaScript

JS Console Errors

JavaScript error detection

Broken Resources

Failed resource loads

Mixed Content

HTTP resources on HTTPS page

DOM Content Loaded

Browser-measured DCL time

Mobile Rendering

Mobile viewport, horizontal scroll, tap targets

Installation (Fedora 43)

Bash

# Clone or copy the audit tool directory
cd /path/to/infestus_seo_audit

# Run the automated installer
bash install_fedora.sh

Or manually:

Bash

# System dependencies
sudo dnf install python3 python3-pip chromium libnotify rclone

# Python packages
pip3 install --user -r requirements.txt

# Playwright browser
python3 -m playwright install chromium

Usage

Set Up a New Client

Bash

python3 audit.py --setup example.com

This creates clients/example_com/config.json and a sample keywords.csv.

Run an Audit

Bash

# Basic audit
python3 audit.py --client example.com

# With competitor benchmarking
python3 audit.py --client example.com --competitors comp1.com comp2.com comp3.com

# With custom keywords file
python3 audit.py --client example.com --keywords /path/to/keywords.csv

# Limit crawl depth (faster)
python3 audit.py --client example.com --max-pages 20

# Quiet mode (no terminal output)
python3 audit.py --client example.com --quiet

View Audit History

Bash

python3 audit.py --history example.com

List All Clients

Bash

python3 audit.py --list-clients

Schedule Weekly Audits

Bash

# Install cron job (runs every Monday at 8 AM)
python3 scheduler.py --install-cron

# Run all clients immediately
python3 scheduler.py --run-now

# Check cron status
python3 scheduler.py --status

# Remove cron job
python3 scheduler.py --remove-cron

Keywords File Format

Create a CSV file with the following columns:

csv

keyword,target_page
seo services dallas,https://example.com/seo-services
local seo company,https://example.com/local-seo
best seo agency,https://example.com

Client Configuration File

Located at clients/{domain}/config.json:

JSON

{
"domain": "example.com",
"client_name": "Example Client",
"client_email": "client@example.com",
"competitors": ["competitor1.com", "competitor2.com"],
"keywords_file": "clients/example_com/keywords.csv",
"max_pages_to_crawl": 50,
"alert_on_critical": true,
"alert_threshold_score": 70,
"schedule": "weekly",
"notes": "WordPress site, local business"
}

Output Files

File

Location

Description

PDF Report

reports/{domain}/seo_audit_{domain}_{timestamp}.pdf

Full branded PDF report

Google Doc

Google Drive: Infestus SEO/{domain}/

Branded Google Docs report

History JSON

history/{domain}/audit_history.json

Full audit history

History CSV

history/{domain}/audit_history.csv

Trend tracking spreadsheet

Scheduler Log

logs/weekly_audit_{timestamp}.log

Weekly run logs

Scoring System

Category

Weight

Technical SEO

25%

On-Page SEO

20%

Performance

15%

Mobile

10%

Social & PPC

8%

Links

7%

Structured Data

5%

Security

5%

Local SEO

5%

Letter Grades

Score

Grade

97-100

A+

93-96

A

90-92

A-

87-89

B+

83-86

B

80-82

B-

77-79

C+

73-76

C

70-72

C-

67-69

D+

63-66

D

60-62

D-

<60

F

Alerts

Critical issues automatically trigger:

  1. Gmail alert to glasco@infestusseo.com with branded HTML email
  2. Desktop notification via notify-send (Fedora/Linux )

Google Drive Integration

Reports are automatically uploaded to:

Plain Text

Google Drive / Infestus SEO / {domain} / seo_audit_{domain}_{timestamp}.pdf

Google Docs are created at:

Plain Text

Google Drive / Infestus SEO / {domain} / SEO Audit - {domain} - {timestamp}

Requires rclone configured with Google Drive (manus_google_drive remote).

Competitor Benchmarking

When competitor domains are provided, the report includes a comparison table showing:

  • Page load time
  • Word count
  • Schema markup presence
  • Open Graph tags
  • Facebook Pixel
  • Core metrics side-by-side

Notes for Cloudflare-Protected Sites

Some sites use Cloudflare's bot protection ("One moment, please..." challenge). The audit tool will:

  • Report the Cloudflare challenge page as detected
  • Still perform all technical checks (DNS, SSL, headers, sitemap, robots.txt)
  • Use headless Chrome to attempt JavaScript rendering
  • Note that on-page content checks may be limited for heavily protected sites

For client sites, consider running from a whitelisted IP or using the client's staging environment.

Support

Infestus SEO
Website: infestusseo.com
Email: glasco@infestusseo.com