4.6 KiB
4.6 KiB
SEO Audit System v1 Summary
Changed Areas
- Added shared SEO support under
app/Support/Seo/ - Added shared Blade SEO renderer in
resources/views/partials/seo/head.blade.php - Added shared Inertia SEO renderer in
resources/js/components/seo/SeoHead.jsx - Updated layout integration in
resources/views/layouts/nova.blade.phpandresources/views/layouts/_legacy.blade.php - Wired major public controllers and views across homepage, artworks, browse/discover, categories, tags, profiles, collections, leaderboard, blog, stories, news, Nova Cards, community/gallery pages, and static/footer pages
- Added and updated feature tests for key public SEO surfaces
SEO Architecture Introduced
Core files
config/seo.phpapp/Support/Seo/SeoData.phpapp/Support/Seo/BreadcrumbTrail.phpapp/Support/Seo/SeoDataBuilder.phpapp/Support/Seo/SeoFactory.phpresources/views/partials/seo/head.blade.phpresources/js/components/seo/SeoHead.jsx
Contract
- Controllers and pages can pass a normalized
seopayload explicitly - Blade layouts can also normalize legacy
page_*andmeta.*data throughSeoFactory::fromViewData() useUnifiedSeois the opt-in switch for the shared renderer- JSON-LD, Open Graph, Twitter tags, canonical tags, robots, breadcrumbs, and optional keywords are emitted from one place
Supported Page Types
Explicitly covered or normalized through the shared system:
- Homepage
- Artwork detail pages
- Explore / browse / discover pages
- Category pages
- Tag pages
- Creator / profile pages
- Collection listing and collection detail pages
- Leaderboard pages
- Blog pages
- Stories pages
- News pages
- Public Nova Cards pages
- FAQ, rules, privacy, terms, about/help/contact/legal, staff, RSS feeds, and other public static/footer pages
- Community / gallery-style public pages such as latest uploads, featured artworks, member photos, downloads today, comments latest, and monthly commentators
Title / Description / Canonical / OG Strategy
- Title and description generation is page-type-aware where the app has a dedicated resolver
- Legacy pages still normalize cleanly through fallback mapping of
page_title,page_meta_description,page_canonical,page_robots, andmeta.* - Canonicals are generated with Laravel route and URL helpers rather than hardcoded hosts
- Open Graph and Twitter tags are standardized through the shared renderer
- Fallback OG images resolve from page data first, then from configured defaults
- Search and low-value pages can be marked noindex through the same DTO/builder contract
Structured Data Added
JSON-LD is emitted centrally and currently supports the main public shapes used by the site:
WebSiteBreadcrumbListCollectionPageProfilePageFAQPageImageObjectCreativeWorkArticle
Schema is added only where it matches visible page content.
Indexing / Robots Decisions
- Public canonical pages default to
index,follow - Search and similar low-value surfaces can be marked noindex through the shared builder
- Private/internal pages remain outside the shared public SEO rollout
- The system is structured to align with future sitemap generation through canonical/indexable page types
Breadcrumb / Internal Linking Fixes
- Added
BreadcrumbTrailnormalization - Removed duplicate
Home > Homestyle breadcrumb issues - Ensured breadcrumb JSON-LD is emitted once through the shared renderer when breadcrumbs exist
Tests Added / Updated
Key coverage includes:
tests/Feature/HomePageTest.phptests/Feature/FooterPagesTest.phptests/Feature/Collections/CollectionsV5FeatureTest.phptests/Feature/LeaderboardPageTest.phptests/Feature/RoutingUnificationTest.phptests/Feature/Stories/CreatorStoryWorkflowTest.phptests/Feature/NovaCards/NovaCardPublicPagesTest.phptests/Feature/ArtworkJsonLdTest.phptests/Feature/TagPageTest.phptests/Feature/BrowseApiTest.php
These tests cover canonical tags, JSON-LD, OG output, no-duplicate-head regressions, and core public page availability.
Follow-up Recommendations
SEO v2
- Add a formal sitemap generator built directly from the canonical/indexable page-type contract
- Expand explicit page-type resolver methods for the remaining lower-value legacy pages that still rely on fallback normalization
- Add broader page-family assertions for static pages, news/tag/category pages, and community gallery pages
- Add snapshot-style tests for the shared head output if head regressions become frequent
- Consider central reporting for pages with fallback-only metadata so future migrations are easier to track