๐ ๊ฒ์ ์์ง์ด๋?

- ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ํค์๋์ ๋ง๋ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํ๋ ํ๋ก๊ทธ๋จ ๋๋ ์น ์๋น์ค.
- ์ฃผ์ ๊ฒ์ ์์ง: Google, Naver, Daum, Bing, Yahoo ๋ฑ.
๐ ๊ฒ์ ์์ง์ ๋์ ๊ณผ์

๊ฒ์ ์์ง์ ํฌ๋กค๋ง โ ์ธ๋ฑ์ฑ โ ๋ญํน ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํฉ๋๋ค.
- ํฌ๋กค๋ง (Crawling)
- ์ ์: ๊ฒ์ ์์ง์ด ์นํ์ด์ง ๋ด์ฉ์ ์์งํ๋ ๊ณผ์ .
- ๋ฐฉ๋ฒ: ๊ฒ์ ์์ง ๋ก๋ด(ํฌ๋กค๋ฌ ๋๋ ์คํ์ด๋)์ด ๋งํฌ๋ฅผ ๋ฐ๋ผ ์ ํ์ด์ง๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๊ธฐ์กด ํ์ด์ง ๋ณ๊ฒฝ ์ฌํญ์ ํ์ธ.
- ์์: ์ฌ์๊ฐ ์ ์ฑ ์ ์ฐพ์ ๋์๊ด์ ๋ฑ๋กํ๋ ๊ฒ๊ณผ ์ ์ฌ.
- ์ธ๋ฑ์ฑ (Indexing)
- ์ ์: ์์งํ ์ ๋ณด๋ฅผ ๋ถ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ณ ๋ถ๋ฅํ๋ ๊ณผ์ .
- ๋ด์ฉ: ์นํ์ด์ง์ ํ ์คํธ, ์ด๋ฏธ์ง, ๋น๋์ค ๋ฑ์ ์ฃผ์ ๋ณ๋ก ๋ถ๋ฅ.
- ์์: ์ฌ์๊ฐ ์ฑ ์ ์ฃผ์ ๋ณ๋ก ๋ถ๋ฅํ๊ณ ๋์ ๋ชฉ๋ก์ ๋ง๋๋ ๊ณผ์ .
- ๋ญํน (Ranking)
- ์ ์: ๊ฒ์์ด์ ๊ฐ์ฅ ๊ด๋ จ์ฑ ๋์ ๊ฒฐ๊ณผ๋ฅผ ์์์ ๋ ธ์ถํ๋ ๊ณผ์ .
- ๊ธฐ์ค: ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ผ ์๋ฐฑ ๊ฐ์ง ์์๋ฅผ ํ๊ฐํด ์์๋ฅผ ๊ฒฐ์ .
- ์์: ์ฌ์๊ฐ ๋ฐฉ๋ฌธ๊ฐ์ ์ง๋ฌธ์ ๊ฐ์ฅ ์ ํฉํ ์ฑ ์ ์ถ์ฒํ๋ ๊ณผ์ .
์์ฝ
๊ฒ์ ์์ง์ ํฌ๋กค๋ง์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ณ , ์ธ๋ฑ์ฑ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฅํ๋ฉฐ, ๋ญํน์ ํตํด ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๊ฒ์์ด์ ๊ฐ์ฅ ์ ํฉํ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํ๋ ์์คํ ์ ๋๋ค.
๐ ๊ฒ์ ์์ง ์ต์ ํ(SEO)๋?
-
SEO(Search Engine Optimization)
์น์ฌ์ดํธ๊ฐ ํฌ๋กค๋ง โ ์ธ๋ฑ์ฑ โ ๋ญํน ๊ณผ์ ์์ ๋ ์ ๋ฐ๊ฒฌ๋๊ณ ๋์ ์์์ ๋ ธ์ถ๋๋๋ก ์ต์ ํํ๋ ์์ .
-
๋ชฉ์
์น ํ์ด์ง๋ฅผ ๊ฒ์ ์์ง ๊ฒฐ๊ณผ์์ ์์์ ๋ ธ์ถ์ํค๋ ๊ฒ.
-
๋น์
์ฐ๋ฆฌ์ ์น์ฌ์ดํธ(์ฑ )๋ฅผ ๋์๊ด์์ ๊ฐ์ฅ ๋์ ๋๋ ๊ณณ์ ๋ฐฐ์นํ๋๋ก ๋๋ ์์ .
์์ฝ
๊ฒ์ ์์ง์ ์๋ ์๋ฆฌ๋ฅผ ์ดํดํ๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์น์ฌ์ดํธ๋ฅผ ์ต์ ํํด ๋ ๋ง์ ์ฌ์ฉ์์๊ฒ ๋๋ฌํ๋ ๊ฒ์ด SEO์ ํต์ฌ์ ๋๋ค.
๐ SEO์ ์ค์์ฑ

- ์น์ฌ์ดํธ ๊ฐ์์ฑ ํฅ์
- ๊ฒ์ ๊ฒฐ๊ณผ ์์์ ๋ ธ์ถ๋๋ฉด ๋ ๋ง์ ๋ฐฉ๋ฌธ์๋ฅผ ์ ๋ํ ์ ์์ผ๋ฉฐ, ์ด๋ ์ ์ฌ ๊ณ ๊ฐ ์ฆ๊ฐ๋ก ์ด์ด์ง๋๋ค.
- ํ๊ฒ ๊ณ ๊ฐ ์ง์ ๋๋ฌ
- ํน์ ํค์๋๋ฅผ ๊ฒ์ํ๋ ์ฌ์ฉ์๋ ์ด๋ฏธ ํด๋น ์ ํ์ด๋ ์๋น์ค์ ๊ด์ฌ์ด ์๋ ์ ์ฌ ๊ณ ๊ฐ์ ๋๋ค.
- ๊ฒ์ ์์ ๋ ธ์ถ์ ๋์ ์ ํ์จ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค.
- ๋น์ฉ ํจ์จ์ฑ
- 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๋ ํฌ๋กค๋ง, ์ธ๋ฑ์ฑ, ๋ญํน ๋จ๊ณ์์ ๊ฐ๊ฐ ์ต์ ํ๋ฅผ ํตํด ์น์ฌ์ดํธ์ ๊ฐ์์ฑ์ ๋์ด๊ณ , ๊ฒ์ ์์ง์์ ์์ ๋ ธ์ถ๋ ์ ์๋๋ก ๋๋ ์์ ์ ๋๋ค.
๐ ์ธก์ ๋ฐฉ๋ฒ
- SEO๋ ์ข์ง๋ง ํผํฌ๋จผ์ค ์ธก์ ์ด ์ด๋ ต๋ค
- SEO๋ฅผ ๊ฐ์ ํ๋๋ผ๋ ์ค์ ํผํฌ๋จผ์ค๋ฅผ ์ ๋์ ์ผ๋ก ํ์ธํ๋ ๊ฒ์ด ์ค์ํ๋ค.
- ๊ฒ์ ์์ง ์ต์ ํ ๊ฐ์ด๋๋ผ์ธ
- Google๊ณผ ๊ฐ์ ์ฃผ์ ๊ฒ์ ์์ง์ ๊ณต์ ๊ฐ์ด๋๋ผ์ธ์ ์ฐธ๊ณ ํด SEO๋ฅผ ์ ๊ฒํ๋ค.
- Lighthouse
- ๊ตฌ๊ธ์์ ์ ๊ณตํ๋ ์คํ ์์ค ๋๊ตฌ๋ก ์น์ฌ์ดํธ์ ์ฑ๋ฅ, ์ ๊ทผ์ฑ, SEO ๋ฑ์ ์๋์ผ๋ก ๋ถ์ ๊ฐ๋ฅ.
- ์ฃผ์ ์ ์ ํญ๋ชฉ:
- Performance (์ฑ๋ฅ)
- Accessibility (์ ๊ทผ์ฑ)
- Best Practices (์ต์ ํ)
- SEO (๊ฒ์ ์์ง ์ต์ ํ)
- Google Search Console
- ๊ตฌ๊ธ์ด ๋ด ํ์ด์ง๋ฅผ ์ด๋ป๊ฒ ์ธ๋ฑ์ฑํ๋์ง ํ์ธ ๊ฐ๋ฅ.
- ๊ฒ์ ์์ง์์ ๋ด ํ์ด์ง๊ฐ ์ ๋ ธ์ถ๋๊ณ ์๋์ง ํ์ธํ๊ณ , ๋ฌธ์ ๋ฅผ ์ง๋จํ ์ ์๋ ์ ์ฉํ ๋๊ตฌ.
๐ React์ SEO ํ๊ณ ๋ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ

- ํฌ๋กค๋ง ๋ด๊ณผ HTML ๊ตฌ์กฐ
- ํฌ๋กค๋ง ๋ด์ HTML ๋ณธ๋ฌธ๊ณผ ๋ฉํ ์ ๋ณด๋ฅผ ๋ถ์ํ์ฌ ํ์ด์ง ์ฃผ์ , ๊ตฌ์กฐ, ์ฐ๊ด๋ ํ์ด์ง, ์คํธ ์ฌ๋ถ ๋ฑ์ ํ๋จํฉ๋๋ค.
- React๋ SPA(Single Page Application) ๋ฐฉ์์ผ๋ก, ๋ชจ๋ ํ์ด์ง๊ฐ ํ๋์ HTML ํ์ผ๋ง์ ์ฌ์ฉํ๊ณ JavaScript๋ก ๋์ ์ฝํ ์ธ ๋ฅผ ๋ ๋๋งํฉ๋๋ค. โ ์ด๋ก ์ธํด ๊ฒ์ ์์ง ์ต์ ํ(SEO)์ ๋ถ๋ฆฌํฉ๋๋ค.
- SPA์ SEO ๋ฌธ์ ์
- ํฌ๋กค๋ฌ๋ JavaScript๋ฅผ ์คํํ์ง ๋ชปํ๊ฑฐ๋, ์คํ์ด ์ ํ์ ์ธ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. โ CSR(Client-Side Rendering) ํ๊ฒฝ์์๋ ์ด๊ธฐ HTML๋ง ์ฝ๊ณ , ๋์ ์ฝํ ์ธ ๋ ์ธ์ํ์ง ๋ชปํด SEO ์ ์๊ฐ ๋ฎ์์ง ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
- 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 ์ ์๋ฅผ ํฅ์.
- SSR/SSG (Pre-rendering)
- ๊ฒฐ๋ก
- React์ SPA ๋ฐฉ์์ SEO์ ๋ถ๋ฆฌํ์ง๋ง, SSR/SSG ๋ฐฉ์์ผ๋ก ์ ์ HTML ํ์ผ์ ์์ฑํ๊ฑฐ๋ React-Helmet-Async๋ก ๋ฉํ ์ ๋ณด๋ฅผ ๋์ ์ผ๋ก ๊ด๋ฆฌํ๋ฉด SEO ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
๐ Meta ํ๊ทธ ์ ๋ฆฌ

1. Meta ํ๊ทธ๋?
์นํ์ด์ง์ ์์ฝ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ฉฐ, SEO(๊ฒ์ ์์ง ์ต์ ํ), ์์ ๋ฏธ๋์ด ๊ณต์ , ๋ธ๋ผ์ฐ์ ๋์ ๋ฑ์ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
์ฃผ์ Meta ํ๊ทธ๋ก Title, Description, Viewport ๋ฑ์ด ์์ต๋๋ค.
-
์ฃผ์ ๋ฉํ ํ๊ทธ
-
Meta Title
-
ํ์ด์ง์ ์ ๋ชฉ์ ์ ์.
-
์ ํฌ๋ค์ด ํํ ์ฐ๋
<title>๋ด ์น์ฌ์ดํธ ์ ๋ชฉ</title>์ด ๋ถ๋ถ์ด Meta Title ํ๊ทธ์ ๋๋ค. ๋ค๋ฅธ ๋ฉํ ํ๊ทธ๋ค์ฒ๋ผ ์ด๋ ๊ฒ ์ฐ์ด์ง๋ ์๋ค์ ใ ใ <title>๋ด ์น์ฌ์ดํธ ์ ๋ชฉ</title>
-
-
Meta Description
- ์นํ์ด์ง ์์ฝ ์ ๋ณด๋ฅผ ์ ๊ณต.
- ๊ตฌ๊ธ ๊ฒ์ ๊ฒฐ๊ณผ์์ URL ์๋ ํ์.
<meta name="description" content="๊ท์ฌ์ด ์์ฌ์ ํฌํด๋ฝ ์ฌ์ดํธ์ ๋๋ค."> -
Meta Keywords (๊ฑฐ์ ์ฌ์ฉ๋์ง ์์)
- ๊ณผ๊ฑฐ์ ์ฌ์ฉ๋๋ ํค์๋ ํ๊ทธ. ํ์ฌ๋ SEO์ ์ํฅ ์์.
<meta name="keywords" content="HTML, ๋ฉํ ํ๊ทธ, SEO"> -
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">
-
-
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: ํ์ด์ง์ ๋๋น
- ํญ์
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">
-

์์ฝ
Meta ํ๊ทธ๋ SEO์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ต์ ํํ๋ ๋ฐ ํ์์ ์ ๋๋ค. Title๊ณผ Description์ ๋น๋กฏํด, Open Graph์ Viewport ํ๊ทธ๋ ์นํ์ด์ง์ ๊ฒ์ ๋ฐ ๊ณต์ ๊ฐ์์ฑ์ ํฌ๊ฒ ํฅ์์ํต๋๋ค.
๐ open graph

- ์ฝํ
์ธ ๋งํฌ๋ฅผ SNS์์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํํ๋ก ์ ๊ณตํ๋ ํ๋กํ ์ฝ.
- 2010๋ ํ์ด์ค๋ถ์ด ๋ฐํํ์ผ๋ฉฐ, ํธ์ํฐ, ๋งํฌ๋์ธ ๋ฑ์์๋ ์ฑํํด ์์ ๋ฏธ๋์ด UX๋ฅผ ๊ฐ์ . โ ๋งํฌ ๊ณต์ ์ ๋ํ๋๋ ์ ๋ชฉ, ์ค๋ช , ์ด๋ฏธ์ง ๋ฑ์ด Open Graph ํ๊ทธ๋ก ์์ฑ๋ฉ๋๋ค.
Open Graph ํ๊ทธ์ ํน์ง
- ์์
๋ฏธ๋์ด์ ํนํ๋ ํ๋กํ ์ฝ
- ์นํ์ด์ง ๋งํฌ ๊ณต์ ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์์ฑ.
- ์ฌ์ฉ์ ์ ์ ๊ณผ ์ ํ์จ์ ์ฆ๊ฐ์์ผ SEO์ ๊ฐ์ ์ ์ธ ํจ๊ณผ๋ฅผ ์ ๊ณต.
- SEO์์ ๊ด๊ณ
- SEO ์ ์์ ์ง์ ์ํฅ์ ์ฃผ์ง๋ ์์ง๋ง, ์น์ฌ์ดํธ์ ๊ฐ์์ฑ๊ณผ ์ฌ์ฉ์ ํด๋ฆญ๋ฅ ์ ๋์ด๋ ๋ฐ ๊ธฐ์ฌ.
์ฃผ์ Open Graph ํ๊ทธ
og:title: ํ์ด์ง ์ ๋ชฉog:description: ํ์ด์ง ์์ฝ ์ค๋ชog:url: ํ์ด์ง URLog:image: ๊ณต์ ๋ ์ด๋ฏธ์ง URLog:image:alt: ์ด๋ฏธ์ง์ ๋ํ ์ค๋ชog:site_name: ์น์ฌ์ดํธ ์ด๋ฆog:type: ์ฝํ ์ธ ์ ํ (์:article,website๋ฑ)article:author: ์์ฑ์ ์ ๋ณดarticle:section: ์นดํ ๊ณ ๋ฆฌ ์ ๋ณดarticle:tag: ํ๊ทธ ์ ๋ณด
์ฌ์ฉ ์์
-
์คํ ๊ทธ๋ํ ํ๊ทธ์ ์ข ๋ฅ๋ ๋งค์ฐ ๋ง๋ค.
og:titleog:descriptionog:urlog:imageog: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. ์ฌ์ฉ ๋ฐฉ๋ฒ
-
HelmetProvider๋ก ์ฑ ๊ฐ์ธ๊ธฐ
index.js๋๋main.js์์<HelmetProvider>๋ก ์ฑ์ ๊ฐ์ผ๋ค.import { HelmetProvider } from "react-helmet-async"; root.render( <HelmetProvider> <BrowserRouter> <App /> </BrowserRouter> </HelmetProvider> ); -
ํ์ด์ง๋ณ 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; -
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์ ๋ฐ์.
ํด๋น ๋งํฌ๋ก ๋ค์ด๊ฐ ํ ๋ณธ์ธ ์น์ฌ์ดํธ์ ๋๋ฉ์ธ์ ์ ๋ ฅํ๋ฉด๋๋ค.


- ๋๋ฉ์ธ ์ฃผ์๊ฐ ์๋, 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 ๋๋ฉ์ธ ๋ฑ๋กํ์๋ค.


- ๋๋ฉ์ธ ๋ฑ๋ก ํ ๊ฐ๋น์์์ DNS ์ค์ ์ ํด์ฃผ๋ฉด ์ผ์ชฝํ๋ฉด์ด ๋๋ค.
- ๋ฑ๋ก ์งํ์๋ ๊ฒ์๋ ํ์ผ์ด ์์ด์ ๊ตฌ๊ธ ์์น ์ฝ์ ๋ฐ์ดํฐ์ ์๋ฌด๊ฒ๋ ์๋ฌ๋ค.
์์ฝ
Google Search Console์ ์น์ฌ์ดํธ ์ฑ๋ฅ ๋ถ์๊ณผ SEO ์ต์ ํ๋ฅผ ์ํ ํ์ ๋๊ตฌ์ ๋๋ค. ๋๋ฉ์ธ ๊ธฐ๋ฐ ์ค์ ์ด ์๊ตฌ๋๋ฉฐ, ์ง์์ ์ธ ๋ชจ๋ํฐ๋ง๊ณผ ์ต์ ํ๋ก ๊ฒ์ ์์๋ฅผ ๊ฐ์ ํ ์ ์์ต๋๋ค.
๐ ํ์์ BooLock ์ฌ์ดํธ ์ ์ฉ๊ธฐ
- img์ alt ์ ์ฉ

- ๋ฌธ์ : ์ด๋ฏธ์ง์
alt์์ฑ์ด ์์ด์ SEO ์ ์๊ฐ ํ๋ฝ. - ๊ฐ์ :
alt์์ฑ์ ์ถ๊ฐํด ๊ฒ์ ์์ง์ด ์ด๋ฏธ์ง๋ฅผ ์ดํดํ๋๋ก ์ง์ํ๊ณ , ์ ๊ทผ์ฑ์ ๊ฐ์ .
2. index.html meta ํ๊ทธ ์์
- ์์ ์ : ๊ธฐ๋ณธ meta ํ๊ทธ๋ง ์ฌ์ฉ. SEO์ Open Graph ์ ๋ณด ๋ถ์กฑ.
- ์์ ํ:
- ๊ธฐ๋ณธ meta ํ๊ทธ:
description,robots,author์ถ๊ฐ. - Open Graph: ํ์ด์ง ์ ๋ชฉ, ์ค๋ช , URL, ์ด๋ฏธ์ง ์ถ๊ฐ.
- Twitter Cards: ํธ์ํฐ ๊ณต์ ๋ฅผ ์ํ meta ํ๊ทธ ์ถ๊ฐ.
- ๊ธฐ๋ณธ 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)

-
๊ณต์ ๋งํฌ ๋ฏธ๋ฆฌ๋ณด๊ธฐ before โ after


- ์ผ์ชฝ์ ๋ฐ๋ฐํ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋งํฌ๊ฐ ๋ณด์ด์๋์?
- ๋ฐ๋ฉด์ Open Graph๋ฅผ ์ ์ฉํ๋ฉด ์ค๋ฅธ์ชฝ์ฒ๋ผ ์ ๋ขฐ๊ฐ ์๊ณ ๊ฐ๋ ์ฑ ์ข์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋งํฌ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
-
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> </> ); -
robots.txt ์ ์ฉ
# ๋ชจ๋ ํฌ๋กค๋ฌ์๊ฒ ์ ์ฒด ์ฌ์ดํธ ํฌ๋กค๋ง ํ์ฉ User-agent: * Disallow: # ์ฌ์ดํธ๋งต ์์น ์ง์ Sitemap: <http://www.boolock.site/sitemap.xml>- ์ค์ ๋ด์ฉ
- ๋ชจ๋ ๊ฒ์ ์์ง ํฌ๋กค๋ฌ๊ฐ ์ ์ฒด ์ฌ์ดํธ๋ฅผ ํฌ๋กค๋งํ๋๋ก ํ์ฉ.
- ์ฌ์ดํธ๋งต ๊ฒฝ๋ก ๋ช
์:
http://www.boolock.site/sitemap.xml
- ์ค์ ๋ด์ฉ
-
๋ผ์ดํธํ์ฐ์ค before โ after


์์ฝ
- alt ์์ฑ ์ถ๊ฐ๋ก ์ ๊ทผ์ฑ ๋ฐ SEO ๊ฐ์ .
- meta ํ๊ทธ ๋ฐ Open Graph ์ถ๊ฐ๋ก ๊ณต์ ๋งํฌ์ SEO ๊ฐํ.
- react-helmet-async๋ฅผ ํ์ฉํด ๋์ meta ํ๊ทธ ๊ด๋ฆฌ.
- robots.txt์ ์ฌ์ดํธ๋งต ์ค์ ์ผ๋ก ๊ฒ์ ์์ง ํฌ๋กค๋ง ์ต์ ํ.
- ๋ผ์ดํธํ์ฐ์ค ์ ์๋ฅผ ๊ฐ์ ํด ์ฑ๋ฅ๊ณผ SEO ์์ฑ๋ ํฅ์.
BooLock์ ์ด๋ฌํ ์์ ์ ํตํด ๊ฒ์ ์์ง ๋ฐ ์ฌ์ฉ์ ๊ฒฝํ์ ํฌ๊ฒ ๊ฐ์ ํ์ต๋๋ค.
๐ ์ฐธ๊ณ ๋งํฌ
- https://www.youtube.com/watch?v=giCR2IneTPw&list=PLxP1MBEv1X4zNAFpq7Ku2L33_V9QkRFEt&index=23
- https://www.youtube.com/watch?v=JiFPTlEMrAs&list=PLxP1MBEv1X4zNAFpq7Ku2L33_V9QkRFEt&index=22
- https://1point.kr/blog/insights/seo-search-engine-optimization/
- https://velog.io/@lhj5924/์ฌ์ฉ์-์นํ-์น-React์์-๊ฒ์์์ง-์ต์ ํSEOํ๋-๋ฐฉ๋ฒ๋ค
- https://velog.io/@parallelkim/๋ฆฌ์กํธ-SEO์-๊ดํ-๋ชจ๋ -๊ฒ
- https://www.npmjs.com/package/react-helmet-async
- https://velog.io/@miyoni/noSSRyesSEO
- https://jeonghwan-kim.github.io/dev/2020/08/15/react-helmet.html
- https://homebody-coder.tistory.com/entry/React์-SEO-์ต์ ํ-๋ฐฉ๋ฒ-React-Helmet-Async-Prerender