์ด ํ์ด์ง์ ์ํ๋ AI ์ด์์คํดํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์๋ฅผ ์์ฝํฉ๋๋ค
๋ฒ์ ๊ธฐ๋ก
- "scan ๋ช
๋ น์ด ์ถ๊ฐ"v9.0.02026. 6. 11.
์ด ํ์ด์ง์ ์ฝํ ์ธ ๋ AI๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒ์ญ๋์์ต๋๋ค.
์์ด ์๋ณธ ๋ด์ฉ์ ์ต์ ๋ฒ์ ์ ๋ณด๊ธฐ์ด ๋ฌธ์๋ฅผ ๊ฐ์ ํ ์์ด๋์ด๊ฐ ์์ผ์๋ฉด GitHub์ ํ ๋ฆฌํ์คํธ๋ฅผ ์ ์ถํ์ฌ ์์ ๋กญ๊ฒ ๊ธฐ์ฌํด ์ฃผ์ธ์.
๋ฌธ์์ ๋ํ GitHub ๋งํฌ๋ฌธ์์ Markdown์ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์น์ฌ์ดํธ ์ค์บ
scan ๋ช
๋ น์ด๋ ๊ณต๊ฐ URL์ ๊ฐ์ ธ์ ์ด ํ์ด์ง ํฌ๊ธฐ๋ฅผ ์ธก์ ํ๊ณ ํ์ด์ง์ i18n ๋ฐ SEO ์ํ๋ฅผ ๊ฐ์ฌ(audit)ํฉ๋๋ค. HTML ์์ฑ, ์ ๊ท(canonical) ๋งํฌ, hreflang ํ๊ทธ, robots.txt, sitemap.xml, ๋ก์ปฌ๋ผ์ด์ฆ๋ ๋ด๋ถ ๋งํฌ, ๊ทธ๋ฆฌ๊ณ JavaScript ๋ฒ๋ค์ ๋ก์ผ์ผ ๊ฐ์ค์น๋ฅผ ๋ค๋ฃจ๋ ํ๊ฐ ๋ณด๊ณ ์(0-100)๋ฅผ ์์ฑํฉ๋๋ค.
์ถ๊ฐ์ ์ธ ์ข ์์ฑ์ ํ์ํ์ง ์์ต๋๋ค. puppeteer๊ฐ ์ค์น๋ ๊ฒฝ์ฐ, ๋ ์ ๋ฐํ ๋ฒ๋ค ๋ถ์์ ์ํด ์ง์ฐ ๋ก๋(lazy-loaded)๋๋ JavaScript ์ฒญํฌ๋ฅผ ์บก์ฒํ ์ ์์ผ๋ฉฐ, ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ HTML์ ์ ์ธ๋ ์ฆ์ ๋ก๋๋๋ ์คํฌ๋ฆฝํธ๋ฅผ ๊ฒ์ฌํ๋ ๊ธฐ๋ณธ ๋ฐฉ์์ผ๋ก ๋์ฒด๋ฉ๋๋ค.
์ฌ์ฉ๋ฒ
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์์
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์ถ๋ ฅ ์์:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์ต์
<url> (ํ์)
์ค์บํ ์ ๊ท URL(์: https://example.com).
--no-deep
๋ ๋๋ง ๊ธฐ๋ฐ์ ์ ๋ฐ ์ค์บ์ ๋นํ์ฑํํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋ช ๋ น์ด๋ puppeteer๋ฅผ ์ฌ์ฉํ์ฌ ํค๋๋ฆฌ์ค ๋ธ๋ผ์ฐ์ ์์ ํ์ด์ง๋ฅผ ๋ ๋๋งํ๊ณ , ์ง์ฐ ๋ก๋๋๋ JavaScript ์ฒญํฌ๋ฅผ ์บก์ฒํ์ฌ ์ค์ ์ ์ก ํฌ๊ธฐ๋ฅผ ์ธก์ ํ๋ ค๊ณ ์๋ํฉ๋๋ค. puppeteer๊ฐ ์ค์น๋์ด ์์ง ์์ผ๋ฉด ์๋์ผ๋ก ๊ธฐ๋ณธ ๋ชจ๋๋ก ๋์ฒด๋ฉ๋๋ค.
puppeteer๊ฐ ํ์ฑํ๋์ด ์์ด๋ ๊ธฐ๋ณธ ๋ชจ๋๋ฅผ ๊ฐ์ ํ๋ ค๋ฉด --no-deep์ ์ ๋ฌํ์ญ์์ค.
์์: npx intlayer scan https://example.com --no-deep
--json
์์ํ๋ ๋ณด๊ณ ์ ๋์ ์ ์ฒด ์ค์บ ๊ฒฐ๊ณผ๋ฅผ JSON ๊ฐ์ฒด๋ก ์ถ๋ ฅํฉ๋๋ค. ํ๋ก๊ทธ๋จ ๋ฐฉ์์ ์๋น ๋๋ CI ํ์ดํ๋ผ์ธ์ ์ ์ฉํฉ๋๋ค.
์์: npx intlayer scan https://example.com --json
ํ์ค ์ค์ ์ต์
--base-dirโintlayer.config.*ํ์ผ์ ์ฐพ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ธฐ์ค ๋๋ ํ ๋ฆฌ.-e, --envโ ๋์ ํ๊ฒฝ (์:development,production).--env-fileโ ์ฌ์ฉ์ ์ง์ .envํ์ผ์ ๊ฒฝ๋ก.--no-cacheโ ์ค์ ์บ์๋ฅผ ๋นํ์ฑํํฉ๋๋ค.--verboseโ ์ธ๋ถ ๋ก๊น ์ ํ์ฑํํฉ๋๋ค (CLI ๋ชจ๋์์ ๊ธฐ๋ณธ๊ฐ).--prefixโ ์ฌ์ฉ์ ์ง์ ๋ก๊ทธ ์ ๋์ฌ.
๊ฒ์ฌ ํญ๋ชฉ
ํ ์ด๋ธ์ ๋ชจ๋ฌ๋ก ์ด์ด ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ช ํํ๊ฒ ํ์ธ
| ๊ฒ์ฌ ํญ๋ชฉ | ์ค๋ช | ์ ์ ๊ฐ์ค์น |
|---|---|---|
html lang | <html lang="โฆ"> ์์ฑ ์กด์ฌ ์ฌ๋ถ | 9 |
html dir | <html dir="โฆ"> ์์ฑ ์กด์ฌ ์ฌ๋ถ | 3 |
canonical | <link rel="canonical"> ์กด์ฌ ์ฌ๋ถ | 10 |
hreflang | <link rel="alternate" hreflang="โฆ"> ํ๊ทธ ์กด์ฌ ์ฌ๋ถ | 9 |
x-default hreflang | x-default hreflang ๋์ฒด ๋งํฌ ์กด์ฌ ์ฌ๋ถ | 7 |
localized links | ํ๋ ์ด์์ ๋ด๋ถ ๋งํฌ์ ๋ก์ผ์ผ ์ธ๊ทธ๋จผํธ๊ฐ ํฌํจ๋์ด ์๋์ง ์ฌ๋ถ | 5 |
all links localized | ๋ชจ๋ ๋ด๋ถ ๋งํฌ์ ๋ก์ผ์ผ ์ธ๊ทธ๋จผํธ๊ฐ ํฌํจ๋์ด ์๋์ง ์ฌ๋ถ | 5 |
current locale | ํ์ด์ง ๋ก์ผ์ผ ๊ฐ์ง ๊ฐ๋ฅ ์ฌ๋ถ | 3 |
robots.txt present | /robots.txt๊ฐ 200 ์๋ต์ ๋ฐํํ๋์ง ์ฌ๋ถ | 10 |
robots.txt locale paths | robots.txt์์ ๋ก์ผ์ผ ๊ฒฝ๋ก๊ฐ ์ฐจ๋จ๋์ง ์์๋์ง ์ฌ๋ถ | 10 |
sitemap.xml present | /sitemap.xml์ด 200 ์๋ต์ ๋ฐํํ๋์ง ์ฌ๋ถ | 10 |
sitemap locale coverage | ๊ฐ์ง๋ ๋ชจ๋ ๋ก์ผ์ผ์ด ์ฌ์ดํธ๋งต์ ๋ํ๋๋์ง ์ฌ๋ถ | 10 |
sitemap alternates | ์ฌ์ดํธ๋งต์ hreflang ๋์ฒด ๋งํฌ๊ฐ ํฌํจ๋์ด ์๋์ง ์ฌ๋ถ | 5 |
sitemap x-default | ์ฌ์ดํธ๋งต์ x-default hreflang์ด ํฌํจ๋์ด ์๋์ง ์ฌ๋ถ | 5 |
unused bundle content | JS ๋ฒ๋ค์ ๋ถํ์ํ๊ฒ ์ฌ์ฉ๋์ง ์๋ ๋ก์ผ์ผ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋์ด ์์ง ์์์ง ์ฌ๋ถ | 9 |
์ต์ข ์ ์๋ ๋ชจ๋ ํต๊ณผ๋ ๊ฒ์ฌ์ ๊ฐ์ค์น ํฉ๊ณ๋ฅผ ๋ฐฑ๋ถ์จ(0-100)๋ก ๋ํ๋ธ ๊ฒ์ ๋๋ค.
ํ๋ก๊ทธ๋จ ๋ฐฉ์์ผ๋ก ์ค์บ ํจ์ ์ฌ์ฉํ๊ธฐ
scan ํจ์๋ @intlayer/cli์์๋ ๋ด๋ณด๋ด์ง๋ฏ๋ก ์ฌ์ฉ์ ์ง์ ์คํฌ๋ฆฝํธ์์ ์ง์ ํธ์ถํ ์ ์์ต๋๋ค:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
๋ ๋ฎ์ ์์ค์ ์ก์ธ์ค๋ฅผ ์ํด @intlayer/engine/scan์ scanWebsite๋ ๊ตฌ์กฐํ๋ ScanResult ๊ฐ์ฒด๋ฅผ ๋ฐํํฉ๋๋ค:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
