🕷️ 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
advertoolsto 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
-
Clone the repository:
git clone <repository-url> cd seo-analyzer
-
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!
Metadata
Release files for seo-check 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| seo_check-0.1.4.tar.gz | 61.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| seo_check-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 129.2 kB
Release files / seo_check-0.1.4.tar.gz
| Download URL | seo_check-0.1.4.tar.gz |
|---|---|
| Size | 61.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6921ba044d6f8755e989ba6f2bdf78369312904b77e9b07d0b6acb5d4b2f1304
|
|
BLAKE2b-256 checksum How to use checksums |
d1ea50a9b0c92d4781de08448e0e5898e1a2a6ce3f7f287c7939ad2ce16c10ea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|
Release files / seo_check-0.1.4-py3-none-any.whl
| Download URL | seo_check-0.1.4-py3-none-any.whl |
|---|---|
| Size | 68.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8ea1f76a23db1cd78ca9210f99bbca9186ebabb97d497d2d1a0dcfa26e14c79a
|
|
BLAKE2b-256 checksum How to use checksums |
eafcf94b21a1c6813105a8af437d13537326781c0fab4c664abede7c06e6b4a8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|