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
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!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6921ba044d6f8755e989ba6f2bdf78369312904b77e9b07d0b6acb5d4b2f1304
|
|
| MD5 |
d9b407b079566489868d5c8725415a77
|
|
| BLAKE2b-256 |
d1ea50a9b0c92d4781de08448e0e5898e1a2a6ce3f7f287c7939ad2ce16c10ea
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8ea1f76a23db1cd78ca9210f99bbca9186ebabb97d497d2d1a0dcfa26e14c79a
|
|
| MD5 |
737d936b081cb00b48ff99c049efd280
|
|
| BLAKE2b-256 |
eafcf94b21a1c6813105a8af437d13537326781c0fab4c664abede7c06e6b4a8
|