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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for seo_check-0.1.0.tar.gz
Algorithm Hash digest
SHA256 31a1bfb2bf436b9d9b6070d23c0f02e5457c1f53e3c0d49dac67034b6252d56b
MD5 79e0fa1139054f37b8eb073a38afbe0b
BLAKE2b-256 f87592b58faf43a234168887717b0cf8af1760566836d6c33be9daa2c5d408fe

See more details on using hashes here.

File details

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

File metadata

  • Download URL: seo_check-0.1.0-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.12.2

File hashes

Hashes for seo_check-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1c9d30d563a7902aaed0b8b32c7a820ca1e7d67ebecb5b1f3d060d266f94d688
MD5 a31950c737b450226d1db2cf84e20d9b
BLAKE2b-256 cd54ad9f656c4962c02d3dcc995f8614195a4745f7ff358be37ad70ceca5097e

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