테크니컬SEO: 검색 엔진이 사이트를 기술적으로 잘 읽게 만드는 실무
들어가며
테크니컬SEO는 마케터가 자주 묻는 질문입니다. "우리 사이트가 검색 결과에 왜 안 나와요?" 대부분의 경우 콘텐츠가 좋지 않거나, 백링크가 부족하거나, 키워드 타겟팅이 잘못되어 있는 것이지요. 그런데 정말 그렇다고 확인했을 때도 검색 결과에 노출되지 않는 사이트가 있습니다. 그럴 때 의심해봐야 할 부분이 바로 테크니컬SEO입니다.
테크니컬SEO는 "콘텐츠가 좋은가"를 묻는 것이 아니라, "검색 엔진이 그 콘텐츠를 제대로 찾을 수 있는가, 그리고 그 콘텐츠가 진짜 어떤 것인지 이해할 수 있는가"를 묻는 영역입니다. robots.txt부터 Core Web Vitals까지, 기술적 설정 하나하나가 검색 순위를 좌우합니다.
검색 엔진은 어떻게 웹사이트를 발견하고 순위를 매기나?
먼저 Google이 웹사이트를 어떻게 다루는지 알아야 테크니컬SEO의 중요성을 이해할 수 있습니다.
1단계: 크롤링 (Crawling)
Googlebot이라는 자동화 프로그램이 웹사이트에서 텍스트, 이미지, 비디오를 발견하고 다운로드합니다. 이 과정에서 Google은 이미 알고 있는 페이지의 링크를 따라가거나, 제출된 사이트맵에서 새로운 URL을 찾거나, 전체 웹을 크롤링하면서 새로운 페이지를 발견합니다.
마케터 입장에서 알아야 할 점: Google이 우리 사이트의 모든 페이지를 크롤링하는 것은 아닙니다. 서버의 부하, 사이트의 크기, 콘텐츠의 신선도에 따라 정해진 "크롤링 예산" 내에서만 크롤링합니다. 따라서 불필요한 페이지(매개변수 페이지, 중복 필터 페이지, 임시 URL)가 많으면 중요한 페이지가 크롤링되지 않을 수 있습니다.
2단계: 인덱싱 (Indexing)
Google은 크롤링된 페이지의 콘텐츠를 분석하고, 중복 페이지를 판별한 후 정규 버전을 정합니다. 그리고 그 페이지의 정보를 자신의 거대한 데이터베이스에 저장합니다.
중요한 제약: 크롤링된다고 해서 무조건 인덱싱되는 것은 아닙니다. 저품질 콘텐츠, robots 메타 태그로 인한 차단, 사이트 구조 문제 등으로 인덱싱이 안 될 수 있습니다.
3단계: 순위 결정 (Ranking)
사용자가 검색할 때 Google은 수백 개의 순위 신호를 고려해 가장 관련성 높은 페이지를 맨 위에 보여줍니다. 이때 기술적 신호도 매우 중요한데, 이것이 바로 테크니컬SEO가 다루는 영역입니다.
테크니컬SEO의 핵심 체크리스트
A. 크롤링 최적화
robots.txt 설정
robots.txt 파일은 사이트 루트에 두고 (www.example.com/robots.txt), Googlebot이 어떤 페이지를 크롤링할 수 있는지 명확히 지시합니다.
예시:
User-agent: Googlebot
Disallow: /admin/
Disallow: /temp/
Allow: /public/
주의: robots.txt는 제안이지 명령이 아닙니다. 민감한 정보를 보호하려면 robots.txt만으로는 부족하고, 비밀번호 보호나 noindex 메타 태그를 함께 사용해야 합니다.
sitemap.xml 제출
sitemap.xml은 중요한 모든 페이지의 URL을 나열하고, 각 페이지의 마지막 업데이트 시간(<lastmod>)과 변경 빈도(<changefreq>)를 명시합니다.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/page1</loc>
<lastmod>2026-08-29</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
sitemaps.xml은 Google Search Console에 제출해 새 페이지를 빠르게 발견하고, 동적 사이트나 복잡한 구조의 사이트가 모든 페이지를 인덱싱하도록 돕습니다.
크롤링 예산(Crawl Budget) 관리
크롤링 예산은 크롤 용량 × 크롤 수요로 결정됩니다.
- 크롤 용량: 서버의 응답 속도와 서버 건강도에 따라 Google이 자동으로 조정합니다. 페이지 로드 속도가 느리면 크롤 용량이 줄어듭니다.
- 크롤 수요: 사이트의 크기, 업데이트 빈도, 인기도에 따라 Google이 재방문 빈도를 결정합니다.
최적화 방법:
- 중복 콘텐츠 제거 (매개변수 URL, 필터 조합 페이지 등)
- robots.txt로 크롤 불필요한 URL 차단
- 페이지 로드 속도 개선
- 404/410 상태 코드로 삭제된 페이지 명확히 표기
- sitemaps.xml의
<lastmod>태그 정확히 유지 - HTTP 304(Not Modified) 응답으로 캐싱 최적화
B. 인덱싱 최적화
중복 콘텐츠 통합 (Canonical Tag)
여러 URL이 동일한 콘텐츠를 제공하면 Google은 어느 것을 "진짜"로 인덱싱할지 고민합니다. 이때 rel=canonical 태그를 사용해 정규 URL을 명시합니다.
<link rel="canonical" href="https://example.com/product/shoes">
Canonical 링크는 다음 세 가지 방식으로 지정할 수 있습니다:
- HTML (가장 일반적)
- HTTP 헤더 (PDF 같은 비-HTML 파일)
- Sitemap (약한 신호)
주의: 301 리다이렉트 > rel=canonical > sitemap 순으로 강하므로, 가능하면 301 리다이렉트를 우선해서 사용합니다.
모바일 퍼스트 인덱싱 대응
Google은 이제 스마트폰 버전을 기준으로 인덱싱하고 순위를 매깁니다. 따라서 모바일 버전이 데스크톱 버전보다 콘텐츠가 적으면 안 됩니다.
필수 체크리스트:
- ✓ 모바일과 데스크톱의 주요 콘텐츠 동일
- ✓ 메타 태그 (
<title>,<meta description>,<meta robots>) 동일 - ✓ 구조화된 데이터 동일
- ✓ 이미지 alt text 동일
- ✓ 제목 계층(
<h1>~<h6>) 동일
권장: Google은 반응형 웹 디자인(Responsive Design)을 가장 권장합니다. 동일한 HTML을 제공하되, CSS 미디어 쿼리로 화면 크기에 맞게 표시하는 방식이 구현과 유지보수가 가장 쉬운 것으로 검증되었습니다.
C. 검색 가시성 개선
구조화된 데이터 (Schema Markup)
구조화된 데이터는 페이지 콘텐츠가 정확히 무엇인지를 명시하는 코드입니다. 예를 들어 별점, 상품 가격, 뉴스 기사 발행일, 요리의 조리 시간 등을 구조화된 형태로 제공하면, Google은 이를 바탕으로 리치 스니펫(Rich Snippet)을 표시해줍니다.
지원하는 형식:
- JSON-LD (추천) - HTML 내
<script type="application/ld+json">태그로 삽입 - Microdata - HTML 태그의 속성으로 표기
- RDFa - HTML5 확장 속성 사용
사례:
- Rotten Tomatoes: 구조화된 데이터 적용 후 클릭률 25% 상승
- Food Network: 80% 페이지에 구조화된 데이터 적용 후 방문 35% 증가
- Nestlé: 리치 결과 페이지 클릭률 82% 높음
필수 규칙:
- Google Rich Results Testing Tool로 검증
- 실제 페이지 콘텐츠와 구조화된 데이터의 일치
- Googlebot에 리소스 접근 허용
- 동적 생성 데이터는 JavaScript 렌더링 필수 확인
robots 메타 태그
페이지별로 인덱싱 여부를 제어하려면 <meta name="robots"> 태그를 사용합니다.
<meta name="robots" content="noindex, nofollow">
주요 지시어:
index/noindex: 페이지 인덱싱 허용/차단follow/nofollow: 링크 크롤링 허용/차단nosnippet: 검색 결과에 요약 미표시noimageindex: 이미지 검색 제외
페이지 경험 신호: Core Web Vitals
Google은 순위 신호로 Core Web Vitals라는 기술 성능 지표 3가지를 공식 도입했습니다. 이 점수가 나쁘면 콘텐츠가 아무리 좋아도 순위가 떨어집니다.
LCP (Largest Contentful Paint) - 로딩 속도
페이지를 로드한 후 가장 큰 시각 요소가 나타나는 시간입니다.
- 목표: 2.5초 이내
- 측정 도구: Chrome DevTools, PageSpeed Insights, Search Console
예: 위의 사진, 큰 텍스트 블록, 비디오 플레이어 등이 로드될 때까지의 시간
개선 방법:
- 이미지 최적화 (WebP 형식, 지연 로딩)
- 불필요한 CSS/JavaScript 제거
- 서버 응답 시간 개선
- CDN 활용
INP (Interaction To Next Paint) - 반응 속도
사용자가 버튼을 클릭하거나 텍스트 입력 같은 상호작용을 할 때, 페이지가 반응하는 시간입니다. 2024년 3월부터 FID(First Input Delay)를 공식 대체했습니다.
- 목표: 200밀리초 이내
- 측정 도구: web-vitals 라이브러리, PageSpeed Insights
개선 방법:
- JavaScript 작업 분할 (chunking)
- 무거운 작업을 Web Worker로 분산
- 불필요한 라이브러리 제거
CLS (Cumulative Layout Shift) - 시각적 안정성
페이지 로딩 중 예상 못한 레이아웃 변화의 누적입니다. 읽고 있는 문단이 갑자기 아래로 내려가는 경험 같은 것입니다.
- 목표: 0.1 이하
- 측정 도구: Chrome DevTools, PageSpeed Insights
개선 방법:
- 광고/삽입 요소에 고정 크기 설정
- 폰트 로드 최적화 (font-display: swap)
- 동적 콘텐츠 크기 사전 예약
흔한 실수와 해결 방법
robots.txt는 민감한 정보 보호용이 아니다
- ❌ robots.txt로만 접근 제한
- ✓ 비밀번호 보호 + robots.txt 조합
모바일 버전에 콘텐츠를 빼먹는다
- ❌ 데스크톱에는 있는데 모바일에는 없는 정보
- ✓ 모바일과 데스크톱 콘텐츠 동일화
Canonical 태그를 잘못 설정한다
- ❌ 페이지 자신을 가리키지 않는 URL로 지정
- ❌ 여러 개의 canonical 태그 사용
- ✓ 정규 URL 명확히 지정, 한 페이지에 최대 1개
구조화된 데이터를 방치한다
- ❌ 추가했지만 유지보수하지 않음
- ❌ 콘텐츠와 맞지 않는 데이터
- ✓ 정기적으로 검증, 최신 정보 유지
Core Web Vitals 최적화를 미룬다
- ❌ "아직은 순위에 큰 영향이 없으니 나중에"
- ✓ 지속적인 개선, 특히 이미지 최적화와 JavaScript 제거 우선
실행 체크리스트
우선순위 높음 (즉시)
- robots.txt 확인 및 최적화 (불필요한 URL 차단)
- sitemap.xml 생성 및 Google Search Console 제출
- 모바일 반응형 디자인 확인
- rel=canonical 태그 검토 (중복 URL 통합)
우선순위 중간 (1주일)
- Core Web Vitals 점수 확인 (PageSpeed Insights)
- 구조화된 데이터 추가 (상품, 뉴스, 리뷰 등 해당하는 것)
- robots 메타 태그 설정 검토
- 크롤링 예산 분석 (Search Console의 Crawl Stats)
우선순위 낮음 (계속)
- 이미지 최적화 (WebP 형식, 지연 로딩)
- CSS/JavaScript 최소화
- CDN 도입으로 서버 응답 시간 개선
- 정기적인 Core Web Vitals 모니터링
출처
- Google Search Central - How Google Search Works
- Google Search Central - Crawling & Indexing
- Google Search Central - Core Web Vitals
- Google Search Central - Mobile-First Indexing
- Google Crawling Infrastructure - Crawl Budget
- Google Search Central - Structured Data
- Google Search Central - Consolidate Duplicate URLs