# FE-06 — SEO — Meta Tags, OG, Sitemap, Structured Data

**Category:** frontend_ux  
**Status:** ok (with improvements)

---

## Verified — `app.blade.php` Layout
- `<title>` with `@yield('title', ...)` fallback to `setting()` ✓
- `<meta name="description">` with `@yield('meta_description', ...)` ✓
- `<link rel="icon">` from `setting('favicon')` ✓
- GA4 script conditionally injected via `@if(setting('ga4_measurement_id'))` ✓
- `<html lang="{{ app()->getLocale() }}">` ✓
- `@vite()` for assets ✓

## [MEDIUM] Missing Partial `seo-head.blade.php`
Referenced in AGENTS.md as `resources/views/layouts/partials/seo-head.blade.php` — **file does not exist**. SEO tags are defined inline in `app.blade.php`. Missing Open Graph tags (og:title, og:description, og:image) and canonical URL.

**Fix — buat partial atau tambah di app.blade.php <head>:**
```blade
<meta property="og:title" content="@yield('og_title', setting(locale_field('default_meta_title')))">
<meta property="og:description" content="@yield('og_description', setting(locale_field('default_meta_description')))">
<meta property="og:image" content="@yield('og_image', setting('default_og_image'))">
<meta property="og:url" content="{{ url()->current() }}">
<meta property="og:type" content="@yield('og_type', 'website')">
<link rel="canonical" href="{{ url()->current() }}">
<meta name="robots" content="@yield('robots', 'index, follow')">
```

## Existing: GenerateSitemap Command (`app/Console/Commands/GenerateSitemap.php`)
- Custom implementation (not spatie/sitemap) ✓
- Should generate `public/sitemap.xml` ✓

## [LOW] No JSON-LD Structured Data
No Product schema or Organization schema JSON-LD. Consider adding to product detail page:
```blade
@push('scripts')
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "{{ $product->{locale_field('name')} }}",
  "description": "{{ strip_tags($product->{locale_field('short_description')}) }}"
}
</script>
@endpush
```
