[태그:] 워드프레스

  • 스키마 마크업, 잘못 넣으면 역효과입니다

    스키마 마크업, 잘못 넣으면 역효과입니다

    리치 스니펫이 떴다 사라진 날이 있다면, 지금 이 글을 보고 있을 겁니다

    워드프레스 스키마 마크업 추가 방법을 검색하는 순간의 마음은 대체로 하나입니다. 별점 달린 경쟁글이 검색 결과에서 내 글 위에 떠 있고, 내 글은 제목과 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단계

    1. 구글의 리치 결과 테스트 페이지를 연다.
    2. 발행한 글의 URL을 붙여넣고 검사한다.
    3. 결과에서 오류(Error)가 0개인지, 어떤 스키마가 인식됐는지 확인한다.

    오류(Error)와 경고(Warning)는 다르다

    여기서 제일 많이 헷갈려합니다. 경고는 말 그대로 주의일 뿐입니다. 예를 들어 Article에 image가 없어서 뜨는 경고는 리치 결과 자체엔 지장이 없는 경우가 많고, 고칠 여유가 있을 때 고치면 됩니다. 오류는 다릅니다. JSON 문법이 깨졌거나 필수 필드가 빠졌다는 뜻이라, 오류가 있으면 그 스키마는 리치 결과 대상에서 빠집니다. 판단 기준은 이렇게 단순합니다. 오류는 고치고, 경고는 읽어보고 판단한다.

    제일 흔한 오류 원인은 따옴표입니다. 코드를 블로그에서 복사할 때 곡선 따옴표(‘ “)로 바뀌면 JSON이 깨집니다. 저는 이걸 실제로 당해서, 지금은 코드 블록은 wptexturize가 못 바꾸는 형태로 감싸서 발행하고 있습니다. 오류 메시지에 “Invalid JSON”이 뜨면 일단 따옴표부터 의심하세요.

    서치 콘솔에서 리치 결과 모니터링하기

    발행 후에는 서치 콘솔의 리치 결과 보고서를 봅니다. 어떤 페이지가 리치 결과로 잡혔는지, 오류가 있는지 며칠 단위로 정리해 줍니다. 저는 발행 전 자동 검증 단계에 리치 결과 테스트 통과 여부를 넣어서, 통과 못 한 원고는 사람 손을 타게 해 두었습니다. 무인 발행을 돌리는 입장에서 이 게이트가 없으면 잘못된 스키마가 그대로 나갑니다.

    잘못 넣으면 역효과: 스키마를 넣으면 안 되는 경우

    본문에 없는 내용을 스키마로 넣는 경우

    스키마는 본문의 요약이지 본문의 업그레이드가 아닙니다. 별점이 본문에 없는데 스키마에만 넣거나, FAQ에 본문에 없는 답을 넣으면 구글 정책상 스키마 남용에 해당합니다. 발각되면 해당 스키마를 무시하거나, 심하면 수동 조치로 검색 노출 자체를 제한합니다.

    페이지당 스키마 중복·과다

    플러그인과 수동 추가가 겹치면 Article이 두 개 나옵니다. 위에서 제가 겪은 일이죠. 검증 도구에서 같은 타입이 여러 개 잡히면 하나를 빼세요. 구조화 데이터는 많을수록 좋은 게 아니라, 정확할수록 좋습니다.

    리뷰·별점 스키마 남용과 수동 조치

    제품 소개 페이지에 리뷰 별점을 넣고 싶은 마음은 압니다. 저도 1인으로 만든 SaaS 소개 페이지에 별점 스키마를 넣었다가 뺐습니다. 실제 검증된 사용자 리뷰가 없는 페이지의 별점은 구글이 자체 리뷰로 보고, 이건 남용 규정에 걸립니다. 별점은 제3자가 남긴 실제 리뷰가 페이지에 존재할 때만 쓰는 걸로 기준을 잡았습니다.

    페이지 상황 스키마 판단
    일반 블로그 글 Article + 본문에 실제 있는 FAQ만
    실제 리뷰가 달린 제품 페이지 Product + Review 가능
    자기 제품 소개 페이지 Article 정도, 별점은 제외
    회사 소개·방침 페이지 넣지 않는다

    요약: 발행 전 5단계 체크리스트

    복사해서 쓰는 최종 체크리스트

    지금도 제 파이프라인에서 매일 같은 순서로 돌아가는 목록입니다.

    1. Article 스키마의 제목·날짜·URL이 실제 글과 일치하는지 확인한다.
    2. FAQ는 본문에 보이는 질문과 1:1인지 대조한다.
    3. 리치 결과 테스트에서 오류 0개를 확인한다. 경고는 내용을 읽고 판단한다.
    4. 같은 타입의 스키마가 페이지에 하나만 있는지 확인한다.
    5. 별점·리뷰는 실제 리뷰가 있는 페이지에만 들어갔는지 확인한다.

    다음 글에서는 색인 속도까지

    스키마를 넣고 나면 다음 궁금증은 “언제 검색에 반영되나”입니다. 색인 속도를 당기는 방법은 따로 정리해서 올리겠습니다. 서치콘솔과 사이트맵 쪽 이야기가 될 겁니다. 이 블로그의 자동화 운영 이야기는 포트폴리오(wallenstein.dev)에서 더 볼 수 있고, 궁금한 점은 댓글로 남겨 주세요.

    참고한 공식 문서


    글쓴이 정보

    제가 만든 AI 파이프라인이 초안을 쓰고, 저는 검사에 걸린 것만 손봅니다. 통과하지 못한 초안은 그냥 버립니다. 파이프라인은 여기에 정리해 두었습니다.

  • 블로그 수익 없다면 이것부터 점검하세요

    블로그 수익 없다면 이것부터 점검하세요

    올해 8월 초, 9일 동안 블로그 발행이 멈춰 있었음에도 알림이 단 한 건도 오지 않은 적이 있다. 파이프라인 코드 한 줄에 결함이 있었는데, 실패 알림 코드가 크래시 지점보다 뒤에 위치해 있어 시스템이 조용히 죽어버렸기 때문이다. 이때 깨달았지만 방문자가 꾸준히 들어오는데 수익 그래프만 바닥을 기는 상황도 비슷하다. 수익이 안 나는 걸 운이나 시장 탓으로 돌리기 전에, 데이터가 눈에 보이지 않게 샜거나 기술적으로 막힌 지점을 먼저 찾아야 한다.

    이 블로그의 구글 서치콘솔 28일 노출·클릭 실측 비교
    운영 중인 이 블로그의 서치콘솔 실측치다. 개설 5주차 기준 직전 측정 대비 노출 169→382, 클릭 9→12 — 신생 블로그의 수익은 이 구간에서는 트래픽 절대량이 아니라 추세로 판단해야 한다.

    방문자가 있는데 수익이 0원인 기술적 원인 3가지

    방문자 수는 오르는데 수익 그래프만 바닥을 기는 걸 보면 참 답답하다. 구글 애널리틱스에 유입은 찍히는데 지갑은 열리지 않는 상황, 여기엔 뻔한 이유 말고 기술적인 함정이 숨어 있을 확률이 높다. 가장 먼저 의심해 봐야 할 건 키워드의 성격이다.

    자동화는 감시를 밖에 두면 조용히 죽는다는 사실을 뼈저리게 느꼈다. 예외 처리 코드 결함으로 9일간 발행이 멈췄는데도 실패 알림이 한 건도 오지 않았던 사례처럼, 블로그 운영에서도 수익 파이프라인이 끊겨도 시각화된 지표가 없으면 모르고 지나가기 십상이다. 방문자는 들어오는데 수익이 쌓이지 않는다면, 알림이 울리지 않는 채 죽어가는 내 코드처럼 어딘가에서 기술적인 연결이 끊어져 있을 가능성을 의심해야 한다.

    사람들이 글을 보러 오는 이유가 ‘정보 확인’인지 ‘구매’인지 파악하지 못하면 RPM(방문자당 수익)은 바닥을 친다. 단순히 무언가를 검색해서 뜻을 알아보려는 ‘조회성 키워드’로만 채워진 블로그는 방문자가 아무리 많아도 광고 단가가 낮을 수밖에 없다. 반대로 ‘가격 비교’, ‘후기’, ‘추천’ 같은 구매 전환 의도가 섞인 키워드가 섞여 있어야 수익성이 개선된다.

    기술적인 측면에서 모바일 환경을 점검해 보자. 내가 만든 SaaS 랜딩 페이지를 분석할 때, 모바일 유입 대비 광고 노출이 의도치 않게 막혀 있던 사례가 있다. 뷰포트 설정이 잘못되어 광고 스크립트가 화면 밖으로 밀려나면서 아예 로딩조차 안 되는 경우가 있었다. 테마나 플러그인 업데이트 후 레이아웃이 깨지면 광고 영역이 텍스트에 덮이거나 사라지는데, 이건 PC 화면에서는 절대 못 잡는다. 모바일 기기로 직접 글을 읽어보면서 광고가 정상 자리에 있는지 확인해야 한다.

    애드센스 자체의 정책 위반도 원인이다. 일명 ‘애드센스 광고 제한(Ad Limiting)’이 걸리면 구글이 광고 노출을 인위적으로 줄여버린다. AdSense의 계정 수준 광고 게재 제한은 주로 트래픽 평가나 무효 트래픽 우려와 관련되며, 콘텐츠 정책 위반에 따른 제한·중지와는 구분해야 한다. 광고 게재 제한이나 정책 문제는 AdSense의 ‘정책 센터’에서 확인한다.

    애드센스 승인 거절과 해지의 흔한 실수들

    블로그를 처음 개설하거나 재개설할 때 애드센스 승인 메일을 보고 좌절하는 경우가 많다. 대부분은 ‘콘텐츠 부족’이라고 적혀 있지만, 실제로는 더 구체적인 실수 때문일 때가 많다. 가장 흔한 게 저작권 무단 배제다. 이미지는 라이선스가 허용하는 범위에서 사용하고, 해당 라이선스가 요구할 때 출처·저작자·라이선스를 표시해야 한다.

    또 하나, 광고를 클릭하게 만들려는 시도는 의외로 쉽게 걸린다. 광고 위에 “클릭해주세요”라는 문구를 넣거나, 광고와 콘텐츠의 구분이 모호하게 배치하면 정책 위반이다. 구글의 알고리즘은 사용자가 실수로 클릭했는지, 의도했는지를 꽤 정교하게 판단한다.

    최근 큰 이슈는 AI 콘텐츠다. AI로 글을 쓰는 건 나쁘지 않지만, 검수 과정 없이 대량으로 발행하면 계정 정지 위험이 급격히 높아진다. 자동화 파이프라인을 구축할 때, AI가 생성한 글의 출처 표기를 누락하여 경고를 받았던 러닝커브가 있다. 구글은 원본 출처가 없는 AI 글을 스팸으로 간주할 가능성이 크다. AI가 쓴 글이라도 사람이 팩트를 체크하고 출처를 덧붙이는 과정은 빼면 안 된다.

    AI 글로 수익을 못 내는 결정적인 품질 차이

    AI 글은 효율적이지만, 방치하면 수익을 못 내는 가장 큰 적이 된다. 문제는 ‘정확성’과 ‘신뢰’다. AI는 가끔 터무니없는 정보를 사실인 것처럼 섞어놓는데, 이른바 환각(Hallucination) 현상이다. 독자가 이걸 알아채고 뒤도 돌아보지 않으면 체류 시간은 뚝 떨어지고 수익은 0원이다.

    E-E-A-T는 경험, 전문성, 권위성, 신뢰성을 뜻하며, Google은 이 가운데 신뢰성을 특히 중요하게 본다. AI가 쓴 글은 정보가 나열되어 있을 뿐, 글쓴이의 목소리가 없다. “나는 이걸 써봤는데 이랬다” 같은 개인적인 경험과 인사이트가 빠지면 그 글은 인터넷에 널린 수만 개의 복사본과 다를 바 없다. 검색 사용자는 누군가의 실제 경험을 담은 글에서 더 머무르고 클릭한다.

    실제로 크론으로 돌아가는 자동화 시스템을 통해 비교해 봤다. 사람이 검토 단계를 거치지 않은 AI 원문과, 제 앞에서 한 번씩 훑고 수정한 글의 체류 시간 차이는 확연했다. 검수 없는 글은 읽다 말고 이탈하는 패턴이 뚜렷했다. AI를 보조 도구로 쓰되, 서문과 결론과 예시는 사람 손이 닿아야 수익 낼 품질이 나온다. 이 단계를 건너뛰면 글자 수만 늘어난다. 물량으로 밀어붙이는 방식은 안 통한다.

    SEO 구조 점검하는 모습

    노출이 전혀 안 되는 글의 SEO 구조 문제점

    아무리 좋은 글을 써도 검색 엔진이 읽지 못하면 소용없다. SEO 구조가 기술적으로 망가진 경우다. 대표적인 게 메타 태그와 스키마 마크업의 부재다. Google은 본문과 페이지 구조로도 주제를 파악하며, 메타 설명은 검색 스니펫을 보조하고 구조화 데이터는 특정 리치 결과 자격을 얻는 데 사용된다.

    SaaS 개발 당시, 다수의 블로그에서 발견한 가장 흔한 실수가 메타 디스크립션 미설정이었다. 이걸 제대로 채우기만 해도 노출 효과가 개선되는 걸 여러 번 확인했다. 제목(H1)에는 검색 키워드가 들어가 있어야 하고, 본문의 소제목(H2, H3)이 그 주제를 뒷받침하는 구조여야 한다. 헤드라인과 내용이 따로 노는 글은 검색 의도를 만족시켰다고 판단받지 못한다.

    가독성 문제도 심각하다. 깨알 같은 글씨로 줄글이 빽빽하게 들어찬 문단은 모바일에서 읽기가 고통스럽다. 높은 이탈률만으로 검색 만족도나 순위 하락을 단정할 수 없으므로, 체류·전환·검색 성과와 함께 해석해야 한다.이를 “콘텐츠가 도움이 안 되었다”고 해석한다. 적절한 단락 나눔과 불렛 포인트 사용은 선택이 아니다.

    수익 발생까지 필요한 글의 개수와 속도

    그럼 과연 글을 얼마나 써야 수익이 나올까. 솔직히 정해진 개수는 없다. 대신 전략이 있다. 그냥 아무 키워드나 막 쓰는 게 아니라, 특정 주제를 파고드는 ‘클러스터 콘텐츠’ 전략이 필요하다. 키워드 그룹을 묶어서 밀어주었을 때 검색 상승폭이 확실히 컸다. 서로 연관된 글들이 링크로 엮이면서 주제 권위를 인정받기 때문이다.

    초기 수익 발생까지는 꽤 긴 시간이 걸린다. 기대하기 시작하고 3~6개월은 묵묵히 써야 하는 구간이다. 단, 아무렇게나 쓰는 게 아니라 일관성 있는 발행 주기(Cadence)를 지키는 게 중요하다. 이 블로그처럼 자동화 시스템의 도움을 받아 주 3편씩 꾸준히 채워 넣는다면, 어느 순간 시스템이 굴러가기 시작하는 지점을 마주하게 된다.

    요약: 오늘 당장 블로그에서 수정할 것

    방문자가 꾸준히 유입되고 있음에도 수익이 0원이라면, 지금 당장 애드센스 센터의 ‘수익 최적화’ 탭에 들어가 광고 제한(Ad Limiting)이 걸려 있는지부터 확인하라.

    근거로 삼은 문서


    글쓴이 정보

    여기 올라오는 글의 초안은 운영자가 만든 AI 파이프라인이 자동으로 만듭니다. 다만 문체·사실성 검사를 통과하지 못한 초안은 공개되지 않고 사람이 손봅니다. 그 과정은 포트폴리오에서 볼 수 있습니다.

    자주 나오는 질문

    방문자가 있는데 블로그 수익이 0원인 이유는 뭔가요?

    조회성 키워드는 구매 의도가 높은 키워드보다 RPM이 낮을 수 있지만, 광고 노출과 유효 클릭이 있다면 수익은 발생할 수 있다. 또는 모바일 화면에서 광고가 레이아웃 깨짐 때문에 아예 보이지 않거나, 애드센스 정책 위반으로 광고 노출이 제한된 상태일 수 있습니다.

    애드센스 승인이 거절되는 가장 흔한 실수는 무엇인가요?

    이미지 출처를 명확히 기재하지 않은 저작권 위반이 가장 흔합니다. 구글은 광고와 콘텐츠를 구분하지 못하게 배치하거나, 검수 없는 AI 콘텐츠를 대량으로 발행하는 경우에도 승인을 거절합니다.

    수익을 내려면 글을 얼마나 많이 써야 하나요?

    정해진 개수보다는 특정 주제를 파고드는 클러스터 전략이 중요합니다. 수익 발생까지는 보통 3~6개월이 걸리며, 이 기간 동안 일관된 발행 주기를 유지하며 글을 채워 넣어야 합니다.

  • 카카오톡 링크 미리보기 안 나올 때, OG 태그로 고치기

    카카오톡 링크 미리보기 안 나올 때, OG 태그로 고치기

    SNS 공유가 안 될 때, 겪는 그 답답함 정확히 압니다

    블로그에 정성스럽게 글을 썼는데 링크를 카카오톡에 붙여넣으려니 썸네일이 안 뜨는 경험, 다들 한 번쯤 있을 겁니다. 텍스트만 덩그러니 뜨거나, 아예 잘못된 로고 이미지가 나와서 당황했죠. 워드프레스 블로그를 운영하면서 가장 자주 겪는 이 ‘워드프레스 OG 태그 오류’는 단순히 보기 싫은 문제를 넘어서 방문자 30%를 그냥 날려버리는 결과로 이어집니다. 링크를 클릭할지 말지는 0.5초 안에 결정되는데, 그때 보여주는 ‘얼굴’이 없다면 아무리 좋은 글도 무용지물이니까요. 저도 처음 자동화 블로그를 만들었을 때 이 문제 때문에 며칠을 밤새 디버깅했던 기억이 납니다. 설정이 꼬여서 카카오톡 링크 미리보기가 안 뜨면 트래픽이 반토막 나는 건 당연한 일이죠.

    왜 내 글만 썸네일이 안 뜰까요?

    대부분은 워드프레스 기본 설정에는 메타 태그가 비어 있기 때문입니다. 페이스북이나 카카오 같은 플랫폼은 ‘og:image’나 ‘og:title’ 같은 정보를 페이지 소스에서 찾는데, 이것이 없으면 그냥 아무 이미지나 가져오거나 아예 비워버립니다. 글을 쓸 때마다 수동으로 입력할 수도 있지만, 그건 1인 빌더가 할 수 있는 노동이 아닙니다. 매일 수십 개의 글이 발행되는 제 블로그 시스템에서 일일이 썸네일을 등록하는 건 불가능했고, 결국 이 과정을 자동화하지 못하면 블로그 방문자 유입 감소는 피할 수 없는 구조적인 문제였습니다.

    방문자 30%를 날리는 잘못된 메타 태그의 대가

    제가 운영하는 사이트들의 로그를 분석해보면, SNS 유입 비중은 생각보다 큽니다. 다만 메타 데이터가 없으면 클릭률(CTR)이 급격히 떨어지는데, 이는 사람들의 시선이 이미지로 먼저 가기 때문입니다. 소셜 미디어에서 글이 떠도 클릭을 안 시키면 그건 죽은 길거나 다름없습니다. ‘블로그 방문자 유입 감소 원인’을 찾다가 제일 먼저 점검해봐야 할 게 바로 이 부분입니다. 썸네일 하나 때문에 트래픽을 반으로 줄이는 건 너무나 억울한 손해니까요.

    OG 태그가 단순 정보가 아닌 ‘클릭 유도’ 장치인 이유

    OG(Open Graph) 태그는 단순히 페이지 정보를 적어두는 기술 명세가 아닙니다. SNS에서 내 글을 보여주는 ‘간판’ 역할을 합니다. 제가 만드는 콘텐츠 자동화 파이프라인에서는 AI가 글을 쓰고, 또 다른 AI가 이 OG 태그를 세팅합니다. 제목을 잘 써도 썸네일이 없으면 클릭이 안 됩니다. 반대로, 제목이 평범해도 썸네일이 매력적이면 클릭이 됩니다. 말하자면 OG 태그는 정보 전달을 넘어 쓸 만한 클릭 유도 장치(Copywriting)가 되어줘야 합니다. 그래서 저는 이걸 단순한 세팅이 아니라 ‘제품의 퍼블리싱’ 과정의 핵심으로 봅니다.

    OG 태그가 왜 중요하고 구체적으로 어떤 역할을 하나요?

    페이스북, 트위터, 링크드인 같은 해외 플랫폼은 대체로 Open Graph Protocol을 표준으로 따릅니다. 다만 문제는 국내입니다. 네이버 블로그나 카카오톡은 조금 다른 방식을 쓰기도 하고, 스크래핑 타이밍이 다릅니다. ‘SNS 클릭률 높이는 법’의 가장 기초는 이 태그를 제대로 심는 것입니다. 예를 들어, 제가 매일 크론으로 돌리는 유튜브 쇼츠 링크를 카카오톡에 공유할 때도 이 태그가 없으면 그냥 검은 화면만 뜹니다. 이건 자동화 시스템의 신뢰도와도 직결됩니다. 태그 하나가 시스템의 완성도를 결정하니까요.

    네이버와 카카오톡이 읽어들이는 메타 데이터의 차이

    해외 플랫폼과 달리 한국형 메신저는 캐시가 더 강력하게 작동합니다. 네이버는 ‘twitter:card’나 ‘og:title’을 우선순위로 읽지만, 카카오톡은 가끔 맨 처음 이미지를 무작위로 가져오기도 합니다. 이게 가장 골치 아픈 부분입니다. ‘메타 태그 중요성’을 아무리 강조해도, 각 플랫폼마다 읽는 스펙이 다르니까요. 그래서 저는 모든 스펙을 커버하는 ‘호환성 높은 코드’를 짤 수밖에 없었습니다. 어디에 링크를 걸든 제 의도한 썸네일이 뜨게 만드는 게 진짜 자동화니까요.

    가장 쉬운 방법 vs 가장 가벼운 방법: 선택의 기준

    워드프레스에서 이걸 해결하려는 ‘가장 쉬운 방법’은 유명한 SEO 플러그인을 깔는 겁니다. Rank Math나 Yoast SEO 같은 플러그인은 잘 만들어졌습니다. 다만 저는 이걸 쓰지 않습니다. SaaS를 10개가량 운영하면서 겪었지만, 플러그인이 하나씩 늘어날 때마다 사이트 속도는 기하급수적으로 느려지거든요. DB 쿼리도 늘고, 충돌도 납니다. ‘플러그인 없이 워드프레스 속도 높이기’를 원하는 1인 창업자 입장에서, 이건 무거운 대가를 치르는 선택입니다.

    워드프레스에서 이걸 자동으로 설정해주는 가장 쉬운 방법은 무엇인가요?

    물론 플러그인이 편합니다. 설정 화면에서 토글 하나만 켜면 알아서 다 해주니까요. 다만 그 ‘편리함’ 뒤에는 숨겨진 비용이 따릅니다. 제가 처음에는 ‘워드프레스 og 태그 플러그인 추천’을 검색해서 유명한 걸 다 깔았습니다. 다만 나중에 서버 모니터링을 해보니, 페이지 로드할 때 플러그인이 불러오는 CSS랑 JS 파일이 수백 줄이었습니다. 글 하나 읽는데 그 무거운 짐을 짊어지고 오는 격입니다.

    무거운 플러그인 없이 가볍게 적용하는 방법이 있나요?

    저는 코드를 직접 수정합니다. `functions.php`에 후킹(Hooking)해서 `wp_head`에 코드를 심는 방식입니다. 다만 `functions.php` 자체가 테마 파일이라 테마를 바꾸면 그대로 사라집니다. 그래서 부모 테마를 직접 건드리지 말고 자식 테마에 넣거나, 디자인과 무관하게 유지돼야 하는 기능이면 커스텀 플러그인으로 빼는 쪽이 맞습니다. 이게 ‘wp_head 후킹 사용법’의 핵심입니다. 테마 업데이트를 해도 코드가 날아가지 않도록 자식 테마(Child Theme)나 간단한 커스텀 플러그인을 하나 만들어서 관리하면 됩니다. 제 경험상, 플러그인을 지우고 이 방식으로 바꾸니 페이지 로딩 속도가 1초 이상 빨라지는 걸 확인했습니다. 속도는 곧 돈이니까요.

    자동화 핵심: 썸네일 없어도 지정 이미지가 뜨게 만들기

    AI가 글을 쓰는 환경에서 가장 큰 문제는 ‘대표 이미지(Featured Image)’가 없는 경우입니다. AI가 텍스트는 써줘도 이미지는 만들어주지 않거나, 가끔 실수를 할 때가 있거든요. 그때마다 관리자가 들어가서 이미지를 일일이 등록하라면 그건 자동화가 아닙니다. 제 ‘무인 크론’ 시스템이 멈추지 않으려면, 글에 이미지가 없을 때 자동으로 기본 이미지를 띄워주는 ‘폴백(Fallback) 로직’이 필수적입니다.

    글마다 일일이 썸네일을 만들지 않고도 공유 이미지를 자동으로 뽑을 수 있나요?

    가능합니다. 코드를 짤 때 “이 글에 대표 이미지가 설정되어 있나?” 확인하고, 없다면 “기본 로고 이미지를 가져와”라고 조건문을 걸면 됩니다. 이게 ‘워드프레스 썸네일 자동 생성’의 꽃입니다. 저는 제 브랜드 로고를 기본 이미지로 설정해뒤습니다. 그러면 글에 썸네일을 깜빡한 글이라도 SNS에 공유했을 때 제 브랜드가 찍힌 이미지가 나옵니다. 아무것도 안 뜨는 것보다는 낫죠.

    대표 이미지(Featured Image)가 없을 때의 자동 대체 로직

    ‘없는 이미지 대체 태그’ 로직은 생각보다 단순합니다. `get_the_post_thumbnail_url()` 함수가 비어있으면, 미리 지정해둔 블로그 대표 이미지 URL을 넣어주는 식입니다. 이렇게 하면 이미지가 없는 글이라도 링크 공유 시 정돈된 모습을 유지할 수 있습니다. ‘블로그 대표 이미지 설정’만 제대로 해두면, 나머지는 코드가 알아서 처리해줍니다. 덕분에 저는 주말에 컴퓨터를 켜지 않아도 매일 아침 SNS에 예쁜 썸네일 달린 글이 자동으로 포스팅됩니다.

    코드로 이미지 미리보기

    카카오톡과 슬랙, 미리보기가 깨질 때 점검 리스트

    코드를 다 짜고 나서 막상 카카오톡이나 슬랙에 링크를 걸어보면, 여전히 이전의 썸네일이 뜨거나 아예 아무것도 안 뜰 때가 있습니다. 이전 미리보기가 계속 보이면 캐시를 먼저 의심하되, 미리보기가 생성되지 않으면 OG 태그, HTTP 응답, 외부 접근 가능 여부, 방화벽, 이미지 용량과 중복 태그도 함께 확인해야 합니다. 각 플랫폼의 서버가 우리 사이트를 한 번 긁어간(Crawl) 다음, 그 정보를 메모리에 저장해두기 때문입니다. 이건 자동화를 할 때 가장 많이 실수하는 부분이기도 합니다.

    카카오톡이나 슬랙 공유 미리보기가 제대로 뜨게 하려면 어떤 설정을 더 확인해야 하나요?

    우선 내 코드가 맞는지 확인해야 합니다. 그 다음은 플랫폼의 개발자 도구를 써야 합니다. ‘카카오톡 디버거 사용법’을 검색해서 공식 개발자 사이트에 들어가면, 스크래핑 캐시를 삭제하는 버튼이 있습니다. 여기서 내 URL을 다시 긁어오라고 명령을 내리면 새로운 메타 태그를 읽어옵니다. 슬랙이나 기타 메신저도 비슷합니다. ‘스택 오버플로우 공유 미리보기’가 이상하다면, 그쪽 스크래퍼가 뭔가 긁어가지 못한 게니까 HTML 구조를 다시 점검해야 합니다.

    디버깅 툴 사용법과 캐시 문제 해결

    ‘SNS 캐시 삭제 방법’은 중요합니다. 내가 수정을 했는데 안 바뀐다고 코드를 뜯어고치면 삽질만 늘어납니다. 카카오톡 디버거와 페이스북 Sharing Debugger를 북마크해두고, 수정 후에는 한 번씩 들어가서 ‘Scrape Again’을 누르는 습관을 들이세요. 그래야 실제 사용자들에게 바뀐 모습이 보입니다. 저도 자동화 시스템 배포 후에는 꼭 이 과정을 거쳐서 제대로 뜨는지 눈으로 확인합니다.

    지금 바로 적용하는 최소한의 자동화 코드

    이론은 이제 충분하니, 바로 복사해서 쓸 수 있는 코드를 드리겠습니다. 이 코드는 제가 만든 SaaS 중 하나의 핵심 기능을 아주 가볍게 뜯어낸 버전입니다. 복잡한 기능은 다 뺐고, 오직 카카오톡과 페이스북 등에서 제대로 뜨게 만드는 ‘자동 메타 태그 생성기’ 역할만 합니다. 자식 테마의 `functions.php` 맨 아래, 또는 테마를 바꿔도 유지하고 싶다면 간단한 커스텀 플러그인 파일에 붙여넣으시면 됩니다. 붙여넣기 전에 따옴표가 일반 ASCII 따옴표인지 확인하세요.

    
    function custom_og_tags() {
        if (is_singular()) {
            global $post;
            // 기본 설정값
            $title = get_the_title();
            $url = get_permalink();
            $desc = wp_trim_words(get_the_excerpt(), 30, '...');
            $img = get_the_post_thumbnail_url($post->ID, 'large');
            // 대체 이미지 (썸네일이 없을 경우 사용할 블로그 로고 URL)
            $default_img = 'https://your-site.com/default-image.jpg';
            if (!$img) {
                $img = $default_img;
            }
            echo '' . "\n";
            echo '' . "\n";
            echo '' . "\n";
            echo '' . "\n";
            echo '' . "\n";
            // 트위터 카드 설정
            echo '' . "\n";
        }
    }
    add_action('wp_head', 'custom_og_tags', 5);
    

    functions.php에 붙여넣고 끝나는 핵심 코드

    이 코드의 요는 `get_the_post_thumbnail_url`로 썸네일을 확인하고, 없으면 `$default_img` 변수에 넣은 주소를 사용한다는 점입니다. `your-site.com/default-image.jpg` 부분만 본인의 블로그 로고나 대표 이미지 주소로 바꾸면 됩니다. ‘워드프레스 OG 태그 코드’를 검색해서 다른 걸 가져와도 되지만, 너무 복잡한 건 오히려 에러를 유발합니다. 최소한의 게 가장 빠릅니다.

    설정 후 꼭 확인해야 할 3가지

    코드를 넣고 난 뒤에는 3가지만 체크하세요. 하나는 소스 보기(`Ctrl+U`)에서 `og:image` 태그가 제대로 생겼는지 확인. 다른 하나는 썸네일이 없는 글에서도 대체 이미지가 나오는지 테스트. 나머지는 카카오톡 디버거로 캐시를 지워서 실제로 잘 뜨는지 확인입니다. 이 3단계만 통과하면 ‘functions.php 코드 추가’ 작업은 끝입니다. 이제 링크 공유할 때 맨날 걱정했던 썸네일 문제는 사라집니다.

    마무리: 진짜 자동화를 원한다면

    OG 태그 자동화는 1인 블로그 운영자가 무인 자동화로 가기 위한 첫 관문입니다. 이거 하나 해결했다고 끝이 아닙니다. 끝내 콘텐츠의 퀄리티와 검색 노출이 따라줘야 방문자가 계속 늡니다. ‘워드프레스 SEO 자동화’는 메타 태그만으로는 부족하고, 구조화된 데이터와 키워드 최적화가 더 필요합니다. 제가 운영하는 아일리고(AILEEGO)는 이런 반복적인 SEO 작업조차 자동화해서 관리하는 철학을 가지고 있습니다.

    물론 지금 드린 코드로도 일반적인 블로그 운영은 충분합니다. 다만 SaaS 레벨의 관리를 원하거나, 아예 키워드 분석부터 메타 데이터 세팅까지 자동으로 처리하고 싶다면 좀 더 체계적인 도구를 볼 필요가 있습니다. 다만 비싼 플러그인을 깔라는 뜻은 아닙니다. 무겁게 이것저것 붙은 것보다, 필요한 기능만 있는 가볍고 특화된 도구를 고르는 편이 낫습니다. 봐야 할 건 내가 콘텐츠에 집중할 수 있도록, 기술적인 잡일은 코드가 처리하게 만드는 겁니다. 그게 진짜 1인 빌더가 가야 할 길 아닐까요?

    사례: 이 블로그도 42개 페이지에서 og:title이 통째로 빠져 있었다

    남 얘기가 아니다. 이 블로그를 점검하다 모든 페이지에서 og:title·og:description·meta description이 통째로 빠져 있는 것을 발견했다. 42개 페이지 전부였다.

    몇 주 동안 아무도 못 알아챈 이유가 있다. OG 태그가 전부 없었던 게 아니라 일부만 없었다. og:url, og:type, og:locale, og:image는 정상적으로 나가고 있었다. 그래서 소스를 대충 훑으면 “OG 있네”로 보인다. 카카오톡 미리보기에 이미지는 뜨는데 제목만 이상하게 나오는 상태였던 것이다.

    확인할 때 걸린 함정 두 가지

    첫째, 페이지 소스 전체에서 og:title을 검색하면 안 된다. 이 글처럼 OG 태그를 설명하는 글은 본문 코드 예시에 그 문자열이 들어 있어서, 검색에는 걸리는데 정작 <head> 안에는 없는 상황이 생긴다. 반드시 </head> 앞 구간만 잘라내서 <meta> 태그를 전부 나열해 봐야 한다.

    둘째, 검사 스크립트에 길이 제한을 걸면 안 된다. content="([^"]{0,70})"처럼 70자 제한을 두면 og:image의 긴 URL이 안 잡혀서 “og:image도 없다”고 잘못 판단하게 된다.

    원인은 태그가 아니라 그 앞의 게이트였다

    플러그인 설정에서 메타 자동 생성은 켜져 있었다. 그런데 그 설정을 읽기 전에 라이선스 확인 단계가 있었고, 그게 만료돼서 메타를 만드는 함수가 즉시 종료되고 있었다. og:url 같은 항목은 그 확인 단계 바깥에 있어서 계속 출력됐다 — 이게 “일부만 나오는” 증상의 정체다.

    더 허탈한 건 그다음이다. 설명 문구 데이터는 이미 다 있었다. 글마다 요약문이 워드프레스 excerpt 필드에 저장돼 있었는데, 플러그인은 자기 전용 필드를 읽고 있었다. 두 시스템이 같은 데이터를 서로 다른 서랍에서 찾고 있었던 것이다. 그래서 복구는 새로 만들 필요 없이 excerpt를 그 필드로 옮겨 담는 것으로 끝났다.

    정리하면 점검 순서는 이렇다. ① </head> 앞 구간의 meta 태그 전량 확인 → ② 없는 항목과 있는 항목을 갈라서 “왜 일부만 나오는가”를 묻기 → ③ 플러그인 설정값이 아니라 그 설정을 읽기 전에 걸리는 조건(라이선스·권한·다른 SEO 플러그인 감지)을 확인 → ④ 넣을 데이터가 이미 사이트 어딘가에 있는지 먼저 찾기.

    참고한 공식 문서


    글쓴이 정보

    초안은 AI 파이프라인이 쓰고, 검사를 통과한 글만 공개됩니다. 걸린 초안은 제가 직접 고칩니다. — 아일리고