개발자 블로그·포트폴리오 SEO, 제대로 하는 법

발행 읽는 시간 약 7 분

  • SEO
  • 개발자블로그
  • 포트폴리오
  • 검색엔진
  • Next.js
  • 구글서치콘솔

글 소개

구글에 잘 잡히는 사이트를 만들기 위해 개발자가 직접 챙겨야 할 기술적 SEO 항목들을 실무 중심으로 정리했습니다.

개발자 블로그를 운영하면서 이런 생각 한 번쯤 해보셨을 겁니다. "글은 열심히 쓰는데 왜 아무도 안 찾아오지?"

콘텐츠가 좋아도 구글이 내 사이트를 제대로 이해하지 못하면, 검색 결과에서 좋은 자리를 차지하기 어렵습니다. SEO(Search Engine Optimization)는 그 간극을 좁히는 작업입니다.

마케터들이 말하는 SEO가 아니라, 개발자가 직접 사이트를 만들고 운영할 때 챙겨야 하는 기술 SEO를 이야기합니다. 이 블로그도 같은 고민을 하면서 적용한 내용들입니다.


구글은 내 사이트를 어떻게 이해할까요?#

SEO를 잘하려면 구글이 사이트를 어떻게 탐색하는지부터 알아야 합니다.

구글에는 크롤러(crawler) 라는 프로그램이 있습니다. 흔히 '봇' 또는 '스파이더'라고도 부릅니다. 이 크롤러가 인터넷을 돌아다니며 페이지를 방문하고, 내용을 읽어서 색인(index) 에 저장합니다. 그리고 누군가 검색어를 입력하면, 저장해둔 색인에서 가장 관련도 높은 페이지들을 순서대로 보여줍니다.

SEO는 크게 두 단계에서 이루어집니다.

  1. 크롤링과 색인: 구글 봇이 내 사이트를 방문해서 페이지 내용을 저장하게 하기
  2. 순위 결정: 저장된 페이지가 검색 결과에서 더 앞에 뜨게 하기

기술 SEO는 주로 1단계, 즉 "구글이 내 사이트를 제대로 읽을 수 있게 하는 것"에 집중합니다.


sitemap.xml — 구글에게 지도를 건네는 것#

사이트맵은 내 사이트에 어떤 페이지들이 있는지 목록을 정리한 XML 파일입니다. 구글 봇에게 "우리 사이트 이렇게 생겼어, 이 페이지들 꼭 봐줘"라고 알려주는 용도입니다.

사이트맵이 없어도 구글은 사이트를 발견할 수 있습니다. 하지만 있으면 훨씬 빠르고 빠짐없이 색인됩니다. 특히 새로 만든 사이트, 페이지가 많은 사이트, 외부 링크가 거의 없는 사이트일수록 사이트맵의 역할이 중요합니다.

Next.js App Router를 쓴다면 app/sitemap.ts 파일을 만들어서 동적으로 생성할 수 있습니다.

TypeScript
// app/sitemap.ts
import { MetadataRoute } from 'next'

export default function sitemap(): MetadataRoute.Sitemap {
  return [
    {
      url: 'https://yourdomain.com',
      lastModified: new Date(),
      changeFrequency: 'monthly',
      priority: 1,
    },
    {
      url: 'https://yourdomain.com/blog',
      lastModified: new Date(),
      changeFrequency: 'weekly',
      priority: 0.8,
    },
    // 블로그 포스트들은 CMS나 파일 목록에서 동적으로 추가
  ]
}

만들었으면 Google Search Console에서 사이트맵 제출을 해주세요. 수동 제출이 없어도 언젠가는 발견되지만, 빠른 색인을 원한다면 직접 등록하는 게 낫습니다.


robots.txt — 크롤러에게 "여기는 들어오지 마"#

robots.txt는 크롤러에게 접근 허용/제한 영역을 알려주는 파일입니다. 도메인 루트에 위치해야 합니다(yourdomain.com/robots.txt).

Txt
User-agent: *
Allow: /

# 관리자 페이지, API 엔드포인트, 로그인 페이지 등은 제외
Disallow: /admin/
Disallow: /api/
Disallow: /_next/

Sitemap: https://yourdomain.com/sitemap.xml

주의할 점이 있습니다. 색인되길 원하는 페이지를 Disallow에 넣으면 절대 안 됩니다. 당연해 보이지만, CMS 이관이나 개발 환경 설정을 잘못하면 프로덕션에서도 전체 사이트가 막혀있는 경우가 종종 있습니다. 새 사이트를 론칭하면 꼭 확인하세요.

이 블로그의 경우, 포트폴리오 카테고리 중 일부는 검색 색인에서 의도적으로 제외했습니다. 특정 클라이언트 작업물은 공개 검색보다는 직접 방문자에게만 보여주는 게 적합했기 때문입니다. SEO와 비즈니스 목적이 항상 일치하지 않을 수 있습니다.


메타 태그 — 검색 결과에 표시되는 '광고판'#

검색 결과에서 파란색 제목과 그 아래 설명 텍스트, 보신 적 있으시죠? 그게 메타 태그에서 옵니다.

HTML
<title>개발자 블로그 SEO 가이드 | 파란여우</title>
<meta name="description" content="구글에 잘 잡히는 사이트를 만들기 위해 개발자가 직접 챙겨야 할 기술적 SEO 항목들을 실무 중심으로 정리했습니다.">

title 태그: 검색 결과에서 클릭률을 가장 크게 좌우합니다. 50~60자 이내로 페이지 내용을 명확하게 담는 게 좋습니다. 모든 페이지가 같은 제목이면 안 됩니다.

description: 검색 결과에 표시되는 설명입니다. 직접 순위에는 영향을 주지 않지만, 클릭률에는 영향을 줍니다. 150~160자로 요점을 담으세요. 구글이 마음에 들지 않으면 무시하고 본문에서 발췌하기도 합니다.

Next.js에서는 각 페이지 파일에 export const metadata를 선언해서 처리합니다.

TypeScript
// app/blog/[slug]/page.tsx
export async function generateMetadata({ params }) {
  const post = await getPost(params.slug)
  return {
    title: `${post.title} | 파란여우`,
    description: post.description,
    openGraph: {
      title: post.title,
      description: post.description,
      images: [post.thumbnail],
    },
  }
}

OG 태그(Open Graph) 도 함께 챙기세요. 카카오톡이나 SNS에서 링크를 공유할 때 나오는 미리보기 이미지와 제목이 OG 태그에서 나옵니다. SEO 직접 효과는 없지만, 공유가 잘 되면 방문자가 늘고 그게 간접적으로 SEO에 영향을 줍니다.


구조화 데이터 — 검색 결과를 더 풍성하게#

구조화 데이터(Structured Data)는 구글에게 "이 페이지는 블로그 포스트야, 작성자는 이 사람이고, 작성일은 이 날짜야"처럼 기계가 읽기 좋은 형식으로 정보를 추가하는 방법입니다. JSON-LD 형식으로 작성합니다.

구조화 데이터를 잘 넣으면 검색 결과에서 리치 스니펫(Rich Snippet) 이라는 추가 정보가 표시될 수 있습니다. 예를 들어 레시피 사이트라면 별점과 요리 시간이, FAQ 페이지라면 질문-답변이 바로 검색 결과에 펼쳐지는 식입니다.

블로그라면 Article 스키마가 기본입니다.

HTML
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "개발자 블로그 SEO 완전 가이드",
  "author": {
    "@type": "Person",
    "name": "파란여우",
    "url": "https://bluefoxdev.kr"
  },
  "datePublished": "2026-04-08",
  "dateModified": "2026-04-08",
  "description": "구글에 잘 잡히는 사이트를 만드는 방법",
  "image": "https://bluefoxdev.kr/og-image.jpg"
}
</script>

구현 후에는 구글 리치 결과 테스트(새 창)에서 오류 없이 파싱되는지 확인하면 됩니다.


카노니컬 태그 — 중복 페이지 문제 해결#

같은 내용이 여러 URL에서 접근 가능한 경우가 있습니다. 예를 들어 페이지네이션이 있는 목록 페이지, 또는 ?utm_source= 같은 트래킹 파라미터가 붙은 URL들입니다.

구글은 이걸 별개의 페이지로 인식해서 어느 페이지를 원본으로 색인해야 할지 혼란스러워합니다. 이때 카노니컬 태그로 "이 페이지의 원본은 여기야"라고 알려주면 됩니다.

HTML
<link rel="canonical" href="https://yourdomain.com/blog/seo-guide" />

Next.js의 metadata 에서는 아래처럼 씁니다.

TypeScript
export const metadata = {
  alternates: {
    canonical: 'https://yourdomain.com/blog/seo-guide',
  },
}

작은 항목처럼 보이지만, 카노니컬이 제대로 안 잡혀 있으면 구글이 SEO 점수를 여러 URL에 분산시켜버립니다.


내부 링크 전략 — 검색 엔진에게 길을 만들어주기#

구글 봇은 링크를 따라 사이트를 탐색합니다. 링크가 없는 페이지(고아 페이지)는 발견되지 않을 수 있습니다.

내부 링크를 잘 구성하면 두 가지 효과가 있습니다.

첫째, 크롤링이 원활해집니다. 모든 페이지가 메인 페이지나 목록 페이지에서 링크로 연결되어 있으면, 봇이 빠짐없이 방문할 수 있습니다.

둘째, 페이지 권위(Page Authority)가 전달됩니다. 구글은 링크를 '투표'처럼 봅니다. 많은 페이지에서 링크된 페이지일수록 중요하다고 판단합니다. 내 사이트의 핵심 콘텐츠 페이지로 내부 링크가 많이 모이도록 구성하면, 그 페이지의 검색 순위가 올라갈 수 있습니다.

실제로 블로그를 운영할 때 관련 글끼리 "이 글도 읽어보세요" 형태로 연결하는 것, 그리고 목록 페이지에서 개별 포스트로 제목 링크를 명확히 거는 것만으로도 효과가 있습니다.


Google Search Console 활용법#

Search Console은 구글이 내 사이트를 어떻게 보고 있는지 들여다볼 수 있는 무료 도구입니다. SEO에 진지하다면 반드시 연결해야 합니다.

꼭 확인해야 할 메뉴들:

  • 검색 결과 (Performance): 내 사이트가 어떤 검색어로 노출되고, 클릭률은 얼마인지 확인합니다. 노출은 많은데 클릭이 낮은 키워드는 제목/설명 개선의 여지가 있습니다.
  • URL 검사: 특정 페이지가 색인되어 있는지, 어떤 상태인지 확인합니다. 새 글을 올렸을 때 빠른 색인을 요청할 수도 있습니다.
  • 색인 생성 (Indexing): 색인이 안 된 페이지들과 그 이유를 보여줍니다. "크롤링됨 - 현재 색인이 생성되지 않음" 상태가 많으면 사이트 구조나 콘텐츠 품질 문제일 수 있습니다.
  • 코어 웹 바이탈: 실제 방문자 기준 Core Web Vitals 점수입니다.

처음 연결하면 데이터가 쌓이기까지 2~4주 정도 걸립니다. 그 이후부터 의미 있는 데이터를 볼 수 있습니다.


콘텐츠가 기반이다#

기술 SEO를 아무리 잘 챙겨도 콘텐츠가 빈약하면 한계가 있습니다. 구글의 검색 품질 평가 기준에서 가장 중요한 것은 E-E-A-T(Experience, Expertise, Authoritativeness, Trustworthiness) 입니다. 직접 경험한 내용, 전문성, 신뢰성을 갖춘 콘텐츠입니다.

개발자 블로그라면 이런 글이 잘 먹힙니다.

  • 실제 개발 과정에서 막혔던 문제와 해결 과정
  • 특정 기술의 장단점을 직접 써본 후 정리한 비교
  • 공식 문서에는 없는 실전 노하우

자동 생성된 것처럼 보이는 얄팍한 글은 구글도 걸러냅니다. 2024년부터 구글은 AI로 대량 생성된 저품질 콘텐츠를 색인에서 적극적으로 걸러내기 시작했습니다.


정리: 지금 당장 할 수 있는 것들#

SEO는 단기간에 효과가 나오지 않습니다. 평균적으로 기술적 개선 후 3~6개월이 지나야 순위 변화가 가시화됩니다. 그렇기 때문에 지금 시작하는 게 맞습니다.

오늘 바로 할 수 있는 것:

  1. Google Search Console(새 창)에 사이트 등록
  2. PageSpeed Insights에서 현재 점수 확인
  3. 사이트맵 생성 및 제출

이번 주 안에 할 것: 4. 모든 페이지의 title, description 메타 태그 점검 5. robots.txt 확인 — 막혀있는 중요 페이지 없는지 체크 6. 이미지에 alt 텍스트 추가

SEO는 한 번 잘 세팅해두면 꾸준히 방문자를 데려오는 '자산'이 됩니다. 광고비를 쓰지 않아도 되는 채널입니다. 개발자라면 기술적인 부분에서 충분히 직접 챙길 수 있습니다. 마케터에게 의존하지 않아도 됩니다.

Follow · Ask · Work

이 글이 도움이 됐다면

짧은 작업 기록과 데모는 인스타그램에 올립니다. 만들고 싶은 것이 있다면 프로젝트 의뢰나 협업 제안도 편하게 보내 주세요.

글쓴이

파란여우

직접 만든 AI 앱·제품의 개발·배포를 공개하는 실전형 테크 크리에이터

파란여우 소개 Instagram @bluefox._.hi

시리즈 · 개발 노트

시리즈 전체 보기

SEO 글 더 보기

이어서 보기

만들고 싶은 것이 있다면 프로젝트 의뢰로 알려 주세요.