12. SEO 기초 (Search Engine Optimization)

12. SEO 기초 (Search Engine Optimization)

ν•™μŠ΅ λͺ©ν‘œ

  • SEO의 κΈ°λ³Έ 원리와 μ€‘μš”μ„± 이해
  • 기술적 SEO μš”μ†Œ κ΅¬ν˜„
  • 메타 νƒœκ·Έμ™€ ꡬ쑰화 데이터 ν™œμš©
  • μ½˜ν…μΈ  μ΅œμ ν™” μ „λž΅ ν•™μŠ΅
  • SEO 도ꡬ ν™œμš©λ²• μŠ΅λ“

λͺ©μ°¨

  1. SEO κ°œμš”
  2. 메타 νƒœκ·Έ
  3. ꡬ쑰화 데이터
  4. 기술적 SEO
  5. μ½˜ν…μΈ  SEO
  6. μΈ‘μ •κ³Ό 도ꡬ
  7. μ—°μŠ΅ 문제

1. SEO κ°œμš”

1.1 SEOλž€?

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    SEO μ •μ˜ 및 λͺ©μ                               β”‚
β”‚                                                                 β”‚
β”‚   SEO (Search Engine Optimization):                            β”‚
β”‚   검색 μ—”μ§„ κ²°κ³Ό νŽ˜μ΄μ§€(SERP)μ—μ„œ μ›Ήμ‚¬μ΄νŠΈμ˜ κ°€μ‹œμ„±μ„             β”‚
β”‚   ν–₯μƒμ‹œν‚€λŠ” κ³Όμ •                                                β”‚
β”‚                                                                 β”‚
β”‚   λͺ©μ :                                                         β”‚
β”‚   - 유기적(Organic) νŠΈλž˜ν”½ 증가                                 β”‚
β”‚   - λΈŒλžœλ“œ 인지도 ν–₯상                                          β”‚
β”‚   - 신뒰도 ꡬ좕                                                 β”‚
β”‚   - μ „ν™˜μœ¨ κ°œμ„                                                  β”‚
β”‚                                                                 β”‚
β”‚   검색 μ—”μ§„ μž‘λ™ 원리:                                           β”‚
β”‚   1. 크둀링 (Crawling): μ›Ή νŽ˜μ΄μ§€ 발견                          β”‚
β”‚   2. 인덱싱 (Indexing): μ½˜ν…μΈ  뢄석 및 μ €μž₯                     β”‚
β”‚   3. λž­ν‚Ή (Ranking): 검색어에 λ”°λ₯Έ μˆœμœ„ κ²°μ •                    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

1.2 SEO μœ ν˜•

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    SEO μœ ν˜• λΆ„λ₯˜                                 β”‚
β”‚                                                                 β”‚
β”‚   μ˜¨νŽ˜μ΄μ§€ SEO (On-page):                                       β”‚
β”‚   - 메타 νƒœκ·Έ (title, description)                             β”‚
β”‚   - μ½˜ν…μΈ  ν’ˆμ§ˆ                                                 β”‚
β”‚   - ν‚€μ›Œλ“œ μ΅œμ ν™”                                               β”‚
β”‚   - 이미지 μ΅œμ ν™”                                               β”‚
β”‚   - λ‚΄λΆ€ 링크                                                   β”‚
β”‚                                                                 β”‚
β”‚   μ˜€ν”„νŽ˜μ΄μ§€ SEO (Off-page):                                    β”‚
β”‚   - 백링크 (λ‹€λ₯Έ μ‚¬μ΄νŠΈμ—μ„œμ˜ 링크)                             β”‚
β”‚   - μ†Œμ…œ μ‹œκ·Έλ„                                                 β”‚
β”‚   - λΈŒλžœλ“œ λ©˜μ…˜                                                 β”‚
β”‚   - 게슀트 ν¬μŠ€νŒ…                                               β”‚
β”‚                                                                 β”‚
β”‚   기술적 SEO (Technical):                                       β”‚
β”‚   - μ‚¬μ΄νŠΈ 속도                                                 β”‚
β”‚   - λͺ¨λ°”일 μΉœν™”μ„±                                               β”‚
β”‚   - HTTPS                                                       β”‚
β”‚   - ꡬ쑰화 데이터                                               β”‚
β”‚   - 크둀링/인덱싱 μ œμ–΄                                          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

2. 메타 νƒœκ·Έ

2.1 ν•„μˆ˜ 메타 νƒœκ·Έ

<!DOCTYPE html>
<html lang="ko">
<head>
  <!-- 문자 인코딩 -->
  <meta charset="UTF-8">

  <!-- λ°˜μ‘ν˜• 뷰포트 -->
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <!-- νŽ˜μ΄μ§€ 제λͺ© (50-60자 ꢌμž₯) -->
  <title>μ›Ή 개발 기초 κ°€μ΄λ“œ - 초보자λ₯Ό μœ„ν•œ μ™„λ²½ν•œ νŠœν† λ¦¬μ–Ό | μ‚¬μ΄νŠΈλͺ…</title>

  <!-- 메타 μ„€λͺ… (150-160자 ꢌμž₯) -->
  <meta name="description" content="HTML, CSS, JavaScript의 κΈ°μ΄ˆλΆ€ν„° μ‹€μ „κΉŒμ§€.
    μ›Ή 개발 μž…λ¬Έμžλ₯Ό μœ„ν•œ 단계별 κ°€μ΄λ“œ. 무료 예제 μ½”λ“œμ™€ ν•¨κ»˜ λ°°μš°μ„Έμš”.">

  <!-- 검색 μ—”μ§„ μ§€μ‹œμ‚¬ν•­ -->
  <meta name="robots" content="index, follow">

  <!-- 정식 URL (쀑볡 μ½˜ν…μΈ  λ°©μ§€) -->
  <link rel="canonical" href="https://example.com/web-development-guide">
</head>
</html>

2.2 Open Graph (μ†Œμ…œ λ―Έλ””μ–΄)

<!-- Facebook / LinkedIn -->
<meta property="og:type" content="article">
<meta property="og:title" content="μ›Ή 개발 기초 κ°€μ΄λ“œ">
<meta property="og:description" content="초보자λ₯Ό μœ„ν•œ μ™„λ²½ν•œ μ›Ή 개발 νŠœν† λ¦¬μ–Ό">
<meta property="og:image" content="https://example.com/images/og-image.jpg">
<meta property="og:url" content="https://example.com/web-development-guide">
<meta property="og:site_name" content="μ‚¬μ΄νŠΈλͺ…">
<meta property="og:locale" content="ko_KR">

<!-- 이미지 ꢌμž₯ μ‚¬μ΄μ¦ˆ: 1200x630px -->
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="μ›Ή 개발 κ°€μ΄λ“œ 썸넀일">

2.3 Twitter Card

<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@username">
<meta name="twitter:creator" content="@author">
<meta name="twitter:title" content="μ›Ή 개발 기초 κ°€μ΄λ“œ">
<meta name="twitter:description" content="초보자λ₯Ό μœ„ν•œ μ™„λ²½ν•œ μ›Ή 개발 νŠœν† λ¦¬μ–Ό">
<meta name="twitter:image" content="https://example.com/images/twitter-image.jpg">

<!-- μΉ΄λ“œ νƒ€μž…: summary, summary_large_image, app, player -->

2.4 기타 μ€‘μš” 메타 νƒœκ·Έ

<!-- μ–Έμ–΄/μ§€μ—­ μ„€μ • -->
<link rel="alternate" hreflang="ko" href="https://example.com/ko/">
<link rel="alternate" hreflang="en" href="https://example.com/en/">
<link rel="alternate" hreflang="x-default" href="https://example.com/">

<!-- νŒŒλΉ„μ½˜ -->
<link rel="icon" type="image/x-icon" href="/favicon.ico">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">

<!-- ν…Œλ§ˆ 색상 (λͺ¨λ°”일 λΈŒλΌμš°μ €) -->
<meta name="theme-color" content="#4285f4">

<!-- μž‘μ„±μž 정보 -->
<meta name="author" content="μž‘μ„±μž 이름">

<!-- λ°œν–‰μΌ/μˆ˜μ •μΌ -->
<meta property="article:published_time" content="2024-01-15T09:00:00+09:00">
<meta property="article:modified_time" content="2024-03-20T14:30:00+09:00">

3. ꡬ쑰화 데이터

3.1 JSON-LD κΈ°λ³Έ

<!-- JSON-LD ꡬ쑰화 데이터 (ꢌμž₯ ν˜•μ‹) -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebPage",
  "name": "μ›Ή 개발 기초 κ°€μ΄λ“œ",
  "description": "초보자λ₯Ό μœ„ν•œ μ™„λ²½ν•œ μ›Ή 개발 νŠœν† λ¦¬μ–Ό",
  "url": "https://example.com/web-development-guide"
}
</script>

3.2 쑰직 정보

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "νšŒμ‚¬λͺ…",
  "url": "https://example.com",
  "logo": "https://example.com/logo.png",
  "sameAs": [
    "https://www.facebook.com/company",
    "https://www.twitter.com/company",
    "https://www.linkedin.com/company/company"
  ],
  "contactPoint": {
    "@type": "ContactPoint",
    "telephone": "+82-2-1234-5678",
    "contactType": "customer service",
    "availableLanguage": ["Korean", "English"]
  }
}
</script>

3.3 기사/λΈ”λ‘œκ·Έ 포슀트

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "μ›Ή 개발 기초 κ°€μ΄λ“œ",
  "description": "초보자λ₯Ό μœ„ν•œ μ™„λ²½ν•œ μ›Ή 개발 νŠœν† λ¦¬μ–Ό",
  "image": [
    "https://example.com/images/1x1.jpg",
    "https://example.com/images/4x3.jpg",
    "https://example.com/images/16x9.jpg"
  ],
  "author": {
    "@type": "Person",
    "name": "μž‘μ„±μž 이름",
    "url": "https://example.com/author"
  },
  "publisher": {
    "@type": "Organization",
    "name": "μ‚¬μ΄νŠΈλͺ…",
    "logo": {
      "@type": "ImageObject",
      "url": "https://example.com/logo.png"
    }
  },
  "datePublished": "2024-01-15",
  "dateModified": "2024-03-20",
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://example.com/web-development-guide"
  }
}
</script>

3.4 FAQ νŽ˜μ΄μ§€

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "HTMLμ΄λž€ λ¬΄μ—‡μΈκ°€μš”?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "HTML(HyperText Markup Language)은 μ›Ή νŽ˜μ΄μ§€μ˜ ꡬ쑰λ₯Ό μ •μ˜ν•˜λŠ” λ§ˆν¬μ—… μ–Έμ–΄μž…λ‹ˆλ‹€."
      }
    },
    {
      "@type": "Question",
      "name": "CSSλŠ” 어디에 μ‚¬μš©λ˜λ‚˜μš”?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "CSS(Cascading Style Sheets)λŠ” μ›Ή νŽ˜μ΄μ§€μ˜ μ‹œκ°μ  μŠ€νƒ€μΌμ„ μ •μ˜ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€."
      }
    }
  ]
}
</script>

3.5 μ œν’ˆ 정보

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "μ œν’ˆλͺ…",
  "image": "https://example.com/product.jpg",
  "description": "μ œν’ˆ μ„€λͺ…",
  "sku": "SKU12345",
  "brand": {
    "@type": "Brand",
    "name": "λΈŒλžœλ“œλͺ…"
  },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/product",
    "priceCurrency": "KRW",
    "price": "99000",
    "availability": "https://schema.org/InStock",
    "seller": {
      "@type": "Organization",
      "name": "판맀자λͺ…"
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.5",
    "reviewCount": "128"
  }
}
</script>

3.6 λΈŒλ ˆλ“œν¬λŸΌ

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "ν™ˆ",
      "item": "https://example.com"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "νŠœν† λ¦¬μ–Ό",
      "item": "https://example.com/tutorials"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "μ›Ή 개발",
      "item": "https://example.com/tutorials/web-development"
    }
  ]
}
</script>

4. 기술적 SEO

4.1 μ‚¬μ΄νŠΈλ§΅ (sitemap.xml)

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/</loc>
    <lastmod>2024-03-20</lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://example.com/about</loc>
    <lastmod>2024-02-15</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://example.com/blog/post-1</loc>
    <lastmod>2024-03-18</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.6</priority>
  </url>
</urlset>

4.2 robots.txt

# robots.txt
User-agent: *
Allow: /
Disallow: /admin/
Disallow: /private/
Disallow: /api/
Disallow: /*?*  # URL νŒŒλΌλ―Έν„° μ œμ™Έ

# μ‚¬μ΄νŠΈλ§΅ μœ„μΉ˜
Sitemap: https://example.com/sitemap.xml

# νŠΉμ • 봇 μ„€μ •
User-agent: Googlebot
Allow: /
Crawl-delay: 1

User-agent: Bingbot
Crawl-delay: 5

4.3 νŽ˜μ΄μ§€ 속도 μ΅œμ ν™”

<!-- λ¦¬μ†ŒμŠ€ 힌트 -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="dns-prefetch" href="https://cdn.example.com">
<link rel="preload" href="/fonts/main.woff2" as="font" type="font/woff2" crossorigin>

<!-- 이미지 μ΅œμ ν™” -->
<img
  src="image.webp"
  alt="μ„€λͺ…"
  width="800"
  height="600"
  loading="lazy"
  decoding="async"
>

<!-- λ°˜μ‘ν˜• 이미지 -->
<picture>
  <source media="(min-width: 800px)" srcset="large.webp">
  <source media="(min-width: 400px)" srcset="medium.webp">
  <img src="small.webp" alt="μ„€λͺ…">
</picture>

<!-- CSS μ΅œμ ν™” -->
<link rel="stylesheet" href="critical.css">
<link rel="stylesheet" href="non-critical.css" media="print" onload="this.media='all'">

<!-- JavaScript μ΅œμ ν™” -->
<script src="app.js" defer></script>
<script src="analytics.js" async></script>

4.4 Core Web Vitals

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Core Web Vitals μ§€ν‘œ                          β”‚
β”‚                                                                 β”‚
β”‚   LCP (Largest Contentful Paint):                              β”‚
β”‚   - κ°€μž₯ 큰 μ½˜ν…μΈ  μš”μ†Œ λ‘œλ”© μ‹œκ°„                                β”‚
β”‚   - λͺ©ν‘œ: 2.5초 이내                                            β”‚
β”‚   - κ°œμ„ : 이미지 μ΅œμ ν™”, μ„œλ²„ 응닡 μ‹œκ°„                          β”‚
β”‚                                                                 β”‚
β”‚   FID (First Input Delay) β†’ INP (Interaction to Next Paint):   β”‚
β”‚   - 첫 μƒν˜Έμž‘μš© μ§€μ—° μ‹œκ°„ β†’ 전체 μƒν˜Έμž‘μš© λ°˜μ‘μ„±                 β”‚
β”‚   - λͺ©ν‘œ: 100ms 이내 β†’ 200ms 이내                              β”‚
β”‚   - κ°œμ„ : JavaScript μ΅œμ ν™”, 메인 μŠ€λ ˆλ“œ 차단 μ΅œμ†Œν™”            β”‚
β”‚                                                                 β”‚
β”‚   CLS (Cumulative Layout Shift):                               β”‚
β”‚   - λ ˆμ΄μ•„μ›ƒ λ³€κ²½ λˆ„μ  점수                                      β”‚
β”‚   - λͺ©ν‘œ: 0.1 μ΄ν•˜                                              β”‚
β”‚   - κ°œμ„ : 이미지/κ΄‘κ³  크기 λͺ…μ‹œ, 폰트 λ‘œλ”© μ΅œμ ν™”               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

4.5 λͺ¨λ°”일 μ΅œμ ν™”

<!-- λͺ¨λ°”일 μΉœν™”μ  μ„€μ • -->
<meta name="viewport" content="width=device-width, initial-scale=1">

<!-- ν„°μΉ˜ νƒ€κ²Ÿ 크기 (μ΅œμ†Œ 48x48px) -->
<style>
button, a {
  min-height: 48px;
  min-width: 48px;
  padding: 12px 16px;
}
</style>

<!-- 가독성 (μ΅œμ†Œ 16px 폰트) -->
<style>
body {
  font-size: 16px;
  line-height: 1.5;
}
</style>

5. μ½˜ν…μΈ  SEO

5.1 ν‚€μ›Œλ“œ μ΅œμ ν™”

<!-- 타이틀에 μ£Όμš” ν‚€μ›Œλ“œ 포함 -->
<title>μ›Ή 개발 기초 | HTML, CSS, JavaScript νŠœν† λ¦¬μ–Ό</title>

<!-- H1은 νŽ˜μ΄μ§€λ‹Ή ν•˜λ‚˜, ν‚€μ›Œλ“œ 포함 -->
<h1>μ›Ή 개발 기초 κ°€μ΄λ“œ: HTML, CSS, JavaScript μ‹œμž‘ν•˜κΈ°</h1>

<!-- μžμ—°μŠ€λŸ¬μš΄ ν‚€μ›Œλ“œ 배치 -->
<p>
  <strong>μ›Ή 개발</strong>을 μ‹œμž‘ν•˜λ €λ©΄ HTML, CSS, JavaScript의
  기초λ₯Ό 이해해야 ν•©λ‹ˆλ‹€. 이 <em>μ›Ή 개발 νŠœν† λ¦¬μ–Ό</em>μ—μ„œλŠ”...
</p>

5.2 μ‹œλ§¨ν‹± λ§ˆν¬μ—…

<article>
  <header>
    <h1>μ›Ή 개발 기초 κ°€μ΄λ“œ</h1>
    <p>
      <time datetime="2024-03-20">2024λ…„ 3μ›” 20일</time> |
      <a href="/author/john">μž‘μ„±μž 이름</a>
    </p>
  </header>

  <section>
    <h2>HTML 기초</h2>
    <p>HTML은 μ›Ή νŽ˜μ΄μ§€μ˜ ꡬ쑰λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€...</p>
  </section>

  <section>
    <h2>CSS μŠ€νƒ€μΌλ§</h2>
    <p>CSSλŠ” μ‹œκ°μ  ν‘œν˜„μ„ λ‹΄λ‹Ήν•©λ‹ˆλ‹€...</p>
  </section>

  <aside>
    <h3>κ΄€λ ¨ κΈ€</h3>
    <ul>
      <li><a href="/css-layout">CSS λ ˆμ΄μ•„μ›ƒ λ§ˆμŠ€ν„°</a></li>
      <li><a href="/javascript-basics">JavaScript μž…λ¬Έ</a></li>
    </ul>
  </aside>

  <footer>
    <p>νƒœκ·Έ: <a href="/tag/html">HTML</a>, <a href="/tag/css">CSS</a></p>
  </footer>
</article>

5.3 링크 μ΅œμ ν™”

<!-- λ‚΄λΆ€ 링크 (λͺ…ν™•ν•œ 액컀 ν…μŠ€νŠΈ) -->
<a href="/css-tutorial">CSS νŠœν† λ¦¬μ–Ό 보기</a>
<!-- ν”Όν•΄μ•Ό ν•  것: <a href="/css-tutorial">μ—¬κΈ°λ₯Ό 클릭</a> -->

<!-- μ™ΈλΆ€ 링크 -->
<a href="https://developer.mozilla.org"
   target="_blank"
   rel="noopener noreferrer">
  MDN Web Docs
</a>

<!-- nofollow (μ‹ λ’°ν•˜μ§€ μ•ŠλŠ” 링크) -->
<a href="https://external-site.com" rel="nofollow">μ™ΈλΆ€ μ‚¬μ΄νŠΈ</a>

<!-- λΈŒλ ˆλ“œν¬λŸΌ -->
<nav aria-label="λΈŒλ ˆλ“œν¬λŸΌ">
  <ol>
    <li><a href="/">ν™ˆ</a></li>
    <li><a href="/tutorials">νŠœν† λ¦¬μ–Ό</a></li>
    <li aria-current="page">μ›Ή 개발 기초</li>
  </ol>
</nav>

5.4 URL ꡬ쑰

쒋은 URL ꡬ쑰:
βœ“ https://example.com/tutorials/web-development-basics
βœ“ https://example.com/products/electronics/smartphones

ν”Όν•΄μ•Ό ν•  URL:
βœ— https://example.com/page?id=123&cat=5
βœ— https://example.com/p/a/b/c/d/e/article
βœ— https://example.com/μ›Ήκ°œλ°œ (ν•œκΈ€ URL은 인코딩됨)

κ·œμΉ™:
- μ†Œλ¬Έμž μ‚¬μš©
- ν•˜μ΄ν”ˆ(-) 으둜 단어 ꡬ뢄
- κ°„κ²°ν•˜κ³  μ„€λͺ…적
- 계측 ꡬ쑰 반영
- λΆˆν•„μš”ν•œ νŒŒλΌλ―Έν„° 제거

6. μΈ‘μ •κ³Ό 도ꡬ

6.1 Google Search Console

μ£Όμš” κΈ°λŠ₯:
- 검색 μ„±λŠ₯ 뢄석 (클릭, λ…ΈμΆœ, CTR, μˆœμœ„)
- 색인 μƒνƒœ 확인
- μ‚¬μ΄νŠΈλ§΅ 제좜
- 크둀링 였λ₯˜ 확인
- Core Web Vitals 리포트
- λͺ¨λ°”일 μ‚¬μš©μ„± 리포트

μ„€μ •:
1. Google Search Console 접속
2. μ‚¬μ΄νŠΈ μ†Œμœ κΆŒ 확인 (HTML νƒœκ·Έ, DNS, 파일 μ—…λ‘œλ“œ)
3. μ‚¬μ΄νŠΈλ§΅ 제좜

6.2 Google Analytics 4

<!-- GA4 μ„€μΉ˜ -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'G-XXXXXXXXXX');
</script>

<!-- 이벀트 좔적 -->
<script>
  // λ²„νŠΌ 클릭 좔적
  document.querySelector('.cta-button').addEventListener('click', () => {
    gtag('event', 'cta_click', {
      'event_category': 'engagement',
      'event_label': 'signup_button'
    });
  });
</script>

6.3 SEO 도ꡬ듀

무료 도ꡬ:
- Google Search Console: 검색 μ„±λŠ₯, 색인 μƒνƒœ
- Google PageSpeed Insights: νŽ˜μ΄μ§€ 속도
- Lighthouse: μ’…ν•© μ›Ήμ‚¬μ΄νŠΈ ν’ˆμ§ˆ μΈ‘μ •
- Screaming Frog (무료 버전): 크둀링, μ‚¬μ΄νŠΈ 뢄석
- Google Rich Results Test: ꡬ쑰화 데이터 ν…ŒμŠ€νŠΈ

유료 도ꡬ:
- Ahrefs: 백링크 뢄석, ν‚€μ›Œλ“œ λ¦¬μ„œμΉ˜
- SEMrush: κ²½μŸμ‚¬ 뢄석, ν‚€μ›Œλ“œ 좔적
- Moz Pro: 도메인 κΆŒμœ„λ„, SEO 뢄석

6.4 체크리슀트

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   SEO 점검 체크리슀트                            β”‚
β”‚                                                                 β”‚
β”‚ κΈ°λ³Έ μ„€μ •:                                                       β”‚
β”‚ β–‘ κ³ μœ ν•˜κ³  μ„€λͺ…적인 title νƒœκ·Έ                                   β”‚
β”‚ β–‘ λ§€λ ₯적인 meta description                                      β”‚
β”‚ β–‘ μ μ ˆν•œ canonical URL                                          β”‚
β”‚ β–‘ robots.txt μ„€μ •                                                β”‚
β”‚ β–‘ sitemap.xml 생성 및 제좜                                      β”‚
β”‚ β–‘ HTTPS 적용                                                     β”‚
β”‚                                                                 β”‚
β”‚ μ½˜ν…μΈ :                                                          β”‚
β”‚ β–‘ H1 νƒœκ·Έ (νŽ˜μ΄μ§€λ‹Ή ν•˜λ‚˜)                                       β”‚
β”‚ β–‘ 논리적인 ν—€λ”© ꡬ쑰 (H1β†’H2β†’H3)                                 β”‚
β”‚ β–‘ 이미지 alt ν…μŠ€νŠΈ                                              β”‚
β”‚ β–‘ λ‚΄λΆ€ 링크 ꡬ쑰                                                 β”‚
β”‚ β–‘ λͺ¨λ°”일 μΉœν™”μ  μ½˜ν…μΈ                                            β”‚
β”‚                                                                 β”‚
β”‚ 기술적:                                                          β”‚
β”‚ β–‘ Core Web Vitals 톡과                                          β”‚
β”‚ β–‘ λͺ¨λ°”일 λ°˜μ‘ν˜•                                                  β”‚
β”‚ β–‘ ꡬ쑰화 데이터                                                  β”‚
β”‚ β–‘ 404 νŽ˜μ΄μ§€ 처리                                                β”‚
β”‚ β–‘ λ¦¬λ‹€μ΄λ ‰νŠΈ μ΅œμ ν™”                                              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

7. μ—°μŠ΅ 문제

μ—°μŠ΅ 1: 메타 νƒœκ·Έ μž‘μ„±

λΈ”λ‘œκ·Έ ν¬μŠ€νŠΈμ— ν•„μš”ν•œ 메타 νƒœκ·Έλ₯Ό μž‘μ„±ν•˜μ„Έμš”.

<!-- μ˜ˆμ‹œ λ‹΅μ•ˆ -->
<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <title>React Hooks μ™„λ²½ κ°€μ΄λ“œ - useStateλΆ€ν„° μ»€μŠ€ν…€ ν›…κΉŒμ§€ | λΈ”λ‘œκ·Έλͺ…</title>
  <meta name="description" content="React Hooks의 λͺ¨λ“  것을 μ•Œμ•„λ΄…λ‹ˆλ‹€.
    useState, useEffect, useContextλΆ€ν„° μ»€μŠ€ν…€ ν›… μž‘μ„±λ²•κΉŒμ§€ μ˜ˆμ œμ™€ ν•¨κ»˜ μ„€λͺ…ν•©λ‹ˆλ‹€.">

  <link rel="canonical" href="https://blog.example.com/react-hooks-guide">

  <!-- Open Graph -->
  <meta property="og:type" content="article">
  <meta property="og:title" content="React Hooks μ™„λ²½ κ°€μ΄λ“œ">
  <meta property="og:description" content="React Hooks의 λͺ¨λ“  것을 μ˜ˆμ œμ™€ ν•¨κ»˜">
  <meta property="og:image" content="https://blog.example.com/images/react-hooks-og.jpg">
  <meta property="og:url" content="https://blog.example.com/react-hooks-guide">

  <!-- Twitter Card -->
  <meta name="twitter:card" content="summary_large_image">
  <meta name="twitter:title" content="React Hooks μ™„λ²½ κ°€μ΄λ“œ">
  <meta name="twitter:description" content="React Hooks의 λͺ¨λ“  것을 μ˜ˆμ œμ™€ ν•¨κ»˜">
  <meta name="twitter:image" content="https://blog.example.com/images/react-hooks-twitter.jpg">
</head>

μ—°μŠ΅ 2: ꡬ쑰화 데이터 μž‘μ„±

λ ˆμ‹œν”Ό νŽ˜μ΄μ§€μ˜ ꡬ쑰화 데이터λ₯Ό μž‘μ„±ν•˜μ„Έμš”.

<!-- μ˜ˆμ‹œ λ‹΅μ•ˆ -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Recipe",
  "name": "κΉ€μΉ˜μ°Œκ°œ",
  "image": "https://example.com/kimchi-jjigae.jpg",
  "author": {
    "@type": "Person",
    "name": "μš”λ¦¬μ‚¬ 이름"
  },
  "datePublished": "2024-03-15",
  "description": "μ§„ν•œ λ§›μ˜ 전톡 κΉ€μΉ˜μ°Œκ°œ λ ˆμ‹œν”Ό",
  "prepTime": "PT10M",
  "cookTime": "PT20M",
  "totalTime": "PT30M",
  "recipeYield": "2인뢄",
  "recipeIngredient": [
    "κΉ€μΉ˜ 200g",
    "돼지고기 150g",
    "두뢀 1/2λͺ¨",
    "μ–‘νŒŒ 1/2개"
  ],
  "recipeInstructions": [
    {
      "@type": "HowToStep",
      "text": "κΉ€μΉ˜λ₯Ό ν•œμž… 크기둜 썬닀"
    },
    {
      "@type": "HowToStep",
      "text": "돼지고기와 ν•¨κ»˜ λ³ΆλŠ”λ‹€"
    }
  ],
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.8",
    "ratingCount": "156"
  }
}
</script>

μ—°μŠ΅ 3: robots.txt μž‘μ„±

λ‹€μŒ μš”κ΅¬μ‚¬ν•­μ— λ§žλŠ” robots.txtλ₯Ό μž‘μ„±ν•˜μ„Έμš”. - κ΄€λ¦¬μž νŽ˜μ΄μ§€ (/admin/) 차단 - API μ—”λ“œν¬μΈνŠΈ (/api/) 차단 - 검색 κ²°κ³Ό νŽ˜μ΄μ§€ (/search?*) 차단 - λ‚˜λ¨Έμ§€λŠ” ν—ˆμš©

# μ˜ˆμ‹œ λ‹΅μ•ˆ
User-agent: *
Allow: /
Disallow: /admin/
Disallow: /api/
Disallow: /search

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

λ‹€μŒ 단계

참고 자료

to navigate between lessons