๐Ÿ€ ๊ฒ€์ƒ‰ ์—”์ง„์ด๋ž€?

image.png

  • ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ํ‚ค์›Œ๋“œ์— ๋งž๋Š” ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ๋˜๋Š” ์›น ์„œ๋น„์Šค.
  • ์ฃผ์š” ๊ฒ€์ƒ‰ ์—”์ง„: Google, Naver, Daum, Bing, Yahoo ๋“ฑ.

๐Ÿ€ ๊ฒ€์ƒ‰ ์—”์ง„์˜ ๋™์ž‘ ๊ณผ์ •

how-search-engines-find-and-rank-results.png

๊ฒ€์ƒ‰ ์—”์ง„์€ ํฌ๋กค๋ง โ†’ ์ธ๋ฑ์‹ฑ โ†’ ๋žญํ‚น ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  1. ํฌ๋กค๋ง (Crawling)
    • ์ •์˜: ๊ฒ€์ƒ‰ ์—”์ง„์ด ์›นํŽ˜์ด์ง€ ๋‚ด์šฉ์„ ์ˆ˜์ง‘ํ•˜๋Š” ๊ณผ์ •.
    • ๋ฐฉ๋ฒ•: ๊ฒ€์ƒ‰ ์—”์ง„ ๋กœ๋ด‡(ํฌ๋กค๋Ÿฌ ๋˜๋Š” ์ŠคํŒŒ์ด๋”)์ด ๋งํฌ๋ฅผ ๋”ฐ๋ผ ์ƒˆ ํŽ˜์ด์ง€๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  ๊ธฐ์กด ํŽ˜์ด์ง€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ™•์ธ.
    • ์˜ˆ์‹œ: ์‚ฌ์„œ๊ฐ€ ์ƒˆ ์ฑ…์„ ์ฐพ์•„ ๋„์„œ๊ด€์— ๋“ฑ๋กํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌ.
  2. ์ธ๋ฑ์‹ฑ (Indexing)
    • ์ •์˜: ์ˆ˜์ง‘ํ•œ ์ •๋ณด๋ฅผ ๋ถ„์„ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ณ  ๋ถ„๋ฅ˜ํ•˜๋Š” ๊ณผ์ •.
    • ๋‚ด์šฉ: ์›นํŽ˜์ด์ง€์˜ ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€, ๋น„๋””์˜ค ๋“ฑ์„ ์ฃผ์ œ๋ณ„๋กœ ๋ถ„๋ฅ˜.
    • ์˜ˆ์‹œ: ์‚ฌ์„œ๊ฐ€ ์ฑ…์„ ์ฃผ์ œ๋ณ„๋กœ ๋ถ„๋ฅ˜ํ•˜๊ณ  ๋„์„œ ๋ชฉ๋ก์„ ๋งŒ๋“œ๋Š” ๊ณผ์ •.
  3. ๋žญํ‚น (Ranking)
    • ์ •์˜: ๊ฒ€์ƒ‰์–ด์™€ ๊ฐ€์žฅ ๊ด€๋ จ์„ฑ ๋†’์€ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์œ„์— ๋…ธ์ถœํ•˜๋Š” ๊ณผ์ •.
    • ๊ธฐ์ค€: ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋”ฐ๋ผ ์ˆ˜๋ฐฑ ๊ฐ€์ง€ ์š”์†Œ๋ฅผ ํ‰๊ฐ€ํ•ด ์ˆœ์œ„๋ฅผ ๊ฒฐ์ •.
    • ์˜ˆ์‹œ: ์‚ฌ์„œ๊ฐ€ ๋ฐฉ๋ฌธ๊ฐ์˜ ์งˆ๋ฌธ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์ฑ…์„ ์ถ”์ฒœํ•˜๋Š” ๊ณผ์ •.

์š”์•ฝ

๊ฒ€์ƒ‰ ์—”์ง„์€ ํฌ๋กค๋ง์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ , ์ธ๋ฑ์‹ฑ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฅ˜ํ•˜๋ฉฐ, ๋žญํ‚น์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฒ€์ƒ‰์–ด์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

๐Ÿ€ ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”(SEO)๋ž€?

  • SEO(Search Engine Optimization)

    ์›น์‚ฌ์ดํŠธ๊ฐ€ ํฌ๋กค๋ง โ†’ ์ธ๋ฑ์‹ฑ โ†’ ๋žญํ‚น ๊ณผ์ •์—์„œ ๋” ์ž˜ ๋ฐœ๊ฒฌ๋˜๊ณ  ๋†’์€ ์ˆœ์œ„์— ๋…ธ์ถœ๋˜๋„๋ก ์ตœ์ ํ™”ํ•˜๋Š” ์ž‘์—….

  • ๋ชฉ์ 

    ์›น ํŽ˜์ด์ง€๋ฅผ ๊ฒ€์ƒ‰ ์—”์ง„ ๊ฒฐ๊ณผ์—์„œ ์ƒ์œ„์— ๋…ธ์ถœ์‹œํ‚ค๋Š” ๊ฒƒ.

  • ๋น„์œ 

    ์šฐ๋ฆฌ์˜ ์›น์‚ฌ์ดํŠธ(์ฑ…)๋ฅผ ๋„์„œ๊ด€์—์„œ ๊ฐ€์žฅ ๋ˆˆ์— ๋„๋Š” ๊ณณ์— ๋ฐฐ์น˜ํ•˜๋„๋ก ๋•๋Š” ์ž‘์—….

์š”์•ฝ

๊ฒ€์ƒ‰ ์—”์ง„์˜ ์ž‘๋™ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์›น์‚ฌ์ดํŠธ๋ฅผ ์ตœ์ ํ™”ํ•ด ๋” ๋งŽ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋„๋‹ฌํ•˜๋Š” ๊ฒƒ์ด SEO์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.

๐Ÿ€ SEO์˜ ์ค‘์š”์„ฑ

image.png

  1. ์›น์‚ฌ์ดํŠธ ๊ฐ€์‹œ์„ฑ ํ–ฅ์ƒ
    • ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ƒ์œ„์— ๋…ธ์ถœ๋˜๋ฉด ๋” ๋งŽ์€ ๋ฐฉ๋ฌธ์ž๋ฅผ ์œ ๋„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์ž ์žฌ ๊ณ ๊ฐ ์ฆ๊ฐ€๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.
  2. ํƒ€๊ฒŸ ๊ณ ๊ฐ ์ง์ ‘ ๋„๋‹ฌ
    • ํŠน์ • ํ‚ค์›Œ๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ์‚ฌ์šฉ์ž๋Š” ์ด๋ฏธ ํ•ด๋‹น ์ œํ’ˆ์ด๋‚˜ ์„œ๋น„์Šค์— ๊ด€์‹ฌ์ด ์žˆ๋Š” ์ž ์žฌ ๊ณ ๊ฐ์ž…๋‹ˆ๋‹ค.
    • ๊ฒ€์ƒ‰ ์ƒ์œ„ ๋…ธ์ถœ์€ ๋†’์€ ์ „ํ™˜์œจ๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.
  3. ๋น„์šฉ ํšจ์œจ์„ฑ
    • SEO๋Š” ์ดˆ๊ธฐ ํˆฌ์ž ์ดํ›„ ์ง€์†์ ์ธ ๊ด‘๊ณ ๋น„๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • ์œ ๊ธฐ์  ๋…ธ์ถœ๋กœ ๊ฒ€์ƒ‰ ๊ด‘๊ณ  ๋น„์šฉ ์—†์ด๋„ ์žฅ๊ธฐ์ ์ธ ๋งˆ์ผ€ํŒ… ํšจ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์–ด, ํŠนํžˆ ์˜ˆ์‚ฐ์ด ์ œํ•œ๋œ ๊ธฐ์—…์— ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์š”์•ฝ

SEO๋Š” ๊ฐ€์‹œ์„ฑ, ๊ณ ๊ฐ ์ ‘๊ทผ์„ฑ, ๋น„์šฉ ํšจ์œจ์„ฑ์˜ ์ธก๋ฉด์—์„œ ํšจ๊ณผ์ ์ธ ๋””์ง€ํ„ธ ๋งˆ์ผ€ํŒ… ์ „๋žต์ž…๋‹ˆ๋‹ค.

๐Ÿ€ SEO ๋ฐฉ๋ฒ•๋“ค (ํฌ๋กค๋ง, ์ธ๋ฑ์‹ฑ, ๋žญํ‚น ๋‹จ๊ณ„๋ณ„)

๋งค์šฐ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•๋“ค์ด ์žˆ๋‹ค. ๋ฐ‘์˜ ๊ฒƒ๋“ค์€ ์ผ๋ถ€!

1. ํฌ๋กค๋ง ์ตœ์ ํ™”

๊ฒ€์ƒ‰ ์—”์ง„์ด ์›น์‚ฌ์ดํŠธ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋„๋ก ๋•๋Š” ์ž‘์—….

  • ์‚ฌ์ดํŠธ๋งต ์„ค์ •
    • XML ํ˜•์‹์œผ๋กœ ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ์ œ๊ณตํ•ด ์‚ฌ์ดํŠธ ๊ตฌ์กฐ๋ฅผ ์‰ฝ๊ฒŒ ์ดํ•ด.
    • /sitemap.xml ํŒŒ์ผ์—์„œ <loc> ํƒœ๊ทธ๋กœ ๊ฒฝ๋กœ ์ง€์ •.
    • ๋„ค์ด๋ฒ„์™€ ๊ตฌ๊ธ€์— ์ œ์ถœํ•ด ํšจ์œจ์  ํฌ๋กค๋ง ์ง€์›.
  • robots.txt ์„ค์ •
    • ํฌ๋กค๋Ÿฌ์—๊ฒŒ ํŠน์ • ํŽ˜์ด์ง€ ํฌ๋กค๋ง ํ—ˆ์šฉ/์ œํ•œ ์ง€์‹œ.
    • ๊ฒ€์ƒ‰ ์—”์ง„ ํฌ๋กค๋ง ํšจ์œจํ™”.
  • ์ ์ ˆํ•œ ์˜ค๋ฅ˜ ํŽ˜์ด์ง€ ์ œ๊ณต
    • ๊นจ์ง„ ๋งํฌ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ์‚ฌ์šฉ์ž์™€ ๊ฒ€์ƒ‰ ์—”์ง„์— ํ’ˆ์งˆ ๋†’์€ ์˜ค๋ฅ˜ ํŽ˜์ด์ง€ ์ œ๊ณต.

2. ์ธ๋ฑ์‹ฑ ์ตœ์ ํ™”

๊ฒ€์ƒ‰ ์—”์ง„์ด ์ฝ˜ํ…์ธ ๋ฅผ ์ œ๋Œ€๋กœ ๋ถ„์„ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๋„๋ก ๋•๋Š” ์ž‘์—….

  • ํƒ€์ดํ‹€๊ณผ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ์„ค์ •
    • <title>: ํŽ˜์ด์ง€ ํ•ต์‹ฌ ์ฃผ์ œ๋ฅผ ๋ช…ํ™•ํžˆ ์ „๋‹ฌ.
    • <meta>: ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด ์ œ๊ณต.
  • ์‹œ๋งจํ‹ฑ ํƒœ๊ทธ ์‚ฌ์šฉ
    • ์ฝ˜ํ…์ธ  ๊ตฌ์กฐ๋ฅผ ๋ช…ํ™•ํžˆ ์ •์˜ํ•ด ๊ฒ€์ƒ‰ ์—”์ง„์ด ์ •๋ณด์˜ ์ค‘์š”๋„๋ฅผ ํŒŒ์•….
    • ์˜ˆ: <article>, <section>, <header> ๋“ฑ.

3. ๋žญํ‚น ์ตœ์ ํ™”

๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ƒ์œ„ ๋…ธ์ถœ์„ ์œ„ํ•œ ์‹ ๋ขฐ๋„์™€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๊ฐœ์„ .

  • HTTPS ์‚ฌ์šฉ
    • HTTPS ์‚ฌ์ดํŠธ๋Š” ๊ตฌ๊ธ€์—์„œ ๊ฐ€์‚ฐ์ ์„ ๋ฐ›์Œ.
    • ์‚ฌ์šฉ์ž์—๊ฒŒ ์•ˆ์ „ํ•˜๋‹ค๋Š” ์‹ ๋ขฐ๋ฅผ ์ œ๊ณต.
  • ๋ชจ๋ฐ”์ผ ์ตœ์ ํ™”
    • ๋ชจ๋ฐ”์ผ ์šฐ์„  ์ธ๋ฑ์‹ฑ ์ ์šฉ.
    • ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์—์„œ ์ž˜ ์ž‘๋™ํ•˜๋Š” ์›น์‚ฌ์ดํŠธ๊ฐ€ ๊ฒ€์ƒ‰ ์ˆœ์œ„์—์„œ ์œ ๋ฆฌ.
  • ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์†๋„ ์ตœ์ ํ™”
    • ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋น ๋ฅผ์ˆ˜๋ก ์‚ฌ์šฉ์ž ๊ฒฝํ—˜๊ณผ ์ˆœ์œ„๊ฐ€ ํ–ฅ์ƒ.
  • SSR ์‚ฌ์šฉ
    • SSR(Server-Side Rendering)์€ ๊ฒ€์ƒ‰ ์—”์ง„ ํฌ๋กค๋ง๊ณผ SEO์— ์œ ๋ฆฌ.
    • CSR(Client-Side Rendering)์€ ํฌ๋กค๋ง ํšจ์œจ์ด ๋‚ฎ์Œ.

์š”์•ฝ

SEO๋Š” ํฌ๋กค๋ง, ์ธ๋ฑ์‹ฑ, ๋žญํ‚น ๋‹จ๊ณ„์—์„œ ๊ฐ๊ฐ ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ด ์›น์‚ฌ์ดํŠธ์˜ ๊ฐ€์‹œ์„ฑ์„ ๋†’์ด๊ณ , ๊ฒ€์ƒ‰ ์—”์ง„์—์„œ ์ƒ์œ„ ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.

๐Ÿ€ ์ธก์ • ๋ฐฉ๋ฒ•

  1. SEO๋Š” ์ข‹์ง€๋งŒ ํผํฌ๋จผ์Šค ์ธก์ •์ด ์–ด๋ ต๋‹ค
    • SEO๋ฅผ ๊ฐœ์„ ํ–ˆ๋”๋ผ๋„ ์‹ค์ œ ํผํฌ๋จผ์Šค๋ฅผ ์ •๋Ÿ‰์ ์œผ๋กœ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.
  2. ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™” ๊ฐ€์ด๋“œ๋ผ์ธ
    • Google๊ณผ ๊ฐ™์€ ์ฃผ์š” ๊ฒ€์ƒ‰ ์—”์ง„์˜ ๊ณต์‹ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ์ฐธ๊ณ ํ•ด SEO๋ฅผ ์ ๊ฒ€ํ•œ๋‹ค.
  3. Lighthouse
    • ๊ตฌ๊ธ€์—์„œ ์ œ๊ณตํ•˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ๋„๊ตฌ๋กœ ์›น์‚ฌ์ดํŠธ์˜ ์„ฑ๋Šฅ, ์ ‘๊ทผ์„ฑ, SEO ๋“ฑ์„ ์ž๋™์œผ๋กœ ๋ถ„์„ ๊ฐ€๋Šฅ.
    • ์ฃผ์š” ์ ์ˆ˜ ํ•ญ๋ชฉ:
      • Performance (์„ฑ๋Šฅ)
      • Accessibility (์ ‘๊ทผ์„ฑ)
      • Best Practices (์ตœ์ ํ™”)
      • SEO (๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”)
  4. Google Search Console
    • ๊ตฌ๊ธ€์ด ๋‚ด ํŽ˜์ด์ง€๋ฅผ ์–ด๋–ป๊ฒŒ ์ธ๋ฑ์‹ฑํ•˜๋Š”์ง€ ํ™•์ธ ๊ฐ€๋Šฅ.
    • ๊ฒ€์ƒ‰ ์—”์ง„์—์„œ ๋‚ด ํŽ˜์ด์ง€๊ฐ€ ์ž˜ ๋…ธ์ถœ๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ๋ฌธ์ œ๋ฅผ ์ง„๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์šฉํ•œ ๋„๊ตฌ.

๐Ÿ€ React์˜ SEO ํ•œ๊ณ„ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

6571e57ff2a4ea837bf83219_seo + react-p-1080.png

  1. ํฌ๋กค๋ง ๋ด‡๊ณผ HTML ๊ตฌ์กฐ
    • ํฌ๋กค๋ง ๋ด‡์€ HTML ๋ณธ๋ฌธ๊ณผ ๋ฉ”ํƒ€ ์ •๋ณด๋ฅผ ๋ถ„์„ํ•˜์—ฌ ํŽ˜์ด์ง€ ์ฃผ์ œ, ๊ตฌ์กฐ, ์—ฐ๊ด€๋œ ํŽ˜์ด์ง€, ์ŠคํŒธ ์—ฌ๋ถ€ ๋“ฑ์„ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค.
    • React๋Š” SPA(Single Page Application) ๋ฐฉ์‹์œผ๋กœ, ๋ชจ๋“  ํŽ˜์ด์ง€๊ฐ€ ํ•˜๋‚˜์˜ HTML ํŒŒ์ผ๋งŒ์„ ์‚ฌ์šฉํ•˜๊ณ  JavaScript๋กœ ๋™์  ์ฝ˜ํ…์ธ ๋ฅผ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค. โ†’ ์ด๋กœ ์ธํ•ด ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”(SEO)์— ๋ถˆ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  2. SPA์™€ SEO ๋ฌธ์ œ์ 
    • ํฌ๋กค๋Ÿฌ๋Š” JavaScript๋ฅผ ์‹คํ–‰ํ•˜์ง€ ๋ชปํ•˜๊ฑฐ๋‚˜, ์‹คํ–‰์ด ์ œํ•œ์ ์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. โ†’ CSR(Client-Side Rendering) ํ™˜๊ฒฝ์—์„œ๋Š” ์ดˆ๊ธฐ HTML๋งŒ ์ฝ๊ณ , ๋™์  ์ฝ˜ํ…์ธ ๋Š” ์ธ์‹ํ•˜์ง€ ๋ชปํ•ด SEO ์ ์ˆ˜๊ฐ€ ๋‚ฎ์•„์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.
  3. SEO ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
    • SSR/SSG (Pre-rendering)
      • SSR (Server-Side Rendering): ์š”์ฒญ ์‹œ ์„œ๋ฒ„์—์„œ HTML์„ ์ƒ์„ฑํ•˜์—ฌ ์ œ๊ณต (์˜ˆ: Next.js).
      • SSG (Static Site Generation): ๋นŒ๋“œ ์‹œ์ ์— ์ •์  HTML ํŒŒ์ผ์„ ์ƒ์„ฑ.
      • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ: react-snap ๋“ฑ์œผ๋กœ ๋นŒ๋“œ ์‹œ์ ์— ๋ฏธ๋ฆฌ ๋ Œ๋”๋ง.
    • ๋™์  ๋ฉ”ํƒ€ ์ •๋ณด ๊ด€๋ฆฌ
      • React๋Š” DOM์˜ body๋งŒ ์กฐ์ž‘ํ•˜์ง€๋งŒ, ๊ฒ€์ƒ‰ ์—”์ง„์€ head ํƒœ๊ทธ์˜ ์ •๋ณด๋„ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค.
      • React-Helmet-Async๋ฅผ ์‚ฌ์šฉํ•ด head ๋‚ด๋ถ€์˜ ๋ฉ”ํƒ€ ์ •๋ณด๋ฅผ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  SEO ์ ์ˆ˜๋ฅผ ํ–ฅ์ƒ.
  4. ๊ฒฐ๋ก 
    • React์˜ SPA ๋ฐฉ์‹์€ SEO์— ๋ถˆ๋ฆฌํ•˜์ง€๋งŒ, SSR/SSG ๋ฐฉ์‹์œผ๋กœ ์ •์  HTML ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ React-Helmet-Async๋กœ ๋ฉ”ํƒ€ ์ •๋ณด๋ฅผ ๋™์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋ฉด SEO ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ€ Meta ํƒœ๊ทธ ์ •๋ฆฌ

img1.daumcdn.png

1. Meta ํƒœ๊ทธ๋ž€?

์›นํŽ˜์ด์ง€์˜ ์š”์•ฝ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, SEO(๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”), ์†Œ์…œ ๋ฏธ๋””์–ด ๊ณต์œ , ๋ธŒ๋ผ์šฐ์ € ๋™์ž‘ ๋“ฑ์— ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” Meta ํƒœ๊ทธ๋กœ Title, Description, Viewport ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์ฃผ์š” ๋ฉ”ํƒ€ ํƒœ๊ทธ

    1. Meta Title

      • ํŽ˜์ด์ง€์˜ ์ œ๋ชฉ์„ ์ •์˜.

      • ์ €ํฌ๋“ค์ด ํ”ํžˆ ์“ฐ๋˜ <title>๋‚ด ์›น์‚ฌ์ดํŠธ ์ œ๋ชฉ</title> ์ด ๋ถ€๋ถ„์ด Meta Title ํƒœ๊ทธ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฉ”ํƒ€ ํƒœ๊ทธ๋“ค์ฒ˜๋Ÿผ ์ด๋ ‡๊ฒŒ ์“ฐ์ด์ง€๋Š” ์•Š๋„ค์š” ใ…Žใ…Ž

        <title>๋‚ด ์›น์‚ฌ์ดํŠธ ์ œ๋ชฉ</title>
    2. Meta Description

      • ์›นํŽ˜์ด์ง€ ์š”์•ฝ ์ •๋ณด๋ฅผ ์ œ๊ณต.
      • ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์—์„œ URL ์•„๋ž˜ ํ‘œ์‹œ.
      <meta name="description" content="๊ท€์—ฌ์šด ์˜์žฌ์˜ ํŒฌํด๋Ÿฝ ์‚ฌ์ดํŠธ์ž…๋‹ˆ๋‹ค.">
    3. Meta Keywords (๊ฑฐ์˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ)

      • ๊ณผ๊ฑฐ์— ์‚ฌ์šฉ๋˜๋˜ ํ‚ค์›Œ๋“œ ํƒœ๊ทธ. ํ˜„์žฌ๋Š” SEO์— ์˜ํ–ฅ ์—†์Œ.
      <meta name="keywords" content="HTML, ๋ฉ”ํƒ€ ํƒœ๊ทธ, SEO">
    4. Robots Meta ํƒœ๊ทธ

      • ๊ฒ€์ƒ‰ ์—”์ง„ ํฌ๋กค๋Ÿฌ์˜ ๋™์ž‘์„ ์ œ์–ด.
      • ์˜ˆ: ํŽ˜์ด์ง€๋ฅผ ์ธ๋ฑ์‹ฑํ•˜์ง€ ์•Š๊ณ  ๋งํฌ๋งŒ ํฌ๋กค๋ง
      • ๊ฐ’
        • index: ํŽ˜์ด์ง€๋ฅผ ์ธ๋ฑ์‹ฑ ํ—ˆ์šฉ (๊ธฐ๋ณธ๊ฐ’).

        • noindex: ํŽ˜์ด์ง€ ์ธ๋ฑ์‹ฑ ๊ธˆ์ง€.

        • follow: ํŽ˜์ด์ง€ ๋‚ด ๋งํฌ๋ฅผ ํฌ๋กค๋ง ํ—ˆ์šฉ (๊ธฐ๋ณธ๊ฐ’).

        • nofollow: ํŽ˜์ด์ง€ ๋‚ด ๋งํฌ ํฌ๋กค๋ง ๊ธˆ์ง€.

        • noarchive: ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์—์„œ ์บ์‹œ ํŽ˜์ด์ง€ ํ‘œ์‹œ ๊ธˆ์ง€.

        • ํŽ˜์ด์ง€๋ฅผ ์ธ๋ฑ์‹ฑํ•˜์ง€ ์•Š๊ณ  ๋งํฌ๋ฅผ ๋”ฐ๋ผ๊ฐ€๋„๋ก ์„ค์ •

          <meta name="robots" content="noindex, follow">
        • ํŽ˜์ด์ง€์™€ ๋งํฌ ๋ชจ๋‘ ํฌ๋กค๋งํ•˜์ง€ ์•Š์Œ

          <meta name="robots" content="noindex, nofollow">
        • ํŽ˜์ด์ง€๋ฅผ ์ธ๋ฑ์‹ฑํ•˜๊ณ  ๋งํฌ๋„ ํฌ๋กค๋ง (๊ธฐ๋ณธ๊ฐ’)

          <meta name="robots" content="index, follow">
        • ํŠน์ • ๊ฒ€์ƒ‰ ์—”์ง„์—๋งŒ ์ ์šฉ (์˜ˆ: Googlebot)

          <meta name="googlebot" content="noindex, nofollow">
    5. Open Graph ๋ฉ”ํƒ€ ํƒœ๊ทธ

      • ์†Œ์…œ ๋ฏธ๋””์–ด์—์„œ ๋งํฌ ๊ณต์œ  ์‹œ ์ œ๋ชฉ, ์ด๋ฏธ์ง€, ์„ค๋ช… ๋“ฑ์„ ์„ค์ •.
      • ๐Ÿ€ open graph โ†’ ๋ฐ‘์˜ ์ด ๋ถ€๋ถ„์— ๋”ฐ๋กœ ์ ์—ˆ์œผ๋ฏ€๋กœ, ์ž์„ธํ•œ ์„ค๋ช…์€ ์ƒ๋žต!

    f. Twitter ๋ฉ”ํƒ€ ํƒœ๊ทธ

    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:title" content="ํŽ˜์ด์ง€ ์ œ๋ชฉ">
    <meta name="twitter:description" content="ํŽ˜์ด์ง€ ์„ค๋ช…">
    <meta name="twitter:image" content="<https://example.com/image.png>">
    • ํŠธ์œ„ํ„ฐ์— ์ตœ์ ํ™”๋œ ๋งํฌ ๊ณต์œ  ํƒœ๊ทธ.
    • twitter:card: ์นด๋“œ ์Šคํƒ€์ผ (summary, summary_large_image ๋“ฑ).

    g. Viewport ๋ฉ”ํƒ€ ํƒœ๊ทธ

    • ๋ฐ˜์‘ํ˜• ์›น์—์„œ ํ™”๋ฉด ํฌ๊ธฐ์— ๋งž๊ฒŒ ์ฝ˜ํ…์ธ ๋ฅผ ์กฐ์ •.

    • ์ด ํƒœ๊ทธ๊ฐ€ ์—†์œผ๋ฉด ๋ชจ๋ฐ”์ผ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๊ธฐ๋ณธ ํฌ๊ธฐ๋กœ ๋ Œ๋”๋งํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ํ™•๋Œ€/์ถ•์†Œํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

      <meta name="viewport" content="์†์„ฑ1=๊ฐ’1, ์†์„ฑ2=๊ฐ’2">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      • ์†์„ฑ๊ณผ ๊ฐ’
        • width: ํŽ˜์ด์ง€์˜ ๋„ˆ๋น„
          • device-width: ๋””๋ฐ”์ด์Šค์˜ ํ™”๋ฉด ๋„ˆ๋น„์™€ ๋™์ผํ•˜๊ฒŒ ์„ค์ •
        • height: ํŽ˜์ด์ง€์˜ ๋†’์ด
          • ์ด ์†์„ฑ์€ ๋“œ๋ฌผ๊ฒŒ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋Œ€๋ถ€๋ถ„ ๋””๋ฐ”์ด์Šค ๋†’์ด๋Š” ์ž๋™ ์กฐ์ •๋œ๋‹ค
        • initial-scale: ํŽ˜์ด์ง€์˜ ์ดˆ๊ธฐ ํ™•๋Œ€/์ถ•์†Œ ๋น„์œจ์„ ์„ค์ •
          • 1.0์€ 100% ํฌ๊ธฐ, 2.0์€ 200% ํ™•๋Œ€
        • maximum-scale: ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ํ™•๋Œ€ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋น„์œจ
          • 1.0์€ 100% ํฌ๊ธฐ๋กœ ํ™•๋Œ€ ๋ถˆ๊ฐ€
        • maximum-scale: ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์ถ•์†Œํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ ๋น„์œจ
          • 0.5๋Š” 50% ์ถ•์†Œ ๊ฐ€๋Šฅ
        • user-scalable: ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ํ™•๋Œ€/์ถ•์†Œํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€ ๊ฒฐ์ •
          • yes ๊ฐ€๋Šฅ, no ๋ถˆ๊ฐ€๋Šฅ
      • ํ•ญ์ƒ width=device-width์™€ initial-scale=1.0์„ ํฌํ•จํ•˜์ž. ์ด๋Š” ๋ฐ˜์‘ํ˜• ์›น๋””์ž์ธ์˜ ๊ธฐ๋ณธ ์„ค์ •์ด๋‹ค.

    h. Charset ๋ฉ”ํƒ€ ํƒœ๊ทธ

    • ๋ฌธ์„œ์˜ ๋ฌธ์ž ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์„ ์ •์˜ํ•œ๋‹ค. UTF-8์€ ์ „ ์„ธ๊ณ„ ์–ธ์–ด๋ฅผ ์ง€์›ํ•˜๋Š” ํ‘œ์ค€ ์ธ์ฝ”๋”ฉ์ด๋‹ค.

      <meta charset="UTF-8">

    i. Author ๋ฐ ๊ธฐํƒ€ ์ •๋ณด

    • Author: ํŽ˜์ด์ง€ ์ž‘์„ฑ์ž ์ •๋ณด๋ฅผ ์ •์˜ํ•œ๋‹ค.

      <meta name="author" content="์กด์ž˜๊ฒฝ์ผ">
    • Theme-Color: ๋ชจ๋ฐ”์ผ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฃผ์†Œ ํ‘œ์‹œ์ค„ ์ƒ‰์ƒ์„ ์ง€์ •ํ•œ๋‹ค.

      <meta name="theme-color" content="#ffffff">

image.png

์š”์•ฝ

Meta ํƒœ๊ทธ๋Š” SEO์™€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. Title๊ณผ Description์„ ๋น„๋กฏํ•ด, Open Graph์™€ Viewport ํƒœ๊ทธ๋Š” ์›นํŽ˜์ด์ง€์˜ ๊ฒ€์ƒ‰ ๋ฐ ๊ณต์œ  ๊ฐ€์‹œ์„ฑ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

๐Ÿ€ open graph

image.png

  • ์ฝ˜ํ…์ธ  ๋งํฌ๋ฅผ SNS์—์„œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ˜•ํƒœ๋กœ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœํ† ์ฝœ.
    • 2010๋…„ ํŽ˜์ด์Šค๋ถ์ด ๋ฐœํ‘œํ–ˆ์œผ๋ฉฐ, ํŠธ์œ„ํ„ฐ, ๋งํฌ๋“œ์ธ ๋“ฑ์—์„œ๋„ ์ฑ„ํƒํ•ด ์†Œ์…œ ๋ฏธ๋””์–ด UX๋ฅผ ๊ฐœ์„ . โ†’ ๋งํฌ ๊ณต์œ  ์‹œ ๋‚˜ํƒ€๋‚˜๋Š” ์ œ๋ชฉ, ์„ค๋ช…, ์ด๋ฏธ์ง€ ๋“ฑ์ด Open Graph ํƒœ๊ทธ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

Open Graph ํƒœ๊ทธ์˜ ํŠน์ง•

  1. ์†Œ์…œ ๋ฏธ๋””์–ด์— ํŠนํ™”๋œ ํ”„๋กœํ† ์ฝœ
    • ์›นํŽ˜์ด์ง€ ๋งํฌ ๊ณต์œ  ์‹œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์ƒ์„ฑ.
    • ์‚ฌ์šฉ์ž ์œ ์ž…๊ณผ ์ „ํ™˜์œจ์„ ์ฆ๊ฐ€์‹œ์ผœ SEO์— ๊ฐ„์ ‘์ ์ธ ํšจ๊ณผ๋ฅผ ์ œ๊ณต.
  2. SEO์™€์˜ ๊ด€๊ณ„
    • SEO ์ ์ˆ˜์— ์ง์ ‘ ์˜ํ–ฅ์„ ์ฃผ์ง€๋Š” ์•Š์ง€๋งŒ, ์›น์‚ฌ์ดํŠธ์˜ ๊ฐ€์‹œ์„ฑ๊ณผ ์‚ฌ์šฉ์ž ํด๋ฆญ๋ฅ ์„ ๋†’์ด๋Š” ๋ฐ ๊ธฐ์—ฌ.

์ฃผ์š” Open Graph ํƒœ๊ทธ

  • og:title: ํŽ˜์ด์ง€ ์ œ๋ชฉ
  • og:description: ํŽ˜์ด์ง€ ์š”์•ฝ ์„ค๋ช…
  • og:url: ํŽ˜์ด์ง€ URL
  • og:image: ๊ณต์œ ๋  ์ด๋ฏธ์ง€ URL
  • og:image:alt: ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ์„ค๋ช…
  • og:site_name: ์›น์‚ฌ์ดํŠธ ์ด๋ฆ„
  • og:type: ์ฝ˜ํ…์ธ  ์œ ํ˜• (์˜ˆ: article, website ๋“ฑ)
  • article:author: ์ž‘์„ฑ์ž ์ •๋ณด
  • article:section: ์นดํ…Œ๊ณ ๋ฆฌ ์ •๋ณด
  • article:tag: ํƒœ๊ทธ ์ •๋ณด

์‚ฌ์šฉ ์˜ˆ์‹œ

  • ์˜คํ”ˆ ๊ทธ๋ž˜ํ”„ ํƒœ๊ทธ์˜ ์ข…๋ฅ˜๋Š” ๋งค์šฐ ๋งŽ๋‹ค. og:title og:description og:url og:image og:type โ€ฆ

  • property ์†์„ฑ์—๋‹ค๊ฐ€ ๋„ฃ๋Š”๋‹ค. (์ผ๋ฐ˜ meta ํƒœ๊ทธ๋Š” name ์†์„ฑ์— ๊ฐ’์„ ์ค€๋‹ค)

    <!-- ์ผ๋ฐ˜ meta ํƒœ๊ทธ -->
    <meta
          name="description"
          content="Easy and convenient way to check real-time cryptocurrency price change along with the live charts"
    />
        
    <!-- ์˜คํ”ˆ ๊ทธ๋ž˜ํ”„ ํƒœ๊ทธ -->
    <meta
          property="og:description"
          content="Easy and convenient way to check real-time cryptocurrency price change along with the live charts"
    />
    <head>
      <meta property="og:title" content="My Awesome Page" />
      <meta property="og:description" content="This is the best page ever!" />
      <meta property="og:url" content="<https://www.example.com/page>" />
      <meta property="og:image" content="<https://www.example.com/image.jpg>" />
      <meta property="og:image:alt" content="An awesome example image" />
      <meta property="og:site_name" content="Example Site" />
      <meta property="og:type" content="article" />
      <meta property="article:author" content="<https://www.example.com/author/john-doe>" />
      <meta property="article:section" content="Technology" />
      <meta property="article:tag" content="Open Graph, SEO, React" />
    </head>

์š”์•ฝ

Open Graph๋Š” ์†Œ์…œ ๋ฏธ๋””์–ด์—์„œ ๋งํฌ ๊ณต์œ  ์‹œ ๊ฐ€์‹œ์„ฑ๊ณผ ์ „ํ™˜์œจ์„ ๋†’์—ฌ์ฃผ๋Š” ํƒœ๊ทธ์ž…๋‹ˆ๋‹ค. ์ฃผ์š” ํƒœ๊ทธ๋ฅผ ํ™œ์šฉํ•ด ๋งํฌ์˜ ์ œ๋ชฉ, ์„ค๋ช…, ์ด๋ฏธ์ง€ ๋“ฑ์„ ์ ์ ˆํžˆ ์„ค์ •ํ•˜๋ฉด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๋Œ€ํญ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ€ react-helmet-async

1. react-helmet-async๋ž€?

  • <head> ๋‚ด์˜ title, meta ํƒœ๊ทธ ๋“ฑ์„ ๋™์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ.
  • react-helmet์˜ ๋น„๋™๊ธฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ ํฌํฌ ๋ฒ„์ „์œผ๋กœ, ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง(SSR) ํ™˜๊ฒฝ์—์„œ๋„ ์•ˆ์ •์ ์œผ๋กœ ์ž‘๋™.

2. ์‚ฌ์šฉ ์ด์œ 

  • React์˜ SPA ํŠน์„ฑ:๊ฐ ํŽ˜์ด์ง€๋ณ„๋กœ <title>๊ณผ <meta> ํƒœ๊ทธ๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์–ด๋ ค์›Œ SEO์— ๋ถˆ๋ฆฌ.โ†’ react-helmet-async๋กœ ํŽ˜์ด์ง€๋ณ„ title๊ณผ meta ํƒœ๊ทธ ๊ด€๋ฆฌ.
  • SEO ๊ฐ•ํ™”:๊ฒ€์ƒ‰ ์—”์ง„์ด ๊ฐ ํŽ˜์ด์ง€ ์ •๋ณด๋ฅผ ์ •ํ™•ํžˆ ํฌ๋กค๋งํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›.

3. ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

  1. HelmetProvider๋กœ ์•ฑ ๊ฐ์‹ธ๊ธฐ

    index.js ๋˜๋Š” main.js์—์„œ <HelmetProvider>๋กœ ์•ฑ์„ ๊ฐ์‹ผ๋‹ค.

    import { HelmetProvider } from "react-helmet-async";
     
    root.render(
      <HelmetProvider>
        <BrowserRouter>
          <App />
        </BrowserRouter>
      </HelmetProvider>
    );
     
  2. ํŽ˜์ด์ง€๋ณ„ Helmet ์‚ฌ์šฉ ๊ฐ ํŽ˜์ด์ง€์—์„œ <Helmet>์œผ๋กœ title๊ณผ meta ํƒœ๊ทธ ์„ค์ •.

    import { Helmet } from 'react-helmet-async';
     
    const HomePage = () => (
      <div>
        <Helmet>
          <title>Home - My Website</title>
          <meta name="description" content="Welcome to My Website" />
          <meta property="og:title" content="Home - My Website" />
          <meta property="og:description" content="This is the home page" />
          <meta property="og:url" content="<https://www.mywebsite.com/>" />
          <meta property="og:type" content="website" />
        </Helmet>
        <h1>Home Page</h1>
      </div>
    );
     
    export default HomePage;
  3. SSR ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ (์˜ˆ: Express) ์„œ๋ฒ„์—์„œ <title>๊ณผ <meta> ํƒœ๊ทธ๋ฅผ ๋ฏธ๋ฆฌ ๋ Œ๋”๋งํ•˜์—ฌ SEO ๊ฐ•ํ™”.

    const helmetContext = {}; // Helmet ์ปจํ…์ŠคํŠธ ์ƒ์„ฑ
    const html = renderToString(
      <HelmetProvider context={helmetContext}>
        <App />
      </HelmetProvider>
    );
     
    const { helmet } = helmetContext;
     
    res.send(`
      <!DOCTYPE html>
      <html>
        <head>
          ${helmet.title.toString()} <!-- Title ๋ Œ๋”๋ง -->
          ${helmet.meta.toString()}  <!-- Meta ํƒœ๊ทธ ๋ Œ๋”๋ง -->
        </head>
        <body>
          <div id="root">${html}</div>
        </body>
      </html>
    `);

4. ํŠน์ง•

  • SEO ๊ฐ•ํ™”: ํฌ๋กค๋Ÿฌ๊ฐ€ ํŽ˜์ด์ง€ ์ •๋ณด๋ฅผ ์ •ํ™•ํžˆ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ์ง€์›.
  • SSR ์นœํ™”์ : ์„œ๋ฒ„์—์„œ ๋ฉ”ํƒ€ ํƒœ๊ทธ๋ฅผ ๋ Œ๋”๋งํ•˜์—ฌ ํฌ๋กค๋Ÿฌ์™€์˜ ํ˜ธํ™˜์„ฑ์„ ๋ณด์žฅ.
  • SPA์™€ SSR ๋ชจ๋‘ ์ ํ•ฉ: React SPA ๋ฐ Next.js ๋“ฑ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.

์š”์•ฝ

react-helmet-async๋Š” React SPA์™€ SSR ํ™˜๊ฒฝ์—์„œ SEO๋ฅผ ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ํ•„์ˆ˜ ๋„๊ตฌ๋กœ, ํŽ˜์ด์ง€๋ณ„ title๊ณผ meta ํƒœ๊ทธ๋ฅผ ๋™์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด ๊ฒ€์ƒ‰ ์—”์ง„ ํฌ๋กค๋ง๊ณผ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๋™์‹œ์— ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ€ Google Search Console (GSC)

Google Search Console์€ ์›น์‚ฌ์ดํŠธ์˜ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌด๋ฃŒ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

์žฅ์ 

  • ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ ํ™•์ธ: ํด๋ฆญ์ˆ˜, ๋…ธ์ถœ์ˆ˜, ๊ฒ€์ƒ‰ ์ˆœ์œ„ ๋“ฑ ๋ถ„์„ ๊ฐ€๋Šฅ.
  • ๋ฌธ์ œ ํ•ด๊ฒฐ: ํฌ๋กค๋ง ์˜ค๋ฅ˜, ์ƒ‰์ธ ๋ฌธ์ œ, ๋ชจ๋ฐ”์ผ ์‚ฌ์šฉ์„ฑ ์ ๊ฒ€ ๋ฐ ์ˆ˜์ •.
  • ๋งํฌ ๋ถ„์„: ์™ธ๋ถ€ ๋ฐ ๋‚ด๋ถ€ ๋งํฌ ๋ฐ์ดํ„ฐ ์ œ๊ณต.
  • ๊ตฌ์กฐํ™” ๋ฐ์ดํ„ฐ ํ™•์ธ: ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์— ๋ฆฌ์น˜ ์ฝ˜ํ…์ธ  ํ‘œ์‹œ ๊ฐ€๋Šฅ.
  • ๋ฌด๋ฃŒ ์„œ๋น„์Šค: SEO ์ตœ์ ํ™”์— ํ•„์ˆ˜์ .

๋‹จ์ 

  • ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๋ถ€์กฑ: ๋ฐ์ดํ„ฐ 1~2์ผ ์ง€์—ฐ.
  • ๊ฒฝ์Ÿ์‚ฌ ์ •๋ณด ๋ถ€์žฌ: ์™ธ๋ถ€ ๋„๊ตฌ๋กœ ๋ณด์™„ ํ•„์š”.
  • ์ดˆ๋ณด์ž ์ง„์ž… ์žฅ๋ฒฝ: ๊ธฐ์ˆ ์  ์ดํ•ด ํ•„์š”.

๊ตฌ๊ธ€ ๊ฒ€์ƒ‰์— ๊ด€ํ•œ ์ •๋ณด๋“ค์ด ์ •๋ฆฌ๋˜์–ด์žˆ๋‹ค.

๋‹จ๊ณ„๋ณ„ ํ™œ์šฉ ์˜ˆ์‹œ

Step 1: ๊ณ„์ • ์„ค์ • ๋ฐ ์‚ฌ์ดํŠธ ๋“ฑ๋ก

  • Google Search Console ๊ณ„์ •์„ ์ƒ์„ฑ.
  • ์‚ฌ์ดํŠธ ์†์„ฑ ์ถ”๊ฐ€ ํ›„ ์†Œ์œ ๊ถŒ ํ™•์ธ (HTML ํƒœ๊ทธ, DNS ์„ค์ • ๋“ฑ ํ™œ์šฉ).

Step 2: ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ ํ™•์ธ

  • ์ƒ‰์ธ๋œ ํŽ˜์ด์ง€์™€ ํฌ๋กค๋ง ์˜ค๋ฅ˜๋ฅผ ์ ๊ฒ€.
  • ๊ธฐ์กด ์„ฑ๋Šฅ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€ํ† ํ•˜์—ฌ ํด๋ฆญ๋ฅ ์ด ๋‚ฎ์€ ํŽ˜์ด์ง€ ํ™•์ธ.

Step 3: ์„ฑ๋Šฅ ๋ถ„์„

  • ํŠน์ • ํ‚ค์›Œ๋“œ์˜ ์ˆœ์œ„ ๋ณ€ํ™”๋ฅผ ํ™•์ธ.
  • ํด๋ฆญ์ˆ˜๊ฐ€ ๋†’์€ ํŽ˜์ด์ง€์™€ ๋‚ฎ์€ ํŽ˜์ด์ง€๋ฅผ ๋น„๊ตํ•˜์—ฌ ๋ฌธ์ œ ์‹๋ณ„.

Step 4: ์˜ค๋ฅ˜ ์ˆ˜์ •

  • 404 ์˜ค๋ฅ˜ ํŽ˜์ด์ง€๋ฅผ ๋ฆฌ๋””๋ ‰์…˜ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œ.
  • ๋ชจ๋ฐ”์ผ ์‚ฌ์šฉ์„ฑ ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ SEO ์ ์ˆ˜ ๊ฐœ์„ .

Step 5: ์ตœ์ ํ™” ์ž‘์—…

  • ๋ฉ”ํƒ€ ํƒœ๊ทธ ์ˆ˜์ •, ํ‚ค์›Œ๋“œ ์กฐ์ • ๋“ฑ์œผ๋กœ ์ฝ˜ํ…์ธ  ์ตœ์ ํ™”.
  • ๋‚ด๋ถ€ ๋งํฌ ์ถ”๊ฐ€๋กœ ํŽ˜์ด์ง€ ์—ฐ๊ฒฐ์„ฑ ๊ฐ•ํ™”.

Step 6: ์ง€์†์ ์ธ ๋ชจ๋‹ˆํ„ฐ๋ง

  • ์ •๊ธฐ์ ์œผ๋กœ Search Console ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€ํ† ํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ์‹๋ณ„.
  • ํฌ๋กค๋ง ๋ฐ ์ƒ‰์ธ ์š”์ฒญ์œผ๋กœ ์ตœ์‹  ์ฝ˜ํ…์ธ  ์—…๋ฐ์ดํŠธ๋ฅผ Google์— ๋ฐ˜์˜.

ํ•ด๋‹น ๋งํฌ๋กœ ๋“ค์–ด๊ฐ„ ํ›„ ๋ณธ์ธ ์›น์‚ฌ์ดํŠธ์˜ ๋„๋ฉ”์ธ์„ ์ž…๋ ฅํ•˜๋ฉด๋œ๋‹ค.

image.png

image.png

  • ๋„๋ฉ”์ธ ์ฃผ์†Œ๊ฐ€ ์•„๋‹Œ, IP ์ฃผ์†Œ๋ฅผ ๋“ฑ๋ก์‹œ ์•ˆ๋œ๋‹คโ€ฆ
    • ๊ทธ๋Ÿฌ๋ฏ€๋กœ BooLock ๋„๋ฉ”์ธ์€ ๋“ฑ๋ก๋ถ€ํ„ฐ ์•ˆ๋œ๋‹ค ใ…‹ใ…‹
  • ๋„๋ฉ”์ธ๋งŒ ์ง€์›ํ•˜๊ณ  IP ์ฃผ์†Œ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์ด์œ 
    • DNS ๊ธฐ๋ฐ˜ ์ธ์ฆ์œผ๋กœ ์†Œ์œ ๊ถŒ ํ™•์ธ.

    • ๋„๋ฉ”์ธ์˜ ์•ˆ์ •์„ฑ๊ณผ IP์˜ ๊ฐ€๋ณ€์„ฑ.

    • SEO ์ตœ์ ํ™” ๋ฐ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๊ฐ•ํ™”.

    • HTTPS/SSL ํ‘œ์ค€ ์ง€์›.

    • ๊ตฌ๊ธ€ ์„œ์น˜ ์ฝ˜์†”์˜ ๊ฒ€์ƒ‰ ์—”์ง„ ์นœํ™”์  ์„ค๊ณ„.

    • GPT 4o ๋‹ต๋ณ€

      1. ๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜ ์›น ๊ด€๋ฆฌ์˜ ํ‘œ์ค€์„ฑ

      • DNS ์ธ์ฆ ์‚ฌ์šฉ

        ๊ตฌ๊ธ€ ์„œ์น˜ ์ฝ˜์†”์˜ ๋„๋ฉ”์ธ ์†์„ฑ์€ DNS ์ธ์ฆ(TXT ๋ ˆ์ฝ”๋“œ)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋„๋ฉ”์ธ์˜ ์†Œ์œ ๊ถŒ์„ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•œ ์•ˆ์ „ํ•˜๊ณ  ํ‘œ์ค€์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

        • IP ์ฃผ์†Œ๋Š” DNS ๊ธฐ๋ฐ˜ ์†Œ์œ ๊ถŒ ์ธ์ฆ์„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ DNS ๋ ˆ์ฝ”๋“œ(TXT, CNAME ๋“ฑ)๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
        • ๋”ฐ๋ผ์„œ, IP ์ฃผ์†Œ๋Š” ์†Œ์œ ๊ถŒ ์ธ์ฆ ๊ณผ์ •์— ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
      • ๋ฉ€ํ‹ฐํ”Œ ๋„๋ฉ”์ธ ๊ด€๋ฆฌ ์ง€์›

        ๋„๋ฉ”์ธ ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•˜๋‚˜์˜ ๋„๋ฉ”์ธ๊ณผ ๊ทธ ํ•˜์œ„ ๋„๋ฉ”์ธ ์ „์ฒด๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: example.com, www.example.com, sub.example.com). ํ•˜์ง€๋งŒ IP ์ฃผ์†Œ๋Š” ํŠน์ •ํ•œ ํ•˜์œ„ URL๋งŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด ๊ตฌ๊ธ€์˜ ๊ด€๋ฆฌ ํ‘œ์ค€์— ๋ถ€ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


      2. ๋„๋ฉ”์ธ์€ ์•ˆ์ •์„ฑ, IP๋Š” ๊ฐ€๋ณ€์„ฑ

      • IP ์ฃผ์†Œ๋Š” ๋ณ€ํ•  ์ˆ˜ ์žˆ๋‹ค
        • IP ์ฃผ์†Œ๋Š” ์„œ๋ฒ„๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜ ํ˜ธ์ŠคํŒ… ์ œ๊ณต์—…์ฒด๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ ๋ณ€๊ฒฝ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.
        • ๋ฐ˜๋ฉด, ๋„๋ฉ”์ธ์€ ๊ณ ์ •๋œ ์ด๋ฆ„์œผ๋กœ IP๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด๋„ ๊ณ„์† ๋™์ผํ•œ ๋„๋ฉ”์ธ์œผ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ๊ตฌ๊ธ€ ์„œ์น˜ ์ฝ˜์†”์€ ์ด๋Ÿฌํ•œ ์•ˆ์ •์„ฑ์„ ์ค‘์š”์‹œํ•ฉ๋‹ˆ๋‹ค.
      • IP ์ฃผ์†Œ ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค๋Š” ์ž„์‹œ์ 
        • IP ์ฃผ์†Œ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋น„์Šค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ž„์‹œ์ ์ด๊ฑฐ๋‚˜ ๊ฐœ๋ฐœ/ํ…Œ์ŠคํŠธ์šฉ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
        • ๊ตฌ๊ธ€์€ ์ •์‹ ์›น์‚ฌ์ดํŠธ์˜ ๊ด€๋ฆฌ์™€ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋œ ํ”Œ๋žซํผ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋„๋ฉ”์ธ ์ฃผ์†Œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์ดํŠธ๋ฅผ ๋“ฑ๋กํ•˜๋„๋ก ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

      3. ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”(SEO)์™€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜

      • IP ์ฃผ์†Œ๋Š” SEO์— ๋ถˆ๋ฆฌ
        • ๋„๋ฉ”์ธ ์ฃผ์†Œ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์นœ์ˆ™ํ•˜๊ณ , ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰ ์—”์ง„์ด ํŽ˜์ด์ง€๋ฅผ ํฌ๋กค๋งํ•  ๋•Œ ๋” ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
        • IP ์ฃผ์†Œ ๊ธฐ๋ฐ˜ ์›น์‚ฌ์ดํŠธ๋Š” ์‹ ๋ขฐ์„ฑ์ด ๋‚ฎ๊ฑฐ๋‚˜ ์ •์‹ ์„œ๋น„์Šค๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ์‹ ํ˜ธ๋กœ ๊ฐ„์ฃผ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
        • ๊ตฌ๊ธ€์€ ์„œ์น˜ ์ฝ˜์†”์„ ํ†ตํ•ด SEO๋ฅผ ๊ฐœ์„ ํ•˜๋ ค๋Š” ์›น์‚ฌ์ดํŠธ๋ฅผ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜ ์šด์˜์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.
      • ๋ธŒ๋žœ๋“œ ์ •์ฒด์„ฑ
        • ๋„๋ฉ”์ธ์€ ๋ธŒ๋žœ๋“œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ค‘์š”ํ•œ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ๊ตฌ๊ธ€ ์„œ์น˜ ์ฝ˜์†”์€ ๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์—…ํ•จ์œผ๋กœ์จ ๋ธŒ๋žœ๋“œ ์ธ์‹๊ณผ ์‹ ๋ขฐ๋„๋ฅผ ๊ฐ•ํ™”ํ•˜๋ ค๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

      4. HTTPS/SSL ์ง€์› ๋ฌธ์ œ

      • ๋Œ€๋ถ€๋ถ„์˜ SSL/TLS ์ธ์ฆ์„œ๋Š” ๋„๋ฉ”์ธ ์ด๋ฆ„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐœ๊ธ‰๋ฉ๋‹ˆ๋‹ค.
        • IP ์ฃผ์†Œ๋กœ HTTPS๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋“œ๋ฌผ๋ฉฐ, ์ง€์›๋˜๋”๋ผ๋„ ๋น„์šฉ์ด ๋น„์‹ธ๊ณ  ๊ด€๋ฆฌ๊ฐ€ ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค.
        • ๊ตฌ๊ธ€์€ HTTPS๋ฅผ ๊ฐ•๋ ฅํžˆ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ์œ„ํ•ด ๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜ URL๋งŒ ์ง€์›ํ•˜๋Š” ๋ฐฉ์‹์„ ์ฑ„ํƒํ•ฉ๋‹ˆ๋‹ค.

      5. ๊ตฌ๊ธ€ ์„œ์น˜ ์ฝ˜์†”์˜ ๊ธฐ์ˆ ์  ์„ค๊ณ„์™€ ๋ชฉ์ 

      • ๊ด‘๋ฒ”์œ„ํ•œ ๋„๋ฉ”์ธ ๊ด€๋ฆฌ๋ฅผ ์ง€์›
        • ๋„๋ฉ”์ธ ์†์„ฑ์„ ํ†ตํ•ด ์‚ฌ์ดํŠธ ์ „์ฒด ๋ฐ ๋ชจ๋“  ํ•˜์œ„ ๋„๋ฉ”์ธ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ฉ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. IP ์ฃผ์†Œ๋กœ๋Š” ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
      • ๊ฒ€์ƒ‰ ์—”์ง„ ์นœํ™”์  ์„ค๊ณ„
        • ๊ตฌ๊ธ€ ์„œ์น˜ ์ฝ˜์†”์€ ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ๋„๊ตฌ๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰ ์—”์ง„์€ ๋„๋ฉ”์ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ‰์ธ์„ ์ƒ์„ฑํ•˜๋ฉฐ, IP ์ฃผ์†Œ ๊ธฐ๋ฐ˜ ์›น์‚ฌ์ดํŠธ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ƒ‰์ธ ์ƒ์„ฑ์—์„œ ์ œ์™ธ๋˜๊ฑฐ๋‚˜ ๋‚ฎ์€ ์ˆœ์œ„๋ฅผ ๋ฐ›์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ดํ›„์— ๊ฐ€๋น„์•„์—์„œ ๊ตฌ๋งค ํ›„ http://boolock.site/ ์—ฐ๋™ํ•œ ๋’ค boolock.site ๋„๋ฉ”์ธ ๋“ฑ๋กํ•˜์˜€๋‹ค.

image.png

image.png

  • ๋„๋ฉ”์ธ ๋“ฑ๋ก ํ›„ ๊ฐ€๋น„์•„์—์„œ DNS ์„ค์ •์„ ํ•ด์ฃผ๋ฉด ์™ผ์ชฝํ™”๋ฉด์ด ๋œ๋‹ค.
  • ๋“ฑ๋ก ์งํ›„์—๋Š” ๊ฒ€์ƒ‰๋œ ํŒŒ์ผ์ด ์—†์–ด์„œ ๊ตฌ๊ธ€ ์„œ์น˜ ์ฝ˜์†” ๋ฐ์ดํ„ฐ์— ์•„๋ฌด๊ฒƒ๋„ ์•ˆ๋œฌ๋‹ค.

์š”์•ฝ

Google Search Console์€ ์›น์‚ฌ์ดํŠธ ์„ฑ๋Šฅ ๋ถ„์„๊ณผ SEO ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ํ•„์ˆ˜ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜ ์„ค์ •์ด ์š”๊ตฌ๋˜๋ฉฐ, ์ง€์†์ ์ธ ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ์ตœ์ ํ™”๋กœ ๊ฒ€์ƒ‰ ์ˆœ์œ„๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ€ ํ•„์ž์˜ BooLock ์‚ฌ์ดํŠธ ์ ์šฉ๊ธฐ

  1. img์˜ alt ์ ์šฉ

image.png

  • ๋ฌธ์ œ: ์ด๋ฏธ์ง€์— alt ์†์„ฑ์ด ์—†์–ด์„œ SEO ์ ์ˆ˜๊ฐ€ ํ•˜๋ฝ.
  • ๊ฐœ์„ : alt ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ด ๊ฒ€์ƒ‰ ์—”์ง„์ด ์ด๋ฏธ์ง€๋ฅผ ์ดํ•ดํ•˜๋„๋ก ์ง€์›ํ•˜๊ณ , ์ ‘๊ทผ์„ฑ์„ ๊ฐœ์„ .

2. index.html meta ํƒœ๊ทธ ์ˆ˜์ •

  • ์ˆ˜์ • ์ „: ๊ธฐ๋ณธ meta ํƒœ๊ทธ๋งŒ ์‚ฌ์šฉ. SEO์™€ Open Graph ์ •๋ณด ๋ถ€์กฑ.
  • ์ˆ˜์ • ํ›„:
    • ๊ธฐ๋ณธ meta ํƒœ๊ทธ: description, robots, author ์ถ”๊ฐ€.
    • Open Graph: ํŽ˜์ด์ง€ ์ œ๋ชฉ, ์„ค๋ช…, URL, ์ด๋ฏธ์ง€ ์ถ”๊ฐ€.
    • Twitter Cards: ํŠธ์œ„ํ„ฐ ๊ณต์œ ๋ฅผ ์œ„ํ•œ meta ํƒœ๊ทธ ์ถ”๊ฐ€.
  • before
<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" type="image/svg+xml" href="/images/boolock_logo.png" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>BooLock</title>
  </head>
  <body>
    <div id="root"></div>
    <script type="module" src="src/app/main.tsx"></script>
  </body>
</html>
  • after
<!doctype html>
<html lang="ko">
  <head>
    <!-- ๊ธฐ๋ณธ meta ํƒœ๊ทธ ๋ฐ link -->
    <meta charset="UTF-8" />
    <link rel="icon" type="image/svg+xml" href="/images/boolock_logo.png" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>BooLock</title>
    <meta
      name="description"
      content="์ฝ”๋”ฉ ์ž…๋ฌธ์ž๋“ค์ด html๊ณผ css๋ฅผ ๋ธ”๋ก์œผ๋กœ ์‰ฝ๊ณ  ์žฌ๋ฐŒ๊ฒŒ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค."
    />
    <meta name="robots" content="index, follow" />
    <meta name="author" content="๋ถ€์ŠคํŠธ์บ ํ”„ 9๊ธฐ Web31ํŒ€" />
    <!-- Open Graph -->
    <meta property="og:title" content="BooLock" />
    <meta
      property="og:description"
      content="์ฝ”๋”ฉ ์ž…๋ฌธ์ž๋“ค์ด html๊ณผ css๋ฅผ ๋ธ”๋ก์œผ๋กœ ์‰ฝ๊ณ  ์žฌ๋ฐŒ๊ฒŒ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค."
    />
    <meta property="og:url" content="<https://boolock.site/>" />
    <meta property="og:image" content="/images/boolock_thumnail.png" />
    <meta property="og:image:alt" content="๋ธ”๋ก์ฝ”๋”ฉ ํ”Œ๋žซํผ BooLock์˜ ์ธ๋„ค์ผ" />
    <meta property="og:image:width" content="1200" />
    <meta property="og:image:height" content="600" />
    <meta property="og:site_name" content="BooLock" />
    <meta property="og:type" content="website" />
    <!-- Twitter Cards -->
    <meta name="twitter:card" content="summary_large_image" />
    <meta name="twitter:title" content="BooLock: ์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ๋ธ”๋ก ์ฝ”๋”ฉ" />
    <meta name="twitter:description" content="HTML๊ณผ CSS๋ฅผ ๋ธ”๋ก์œผ๋กœ ์‰ฝ๊ณ  ์žฌ๋ฏธ์žˆ๊ฒŒ ๋ฐฐ์šฐ์„ธ์š”!" />
    <meta name="twitter:image" content="/images/twitter_thumbnail.png" />
  </head>
  <body>
    <div id="root" aria-label="BooLock ํ”Œ๋žซํผ"></div>
    <script type="module" src="src/app/main.tsx" defer></script>
  </body>
</html>

3. ๊ณต์œ  ๋งํฌ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ฐœ์„ 

  • ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ด๋ฏธ์ง€ ๋“ฑ๋ก (๊ฐ€๋กœ์„ธ๋กœ 2:1)

    image.png

  • ๊ณต์œ  ๋งํฌ ๋ฏธ๋ฆฌ๋ณด๊ธฐ before โ†’ after

image.png

image.png

  • ์™ผ์ชฝ์˜ ๋ฐ‹๋ฐ‹ํ•œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋งํฌ๊ฐ€ ๋ณด์ด์‹œ๋‚˜์š”?
  • ๋ฐ˜๋ฉด์— Open Graph๋ฅผ ์ ์šฉํ•˜๋ฉด ์˜ค๋ฅธ์ชฝ์ฒ˜๋Ÿผ ์‹ ๋ขฐ๊ฐ ์žˆ๊ณ  ๊ฐ€๋…์„ฑ ์ข‹์€ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋งํฌ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. react-helmet-async ์ ์šฉ

    root.render(
      <StrictMode>
        <QueryClientProvider client={queryClient}>
          <HelmetProvider>
            <App />
          </HelmetProvider>
        </QueryClientProvider>
      </StrictMode>
    );
     
    • main.tsx์—์„œ ์ด๋ ‡๊ฒŒ App์„ HelmetProvider๋กœ ๊ฐ์‹ธ์ค€๋‹ค.
    • ์ดํ›„ ๊ฐ ํŽ˜์ด์ง€ ์ƒ๋‹จ์— Helmetํƒœ๊ทธ์•ˆ์— meta ํƒœ๊ทธ๋ฅผ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.
      return (
        <>
          <Helmet>
            <title>BooLock - ํ™ˆ</title>
            <meta
              name="description"
              content="์ฝ”๋”ฉ ์ž…๋ฌธ์ž๋“ค์ด HTML๊ณผ CSS๋ฅผ ๋ธ”๋ก์œผ๋กœ ๋ฐฐ์šฐ๋Š” BooLock์˜ ๋ฉ”์ธ ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค."
            />
          </Helmet>
          {isPending && <Loading />}
          <div className="flex h-full w-full flex-col items-center">
            <HomeHeader isBlack={true} />
            <GuidesBox />
            <WorkspaceContainer />
            <WorkspaceModal />
          </div>
        </>
      );
  2. robots.txt ์ ์šฉ

    # ๋ชจ๋“  ํฌ๋กค๋Ÿฌ์—๊ฒŒ ์ „์ฒด ์‚ฌ์ดํŠธ ํฌ๋กค๋ง ํ—ˆ์šฉ
    User-agent: *
    Disallow:
    
    # ์‚ฌ์ดํŠธ๋งต ์œ„์น˜ ์ง€์ •
    Sitemap: <http://www.boolock.site/sitemap.xml>
    
    • ์„ค์ • ๋‚ด์šฉ
      • ๋ชจ๋“  ๊ฒ€์ƒ‰ ์—”์ง„ ํฌ๋กค๋Ÿฌ๊ฐ€ ์ „์ฒด ์‚ฌ์ดํŠธ๋ฅผ ํฌ๋กค๋งํ•˜๋„๋ก ํ—ˆ์šฉ.
      • ์‚ฌ์ดํŠธ๋งต ๊ฒฝ๋กœ ๋ช…์‹œ: http://www.boolock.site/sitemap.xml
  3. ๋ผ์ดํŠธํ•˜์šฐ์Šค before โ†’ after

390542208-95edc32c-5fea-4811-97e0-f85734475035.png

390541022-c7a93bc1-d454-4193-bb78-5e62d3706794.png

์š”์•ฝ

  1. alt ์†์„ฑ ์ถ”๊ฐ€๋กœ ์ ‘๊ทผ์„ฑ ๋ฐ SEO ๊ฐœ์„ .
  2. meta ํƒœ๊ทธ ๋ฐ Open Graph ์ถ”๊ฐ€๋กœ ๊ณต์œ  ๋งํฌ์™€ SEO ๊ฐ•ํ™”.
  3. react-helmet-async๋ฅผ ํ™œ์šฉํ•ด ๋™์  meta ํƒœ๊ทธ ๊ด€๋ฆฌ.
  4. robots.txt์™€ ์‚ฌ์ดํŠธ๋งต ์„ค์ •์œผ๋กœ ๊ฒ€์ƒ‰ ์—”์ง„ ํฌ๋กค๋ง ์ตœ์ ํ™”.
  5. ๋ผ์ดํŠธํ•˜์šฐ์Šค ์ ์ˆ˜๋ฅผ ๊ฐœ์„ ํ•ด ์„ฑ๋Šฅ๊ณผ SEO ์™„์„ฑ๋„ ํ–ฅ์ƒ.

BooLock์€ ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ํ†ตํ•ด ๊ฒ€์ƒ‰ ์—”์ง„ ๋ฐ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํฌ๊ฒŒ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ€ ์ฐธ๊ณ  ๋งํฌ