E:LAB
← 가이드 목록
6분 분량

FAQ 스키마(FAQPage) 만드는 법 — 워드프레스·일반 HTML 모두

FAQPage 스키마의 형식, 구글의 사용 정책, 워드프레스 / 직접 HTML 두 가지 적용법, 흔한 실수와 검증 방법까지.

한 줄 요약

FAQPage 스키마는 자주 묻는 질문과 그에 대한 공식 답변을 검색엔진·AI에게 명시적으로 알려주는 마크업입니다. AI 검색(ChatGPT·Gemini·Google AI Overview)이 답변할 때 가장 자주 인용하는 형식이라 ROI가 높습니다.

1. FAQ 스키마가 노출되는 곳

전통적인 구글 리치 스니펫(검색 결과에 펼쳐지는 Q&A 박스)에는 2023년 정책 변경 이후 일반 사이트 노출이 줄었습니다. 그러나 노출 채널은 더 넓어졌습니다.

  • Google AI Overview — 답변 생성 시 FAQ 마크업된 페이지를 우선 인용
  • ChatGPT / Perplexity / Claude — 웹 검색 모드에서 FAQPage를 구조 정보로 활용
  • 음성 검색·스마트 스피커 — Q&A 형식이 음성 답변에 직접 적합
  • 사이트 자체 SEO 신호 — 페이지의 주제·범위를 명확히 전달

리치 스니펫만 보고 FAQ 스키마를 포기하는 사이트가 많은데, AI 검색 시대에는 오히려 더 중요해진 마크업입니다.

2. 구글 정책: 자격 조건

FAQPage 스키마를 정상 인정받으려면 다음을 지켜야 합니다.

! FAQPage 정책 핵심

  • 답변이 페이지에 실제로 보여야 함 — 사용자가 페이지에 와서 답을 읽을 수 있어야 합니다. 마크업에만 있고 페이지에는 없으면 스팸으로 간주됩니다.
  • 공식 답변이어야 함 — 사용자 댓글·게시판은 안 됩니다. 그건 QAPage를 따로 쓰세요.
  • 광고·마케팅 콘텐츠 금지 — "이 제품을 사면 어떻게 좋아지나요?" 같은 자기 홍보성 Q&A는 정책 위반입니다.
  • 혐오·폭력·성적 콘텐츠 금지
  • 중복 금지 — 동일한 Q&A를 여러 페이지에 마크업하지 마세요.

3. JSON-LD 코드 형식

가장 단순한 형식부터 보겠습니다.

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "환불 정책이 어떻게 되나요?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "구매 후 7일 이내라면 사용 여부와 관계없이 100% 환불해드립니다."
      }
    },
    {
      "@type": "Question",
      "name": "배송은 얼마나 걸리나요?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "주문 후 영업일 기준 2~3일 소요됩니다."
      }
    }
  ]
}

핵심은 @type: "FAQPage" 하나, 그 안의 mainEntity 배열에 Question을 나열하는 구조입니다. 필요한 만큼 추가하면 됩니다(보통 5~15개가 적절).

4. 적용법 A — 일반 HTML 사이트

<head> 또는 </body> 직전에 <script type="application/ld+json"> 블록으로 붙입니다.

<!DOCTYPE html>
<html lang="ko">
<head>
  <title>배송·환불 안내</title>
</head>
<body>
  <h1>자주 묻는 질문</h1>

  <h2>환불 정책이 어떻게 되나요?</h2>
  <p>구매 후 7일 이내라면 사용 여부와 관계없이 100% 환불해드립니다.</p>

  <h2>배송은 얼마나 걸리나요?</h2>
  <p>주문 후 영업일 기준 2~3일 소요됩니다.</p>

  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      { "@type": "Question", "name": "환불 정책이 어떻게 되나요?",
        "acceptedAnswer": { "@type": "Answer", "text": "구매 후 7일 이내라면 사용 여부와 관계없이 100% 환불해드립니다." }},
      { "@type": "Question", "name": "배송은 얼마나 걸리나요?",
        "acceptedAnswer": { "@type": "Answer", "text": "주문 후 영업일 기준 2~3일 소요됩니다." }}
    ]
  }
  </script>
</body>
</html>

핵심 — HTML 본문의 질문·답변과 JSON-LD의 텍스트가 일치해야 합니다. 본문 답변이 더 길고 마크업은 요약 버전이어도 괜찮지만, 본문에 없는 답을 마크업에 넣으면 안 됩니다.

5. 적용법 B — 워드프레스

세 가지 방법이 있습니다. 위에서 아래로 갈수록 정확도가 높아집니다.

B-1. Yoast SEO / Rank Math 플러그인

블록 에디터(Gutenberg)에서 "FAQ" 블록을 추가하면 자동으로 FAQPage JSON-LD가 페이지에 삽입됩니다. 가장 쉽지만 출력 형식 통제가 어렵습니다. 답변이 길거나 HTML이 들어가면 plugin이 어떻게 처리할지 일관되지 않을 수 있습니다.

B-2. Schema 전용 플러그인

"Schema & Structured Data for WP & AMP" 같은 전용 플러그인은 FAQPage 외 다른 타입까지 통합 관리할 수 있습니다. 단 플러그인이 우리 사이트의 Organization·WebSite와 중복으로 출력하지 않는지 확인해야 합니다.

B-3. 직접 코드 추가 (가장 정확)

functions.php에 후크하거나 page template에 <script type="application/ld+json"> 블록을 직접 작성합니다. 출력 형식을 100% 통제할 수 있습니다.

add_action('wp_head', function() {
  if (!is_page('faq')) return;
  $faqs = [
    ['q' => '환불 정책이 어떻게 되나요?', 'a' => '구매 후 7일 이내...'],
    ['q' => '배송은 얼마나 걸리나요?', 'a' => '영업일 기준 2~3일...'],
  ];
  $main = array_map(fn($f) => [
    '@type' => 'Question', 'name' => $f['q'],
    'acceptedAnswer' => ['@type' => 'Answer', 'text' => $f['a']]
  ], $faqs);
  $jsonld = json_encode([
    '@context' => 'https://schema.org', '@type' => 'FAQPage',
    'mainEntity' => $main
  ], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
  echo '<script type="application/ld+json">' . $jsonld . '</script>';
});

6. 검증

코드를 적용했으면 두 도구로 검증하세요.

Rich Results Test에서 "FAQs" 항목이 감지되면 정상입니다.

7. 흔한 실수 5가지

  1. 답변이 페이지에 없는데 마크업만 함 — 가장 흔한 페널티 사유
  2. 같은 답변을 여러 페이지에 중복 사용 — 구글이 모두 무시할 수 있음
  3. 광고성·자기 홍보성 Q&A — "왜 우리 제품이 최고인가요?" 같은 류
  4. answer.text에 광고 링크 삽입 — 외부 유도 목적의 a 태그는 정책 위반
  5. Q&A가 5개 미만 — 너무 적으면 FAQPage로서 가치가 낮다고 평가될 수 있음

직접 만들기

Schema:LAB의 폼 빌더로 FAQPage를 정확하게 만들 수 있습니다. 질문/답변을 입력하면 즉시 JSON-LD가 생성되고, 그대로 복사해 페이지에 붙이면 됩니다.

질문과 답변을 입력하면 schema.org 규격에 맞는 FAQPage JSON-LD를 즉시 생성합니다. (Free 플랜에 포함)

FAQPage 폼으로 직접 만들기

URL을 넣으면 현재 어떤 구조화 데이터가 적용돼 있는지, FAQPage가 빠져있다면 추천 항목으로 표시됩니다.

내 사이트에 FAQ 스키마가 없는지 진단