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>
This commit is contained in:
Kevin Bataille
2026-02-16 14:24:44 +01:00
parent 3b51952336
commit 8c7cd24685
57 changed files with 16095 additions and 560 deletions

View File

@@ -0,0 +1,145 @@
# Quick Start: Multi-Site SEO Analyzer
## 30-Second Setup
### 1. Configure WordPress Access
Update `.env` with your 3 site credentials:
```bash
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
```bash
# 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
```bash
# 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
1. Posts with score < 50 (biggest impact)
2. Posts with missing meta description (easy fix)
3. Posts with weak titles (quick improvement)
4. High-traffic posts with any issues (traffic × improvement)
## One-Liner to Get Started
If all 3 sites use the **same credentials**:
```bash
# 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
```bash
# 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
1. Run: `python scripts/multi_site_seo_analyzer.py`
2. Open: `output/reports/seo_analysis_*_summary.md`
3. Implement: Top 5 recommendations per site
4. Re-run: 30 days later to track improvement