SEO Automation
SEO Automation
Overview
The SEO Automation system provides comprehensive tools for automating SEO analysis, optimization workflows, and maintenance tasks. This system reduces manual effort by automatically analyzing content, generating reports, scheduling bulk operations, and maintaining optimal SEO performance across your entire website.
The automation features integrate seamlessly with the blog management system and centralized SEO dashboard, providing real-time analysis triggers, scheduled maintenance tasks, and intelligent workflow automation that keeps your content optimized without constant manual intervention.
Accessing SEO Automation
Navigation Path: Dashboard > SEO System > Various modules (automation features are integrated throughout)
Required Permissions:
seo.view- View SEO automation results and reportsseo.analyze- Run automated SEO analysisblog.edit- Trigger automated analysis on content changesadmin.system- Configure automation settings and schedules
Key Automation Features
1. Automated SEO Analysis Triggers
Real-time Content Analysis:
- Automatic SEO analysis when blog posts are published
- Real-time analysis during content editing
- Triggered analysis on content updates
- Automatic re-analysis when focus keywords change
Trigger Conditions:
// Automatic triggers
- Post publication (draft → published)
- Content modification (if significant changes detected)
- Focus keyword updates
- Meta description changes
- Featured image additions/changes
Configuration:
- Enable/disable automatic analysis per trigger type
- Set analysis delay to batch multiple changes
- Configure analysis depth (quick vs. comprehensive)
- Set re-analysis frequency limits
2. Bulk SEO Operations
Bulk Analysis Processing:
- Analyze multiple posts simultaneously
- Background job processing for large datasets
- Progress tracking with real-time updates
- Automatic retry for failed analyses
Bulk Operations Available:
- Analyze All Posts: Comprehensive SEO analysis for entire blog
- Analyze Category: Target specific content categories
- Analyze Date Range: Process posts from specific time periods
- Analyze Low Scores: Focus on underperforming content
- Analyze Unanalyzed: Process posts without SEO data
Usage Example:
// Via Dashboard
1. Navigate to SEO Dashboard
2. Click "Bulk Actions" → "Analyze Posts"
3. Select criteria (all posts, category, date range)
4. Click "Start Analysis"
5. Monitor progress in real-time
// Via API
POST /admin/seo/dashboard/bulk-analyze
{
"analyze_all": true,
"post_ids": [1, 2, 3], // or specific IDs
"options": {
"include_readability": true,
"update_existing": false
}
}
3. Scheduled SEO Tasks
Available Scheduled Commands:
SEO Cache Warming
# Warm SEO cache for popular content
php artisan seo:warm-cache --type=blog_post --limit=50
# Warm cache for recently updated content
php artisan seo:warm-cache --recent --hours=24 --analysis
# Schedule in cron (recommended: daily at 2 AM)
0 2 * * * php artisan seo:warm-cache --type=blog_post --limit=100
Cache Warming Benefits:
- Improved page load times for SEO analysis
- Reduced server load during peak hours
- Pre-computed SEO scores for faster dashboard loading
- Optimized algorithm performance
Scheduled Post Publishing
# Publish scheduled blog posts
php artisan blog:publish-scheduled
# Schedule in cron (recommended: every 5 minutes)
*/5 * * * * php artisan blog:publish-scheduled
Publishing Automation:
- Automatic publication of scheduled posts
- SEO analysis triggered on publication
- Social media integration (if configured)
- Notification alerts for published content
SEO Performance Reports
# Generate automated SEO performance reports
php artisan seo:performance-report --period=weekly --email=admin@example.com
# Schedule weekly reports (Mondays at 9 AM)
0 9 * * 1 php artisan seo:performance-report --period=weekly
4. Automated SEO Workflows
Content Publishing Workflow:
-
Pre-Publication Analysis
- Automatic SEO score calculation
- Keyword density validation
- Meta tag completeness check
- Image optimization verification
-
Publication Triggers
- Comprehensive SEO analysis on publish
- Sitemap regeneration
- Cache invalidation
- Performance metric baseline
-
Post-Publication Monitoring
- Automated performance tracking
- Ranking position monitoring (if configured)
- Content freshness alerts
- Optimization opportunity detection
Optimization Workflow:
-
Automated Detection
- Low-scoring content identification
- Missing SEO elements detection
- Outdated content flagging
- Broken link identification
-
Recommendation Generation
- AI-powered optimization suggestions
- Priority-based task lists
- Impact estimation for improvements
- Quick-win opportunity highlighting
-
Progress Tracking
- Automated before/after comparisons
- Improvement trend analysis
- ROI calculation for SEO efforts
- Success metric reporting
5. Background Job Processing
Bulk SEO Analysis Job:
// Job Configuration
Class: App\Jobs\BulkSeoAnalysisJob
Queue: default
Timeout: 3600 seconds (1 hour)
Retries: 3 attempts
Progress Tracking: Real-time via cache
// Job Features
- Chunked processing for memory efficiency
- Progress updates every 5 posts
- Automatic error handling and retry
- Detailed logging for troubleshooting
- Cache invalidation on completion
Job Monitoring:
- Real-time progress tracking
- Detailed error reporting
- Performance metrics collection
- Automatic cleanup of completed jobs
Queue Configuration:
// For shared hosting (synchronous)
QUEUE_CONNECTION=sync
// For VPS/dedicated (asynchronous)
QUEUE_CONNECTION=database
// or
QUEUE_CONNECTION=redis
6. Automated Reporting and Alerts
Performance Reports:
- Daily Summaries: Key metrics and changes
- Weekly Reports: Comprehensive analysis and trends
- Monthly Reviews: Strategic insights and recommendations
- Custom Reports: Tailored to specific needs
Alert System:
- Low Score Alerts: When content falls below thresholds
- Missing Element Alerts: For incomplete SEO data
- Performance Degradation: When scores decline significantly
- Opportunity Alerts: When optimization chances are detected
Report Delivery:
- Email notifications to administrators
- Dashboard notifications
- Slack/Teams integration (if configured)
- API webhooks for external systems
Configuration and Setup
1. Automation Settings
Global Configuration:
// In config/seo.php or admin settings
'automation' => [
'auto_analyze_on_publish' => true,
'auto_analyze_on_update' => true,
'bulk_analysis_chunk_size' => 50,
'cache_warming_enabled' => true,
'scheduled_reports' => true,
'alert_thresholds' => [
'low_score' => 40,
'missing_elements' => 3,
'performance_drop' => 10,
],
],
Per-Content Type Settings:
- Enable/disable automation for specific content types
- Set analysis frequency limits
- Configure trigger conditions
- Customize alert thresholds
2. Queue Configuration
For Shared Hosting:
// .env configuration
QUEUE_CONNECTION=sync
// All jobs run synchronously
// No background processing
// Immediate feedback but slower UI
For VPS/Dedicated Servers:
// .env configuration
QUEUE_CONNECTION=database
# or
QUEUE_CONNECTION=redis
// Background processing enabled
// Faster UI response
// Requires queue worker: php artisan queue:work
Queue Worker Setup:
# Start queue worker
php artisan queue:work --queue=default,seo --timeout=3600
# Supervisor configuration (recommended for production)
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /path/to/artisan queue:work --sleep=3 --tries=3
directory=/path/to/project
autostart=true
autorestart=true
user=www-data
numprocs=2
3. Cron Job Setup
Essential Scheduled Tasks:
# Add to crontab (crontab -e)
# Publish scheduled posts every 5 minutes
*/5 * * * * cd /path/to/project && php artisan blog:publish-scheduled
# Warm SEO cache daily at 2 AM
0 2 * * * cd /path/to/project && php artisan seo:warm-cache --limit=100
# Weekly SEO performance report (Mondays at 9 AM)
0 9 * * 1 cd /path/to/project && php artisan seo:performance-report --period=weekly
# Clean up old analysis data monthly
0 3 1 * * cd /path/to/project && php artisan seo:cleanup --days=90
Optional Scheduled Tasks:
# Daily cache warming for recent content
0 1 * * * cd /path/to/project && php artisan seo:warm-cache --recent --hours=24
# Hourly analysis of high-priority content
0 * * * * cd /path/to/project && php artisan seo:analyze-priority --limit=10
# Weekly sitemap regeneration
0 4 * * 0 cd /path/to/project && php artisan seo:regenerate-sitemaps
Common Automation Tasks
Task 1: Set Up Bulk SEO Analysis
-
Navigate to SEO Dashboard
- Go to Dashboard > SEO System > Dashboard
- Click "Bulk Actions" button
-
Configure Analysis Parameters
- Select analysis scope (all posts, category, date range)
- Choose analysis depth (quick or comprehensive)
- Set priority level for queue processing
-
Start Bulk Analysis
- Click "Start Analysis" button
- Monitor progress in real-time progress bar
- Review results when completed
-
Review Results
- Check analysis summary statistics
- Review failed analyses (if any)
- Export results for further analysis
Task 2: Configure Automated Triggers
-
Access Automation Settings
- Navigate to Settings > SEO > Automation
- Review current trigger configuration
-
Configure Trigger Conditions
// Enable automatic analysis on publish 'auto_analyze_on_publish' => true, // Enable analysis on significant content changes 'auto_analyze_on_update' => true, // Set minimum change threshold (word count) 'update_threshold' => 50, -
Set Analysis Delays
- Configure delay between trigger and analysis
- Set batch processing windows
- Define retry policies for failed analyses
-
Test Trigger Configuration
- Create test blog post
- Verify automatic analysis triggers
- Check analysis results and timing
Task 3: Schedule SEO Reports
-
Configure Report Settings
// In admin settings or config file 'reports' => [ 'weekly_summary' => [ 'enabled' => true, 'day' => 'monday', 'time' => '09:00', 'recipients' => ['admin@example.com'], ], 'monthly_detailed' => [ 'enabled' => true, 'day' => 1, 'time' => '08:00', 'format' => 'pdf', ], ], -
Set Up Cron Jobs
# Weekly reports 0 9 * * 1 php artisan seo:performance-report --period=weekly # Monthly reports 0 8 1 * * php artisan seo:performance-report --period=monthly --format=pdf -
Test Report Generation
- Run report command manually
- Verify email delivery
- Check report content and formatting
Task 4: Monitor Automation Performance
-
Check Queue Status
# View queue status php artisan queue:monitor # Check failed jobs php artisan queue:failed # Retry failed jobs php artisan queue:retry all -
Review Automation Logs
- Check Laravel logs for automation errors
- Monitor job completion rates
- Analyze performance metrics
-
Optimize Performance
- Adjust chunk sizes for bulk operations
- Configure queue workers for optimal throughput
- Monitor server resource usage
Automation Workflows
Content Creation Workflow
Automated Steps:
-
Draft Creation
- Basic SEO structure validation
- Template suggestion based on content type
- Initial keyword research prompts
-
Content Development
- Real-time SEO scoring during editing
- Automatic keyword density monitoring
- Readability analysis updates
- Image optimization suggestions
-
Pre-Publication Review
- Comprehensive SEO analysis
- Missing element detection
- Optimization recommendation generation
- Publication readiness assessment
-
Publication
- Automatic final SEO analysis
- Sitemap update triggering
- Cache invalidation
- Performance baseline establishment
-
Post-Publication
- Automated performance monitoring
- Ranking position tracking (if configured)
- Social media integration
- Analytics data collection
Content Optimization Workflow
Automated Detection:
-
Performance Monitoring
- Daily SEO score tracking
- Ranking position changes
- Traffic pattern analysis
- User engagement metrics
-
Opportunity Identification
- Low-scoring content detection
- Missing SEO elements identification
- Outdated content flagging
- Competitor analysis insights
-
Recommendation Generation
- AI-powered optimization suggestions
- Priority-based improvement lists
- Impact estimation calculations
- Resource requirement assessment
-
Implementation Tracking
- Before/after analysis comparison
- Improvement trend monitoring
- ROI calculation for changes
- Success metric reporting
Maintenance Workflow
Automated Maintenance:
-
Daily Tasks
- Cache warming for popular content
- Performance metric collection
- Error log analysis
- Alert threshold monitoring
-
Weekly Tasks
- Comprehensive performance reports
- Trend analysis and insights
- Optimization opportunity reviews
- System health checks
-
Monthly Tasks
- Historical data analysis
- Strategic recommendation generation
- Performance benchmark updates
- System optimization reviews
Performance Optimization
Bulk Operation Optimization
Chunked Processing:
// Optimal chunk sizes by operation type
'chunk_sizes' => [
'seo_analysis' => 50, // 50 posts per chunk
'cache_warming' => 100, // 100 items per chunk
'report_generation' => 25, // 25 posts per report chunk
'sitemap_generation' => 200, // 200 URLs per chunk
],
Memory Management:
- Process content in manageable chunks
- Clear object caches between chunks
- Monitor memory usage during operations
- Implement garbage collection triggers
Database Optimization:
- Use efficient queries with proper indexing
- Implement query result caching
- Batch database operations where possible
- Monitor query performance and optimize slow queries
Cache Strategy
Multi-Level Caching:
- Application Cache: Frequently accessed SEO data
- Database Query Cache: Complex analysis results
- File Cache: Generated reports and exports
- CDN Cache: Static SEO resources
Cache Warming Strategy:
// Priority-based cache warming
'cache_warming' => [
'high_priority' => [
'popular_posts' => 50,
'recent_posts' => 25,
'featured_content' => 10,
],
'medium_priority' => [
'category_pages' => 20,
'tag_pages' => 15,
'archive_pages' => 10,
],
'low_priority' => [
'older_content' => 100,
'draft_analysis' => 25,
],
],
Troubleshooting
Problem: Bulk Analysis Jobs Failing
Symptoms:
- Jobs stuck in "running" status
- High failure rate in queue
- Timeout errors in logs
- Incomplete analysis results
Solutions:
-
Check Queue Configuration
# Verify queue worker is running ps aux | grep "queue:work" # Check queue status php artisan queue:monitor # Restart queue workers php artisan queue:restart -
Adjust Job Parameters
// Reduce chunk size 'bulk_analysis_chunk_size' => 25, // from 50 // Increase timeout public $timeout = 7200; // 2 hours // Increase memory limit ini_set('memory_limit', '512M'); -
Monitor System Resources
- Check available memory during processing
- Monitor CPU usage patterns
- Verify database connection limits
- Check disk space for temporary files
Problem: Automated Triggers Not Working
Symptoms:
- SEO analysis not running on publish
- Missing analysis for new content
- Inconsistent trigger behavior
- No analysis updates on content changes
Solutions:
-
Verify Trigger Configuration
// Check automation settings config('seo.automation.auto_analyze_on_publish'); // should be true // Verify event listeners are registered php artisan event:list | grep -i seo -
Check Event Registration
// In EventServiceProvider protected $listen = [ 'App\Events\BlogPostPublished' => [ 'App\Listeners\AnalyzeBlogPostSeo', ], ]; -
Debug Event Flow
- Add logging to event listeners
- Verify events are being fired
- Check for exceptions in event handling
- Test with simplified trigger conditions
Problem: Scheduled Tasks Not Running
Symptoms:
- Cron jobs not executing
- Missing scheduled reports
- Cache not being warmed
- Scheduled posts not publishing
Solutions:
-
Verify Cron Configuration
# Check crontab entries crontab -l # Test cron job manually cd /path/to/project && php artisan blog:publish-scheduled # Check cron logs tail -f /var/log/cron -
Check Command Permissions
# Verify file permissions ls -la artisan # Check PHP path which php # Test command execution /usr/bin/php artisan list -
Debug Command Execution
- Run commands manually to verify functionality
- Check Laravel logs for command errors
- Verify database connectivity from cron context
- Test with simplified command parameters
Problem: Performance Issues with Automation
Symptoms:
- Slow bulk analysis processing
- High server load during automation
- Database connection timeouts
- Memory exhaustion errors
Solutions:
-
Optimize Processing Parameters
// Reduce concurrent processing 'max_concurrent_jobs' => 2, // from 5 // Increase processing delays 'job_delay_seconds' => 5, // Implement rate limiting 'rate_limit_per_minute' => 30, -
Database Optimization
-- Add indexes for SEO queries CREATE INDEX idx_blog_posts_seo_score ON seo_analyses(analyzable_id, seo_score); CREATE INDEX idx_blog_posts_analyzed_at ON seo_analyses(analyzed_at); -- Optimize analysis queries EXPLAIN SELECT * FROM seo_analyses WHERE analyzable_type = 'blog_post'; -
Resource Management
- Implement memory monitoring in jobs
- Use database connection pooling
- Configure appropriate PHP memory limits
- Monitor and optimize slow queries
Quick Links
Need More Help?
Our comprehensive documentation covers everything from basic setup to advanced configurations. Check out these additional resources: