Skip to main content

A CLI tool for SEO analysis with web reporting capabilities.

Project description

🕷️ SEO Analyzer

A professional, Python-based Technical SEO Audit tool wrapped in a modern CLI and Web Interface.

This tool crawls any target website, analyzes critical SEO metrics (On-page, Performance, Links, Content), and generates detailed, interactive reports similar to Semrush or Ahrefs.


🚀 Features

  • Deep Crawling: Uses advertools to crawl websites recursively with configurable depth.
  • Comprehensive Analysis:
    • On-Page: Title, H1, Meta Descriptions, Canonical tags.
    • Content: Word count, Text-to-HTML ratio, Thin content detection.
    • Technical: HTTP Status codes (4xx/5xx), Redirects, HTTPS security.
    • Performance: Response time analysis.
    • Links: Internal vs. External link ratio.
  • Interactive Web Dashboard:
    • FastAPI backend to manage scans.
    • Background Tasks for non-blocking execution.
    • Report History to revisit past audits.
  • Professional Reports:
    • "Semrush-style" dashboard.
    • Categorized issues (🔴 Critical, ⚠️ Warnings, 🔵 Notices).
    • Detailed per-page audit explorer.
    • No database required (File-based JSON storage).

🛠️ Installation

  1. Clone the repository:

    git clone <repository-url>
    cd seo-analyzer
    
  2. Install the package:

    pip install .
    

    Or for development:

    pip install -e .
    

🚦 Usage

CLI Commands

The tool provides a command-line interface seo-check.

1. Analyze a Website

Run a quick analysis directly from your terminal:

seo-check analyze https://example.com --depth 3

Or simply run seo-check analyze for interactive mode.

2. View Reports (Web Server)

Start the local web server to view generated reports in a nice dashboard:

seo-check serve

Then open http://localhost:8000 in your browser.


📂 Project Structure

├── src/seo_check/      # Source code package
│   ├── app.py          # FastAPI Application entry point
│   ├── config.py       # Configuration & SEO Thresholds
│   ├── crawler.py      # Crawling logic (advertools)
│   ├── analyzer.py     # Data processing & Issue detection logic
│   ├── reporter.py     # Report generation logic (JSON export)
│   ├── main.py         # CLI Entry point
│   └── templates/      # HTML Templates (Jinja2)
├── setup.py            # Package installation script
├── MANIFEST.in         # Package data configuration
└── requirements.txt    # Project dependencies

⚙️ Configuration

You can tweak SEO thresholds (e.g., what counts as a "Long Title") directly in src/seo_check/config.py:

# config.py
title_max_length: int = 60
slow_page_threshold: float = 3.0
min_word_count: int = 250

📝 Requirements

  • Python 3.8+
  • Modern Web Browser (Chrome/Firefox/Edge) for the report viewer.

🤝 Contributing

Feel free to submit issues or pull requests to improve the analysis logic or the web interface!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

seo_check-0.1.4.tar.gz (61.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

seo_check-0.1.4-py3-none-any.whl (68.0 kB view details)

Uploaded Python 3

File details

Details for the file seo_check-0.1.4.tar.gz.

File metadata

  • Download URL: seo_check-0.1.4.tar.gz
  • Upload date:
  • Size: 61.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for seo_check-0.1.4.tar.gz
Algorithm Hash digest
SHA256 6921ba044d6f8755e989ba6f2bdf78369312904b77e9b07d0b6acb5d4b2f1304
MD5 d9b407b079566489868d5c8725415a77
BLAKE2b-256 d1ea50a9b0c92d4781de08448e0e5898e1a2a6ce3f7f287c7939ad2ce16c10ea

See more details on using hashes here.

File details

Details for the file seo_check-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: seo_check-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 68.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for seo_check-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 8ea1f76a23db1cd78ca9210f99bbca9186ebabb97d497d2d1a0dcfa26e14c79a
MD5 737d936b081cb00b48ff99c049efd280
BLAKE2b-256 eafcf94b21a1c6813105a8af437d13537326781c0fab4c664abede7c06e6b4a8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page