Files
seo/guides/ANALYZER_SUMMARY.md
Kevin Bataille 8c7cd24685 Refactor SEO automation into unified CLI application
Major refactoring to create a clean, integrated CLI application:

### New Features:
- Unified CLI executable (./seo) with simple command structure
- All commands accept optional CSV file arguments
- Auto-detection of latest files when no arguments provided
- Simplified output directory structure (output/ instead of output/reports/)
- Cleaner export filename format (all_posts_YYYY-MM-DD.csv)

### Commands:
- export: Export all posts from WordPress sites
- analyze [csv]: Analyze posts with AI (optional CSV input)
- recategorize [csv]: Recategorize posts with AI
- seo_check: Check SEO quality
- categories: Manage categories across sites
- approve [files]: Review and approve recommendations
- full_pipeline: Run complete workflow
- analytics, gaps, opportunities, report, status

### Changes:
- Moved all scripts to scripts/ directory
- Created config.yaml for configuration
- Updated all scripts to use output/ directory
- Deprecated old seo-cli.py in favor of new ./seo
- Added AGENTS.md and CHANGELOG.md documentation
- Consolidated README.md with updated usage

### Technical:
- Added PyYAML dependency
- Removed hardcoded configuration values
- All scripts now properly integrated
- Better error handling and user feedback

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-16 14:24:44 +01:00

9.7 KiB
Raw Blame History

Multi-Site SEO Analyzer - Implementation Summary

What Was Created

New Script: scripts/multi_site_seo_analyzer.py

A Python script that automatically:

  1. Connects to 3 WordPress sites (mistergeek.net, webscroll.fr, hellogeek.net)
  2. Fetches all published posts using WordPress REST API
  3. Analyzes titles for:
    • Length (optimal: 50-70 chars)
    • Power words (best, complete, guide, etc.)
    • Numbers (2025, top 10, etc.)
    • Readability and special characters
  4. Analyzes meta descriptions for:
    • Presence (missing = 0 score)
    • Length (optimal: 120-160 chars)
    • Call-to-action language
  5. Scores each post (0-100) based on SEO best practices
  6. Generates AI recommendations (optional) for top priority posts using Claude via OpenRouter
  7. Exports results to:
    • CSV file with detailed analysis
    • Markdown summary report

Features

Automatic Title Analysis

  • Detects titles that are too short/long
  • Identifies missing power words
  • Checks for numbers/statistics
  • Flags problematic special characters
  • Scoring algorithm: 0-100

Automatic Meta Description Analysis

  • Detects missing meta descriptions (0 score)
  • Validates length (120-160 chars optimal)
  • Checks for call-to-action language
  • Scoring algorithm: 0-100

Combined SEO Scoring

Overall Score = (Title Score × 40%) + (Meta Description Score × 60%)

Meta descriptions weighted heavier because they directly impact CTR from search results.

AI-Powered Recommendations (Optional)

  • Uses Claude 3.5 Sonnet via OpenRouter
  • Generates specific, actionable recommendations
  • Cost-optimized: Only analyzes top priority posts (default 10, configurable)
  • Estimated cost: $0.10 per 10 posts analyzed

Multi-Site Support

  • Fetches from all 3 sites simultaneously
  • Per-site breakdown in reports
  • Identifies top 5 posts to optimize per site
  • Consolidates analysis across all sites

Configuration Changes

Updated scripts/config.py

Added multi-site configuration support:

WORDPRESS_SITES = {
    'mistergeek.net': {'url': '...', 'username': '...', 'password': '...'},
    'webscroll.fr': {'url': '...', 'username': '...', 'password': '...'},
    'hellogeek.net': {'url': '...', 'username': '...', 'password': '...'}
}

New methods:

  • get_site_config(site_name) - Get config for specific site
  • get_all_sites() - Get all configured sites

Updated .env.example

Added variables for each site:

WORDPRESS_MISTERGEEK_URL=...
WORDPRESS_MISTERGEEK_USERNAME=...
WORDPRESS_MISTERGEEK_PASSWORD=...

WORDPRESS_WEBSCROLL_URL=...
[etc for each site]

Documentation Created

1. guides/SEO_ANALYZER_GUIDE.md (Comprehensive)

  • Complete setup instructions
  • Detailed usage examples
  • How to interpret scores
  • Understanding title and meta analysis
  • Action plan for implementation
  • Cost estimation
  • Troubleshooting guide
  • Advanced usage examples
  • FAQ section

2. guides/QUICKSTART_ANALYZER.md (Fast Reference)

  • 30-second setup
  • One-liners for different scenarios
  • Common commands
  • Quick troubleshooting
  • Cost comparison table

3. guides/ANALYZER_SUMMARY.md (This document)

  • Overview of what was created
  • Feature summary
  • Usage instructions
  • Output explanation

Usage

Basic Command

python scripts/multi_site_seo_analyzer.py

What it does:

  • Fetches posts from all 3 sites
  • Analyzes titles and meta descriptions
  • Generates AI recommendations for top 10 worst-scoring posts
  • Exports CSV and Markdown report

Command Options

# Skip AI recommendations (free, faster)
python scripts/multi_site_seo_analyzer.py --no-ai

# AI recommendations for top 20 posts
python scripts/multi_site_seo_analyzer.py --top-n 20

# Custom output file
python scripts/multi_site_seo_analyzer.py --output my_report.csv

Output Files

Location: output/reports/

1. CSV File: seo_analysis_YYYYMMDD_HHMMSS.csv

Contains one row per post with columns:

  • site - Website name
  • post_id - WordPress post ID
  • title - Post title
  • slug - Post slug
  • url - Full URL
  • meta_description - Current meta description
  • title_score - Title SEO score (0-100)
  • title_issues - Title problems identified
  • title_recommendations - How to improve title
  • meta_score - Meta description SEO score (0-100)
  • meta_issues - Meta description problems
  • meta_recommendations - How to improve meta
  • overall_score - Combined score (40% title + 60% meta)
  • ai_recommendations - Claude-generated specific recommendations

Use for:

  • Importing to Excel/Google Sheets
  • Filtering and sorting
  • Bulk editing preparations
  • Tracking changes over time

2. Markdown Report: seo_analysis_YYYYMMDD_HHMMSS_summary.md

Contains:

  • Summary statistics (total posts, average scores, cost)
  • Priority issues breakdown (missing meta, weak titles, etc.)
  • Per-site analysis and top 5 posts to optimize per site
  • Human-readable explanations

Use for:

  • Quick overview
  • Sharing with team
  • Understanding key metrics
  • Decision-making

Score Interpretation

Score Ranges

Range Interpretation Action
0-25 Critical Fix immediately - major SEO issues
25-50 Poor Optimize soon - multiple issues
50-75 Fair Improve when convenient - some issues
75-90 Good Minor tweaks only - mostly optimized
90-100 Excellent No changes needed - well optimized

Example Scores

Poor Post (Score: 12)

Title: "VPN"
- Issues: Too short (3 chars), no power words, no numbers
- Title Score: 5/100

Meta Description: [MISSING]
- Issues: Missing entirely
- Meta Score: 0/100

Overall: 12/100 (Critical - needs work)

Good Post (Score: 88)

Title: "Best VPN Services 2025: Complete Review"
- Issues: None
- Title Score: 95/100

Meta Description: "Compare 50+ VPN services with speed tests, security reviews, and pricing. Find the best VPN for your needs."
- Issues: None
- Meta Score: 85/100

Overall: 88/100 (Good - minimal changes)

Cost Breakdown

Using AI Recommendations

Pricing: Claude 3.5 Sonnet via OpenRouter = $3/$15 per 1M input/output tokens

Per run examples:

Posts Analyzed Tokens Cost
10 posts ~30k input, 5k output ~$0.10
20 posts ~60k input, 10k output ~$0.20
50 posts ~150k input, 25k output ~$0.50
100 posts ~300k input, 50k output ~$1.00

Monthly Budget

  • Weekly no-AI: $0/month
  • Weekly with AI (top 10): ~$0.40/month
  • Monthly with AI (top 50): ~$0.50/month
  • Fits easily in €50 budget ✓

Prerequisites

Before running, ensure:

  1. WordPress credentials for all 3 sites (API/app passwords)
  2. OpenRouter API key (for AI recommendations)
  3. REST API enabled on all 3 WordPress sites
  4. Python 3.8+ installed
  5. Dependencies installed: pip install -r requirements.txt

Workflow Example

Week 1: Initial Analysis

# Run analyzer with AI for top 10
python scripts/multi_site_seo_analyzer.py --top-n 10

# Review results
open output/reports/seo_analysis_*_summary.md

# See top 10 posts to optimize on each site
# Note: AI cost ~$0.10

Week 1-4: Implementation

For each of top 10 posts per site:

  1. Open WordPress editor
  2. Review AI recommendation
  3. Update title (if needed)
  4. Update meta description (if needed)
  5. Publish changes

Average time: 2-3 minutes per post = 30-45 minutes total

Week 5: Re-analysis

# Run analyzer again to track progress
python scripts/multi_site_seo_analyzer.py --no-ai

# Compare with Week 1 results
# Identify next batch of 10 posts to optimize

Repeat as needed.


Expected Improvements

Short-term (Month 1)

  • Reduced posts with score < 50: 30-50% fewer critical issues
  • Meta descriptions added: Most missing descriptions now present
  • Title improvements: Clearer, more compelling titles

Medium-term (Month 3)

  • CTR improvement: 10-20% increase in click-through rate from search results
  • Keyword rankings: Some keywords move up 1-3 positions
  • Organic traffic: 5-10% increase as improved titles/descriptions increase clicks

Long-term (Months 3-6)

  • Compound effect: Better CTR signals boost rankings
  • Authority: Focused content with optimized SEO
  • Traffic: 20-30% total increase from all factors

Next Steps

  1. Update .env with your 3 site credentials
  2. Run analyzer: python scripts/multi_site_seo_analyzer.py
  3. Review report: open output/reports/seo_analysis_*_summary.md
  4. Implement: Start with top 5 posts per site
  5. Re-run: Monthly to track progress and identify next batch

Troubleshooting

Connection Issues

  • Verify site URLs (https, www)
  • Check WordPress credentials
  • Test: curl https://yoursite.com/wp-json/wp/v2/posts?per_page=1

No Posts Found

  • Check credentials have read permissions
  • Verify posts are published (not draft)
  • Try disabling SSL verification (last resort)

AI Errors

  • Verify OPENROUTER_API_KEY is set
  • Check key has API credits
  • Use --no-ai to skip AI (still analyzes)

See guides/SEO_ANALYZER_GUIDE.md for detailed troubleshooting.


Files Summary

File Purpose
scripts/multi_site_seo_analyzer.py Main analyzer script
scripts/config.py Updated with multi-site config
.env Your site credentials (not in repo)
.env.example Example config (with all fields)
guides/SEO_ANALYZER_GUIDE.md Comprehensive guide
guides/QUICKSTART_ANALYZER.md Quick reference
guides/ANALYZER_SUMMARY.md This file
output/reports/ Where results are saved

Questions?

See the full guide: guides/SEO_ANALYZER_GUIDE.md

Ready to analyze? Run: python scripts/multi_site_seo_analyzer.py