리치 스니펫이 떴다 사라진 날이 있다면, 지금 이 글을 보고 있을 겁니다
워드프레스 스키마 마크업 추가 방법을 검색하는 순간의 마음은 대체로 하나입니다. 별점 달린 경쟁글이 검색 결과에서 내 글 위에 떠 있고, 내 글은 제목과 URL만 덩그러니 보인다. 이 격차를 코드 없이 메우고 싶은 거죠.
저도 똑같았습니다. 이 블로그는 자동 파이프라인이 주 1~5편으로 불규칙하게 초안을 만들고, 문체·사실성 자동 검사를 통과한 글만 공개하는 구조인데, 스키마를 넣고 나니 서치콘솔에서 리치 결과로 잡히는 페이지가 눈에 띄게 늘었습니다. 순위가 확 오르진 않았습니다. 클릭하는 사람이 늘었죠.
다만 잘못 넣으면 역효과가 납니다. 이 글에서는 그 역효과가 나는 지점까지 같이 정리했습니다. 복붙 코드와, 검증 통과 기준과, 넣으면 안 되는 순간까지요.
스키마 마크업, 정확히 뭘까? (그리고 진짜 도움 됩니다)
검색엔진이 내 글을 ‘읽는’ 방식
구글봇은 페이지를 사람처럼 읽지 않습니다. HTML을 훑으면서 “이건 제목 같고, 이건 가격 같네”라고 추측하죠. 스키마 마크업은 그 추측을 확정으로 바꿔주는 역할을 합니다.
스키마 마크업이란 페이지의 내용을 검색엔진이 이해할 수 있는 구조화된 데이터로 표기하는 방법이다. 보통 JSON-LD라는 형식으로 HTML 안에 넣으며, 구글은 이걸 읽고 검색 결과에 별점, FAQ, 작성일 같은 부가 정보를 붙여 준다.
이 부가 정보가 붙은 결과를 리치 스니펫이라고 부릅니다. 같은 순위에서 면적이 넓어지는 셈이라 클릭률이 달라집니다.
리치 스니펫이 클릭률을 바꾸는 이유
검색 결과에서 내 글이 FAQ를 펼쳐 보여주면, 독자는 클릭 전에 답의 일부를 이미 봅니다. 답이 있을 것 같으면 클릭하고, 없을 것 같으면 안 합니다. 그래서 리치 스니펫은 순위를 올리는 도구가 아니라, 이미 확보한 순위에서 클릭을 더 가져오는 도구입니다. 기대치를 이렇게 잡아야 실망이 없습니다.
코딩 몰라도 됩니다: 워드프레스에 스키마 추가하는 방법
방법 1: JSON-LD 코드 복붙 (권장)
워드프레스 편집기에서 커스텀 HTML 블록을 하나 넣고, 아래 코드를 붙이면 끝입니다. 글마다 제목·날짜·URL만 바꿔 주면 되고, 테마를 바꿔도 날아가지 않습니다.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "글 제목",
"datePublished": "2026-09-29",
"dateModified": "2026-09-29",
"author": {"@type": "Person", "name": "글쓴이"},
"image": "대표 이미지 URL"
}
</script>
방법 2: functions.php에 한 번만 넣기
모든 글에 공통으로 들어갈 스키마라면 테마의 functions.php에 넣는 편이 낫습니다. 글 제목과 날짜를 자동으로 가져오게 만들어 두면 매번 손댈 일이 없어지죠.
add_action('wp_head', function () {
if (!is_single()) return;
$data = [
"@context" => "https://schema.org",
"@type" => "Article",
"headline" => get_the_title(),
"datePublished" => get_the_date('Y-m-d'),
"dateModified" => get_the_modified_date('Y-m-d'),
"author" => ["@type" => "Person", "name" => get_the_author()]
];
echo '<script type="application/ld+json">'
. json_encode($data, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT)
. '</script>';
});
차일드 테마를 안 쓰면 테마 업데이트 때 지워집니다. 저는 이걸 몰라서 한 번 날려먹은 적이 있습니다. 차일드 테마부터 만들고 시작하세요.
방법 3: 플러그인 쓸 때 주의점
Rank Math 같은 SEO 플러그인은 스키마를 자동으로 넣어 줍니다. 편한데, 함정이 하나 있습니다. 플러그인이 넣는 것과 내가 HTML 블록으로 넣은 것이 겹친다는 거죠.
| 방법 | 장점 | 단점 |
|---|---|---|
| HTML 블록 복붙 | 글 단위 제어, 테마와 무관 | 매번 손으로 수정 |
| functions.php | 한 번 넣으면 자동 | 차일드 테마 필요, 코드 수정 필요 |
| SEO 플러그인 | 설정만 하면 됨 | 다른 방법과 중복되기 쉬움 |
실제로 저는 이걸로 초안 검사에 걸린 적이 있습니다. 플러그인이 Article 스키마를 넣는 걸 모르고 HTML 블록에 하나 더 넣었더니, 같은 글에 Article이 두 개 나오는 원고가 나왔죠. 중복 검사에서 걸려서 발행 전에 하나를 뺐습니다. 플러그인을 쓴다면 플러그인이 뭘 넣는지 먼저 확인하고, 수동 추가는 그때부터 하세요.
FAQ·글(Article) 스키마, 이 구조로 쓰세요
Article 스키마 필수 필드와 선택 필드
Article에서 손대야 할 필드는 headline, datePublished, dateModified, author 정도입니다. image는 리치 결과에 첨부될 확률을 높여 주니 넣는 편이 낫고, 나머지는 몰라도 됩니다. 단, dateModified를 안 바꾸는 분들이 있는데, 글을 고쳤으면 이 값을 같이 고쳐야 구글이 갱신을 인지합니다.
FAQ 스키마: 페이지에 보이는 내용과 1:1로
FAQ 스키마 작성법의 원칙은 한 줄입니다. 본문에 실제로 보이는 질문과 답만 넣는다. 리치 결과에서 펼쳐진 FAQ를 클릭해 들어왔는데 본문에 그 내용이 없으면, 그게 구글이 보는 불일치입니다.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "스키마 마크업을 넣으면 순위가 오르나요?",
"acceptedAnswer": {
"@type": "Answer",
"text": "순위에 미치는 직접 효과는 크지 않고, 검색 결과에서 리치 스니펫으로 노출되어 클릭률을 높이는 효과가 큽니다."
}
}]
}
</script>
AI로 초안을 뽑을 때 여기서 사고가 났습니다. 생성된 초안에 FAQ 스키마까지 자동으로 붙어 나왔는데, 열어 보니 본문에 없는 질문이 들어 있었습니다. 그 뒤로는 FAQ 스키마는 본문 확인 후에만 통과시키는 걸 원칙으로 했습니다.
HowTo는 이제 안 쓴다
예전 글들을 보면 HowTo 스키마를 권하는 경우가 많은데, 구글이 HowTo 리치 결과 표시를 중단했습니다. 지금 넣어도 검색 결과에 아무 변화가 없으니, 새로 넣을 이유가 없습니다. 오래된 정보를 걸러내는 기준으로 삼으세요.

적용했으면 반드시 검증: 리치 결과 테스트 통과법
리치 결과 테스트 사용법 3단계
- 구글의 리치 결과 테스트 페이지를 연다.
- 발행한 글의 URL을 붙여넣고 검사한다.
- 결과에서 오류(Error)가 0개인지, 어떤 스키마가 인식됐는지 확인한다.
오류(Error)와 경고(Warning)는 다르다
여기서 제일 많이 헷갈려합니다. 경고는 말 그대로 주의일 뿐입니다. 예를 들어 Article에 image가 없어서 뜨는 경고는 리치 결과 자체엔 지장이 없는 경우가 많고, 고칠 여유가 있을 때 고치면 됩니다. 오류는 다릅니다. JSON 문법이 깨졌거나 필수 필드가 빠졌다는 뜻이라, 오류가 있으면 그 스키마는 리치 결과 대상에서 빠집니다. 판단 기준은 이렇게 단순합니다. 오류는 고치고, 경고는 읽어보고 판단한다.
제일 흔한 오류 원인은 따옴표입니다. 코드를 블로그에서 복사할 때 곡선 따옴표(‘ “)로 바뀌면 JSON이 깨집니다. 저는 이걸 실제로 당해서, 지금은 코드 블록은 wptexturize가 못 바꾸는 형태로 감싸서 발행하고 있습니다. 오류 메시지에 “Invalid JSON”이 뜨면 일단 따옴표부터 의심하세요.
서치 콘솔에서 리치 결과 모니터링하기
발행 후에는 서치 콘솔의 리치 결과 보고서를 봅니다. 어떤 페이지가 리치 결과로 잡혔는지, 오류가 있는지 며칠 단위로 정리해 줍니다. 저는 발행 전 자동 검증 단계에 리치 결과 테스트 통과 여부를 넣어서, 통과 못 한 원고는 사람 손을 타게 해 두었습니다. 무인 발행을 돌리는 입장에서 이 게이트가 없으면 잘못된 스키마가 그대로 나갑니다.
잘못 넣으면 역효과: 스키마를 넣으면 안 되는 경우
본문에 없는 내용을 스키마로 넣는 경우
스키마는 본문의 요약이지 본문의 업그레이드가 아닙니다. 별점이 본문에 없는데 스키마에만 넣거나, FAQ에 본문에 없는 답을 넣으면 구글 정책상 스키마 남용에 해당합니다. 발각되면 해당 스키마를 무시하거나, 심하면 수동 조치로 검색 노출 자체를 제한합니다.
페이지당 스키마 중복·과다
플러그인과 수동 추가가 겹치면 Article이 두 개 나옵니다. 위에서 제가 겪은 일이죠. 검증 도구에서 같은 타입이 여러 개 잡히면 하나를 빼세요. 구조화 데이터는 많을수록 좋은 게 아니라, 정확할수록 좋습니다.
리뷰·별점 스키마 남용과 수동 조치
제품 소개 페이지에 리뷰 별점을 넣고 싶은 마음은 압니다. 저도 1인으로 만든 SaaS 소개 페이지에 별점 스키마를 넣었다가 뺐습니다. 실제 검증된 사용자 리뷰가 없는 페이지의 별점은 구글이 자체 리뷰로 보고, 이건 남용 규정에 걸립니다. 별점은 제3자가 남긴 실제 리뷰가 페이지에 존재할 때만 쓰는 걸로 기준을 잡았습니다.
| 페이지 상황 | 스키마 판단 |
|---|---|
| 일반 블로그 글 | Article + 본문에 실제 있는 FAQ만 |
| 실제 리뷰가 달린 제품 페이지 | Product + Review 가능 |
| 자기 제품 소개 페이지 | Article 정도, 별점은 제외 |
| 회사 소개·방침 페이지 | 넣지 않는다 |
요약: 발행 전 5단계 체크리스트
복사해서 쓰는 최종 체크리스트
지금도 제 파이프라인에서 매일 같은 순서로 돌아가는 목록입니다.
- Article 스키마의 제목·날짜·URL이 실제 글과 일치하는지 확인한다.
- FAQ는 본문에 보이는 질문과 1:1인지 대조한다.
- 리치 결과 테스트에서 오류 0개를 확인한다. 경고는 내용을 읽고 판단한다.
- 같은 타입의 스키마가 페이지에 하나만 있는지 확인한다.
- 별점·리뷰는 실제 리뷰가 있는 페이지에만 들어갔는지 확인한다.
다음 글에서는 색인 속도까지
스키마를 넣고 나면 다음 궁금증은 “언제 검색에 반영되나”입니다. 색인 속도를 당기는 방법은 따로 정리해서 올리겠습니다. 서치콘솔과 사이트맵 쪽 이야기가 될 겁니다. 이 블로그의 자동화 운영 이야기는 포트폴리오(wallenstein.dev)에서 더 볼 수 있고, 궁금한 점은 댓글로 남겨 주세요.
참고한 공식 문서
제가 만든 AI 파이프라인이 초안을 쓰고, 저는 검사에 걸린 것만 손봅니다. 통과하지 못한 초안은 그냥 버립니다. 파이프라인은 여기에 정리해 두었습니다.
