Files
SkinbaseNova/docs/seo-audit-system-v1-summary.md

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.php and resources/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.php
  • app/Support/Seo/SeoData.php
  • app/Support/Seo/BreadcrumbTrail.php
  • app/Support/Seo/SeoDataBuilder.php
  • app/Support/Seo/SeoFactory.php
  • resources/views/partials/seo/head.blade.php
  • resources/js/components/seo/SeoHead.jsx

Contract

  • Controllers and pages can pass a normalized seo payload explicitly
  • Blade layouts can also normalize legacy page_* and meta.* data through SeoFactory::fromViewData()
  • useUnifiedSeo is 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, and meta.*
  • 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:

  • WebSite
  • BreadcrumbList
  • CollectionPage
  • ProfilePage
  • FAQPage
  • ImageObject
  • CreativeWork
  • Article

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 BreadcrumbTrail normalization
  • Removed duplicate Home > Home style 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.php
  • tests/Feature/FooterPagesTest.php
  • tests/Feature/Collections/CollectionsV5FeatureTest.php
  • tests/Feature/LeaderboardPageTest.php
  • tests/Feature/RoutingUnificationTest.php
  • tests/Feature/Stories/CreatorStoryWorkflowTest.php
  • tests/Feature/NovaCards/NovaCardPublicPagesTest.php
  • tests/Feature/ArtworkJsonLdTest.php
  • tests/Feature/TagPageTest.php
  • tests/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