Skip to main content

SEO Sentinel - Automated SEO Auditing Tool

Build PyPI Python Version License

A comprehensive SEO analysis tool that crawls websites, identifies SEO issues, and generates detailed HTML reports for website optimization.

[!CAUTION] SEO Sentinel is a helpful utility for SEO auditing but does not guarantee search engine ranking improvements. Please ensure your usage complies with the target site's policies. Always respect the robots.txt file of the websites you crawl. Use responsibly and ethically. The author is not responsible for any misuse or damage caused by the tool. Always test on your own sites or with permission from the site owner.

Features

  • Website Crawling: Intelligent crawling with configurable depth and page limits
  • SEO Analysis: Comprehensive analysis of metadata, links, and content
  • Keyword Density: Track keyword usage and density across pages
  • Broken Link Detection: Identify and report broken internal/external links
  • Performance Metrics: Page load time and response code monitoring
  • HTML Reports: Beautiful, detailed reports with actionable insights
  • Auto Updates: Built-in update checker for latest features
  • Configurable: Customizable crawling parameters and settings

Installation

Getting Started

Clone & Run Locally

# Clone the repository
git clone https://github.com/nayandas69/SEO-Sentinel
cd SEO-Sentinel

# Create a virtual environment
python3 -m venv venv

# Activate the environment
# Windows:
venv\Scripts\activate
# Linux/macOS:
source venv/bin/activate

# Install dependencies
pip3 install -r requirements.txt

# Run the project
python3 seose.py

Install via PyPI

pip3 install seo-sentinel

Then run via:

seo-sentinel

Programmatic Usage

from seose import SEOSentinel, SEOConfig

# Initialize with default config
sentinel = SEOSentinel()

# Or with custom configuration
config = SEOConfig(
    crawl_depth=2,
    max_pages=50,
    request_timeout=15
)
sentinel = SEOSentinel(config)

# Crawl and analyze a website
urls = sentinel.crawl_website("https://example.com")
results = {}

for url in urls:
    results[url] = sentinel.analyze_seo_issues(url, keywords=["seo", "optimization"])

# Generate HTML report
report_path = sentinel.generate_report(results, "https://example.com")
print(f"Report saved to: {report_path}")

Configuration

The SEOConfig class allows you to customize the analysis:

from seose import SEOConfig

config = SEOConfig(
    report_directory="reports",      # Directory for HTML reports
    log_directory="logs",           # Directory for log files
    crawl_depth=3,                  # Maximum crawling depth
    max_pages=100,                  # Maximum pages to crawl
    request_timeout=10,             # Request timeout in seconds
    max_workers=5,                  # Concurrent workers (future use)
    user_agent="SEO-Sentinel/1.0.2", # Custom user agent
    verify_ssl=True                 # SSL certificate verification
)

Requirements

Runtime Dependencies

  • Python 3.8+
  • beautifulsoup4 >= 4.12.0
  • requests >= 2.31.0
  • tqdm >= 4.65.0
  • jinja2 >= 3.1.0

Development Dependencies

  • pytest >= 7.0.0
  • black >= 23.0.0
  • flake8 >= 6.0.0
  • mypy >= 1.0.0
  • coverage >= 7.0.0

Usage Examples

Basic Website Analysis

from seose import SEOSentinel

sentinel = SEOSentinel()

# Analyze a single page
issues = sentinel.analyze_seo_issues("https://example.com")
print(f"Found {len(issues.missing_metadata)} metadata issues")

# Full website crawl and analysis
urls = sentinel.crawl_website("https://example.com")
results = {url: sentinel.analyze_seo_issues(url) for url in urls}
report_path = sentinel.generate_report(results, "https://example.com")

Keyword Analysis

keywords = ["seo", "optimization", "website", "ranking"]
issues = sentinel.analyze_seo_issues("https://example.com", keywords=keywords)

for keyword, data in issues.keyword_density.items():
    print(f"{keyword}: {data['count']} occurrences ({data['density']}%)")

Custom Configuration

from seose import SEOSentinel, SEOConfig

config = SEOConfig(
    crawl_depth=2,
    max_pages=25,
    request_timeout=15
)

sentinel = SEOSentinel(config)
urls = sentinel.crawl_website("https://example.com", max_depth=1, max_pages=10)

Report Features

The generated HTML reports include:

  • Executive Summary: Total pages, issues, and performance metrics
  • Page-by-Page Analysis: Detailed breakdown of each crawled page
  • Performance Indicators: Load times and response codes
  • Broken Link Detection: Complete list of broken internal/external links
  • Metadata Analysis: Missing or problematic meta tags, titles, descriptions
  • Keyword Density: Frequency and density analysis for target keywords

Testing

Run the test suite:

# Run all tests
pytest

# Run with coverage
pytest --cov=seose

# Run specific test file
pytest tests/test_seose.py

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Run tests (pytest)
  5. Format code (black .)
  6. Commit changes (git commit -m 'Add amazing feature')
  7. Push to branch (git push origin feature/amazing-feature)
  8. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Author

Nayan Das

Support

Roadmap

  • Multi-threading support for faster crawling
  • Additional SEO checks (schema markup, social meta tags)
  • JSON/CSV export options
  • Web interface
  • Integration with popular CMS platforms
  • Advanced keyword analysis and suggestions

Metadata

Release files for seo-sentinel 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for seo-sentinel 1.0.2
File Size Uploaded
seo_sentinel-1.0.2.tar.gz 17.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for seo-sentinel 1.0.2
File Interpreter ABI Platform
seo_sentinel-1.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 31.4 kB

Release files / seo_sentinel-1.0.2.tar.gz

Download URL seo_sentinel-1.0.2.tar.gz
Size 17.5 kB
Tags Source
SHA-256 checksum
How to use checksums
36c48d9ac008f8e301b47178d5612640e54131705468f9203265a70ca64e98b8
BLAKE2b-256 checksum
How to use checksums
c6f9b20a6419eb9e3dd56275b571e9fbc186bafed8d0922db2a126864caa268b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 10, 2025.

Transparency log

Release files / seo_sentinel-1.0.2-py3-none-any.whl

Download URL seo_sentinel-1.0.2-py3-none-any.whl
Size 13.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0233ae77320113e92863c91cc2ef287fac25bfe3e1db6d04e3213e08bc4e519b
BLAKE2b-256 checksum
How to use checksums
37ae30036dddf5fd19d23649591e1ab81634bf5f8713a7b071c81ccaf4cf80bf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 10, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.2 This release

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page