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>
3.6 KiB
3.6 KiB
Quick Start: Multi-Site SEO Analyzer
30-Second Setup
1. Configure WordPress Access
Update .env with your 3 site credentials:
WORDPRESS_MISTERGEEK_URL=https://www.mistergeek.net
WORDPRESS_MISTERGEEK_USERNAME=your_username
WORDPRESS_MISTERGEEK_PASSWORD=your_app_password
WORDPRESS_WEBSCROLL_URL=https://www.webscroll.fr
WORDPRESS_WEBSCROLL_USERNAME=your_username
WORDPRESS_WEBSCROLL_PASSWORD=your_app_password
WORDPRESS_HELLOGEEK_URL=https://www.hellogeek.net
WORDPRESS_HELLOGEEK_USERNAME=your_username
WORDPRESS_HELLOGEEK_PASSWORD=your_app_password
2. Run Analyzer
# With AI recommendations (recommended)
python scripts/multi_site_seo_analyzer.py
# Without AI (faster, free)
python scripts/multi_site_seo_analyzer.py --no-ai
# Custom AI posts (top 20)
python scripts/multi_site_seo_analyzer.py --top-n 20
3. Review Results
# Markdown summary (human-friendly)
open output/reports/seo_analysis_*_summary.md
# Detailed CSV (for importing to sheets)
open output/reports/seo_analysis_*.csv
What Gets Analyzed
Title (40% of score)
- ✓ Length: 50-70 characters optimal
- ✓ Power words: "best", "complete", "guide", etc.
- ✓ Numbers: "2025", "Top 10", etc.
- ✓ Readability: No weird special chars
Meta Description (60% of score)
- ✓ Present: Required for full score
- ✓ Length: 120-160 characters optimal
- ✓ Call-to-action: "learn", "discover", "find", etc.
- ✓ Compelling: Not just keywords
Cost
| Command | Cost | Time |
|---|---|---|
--no-ai |
$0 | 2-3 min |
-top-n 10 |
~$0.10 | 5-10 min |
-top-n 20 |
~$0.50 | 10-15 min |
-top-n 50 |
~$1.00 | 20-30 min |
Understanding Output
Score Ranges
| Score | Status | Action |
|---|---|---|
| 0-25 | Critical | Fix immediately |
| 25-50 | Poor | Optimize soon |
| 50-75 | Fair | Improve when possible |
| 75-90 | Good | Minor tweaks only |
| 90-100 | Excellent | No changes needed |
Priority Order
- Posts with score < 50 (biggest impact)
- Posts with missing meta description (easy fix)
- Posts with weak titles (quick improvement)
- High-traffic posts with any issues (traffic × improvement)
One-Liner to Get Started
If all 3 sites use the same credentials:
# Just set primary site, others inherit
WORDPRESS_URL=https://www.mistergeek.net \
WORDPRESS_USERNAME=your_user \
WORDPRESS_APP_PASSWORD=your_pass \
OPENROUTER_API_KEY=your_key \
python scripts/multi_site_seo_analyzer.py --no-ai
Common Commands
# Published posts only (default)
python scripts/multi_site_seo_analyzer.py
# Published + draft posts
python scripts/multi_site_seo_analyzer.py --include-drafts
# Quick scan, no AI
python scripts/multi_site_seo_analyzer.py --no-ai
# Drafts + AI recommendations
python scripts/multi_site_seo_analyzer.py --include-drafts --top-n 10
# Analyze with recommendations for top 30
python scripts/multi_site_seo_analyzer.py --top-n 30
# Save to custom location
python scripts/multi_site_seo_analyzer.py --output my_report.csv
Troubleshooting
"No posts found"
- Check credentials in .env
- Verify site is online
- Try without auth: remove username/password from config
"Connection refused"
- Verify site URLs (https, www)
- Check if REST API is enabled
- Try https://yoursite.com/wp-json/ in browser
"No AI recommendations"
- Check OPENROUTER_API_KEY is set
- Verify key has credits
- Use --no-ai to test other features
Next Steps
- Run:
python scripts/multi_site_seo_analyzer.py - Open:
output/reports/seo_analysis_*_summary.md - Implement: Top 5 recommendations per site
- Re-run: 30 days later to track improvement