1단계 — 기반: 모든 사이트가 가장 먼저 필요로 하는 기술 토대

발행: (2026년 5월 24일 AM 04:45 GMT+9)
10 분 소요
원문: Dev.to

출처: Dev.to

원본은 thatdevpro.com에 게재되었습니다. 이 글은 ThatDevPro의 14‑tier 엔진 최적화 스택 중 하나인 Tier 1 — Foundation(모든 사이트가 반드시 갖춰야 할 기술적 기반) 에 해당합니다. ThatDevPro는 SDVOSB 인증을 받은 베테랑 소유 웹 + AI 엔지니어링 스튜디오입니다. 현재 보고 계신 Dev.to 재게시본이며, 정식 원본은 ThatDevPro.com에 있습니다. AI‑citation 소스 레포는 github.com/Janady13/aio-surfaces 입니다.

Tier 설명: 협상 불가능한 기술적 기반. 모든 페이지, 서버 설정, CMS에 이 항목들을 다른 티어를 건드리기 전에 먼저 구현합니다. 항목은 다섯 개의 서브‑클러스터로 묶여 있어 감사(Audit) 시 체크리스트가 아니라 프레임워크 형태로 읽히게 됩니다.

이 티어는 /Framework/ 라이브러리 안에 있는 다음 프레임워크 문서들을 구현합니다. 자세한 구현 패턴, 감사 루브릭, 정식 레퍼런스는 해당 문서를 참고하세요.

  • framework-technicalseo.md — 크롤링 가능성, 인덱싱, 정규화, 리다이렉트, URL 구조
  • framework-schema.md — JSON‑LD, @id 그래프 패턴, Organization/Person/WebSite/BreadcrumbList
  • framework-pageexperience.md — Core Web Vitals(LCP, INP, CLS), 모바일 사용성, HTTPS
  • framework-internallinking.md — Hub‑and‑spoke 아키텍처, 앵커 텍스트, 크롤 깊이
  • framework-mobileseo.md — Mobile‑first 인덱싱, 모바일 사용성
  • framework-security.md — 보안 헤더, HSTS, 전반적인 보안 자세

  • WordPress 퍼머링크를 /​%postname%/ 로 설정하고, Next.js에서는 파일 기반 라우팅을 사용하되 Trailing‑slash 정책을 일관되게 적용합니다(하나 선택하고 사이트 전체에 고수).

  • 모든 페이지에 <link rel="canonical" href="self‑referencing‑URL"> 를 추가합니다(정규화 페이지에 한함).

  • 인덱싱 가능한 페이지에 <meta name="robots" content="index, follow"> 를 삽입합니다.

  • .htaccess 또는 nginx.conf 에서 소문자 URL 로 강제 변환해 대소문자 중복 인덱싱을 방지합니다.

  • www / non‑wwwhttp / https단일 301 리다이렉트 로 해결합니다(체인 없이 한 번만).

  • GSC에서 표시된 얇은 페이지, 중복 페이지, 고아 페이지를 301 또는 410 으로 처리합니다.

  • 검증: Screaming Frog 크롤링 결과 중복된 canonical, 리다이렉트 체인, 혼합 대소문자 URL이 0건이어야 합니다.

  • 모든 페이지는 홈페이지에서 최대 3번 클릭 이내에 도달하도록 제한합니다( Sitebulb의 Crawl Depth 보고서로 확인).

  • 비홈페이지 템플릿마다 BreadcrumbList JSON‑LD가 포함된 브레드크럼 내비게이션을 추가합니다.

  • 최상위 섹션과 주요 페이지를 모두 나열한 공개 /sitemap.html 을 구축합니다.

  • Hub‑and‑spoke 토픽 클러스터 구현: 피러 페이지가 5 ~ 15개의 서브 페이지에 링크하고, 각 서브 페이지가 다시 피러 페이지에 링크합니다.

  • 내부 링크에 설명적인 앵커 텍스트 사용(“click here”, “read more” 등은 금지, 문맥이 있는 텍스트 사용).

  • URL 슬러그는 60자 이하, 불용어 없이, 하이픈만 사용합니다.

  • 검증: 크롤 깊이 보고서에서 깊이 3을 초과하는 페이지가 0건이어야 하며, 브레드크럼은 Rich Results Test에서 통과해야 합니다.

  • 각 페이지마다 고유한 <title> 태그를 50 ~ 60자 길이로, 주요 키워드를 앞쪽에 배치해 작성합니다.

  • 각 페이지마다 고유한 <meta name="description"> 를 140 ~ 160자 길이로, 능동형 어조와 CTA를 포함해 작성합니다.

  • 완전한 Open Graph 세트 추가: og:title, og:description, og:image(1200×630), og:type, og:url

  • Twitter Card 태그 추가: twitter:card="summary_large_image", twitter:title, twitter:description, twitter:image

  • 모바일 브라우저 크롬에 맞는 브랜드 색상을 매치시킵니다.

  • 언어 신호를 위해 <meta name="language"><html lang="..."> 를 삽입합니다.

  • 검증: 모든 URL을 metatags.ioOpenGraph.xyz 로 검사하고, 스크린샷이 기대 프리뷰와 일치하는지 확인합니다.

  • 모든 페이지 <head>OrganizationWebSite JSON‑LD 를 삽입하고, SearchAction을 이용해 사이트링크 검색을 지원합니다.

  • 물리적 주소가 있는 비즈니스는 LocalBusiness 스키마에 전체 NAP, 영업시간, 지리 좌표, areaServed 를 포함합니다.

  • 기사 페이지에는 Article + Author(Person) + datePublished + dateModified JSON‑LD 를 추가합니다.

  • 서비스 페이지에는 Service 스키마에 제공자, areaServed, hasOfferCatalog 를 포함합니다.

  • FAQ 섹션이 실제 질문에 답변할 경우에만 FAQPage JSON‑LD 를 삽입합니다.

  • 모든 @id 값에 절대 URL 을 사용해 스키마 간 교차 연결을 가능하게 합니다.

  • 검증: 모든 페이지가 Google Rich Results Test와 Schema.org Validator를 통과하고 오류가 0이어야 합니다.

  • Yoast, Rank Math 혹은 프레임워크 플러그인(Next.js: next-sitemap)을 이용해 동적 XML 사이트맵을 활성화합니다.

  • 콘텐츠 편집 시마다 사이트맵이 업데이트 되도록 설정하고, 발행 시에만이 아니라 편집 시에도 반영합니다.

  • URL 수가 50,000개 또는 파일 크기가 50 MB를 초과하면 사이트맵 인덱스로 분할합니다.

  • noindex 페이지, 리다이렉트, 파라미터 URL은 사이트맵에서 제외합니다.

  • 필요 시 이미지 사이트맵과 비디오 사이트맵을 별도로 추가합니다.

  • Google Search Console과 Bing Webmaster Tools에 사이트맵 URL을 제출합니다.

  • 검증: 사이트맵이 HTTP 200을 반환하고 XML 형식이 정상이며, 나열된 모든 URL이 인덱싱 가능해야 합니다.

  • 루트에 정확히 다음과 같은 robots.txt 를 생성합니다:

    User-agent: *
    Allow: /
    Disallow: /wp-admin/
    Disallow: /staging/
    Disallow: /*?*sessionid=
    
    Sitemap: https://yourdomain.com/sitemap.xml
  • User-agent: GPTBot, User-agent: ClaudeBot, User-agent: PerplexityBot 규칙을 명시적으로 추가하고(허용/차단은 클라이언트 요구에 따라)

  • 알려진 스크래퍼 봇(SemrushBot, AhrefsBot)은 클라이언트 요청 시에만 차단하고 기본값은 차단하지 않습니다.

  • CSS, JS, 이미지 디렉터리는 절대 차단하지 않으며, Google이 페이지를 렌더링하는 데 필요합니다.

  • 배포 전 Google Search Console의 robots.txt 테스터 로 검증합니다.

  • 검증: yourdomain.com/robots.txt 가 HTTP 200 텍스트를 반환하고, GSC 테스터에서 중요한 리소스가 차단되지 않아야 합니다.

  • 301 리다이렉트는 서버 설정(.htaccess, nginx, Cloudflare Rules) 을 통해서만 추가하고, JavaScript나 meta refresh는 절대 사용하지 않습니다.

  • 리다이렉트 체인을 제거하고, 모든 리다이렉트가 최종 URL로 바로 연결되도록 합니다.

  • GSC Coverage 보고서에 나타난 404 오류는 가장 관련성 높은 살아있는 URL로 301 이동하거나, 의도적으로 사라진 경우 410 을 반환합니다.

  • 302는 진정한 임시 리다이렉트(A/B 테스트, 시즌 페이지)일 때만 사용합니다.

  • 사이트 마이그레이션이나 구조 재조정 시 리다이렉트 매핑 스프레드시트를 유지합니다.

  • 검증: Screaming Frog가 리다이렉트 체인 0건, 영구 이동에 302 사용 0건, 사이트맵 내 4xx 오류 0

0 조회
Back to Blog

관련 글

더 보기 »

내 스킬

프로젝트를 위한 AI 지시문을 만들고, 설치하고, 관리하세요 — 코딩이 필요 없습니다. CREATE 이름을 정하고, 카테고리를 선택하고, 원하는 것을 설명하세요 — 마법사가 자동으로 구성합니다.