Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/TheCraigHewitt/seomachine/llms.txt

Use this file to discover all available pages before exploring further.

The SEO Machine Python API provides powerful analysis modules for SEO content optimization, SERP analysis, and content scoring. These modules are located in data_sources/modules/ and can be imported and used in your Python scripts.

Module Categories

Analysis Modules

Core analysis modules for content optimization:

Data Integration Modules

Modules for connecting to external data sources:
  • DataForSEO - SERP positions and keyword metrics
  • Google Analytics - Traffic and engagement data
  • Google Search Console - Rankings and impressions
  • WordPress Publisher - Publish content with Yoast SEO metadata

Installation

Install required dependencies:
pip install -r data_sources/requirements.txt
Required packages:
  • requests - HTTP requests
  • beautifulsoup4 - HTML parsing
  • scikit-learn - Machine learning for clustering
  • textstat - Readability metrics
  • numpy - Numerical operations

Basic Usage

All analysis modules follow a consistent pattern:
from data_sources.modules.keyword_analyzer import analyze_keywords

# Using convenience function
result = analyze_keywords(
    content="Your article content here",
    primary_keyword="your target keyword",
    secondary_keywords=["related keyword 1", "related keyword 2"]
)

print(f"Keyword density: {result['primary_keyword']['density']}%")
print(f"Recommendations: {result['recommendations']}")
Or using the class directly:
from data_sources.modules.keyword_analyzer import KeywordAnalyzer

analyzer = KeywordAnalyzer()
result = analyzer.analyze(
    content="Your article content here",
    primary_keyword="your target keyword"
)

Common Patterns

Chaining Multiple Analyses

Combine multiple modules for comprehensive content analysis:
from data_sources.modules.search_intent_analyzer import analyze_intent
from data_sources.modules.keyword_analyzer import analyze_keywords
from data_sources.modules.readability_scorer import score_readability
from data_sources.modules.seo_quality_rater import rate_seo_quality

# Step 1: Analyze search intent
intent = analyze_intent(
    keyword="how to start a podcast",
    serp_features=["featured_snippet", "people_also_ask"]
)

# Step 2: Analyze keywords
keywords = analyze_keywords(
    content=article_content,
    primary_keyword="how to start a podcast",
    secondary_keywords=["podcast hosting", "podcast equipment"]
)

# Step 3: Check readability
readability = score_readability(article_content)

# Step 4: Get overall SEO quality score
quality = rate_seo_quality(
    content=article_content,
    primary_keyword="how to start a podcast",
    keyword_density=keywords['primary_keyword']['density'],
    meta_title="How to Start a Podcast: Complete Guide",
    meta_description="Learn how to start a podcast from scratch..."
)

print(f"Intent: {intent['primary_intent']}")
print(f"SEO Score: {quality['overall_score']}/100")
print(f"Readability Grade: {readability['reading_level']}")

Working with SERP Data

Many modules accept SERP data from DataForSEO:
from data_sources.modules.dataforseo import DataForSEO
from data_sources.modules.search_intent_analyzer import analyze_intent
from data_sources.modules.content_length_comparator import compare_content_length

# Get SERP data
dfs = DataForSEO()
serp_data = dfs.get_serp_data("your keyword")

# Analyze intent with SERP features
intent = analyze_intent(
    keyword="your keyword",
    serp_features=serp_data['features'],
    top_results=serp_data['organic_results'][:10]
)

# Compare content length
length_comparison = compare_content_length(
    keyword="your keyword",
    your_word_count=2500,
    serp_results=serp_data['organic_results']
)

Output Format

All modules return dictionaries with consistent structure:
  • Metrics: Numerical scores and measurements
  • Analysis: Detailed breakdowns and insights
  • Recommendations: Actionable suggestions for improvement
  • Status/Grade: Quick assessment of quality level
{
    'overall_score': 85.2,
    'grade': 'B (Good)',
    'metrics': { ... },
    'analysis': { ... },
    'recommendations': [
        'Add 500 more words to match competitors',
        'Increase keyword density to 1.5%'
    ],
    'publishing_ready': True
}

Error Handling

All modules include error handling:
result = analyze_keywords(
    content="",
    primary_keyword="test"
)

if 'error' in result:
    print(f"Error: {result['error']}")
else:
    print(f"Density: {result['primary_keyword']['density']}%")

Configuration

API credentials are configured in data_sources/config/.env:
# DataForSEO API
DATAFORSEO_LOGIN=your_login
DATAFORSEO_PASSWORD=your_password

# Google Analytics
GA4_PROPERTY_ID=your_property_id

# WordPress
WORDPRESS_URL=https://your-site.com
WORDPRESS_USERNAME=your_username
WORDPRESS_APP_PASSWORD=your_app_password

Next Steps

Explore the individual analysis modules: