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.2.tar.gz (31.6 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.2-py3-none-any.whl (33.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: seo_check-0.1.2.tar.gz
  • Upload date:
  • Size: 31.6 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.2.tar.gz
Algorithm Hash digest
SHA256 2d17bfc41af6774b9881ea562a8077d1b3773c54c4cb553d826a0d43c2b44beb
MD5 41c64def0193ea84b423ff69154002a8
BLAKE2b-256 58a93959090895f02acce32afd77aaa22ee4cf9b130bd4d85dc9fe3bda83e97d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: seo_check-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 33.9 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 e2767a92381b238f59db9e1024f2d5970ca2e4336984c2f6e2a3f0d72581b9c6
MD5 f19151e5f4093b913b0809b6427b840a
BLAKE2b-256 cab9895a3a5a87750bd63a29f1c967a4ff1fe2387b96a0aba4f5bdb638397a3f

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