Blogger 검색 H1 누락 해결: 아카이브 페이지 최적화로 SEO 점수 올리기

#127

meta_description: 구글 블로거 테마에서 발생하는 검색 결과 및 아카이브 페이지의 H1 태그 누락 문제를 theme.xml 조건문 스크립트 수정으로 해결한 실전 SEO 기록입니다. primary_keyword: Blogger 검색 H1 누락 labels: AI 파헤치기

이 글은 구글 블로거 서비스를 운영하면서 발견한 검색엔진 최적화 취약점을 보완하고 마크업 구조를 완벽하게 정제한 과정을 담은 가이드다. 블로그 내부 테마의 구조적 결함으로 인해 발생하는 Blogger 검색 H1 누락 현상을 명확하게 진단하고, 조건문 인젝션 방식을 통해 완벽한 웹 표준을 수립한 경험을 공유한다.

문제 상황

운영 기록 기준, 내가 블로그의 전반적인 검색엔진 최적화 점수를 진단하고 구글 및 네이버의 수집 봇 메커니즘을 분석하던 중 심각한 마크업 누락 구조를 발견했다. 일반적인 포스트 단일 페이지에서는 제목 영역이 정상적으로 노출되고 있었으나, 사용자가 블로그 내에서 특정 키워드를 검색했을 때 나타나는 검색 결과 페이지와 과거 글들을 분류해 보여주는 아카이브 페이지에서 치명적인 결함이 드러났다. 웹 표준과 SEO 진단 학계에서 통용되는 단일 페이지 H1 doctrine 위반 사례가 고스란히 관측된 것이다. 이 규칙에 따르면 웹 브라우저가 표현하는 모든 독립된 URL 페이지는 문서의 대전제를 선언하는 최상위 헤더인 H1 태그를 정확히 하나 가지고 있어야 하지만, 내 블로그의 특정 동적 생성 페이지들은 이 대원칙을 완전히 무시한 채 방치되어 있었다.

에러 증상

가장 직관적인 에러 증상은 개별 포스트 화면을 벗어난 동적 쿼리 세션 페이지에서 H1 태그의 총 개수가 0개로 수렴하는 현상이었다. 일반 개별 포스트 페이지의 경우 테마 구조상 entry-title 클래스를 가진 타이틀 마크업이 H1 속성으로 올바르게 매핑되어 작동하고 있었지만, 검색 쿼리를 통해 진입한 검색 결과 페이지나 라벨 분류 페이지, 연도별 아카이브 페이지에서는 구조적 중심을 잡아줄 H1 태그가 단 하나도 렌더링되지 않는 증상을 보였다. 이로 인해 검색엔진 수집 봇이 해당 페이지들을 긁어갈 때 문서의 대제목과 테마의 목적성을 인지하지 못하게 되었고, 검색 로봇이 사이트 구조 분석 단계에서 최상위 제목 누락 오류를 지속적으로 보고하는 원인이 되었다.

환경

이번 마크업 누락 문제를 진단하고 템플릿 아키텍처를 전면적으로 교정한 기술적 환경은 다음과 같다. 기본 구동 인프라는 구글의 블로거 엔진 플랫폼을 기반으로 삼고 있으며, 사이트 전체의 스타일시트와 구조적 마크업 인터페이스를 제어하기 위해 시스템 하부에 결합되어 있는 외부 커스텀 테마 파일인 theme.xml 스킨 템플릿 코드가 적용되어 있는 환경이었다. 이 xml 파일 내부의 동적 페이지 렌더링 블록을 추적하여 마크업 구조를 직접 수정하는 방식으로 접근해야 했다.

시도했지만 실패한 방법

처음에는 블로그의 메인 로고 영역이나 사이드바 가젯 영역에 고정형 H1 태그를 심어두는 단순한 방식을 시도했다. 이렇게 하면 검색 결과 페이지에서도 공통 레이아웃 구조 덕분에 H1 태그가 잡힐 것으로 예상했다. 그러나 이 방식을 적용하자, 정작 일반 개별 포스트 페이지로 진입했을 때 기존의 포스트 제목 entry-title H1 태그와 레이아웃에 심어둔 고정형 H1 태그가 중복으로 겹쳐서 검출되는 또 다른 SEO doctrine 위반 문제가 파생되었다. 동적 페이지의 종류를 구별하지 않는 획일적인 태그 삽입 시도는 페이지 유형별 마크업 정형화를 달성하지 못해 완벽한 실패로 끝났다.

최종 해결

나는 문제를 근본적으로 해결하기 위해 블로그 테마 엔진이 해석하는 특수 조건문을 사용하여 페이지 유형에 따라 마크업을 동적으로 분기하는 최종 해결책을 설계하고 fix를 적용했다. 블로거 템플릿 표준 문법에 내장된 뷰 판별 객체를 활용하기 위해 theme.xml 파일 내부의 헤더 및 타이틀 렌더링 코어 스택을 직접 수정했다.

수정의 핵심은 b:if cond='data:view.isSearch or data:view.isLabelSearch' 코드를 결합하는 것이었다. 이를 통해 시스템이 실시간으로 렌더링 단계를 판단하여 현재 브라우저에 표시되는 화면이 사용자의 키워드 검색 결과 페이지이거나 라벨 분류 및 아카이브 검색 세션일 경우에만 전용 H1 태그를 HTML 문서 구조 내에 동적으로 인젝션하도록 코드를 정제했다. 이렇게 함으로써 일반 포스트 페이지의 H1 구조를 전혀 침범하지 않으면서도, 그동안 마크업 청정 구역으로 방치되어 H1 카운트가 0개에 머물던 동적 검색 페이지에만 정확하게 단 하나의 최상위 타이틀 태그가 생성되도록 계층 구조를 완전히 수립했다.

사용한 코드

# theme.xml

# 이전
# 검색 결과 및 라벨 아카이브 페이지를 위한 별도의 H1 조건 분기가 존재하지 않던 구형 구조
<div class='title-area'>
 <data:blog.pageName/>
</div>

# 수정
# data:view.isSearch 및 isLabelSearch 조건을 분기하여 특정 동적 페이지에만 H1을 dynamic inject하는 구조
<b:if cond='data:view.isSearch or data:view.isLabelSearch'>
 <h1 class='search-title'>
 <data:blog.pageName/>
 </h1>
<b:else/>
 <div class='title-area'>
 <data:blog.pageName/>
 </div>
</b:if>

검증 결과

내부 테스트 기준, 수정된 theme.xml 소스코드를 블로거 시스템 백엔드에 안전하게 적용한 후 페이지 유형별 크롤링 테스트를 전개하여 마크업 변화를 정밀하게 검증했다. 먼저 일반 정보성 포스트 페이지에 진입하여 소스 코드를 파싱한 결과, 기존의 포스트 제목 단 한 개만 H1 속성을 안전하게 유지하고 있음을 확인했다.

이어서 타겟 영역이었던 내부 검색 결과 URL 규칙과 특정 라벨 아카이브 페이지를 강제로 호출하여 HTML 바디 마크업을 정밀 분석했다. 검증 결과, 과거에는 완전히 전멸하여 개수가 0개로 출력되던 H1 시작 및 종료 태그가 새로 구축한 조건문 블록을 통과하면서 정확하게 페이지당 1개씩 매칭되어 동적으로 렌더링되고 있음을 소스 레벨에서 완벽하게 검증 완료했다.

현재 상태

현재 상태는 fixed 판정이다. 구글 Blogger 테마 엔진의 동적 뷰 쿼리 판별 규칙을 완벽하게 활용하여 코드를 개정한 결과, 사이트 내의 모든 검색 결과 화면과 카테고리별 아카이브 경로에서 단 하나의 예외도 없이 표준 규격에 부합하는 H1 마크업 계층이 완벽하게 출력되고 있다. 검색엔진 최적화 진단 도구에서도 더 이상 최상위 제목 태그 누락 메시지를 보내지 않으며, 모든 동적 생성 URL 권역이 녹색의 정상 웹 표준 최적화 상태 점수를 기록하고 있다.

같은 문제 겪는 분들에게

구글 블로거 서비스에서 기본 제공하는 구형 테마를 오래 사용 중이거나, 마크업 구조가 완벽하지 않은 외부 배포용 커스텀 스킨 xml 파일을 이식하여 사용하다 보면 포스트 본문 디자인에만 신경을 쓴 나머지 검색 결과 창이나 라벨 분류 아카이브 레이아웃 단계에서 정작 가장 중요한 최상위 제목 태그를 완전히 빠트리는 실수를 범하기 쉽다. 이 때문에 웹마스터 도구 등록 이후 사이트 진단을 돌렸을 때 일부 특정 서치 경로에서 유독 최적화 감점 통보를 받고 답답해하는 운영자분들이 매우 많을 것이다.

이러한 문제를 마주하고 있다면 전체 레이아웃에 무작정 태그를 추가하여 일반 포스트 제목과 중복 충돌을 일으키는 실수를 하지 말고, 본 가이드의 해법처럼 테마 소스 코드 내부에서 블로거 고유의 data:view 조건 분기 수식을 적극적으로 선언해 주기 바란다. 특정 검색 쿼리와 아카이브 컨텍스트 환경을 명시적으로 타겟팅하여 필요한 순간에만 태그를 동적으로 인젝션해 주는 마크업 정형화를 관철해야만 검색 수집 봇의 구조적 신뢰를 얻고 노출 가시성을 방어할 수 있으니, 동일한 증상으로 고민 중인 블로거분들은 이 구조적 접근법을 참고하여 신속하게 코드를 보완하시길 바란다.

ToolSignal Pro Editorial

Claude · GPT · Antigravity · Cursor 실전 오류와 해결을 5개 언어로 정리한 AI debugging archive.

이전 글 다음 글