thumbnail
λΈ”λ‘œκ·Έμ˜ 꽃, SEO
λΈ”λ‘œκ·Έ
2023.09.10.

SEO

μ˜€λŠ˜μ€ λΈ”λ‘œκ·Έμ—μ„œ SEOλ₯Ό μœ„ν•΄μ„œ μˆ˜ν–‰ν•œ μž‘μ—…λ“€μ— λŒ€ν•΄μ„œ μ•Œμ•„λ΄…λ‹ˆλ‹€.

검색 엔진 μ΅œμ ν™” (SEO)

μš°μ„  검색 엔진 μ΅œμ ν™”(SEO)λŠ” μ›Ήμ‚¬μ΄νŠΈμ˜ νŠΈλž˜ν”½μ„ μ¦κ°€μ‹œν‚€κΈ° μœ„ν•œ μ „λž΅μž…λ‹ˆλ‹€. 검색 μ—”μ§„μ—μ„œ μƒμœ„μ— λ‚˜νƒ€λ‚˜λŠ” μ›Ήμ‚¬μ΄νŠΈλŠ” 더 λ§Žμ€ 클릭을 μœ λ„ν•  κ°€λŠ₯성이 λ†’κΈ° λ•Œλ¬Έμ—, 검색 엔진에 λŒ€ν•œ μ΅œμ ν™”λŠ” μ€‘μš”ν•©λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ λ‹€μ–‘ν•œ 기술과 μ „λž΅μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λŒ€ν‘œμ μΈ SEO μ „λž΅μ—λŠ”,

  • μ μ ˆν•œ ν‚€μ›Œλ“œ 연ꡬ 및 μ‚¬μš©
  • μ›Ήμ‚¬μ΄νŠΈμ˜ λ‚΄λΆ€ 링크 ꡬ쑰 κ°œμ„ 
  • ν’ˆμ§ˆ 높은 μ½˜ν…μΈ  제곡
  • λͺ¨λ°”일 μΉœν™”μ μΈ μ›Ήμ‚¬μ΄νŠΈ λ””μžμΈ
  • 속도 κ°œμ„ μ„ μœ„ν•œ μ›Ήμ‚¬μ΄νŠΈ μ΅œμ ν™”

등이 μžˆμŠ΅λ‹ˆλ‹€.

SEOλŠ” λΈ”λ‘œκ·ΈλΏ μ•„λ‹ˆλΌ μ›Ήμ‚¬μ΄νŠΈμ˜ 성곡에 μ€‘μš”ν•œ 역할을 ν•œλ‹€κ³  ν•©λ‹ˆλ‹€. SEO μ „λž΅μ„ 톡해 μ›Ήμ‚¬μ΄νŠΈμ˜ 검색 엔진 μˆœμœ„λ₯Ό λ†’μ΄λŠ” λ…Έλ ₯을 ν•΄λ΄€μŠ΅λ‹ˆλ‹€.

Meta νƒœκ·Έλž€?

ꡬ글과 같은 κ²€μƒ‰μ—”μ§„μ—μ„œ 검색결과 상단에 λ‚΄ μ‚¬μ΄νŠΈλ₯Ό 상단에 ν‘œμ‹œν•˜κΈ° μœ„ν•œ 역할을 가진것이 Meta Tagμž…λ‹ˆλ‹€. 검색 엔진이 μ²˜λ¦¬ν•  수 μžˆλ„λ‘ 데이터λ₯Ό μ œκ³΅ν•΄μ„œ 검색 ν‚€μ›Œλ“œμ™€ κ΄€λ ¨λœ 데이터λ₯Ό λ„μ›Œμ€„ 수 μžˆλ„λ‘ ν•  수 있고 μ‚¬μš©μžμ—κ²Œλ„ μ–΄λ–€ μ‚¬μ΄νŠΈμΈμ§€μ— λŒ€ν•΄ 정보λ₯Ό μ œκ³΅ν•˜λŠ”λ° 큰 역할을 ν•©λ‹ˆλ‹€.

그리고 SNS λ‚΄ λΈ”λ‘œκ·Έ 링크λ₯Ό μ˜¬λ¦΄λ•Œ μ‚¬μ§„μ΄λ‚˜ μ„€λͺ…을 λ‚΄ μ˜λ„μ— 맞게 정보듀이 좜λ ₯λ˜λ„λ‘ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Gatsby. 즉, React ν™˜κ²½μ—μ„œ Meta νƒœκ·Έλ₯Ό 좜λ ₯ν•˜κΈ° μœ„ν•΄ React-Helmet 라이브러리λ₯Ό 톡해 μ‰½κ²Œ Meta νƒœκ·Έλ₯Ό μΆ”κ°€ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

yarn add @types/react-helmet

μ €λŠ” npm이 μ•„λ‹Œ yarn을 μ‚¬μš©ν•˜κΈ°μ— μœ„μ™€ 같은 λͺ…λ Ήμ–΄λ₯Ό 터미널에 μž…λ ₯ν•΄ 라이브러리λ₯Ό μ„€μΉ˜ν–ˆμŠ΅λ‹ˆλ‹€. 그리고

import React, { FunctionComponent, ReactNode } from 'react'
import styled from '@emotion/styled'
import GlobalStyle from 'components/Common/GlobalStyle'
import Footer from 'components/Common/Footer'
import { Helmet } from 'react-helmet'

type TemplateProps = {
  title: string
  description: string
  url: string
  image: string
  children: ReactNode
}

const Container = styled.main`
  display: flex;
  flex-direction: column;
  height: 100%;
`

const Template: FunctionComponent<TemplateProps> = function ({
  title,
  description,
  url,
  image,
  children,
}) {
  return (
    <Container>
      <Helmet>
        <title>{title}</title>
        <html lang="ko" />

        <meta name="description" content={description} />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta httpEquiv="Content-Type" content="text/html;charset=UTF-8" />

        <meta property="og:type" content="website" />
        <meta property="og:title" content={title} />
        <meta property="og:description" content={description} />
        <meta property="og:image" content={image} />
        <meta property="og:url" content={url} />
        <meta property="og:site_name" content={title} />

        <meta name="twitter:card" content="summary" />
        <meta name="twitter:title" content={title} />
        <meta name="twitter:description" content={description} />
        <meta name="twitter:image" content={image} />
      </Helmet>

      <GlobalStyle />
      {children}
      <Footer />
    </Container>
  )
}

export default Template

μœ„μ™€κ°™μ΄ Meta νƒœκ·Έλ₯Ό μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€.

μ œκ°€ κ°•μ˜μ—μ„œ λ“£κΈ°λ‘œλŠ” ν•„μˆ˜μ μœΌλ‘œ μž‘μ„±ν•΄μ•Ό ν•˜λŠ” Meta νƒœκ·Έλ“€μ΄ μžˆμ—ˆλŠ”λ° λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  • Title : νŽ˜μ΄μ§€μ˜ 제λͺ©μž…λ‹ˆλ‹€.
  • Description : νŽ˜μ΄μ§€μ˜ μ„€λͺ…μž…λ‹ˆλ‹€.
  • Viewport : λͺ¨λ°”일 μΉœν™”μ„±κ³Ό κ΄€λ ¨λœ νƒœκ·Έμž…λ‹ˆλ‹€.
  • Content Type : λΈŒλΌμš°μ €κ°€ 데이터λ₯Ό μ–΄λ–»κ²Œ 읽을지에 λŒ€ν•œ νƒœκ·Έμž…λ‹ˆλ‹€.
  • Social Meta Tag : μ—¬λŸ¬ SNSλ₯Ό μœ„ν•œ νƒœκ·Έμž…λ‹ˆλ‹€. og, fb, twitter 등이 μžˆμŠ΅λ‹ˆλ‹€.

κ·Έ 외에 μ›Ή 크둀러의 λ™μž‘ λͺ…령을 μ§€μ‹œν•  수 μžˆλŠ” Robots, ν•΄λ‹Ή μ‚¬μ΄νŠΈμ˜ ν‚€μ›Œλ“œλ₯Ό λ‚˜νƒ€λ‚Ό 수 μžˆλŠ” Keywords λ“±μ˜ νƒœκ·Έλ„ μžˆμŠ΅λ‹ˆλ‹€.

그리고 메인 νŽ˜μ΄μ§€ μ»΄ν¬λ„ŒνŠΈμ—μ„œ Template μ»΄ν¬λ„ŒνŠΈλ‘œ 데이터λ₯Ό μ „λ‹¬ν•˜κΈ° μœ„ν•΄ gatsby-config.js μ—μ„œ siteMetadata ν”„λ‘œνΌν‹°λ₯Ό 톡해 데이터λ₯Ό 쿼리할 수 μžˆμŠ΅λ‹ˆλ‹€.

module.exports = {
  siteMetadata: {
    title: `μ˜€λŠ˜λ„ μ•žμœΌλ‘œ`,
    description: `미래λ₯Ό μœ„ν•΄ μ§€κΈˆ μƒκ°ν•˜κ³ , κΈ°λ‘ν•˜μž`,
    author: `Jae Hyeon`,
    siteUrl: `https://tol0608.github.io`,
  }, ...}

μ΄λ ‡κ²Œ 이 λΈ”λ‘œκ·Έμ˜ SEOλ₯Ό μœ„ν•΄ κ°„λ‹¨ν•œ 라이브러리 및 config 섀정을 ν•΄λ΄€μŠ΅λ‹ˆλ‹€. λ‹€λ§Œ 아직 λΈ”λ‘œκ·Έμ— 글이 많이 μ—†μ–΄μ„œμΈμ§€β€¦ 원인은 잘 λͺ¨λ₯΄κ² μ§€λ§Œ λͺ¨λ“  λΈ”λ‘œκ·Έ ν¬μŠ€νŒ…μ˜ 색인이 μƒμ„±λ˜μ§€ μ•Šμ€κ²ƒ κ°™μŠ΅λ‹ˆλ‹€. (μ›λž˜ ꡬ글 μ„œμΉ˜ μ½˜μ†”μ΄ 쑰금 μ˜ˆλ―Όν•˜λ‹€κ³  λ“£κΈ΄ ν•œκ±°κ°™μŠ΅λ‹ˆλ‹€.)

μΆ”ν›„ ꡬ글 μ„œμΉ˜ μ½˜μ†”μ— 등둝 및 확인 μž‘μ—…μ— λŒ€ν•΄μ„œλ„ μ •λ¦¬ν•΄μ„œ ν¬μŠ€νŒ… ν•˜λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

Thank You for Visiting My Blog, Have a Good Day πŸ˜†
Β© 2023 Developer JaeHyeon, Powered By Gatsby.