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>
146 lines
3.6 KiB
Markdown
146 lines
3.6 KiB
Markdown
# 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
|