Add ARCHITECTURE.md documenting the integrated package structure
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
196
ARCHITECTURE.md
Normal file
196
ARCHITECTURE.md
Normal file
@@ -0,0 +1,196 @@
|
||||
# SEO Automation - Architecture Overview
|
||||
|
||||
## Integrated Application Structure
|
||||
|
||||
The SEO automation tool has been refactored into a proper Python package with a clean, modular architecture inspired by Ruby on Rails and modern Python best practices.
|
||||
|
||||
## Package Structure
|
||||
|
||||
```
|
||||
seo/
|
||||
├── seo # Main executable (entry point)
|
||||
├── src/seo/ # Main package
|
||||
│ ├── __init__.py # Package initialization
|
||||
│ ├── cli.py # CLI interface
|
||||
│ ├── app.py # Main application class
|
||||
│ ├── config.py # Configuration
|
||||
│ ├── exporter.py # Export functionality
|
||||
│ ├── analyzer.py # AI analysis
|
||||
│ ├── recategorizer.py # Recategorization
|
||||
│ ├── seo_checker.py # SEO checking
|
||||
│ ├── categories.py # Category management
|
||||
│ └── approval.py # Approval system
|
||||
├── scripts/ # Legacy scripts (deprecated)
|
||||
├── setup.py # Package installation
|
||||
├── setup.cfg # Package configuration
|
||||
└── config.yaml # Application config
|
||||
```
|
||||
|
||||
## Application Architecture
|
||||
|
||||
### Main Application Class (SEOApp)
|
||||
|
||||
The `SEOApp` class in `app.py` is the heart of the application, providing a unified, Rails-inspired API:
|
||||
|
||||
```python
|
||||
from seo.app import SEOApp
|
||||
|
||||
# Initialize
|
||||
app = SEOApp(verbose=True)
|
||||
|
||||
# Use methods directly
|
||||
app.export()
|
||||
app.analyze()
|
||||
app.seo_check()
|
||||
app.categories()
|
||||
app.approve()
|
||||
|
||||
# Or run full pipeline
|
||||
app.full_pipeline()
|
||||
```
|
||||
|
||||
### Design Principles
|
||||
|
||||
1. **Convention Over Configuration**: Sensible defaults, minimal configuration needed
|
||||
2. **DRY (Don't Repeat Yourself)**: Shared functionality in base classes
|
||||
3. **Separation of Concerns**: Each module has a single responsibility
|
||||
4. **Rails-Inspired API**: Simple, intuitive method names
|
||||
5. **Pythonic**: Follows Python best practices and idioms
|
||||
|
||||
## Modules
|
||||
|
||||
### Core Modules
|
||||
|
||||
- **app.py**: Main orchestrator, coordinates all operations
|
||||
- **cli.py**: Command-line interface, parses arguments, routes commands
|
||||
- **config.py**: Configuration management, loads from .env and config.yaml
|
||||
|
||||
### Feature Modules
|
||||
|
||||
- **exporter.py**: Exports posts from WordPress sites
|
||||
- **analyzer.py**: AI-powered post analysis
|
||||
- **recategorizer.py**: AI-powered recategorization
|
||||
- **seo_checker.py**: SEO quality analysis
|
||||
- **categories.py**: Category management across sites
|
||||
- **approval.py**: User approval system for recommendations
|
||||
|
||||
## Usage Patterns
|
||||
|
||||
### As a Library
|
||||
|
||||
```python
|
||||
from seo.app import SEOApp
|
||||
|
||||
# Create instance
|
||||
app = SEOApp()
|
||||
|
||||
# Export posts
|
||||
csv_file = app.export()
|
||||
|
||||
# Analyze with AI (uses latest export)
|
||||
app.analyze()
|
||||
|
||||
# Or analyze specific file
|
||||
app.analyze(csv_file)
|
||||
|
||||
# Check SEO quality
|
||||
app.seo_check(top_n=20)
|
||||
|
||||
# Manage categories
|
||||
app.categories()
|
||||
|
||||
# Approve recommendations
|
||||
app.approve()
|
||||
```
|
||||
|
||||
### Via CLI
|
||||
|
||||
```bash
|
||||
# Individual commands
|
||||
./seo export
|
||||
./seo analyze
|
||||
./seo seo_check
|
||||
./seo categories
|
||||
./seo approve
|
||||
|
||||
# With arguments
|
||||
./seo analyze output/all_posts_2026-02-16.csv
|
||||
./seo approve output/category_assignments_*.csv
|
||||
./seo seo_check --top-n 20
|
||||
|
||||
# Full pipeline
|
||||
./seo full_pipeline
|
||||
|
||||
# Get status
|
||||
./seo status
|
||||
```
|
||||
|
||||
### Installation
|
||||
|
||||
```bash
|
||||
# Install in development mode
|
||||
cd seo
|
||||
pip install -e .
|
||||
|
||||
# Now you can use from anywhere
|
||||
seo help
|
||||
seo export
|
||||
```
|
||||
|
||||
## Data Flow
|
||||
|
||||
```
|
||||
User Input (CLI or Library)
|
||||
↓
|
||||
SEOApp (orchestrator)
|
||||
↓
|
||||
┌───────────────────────────────────────┐
|
||||
│ exporter analyzer seo_checker │
|
||||
│ categories approval recategorizer│
|
||||
└───────────────────────────────────────┘
|
||||
↓
|
||||
WordPress API / AI API
|
||||
↓
|
||||
Output Files (output/)
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
Configuration is loaded from multiple sources in order of precedence:
|
||||
|
||||
1. Environment variables (.env file)
|
||||
2. config.yaml
|
||||
3. Default values
|
||||
|
||||
```python
|
||||
from seo.config import Config
|
||||
|
||||
# Access configuration
|
||||
api_key = Config.OPENROUTER_API_KEY
|
||||
sites = Config.WORDPRESS_SITES
|
||||
```
|
||||
|
||||
## Benefits of This Architecture
|
||||
|
||||
1. **Maintainability**: Clear separation of concerns
|
||||
2. **Testability**: Each module can be tested independently
|
||||
3. **Extensibility**: Easy to add new features
|
||||
4. **Reusability**: Can be used as a library or CLI
|
||||
5. **Discoverability**: Intuitive API, easy to learn
|
||||
6. **Robustness**: Proper error handling and logging
|
||||
7. **Pythonic**: Follows Python conventions and best practices
|
||||
|
||||
## Future Enhancements
|
||||
|
||||
- Add async support for parallel API calls
|
||||
- Implement caching for API responses
|
||||
- Add progress bars for long operations
|
||||
- Create web interface
|
||||
- Add plugin system for custom analyzers
|
||||
- Implement scheduling for automated runs
|
||||
|
||||
---
|
||||
|
||||
**Version**: 1.0.0
|
||||
**Last Updated**: 2026-02-16
|
||||
**Architecture**: Integrated Python Package
|
||||
Reference in New Issue
Block a user