SEO - v1.0.0
SEO Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.0.0] - 2026-01-23
First Stable Release
This is the first stable release of ArtisanPack UI SEO, a comprehensive SEO management package for Laravel applications built on Livewire 3.
Highlights
- Complete SEO Management: Meta tags, Open Graph, Twitter Cards, and Schema.org markup
- 14 Schema Types: Built-in JSON-LD structured data for rich search results
- URL Redirect System: Exact, regex, and wildcard redirects with hit tracking
- XML Sitemap Generation: Standard, image, video, and news sitemaps
- SEO Content Analysis: 8 built-in analyzers for content quality scoring
- Laravel 10, 11, and 12 Support: Compatible with current Laravel versions (
illuminate/support ^10.0|^11.0|^12.0) - Livewire 3.6+ Compatible (Optional): Livewire components (SeoMetaEditor, RedirectManager, etc.) require Livewire 3.6+; Blade components work without Livewire
- Comprehensive Documentation: Detailed guides and API reference
Added
Core Features
- HasSeo Trait: Polymorphic SEO metadata attachment for any Eloquent model
- Automatic Fallbacks: Smart fallback system using model properties for SEO values
- SeoMeta Model: Store and manage SEO metadata with full field support
- Feature Toggles: Enable/disable individual features via configuration
Meta Tags
- Title Management: Custom titles with site name and separator
- Description Management: Custom descriptions with automatic truncation
- Robots Directives: Noindex, nofollow, and custom robots meta tags
- Canonical URLs: Set canonical URLs to prevent duplicate content issues
- Viewport Meta: Configurable viewport settings
Social Media
- Open Graph Tags: Full Open Graph protocol support for Facebook/LinkedIn
- Twitter Cards: Summary and summary_large_image card types
- Image Support: Automatic image URL generation with fallbacks
- Custom Social Titles: Separate titles/descriptions for social platforms
Schema.org / JSON-LD
- 14 Built-in Schema Types: Article, BlogPosting, Product, Organization, Person, LocalBusiness, Event, Recipe, FAQPage, HowTo, BreadcrumbList, WebSite, WebPage, VideoObject
- SchemaBuilderInterface: Contract for creating custom schema builders
- Automatic Schema Generation: Generate schema from model data
- Nested Schema Support: Support for complex nested schema structures
Multi-Language (Hreflang)
- Hreflang Tags: Generate hreflang link tags for multi-language sites
- HreflangService: Service for managing hreflang configurations
- x-default Support: Support for default language fallback
URL Redirects
- Redirect Model: Store redirect rules with source, destination, and type
- Match Types: Exact match, regex patterns, and wildcard matching
- Status Codes: Support for 301, 302, 307, and 308 redirects
- Hit Tracking: Track redirect usage with hit counts and timestamps
- Loop Prevention: Automatic detection and prevention of redirect loops
- HandleRedirects Middleware: Automatic redirect handling via middleware
XML Sitemaps
- Standard Sitemaps: Generate XML sitemaps with URLs, priorities, and frequencies
- Image Sitemaps: Include image URLs in sitemaps for image search
- Video Sitemaps: Include video metadata in sitemaps
- News Sitemaps: Generate Google News-compatible sitemaps
- Sitemap Index: Automatic sitemap index generation for large sites
- SitemapProviderInterface: Contract for custom sitemap entry providers
- Cache Support: Cache generated sitemaps for performance
Robots.txt
- Dynamic Generation: Generate robots.txt dynamically from configuration
- Global Rules: Set default allow/disallow rules for all bots
- Bot-Specific Rules: Configure rules for specific user agents
- Sitemap Inclusion: Automatically include sitemap URLs in robots.txt
- RobotsService: Service for managing robots.txt configuration
SEO Analysis
- 8 Built-in Analyzers: Title, description, headings, keyword density, readability, images, links, and meta robots
- AnalyzerInterface: Contract for creating custom analyzers
- Quality Scoring: Score content quality with good/warning/error status
- Suggestions: Actionable suggestions for improving SEO
- Caching: Cache analysis results for performance
Caching
- Meta Tag Caching: Cache generated meta tags per model
- Sitemap Caching: Cache generated sitemaps
- Redirect Caching: Cache redirect lookups for performance
- Analysis Caching: Cache SEO analysis results
- CacheService: Centralized cache management service
- Configurable TTL: Set cache duration per feature
Blade Components
- x-seo-meta: All-in-one component rendering meta, OG, Twitter, and schema
- x-seo-meta-tags: Basic meta tags component
- x-seo-open-graph: Open Graph tags component
- x-seo-twitter-card: Twitter Card tags component
- x-seo-schema: Schema.org JSON-LD component
- x-seo-hreflang: Hreflang link tags component
Livewire Components
- SeoMetaEditor: Full SEO editing interface with tabbed sections
- RedirectManager: URL redirect management with CRUD operations
- SeoDashboard: Overview dashboard with SEO statistics
- SeoAnalysisPanel: Content analysis results display
- HreflangEditor: Multi-language URL editor
- MetaPreview: Search result preview component
- SocialPreview: Social share preview component
Services
- SeoService: Main orchestrator for all SEO operations
- MetaTagService: Generate and manage meta tags
- SocialMetaService: Generate Open Graph and Twitter Card tags
- SchemaService: Generate Schema.org JSON-LD markup
- SitemapService: Generate XML sitemaps
- RedirectService: Manage URL redirects
- RobotsService: Generate robots.txt content
- HreflangService: Manage hreflang configurations
- AnalysisService: Run SEO content analysis
- CacheService: Centralized cache management
Events
- SeoMetaCreated: Dispatched when SEO meta is created
- SeoMetaUpdated: Dispatched when SEO meta is updated
- SitemapGenerated: Dispatched after sitemap generation
- RedirectHit: Dispatched when a redirect is triggered
Helper Functions
- seo(): Get the SeoService instance
- seoMeta(): Get SeoMeta for a model
- seoTitle(): Format page title with site name
- seoDescription(): Truncate description to SEO length
- seoIsEnabled(): Check if a feature is enabled
- seoConfig(): Get configuration value
Artisan Commands
- seo:generate-sitemap: Generate XML sitemap files
- seo:submit-sitemap: Submit sitemap to search engines
- seo:clear-cache: Clear all SEO caches
Facades
- Seo: Facade for SeoService
- Redirect: Facade for RedirectService
Contracts/Interfaces
- SeoableInterface: Contract for SEO-enabled models
- AnalyzerInterface: Contract for SEO analyzers
- SchemaBuilderInterface: Contract for schema builders
- SitemapProviderInterface: Contract for sitemap entry providers
Exceptions
- RedirectLoopException: Thrown when redirect creates a loop
- SitemapGenerationException: Thrown when sitemap generation fails
- InvalidSchemaTypeException: Thrown when schema type is invalid
- InvalidConfigurationException: Thrown when configuration is invalid
Extensibility
- Filter Hooks: WordPress-style hooks via artisanpack-ui/hooks
- Custom Schema Types: Register custom schema builders
- Custom Analyzers: Register custom SEO analyzers
- Custom Sitemap Providers: Register custom sitemap entry providers
- Publishable Views: Customize all Blade views
- Publishable Config: Full configuration customization
Database
- seo_meta Migration: Polymorphic SEO metadata storage
- redirects Migration: URL redirect rules storage
- sitemap_entries Migration: Sitemap entry tracking
- seo_analysis_cache Migration: Cached analysis results
Infrastructure
- Code Style: PHP-CS-Fixer and PHPCS with ArtisanPackUI standards
- GitLab CI/CD: Multi-PHP version testing (8.2, 8.3, 8.4)
- Documentation: Comprehensive markdown documentation
- WordPress-Style Documentation: Full PHPDoc blocks on all classes and methods