[
  {
    "rule_id": "S-001",
    "field": "title",
    "check": "존재하고 15~60자 사이여야 함",
    "severity": "fail"
  },
  {
    "rule_id": "S-002",
    "field": "meta_description",
    "check": "존재하고 50~160자 사이여야 함",
    "severity": "warn"
  },
  {
    "rule_id": "S-003",
    "field": "h1",
    "check": "페이지에 정확히 하나 존재해야 함",
    "severity": "warn"
  },
  {
    "rule_id": "S-004",
    "field": "structured_data",
    "check": "유효한 JSON 이고 @type 이 있어야 함",
    "severity": "fail"
  },
  {
    "rule_id": "S-005",
    "field": "canonical",
    "check": "자기 URL 을 가리켜야 함(다른 URL 이면 충돌)",
    "severity": "fail"
  },
  {
    "rule_id": "S-006",
    "field": "render",
    "check": "CSR·SPA 는 서버 응답에 제목·메타가 비면 검색·AI 인용 불리로 표시",
    "severity": "warn"
  },
  {
    "rule_id": "S-007",
    "field": "title",
    "check": "target_keyword 가 제목에 포함되면 가점(없어도 실패는 아님)",
    "severity": "warn"
  },
  {
    "rule_id": "S-008",
    "field": "structured_data",
    "check": "name 등 필수 속성이 비어 있지 않아야 함",
    "severity": "fail"
  },
  {
    "rule_id": "S-009",
    "field": "meta_description",
    "check": "빈 문자열이면 결측으로 처리",
    "severity": "warn"
  },
  {
    "rule_id": "S-010",
    "field": "h1",
    "check": "title 과 완전히 동일하면 중복으로 경고",
    "severity": "warn"
  }
]