Skip to main content

SEO 운영자 가이드

Seo plugin은 사이트별 검색 노출 정보, 공유 미리보기, sitemap, robots, SEO audit을 한 곳에서 관리합니다.

활성화

SEO 기능은 plugin이 활성화된 프로젝트에서 동작합니다. _template에는 SaaS PanelProvider에 SeoFilamentPlugin이 연결되어 있으므로 plugin 활성화 후 SaaS Panel에서 다음 메뉴가 보입니다.

메뉴용도
Site Settings > SEO사이트 기본 SEO 설정
SEO > SEO Scopes독립사이트 내부 서비스 영역별 SEO 기본값
SEO > SEO Page Rulesroute/path별 SEO override
SEO > SEO Audits실제 공개 페이지 SEO 점검

기본 비활성 상태에서는 php artisan list seo에 command가 보이지 않을 수 있습니다. plugin provider가 활성화될 때 route, command, middleware가 등록됩니다.

기본 설정

Site Settings > SEO에서 다음 값을 설정합니다.

필드설명
SEO 활성화managed head, sitemap, audit 기능을 켭니다.
사이트 타이틀페이지별 title이 없을 때 사용할 기본 title입니다.
페이지 타이틀 접미사`Article title
기본 Description페이지별 설명이 없을 때 사용할 설명입니다.
기본 OG 이미지 URL공유 미리보기 기본 이미지입니다. 공개 접근 가능한 URL을 사용하세요.
Canonical 기준 URLcanonical host를 명시합니다. 독립 도메인이 있으면 해당 도메인을 넣습니다.
Locale / 대체 Locale URLog:locale, hreflang alternate에 사용합니다.
Robots index/follow기본 색인/링크 추적 정책입니다.
사이트 주체Organization 또는 Person structured data 기본값입니다.
Search Console tokenGoogle, Bing, Naver verification token입니다.
Sitemap / Audit 활성화sitemap 출력과 audit 실행 여부입니다.

raw HTML 입력란은 없습니다. Search Console 인증도 <meta> 전체가 아니라 content token만 저장합니다.

독립사이트별 SEO

하나의 MSK 프로젝트 안에 여러 독립사이트가 있으면 각 SaaS Product 또는 site 설정의 settings.seo가 현재 도메인에 맞게 적용됩니다.

resolver는 다음 순서로 현재 SEO context를 찾습니다.

  1. 현재 요청의 current.saas_product
  2. 요청 host와 saas_products.settings.domains 매칭
  3. 현재 current.sitesaas_products.settings.site 매칭

예를 들어 academy.how 프로젝트 안에서 생성된 newspaper.how 독립사이트는 newspaper.how 도메인으로 접속했을 때 newspaper SaaS Product의 SEO 설정을 사용해야 합니다.

Scope / Page Rule

scripture.how처럼 한 독립사이트 내부가 여러 서비스처럼 보이면 scope를 사용합니다.

예시 scope예시 pathSEO 의미
bible/bible/*성경 본문 viewer
commentary/commentaries/*주석 라이브러리
dictionary/dictionary/*성경 사전
typing/typing/*성경 타자연습

SEO Scopes에서 scope 기본 title, description, robots, structured data 설정을 관리하고, SEO Page Rules에서 특정 route name 또는 path pattern에 대한 override를 추가합니다.

Sitemap / Robots

plugin route:

  • /robots.txt
  • /sitemap.xml

운영 기준:

  • sitemap에는 canonical URL만 넣습니다.
  • admin/auth/checkout/billing/legal/system path는 기본 제외됩니다.
  • robots.index=false인 사이트는 Disallow: /을 출력합니다.
  • robots raw text는 지원하지 않고 구조화된 allow/disallow 설정만 사용합니다.

SEO Audit

SEO > SEO Audits에서 단일 URL을 실행하거나 command로 실행합니다.

php artisan seo:audit https://newspaper.how/
php artisan seo:audit --sitemap=https://newspaper.how/sitemap.xml --host=newspaper.how
php artisan seo:audit --scope=articles --site=newspaper --host=newspaper.how

Audit은 실제 HTML을 가져와 다음을 저장합니다.

  • title, description, canonical, robots, OG, Twitter, hreflang
  • JSON-LD parse result
  • h1 count, heading outline, semantic landmarks
  • div outline sample, title/alt/aria/link text/image count
  • missing title, duplicate description, canonical mismatch, invalid JSON-LD 등 issue

원본 HTML 전체는 저장하지 않습니다. current host 또는 allowlist host만 수집하고 private/loopback/link-local/metadata IP는 차단합니다.

운영 체크

증상확인
title/meta가 반영되지 않음plugin 활성화 여부, settings.seo.enabled, middleware 등록 여부
독립사이트 설정이 다른 사이트에 반영됨SaaS Product domain, settings.site, current site context
sitemap URL host가 틀림canonical_base_url, 실제 request host, reverse proxy 설정
audit URL이 차단됨current host 또는 seo.audit.allowed_hosts allowlist
OG 이미지가 공유에서 안 보임public 접근 가능 URL인지 확인

관련 문서