URL 슬러그 생성기
어떤 제목이든 깔끔한 URL 슬러그로 바꿔줍니다 — 발음 기호는 로마자로 변환, 문장부호는 제거, 여러 줄 일괄 처리도 지원합니다.
조회수 1,090회
작동 방식
제목을 슬러그로 바꾸는 작업은 사실 두 가지 문제가 겹쳐 있습니다: 텍스트를 소문자화하고 하이픈으로 연결하는 것, 그리고 순수한 a-z가 아닌 모든 글자를 처리하는 것입니다. 발음 기호가 붙은 라틴 문자에 대해 이 도구는 유니코드 정규화(NFD — Normalization Form Decomposition)를 사용합니다: "é"는 하나의 글리프처럼 보이지만, NFD는 이를 기본 문자 "e"와 별도의 결합 급강세 표시(combining acute accent)로 분해합니다. 분해가 끝나면 도구는 모든 결합 기호를 제거하고 기본 문자만 남깁니다 — 별도의 대조표 없이도 "café"는 깔끔하게 "cafe"가 됩니다.
하지만 터키어 문자는 이 방식을 무너뜨립니다. "İ/ı"와 "ğ"는 유니코드 규칙상 기본 문자와 제거 가능한 기호로 분해되지 않습니다 — 점 없는 "ı"는 "i에서 점을 뺀 것"이 아니라 그 자체로 독립된 문자이며, "ğ"(yumuşak g)는 의미 있는 라틴 분해형이 아예 존재하지 않습니다. 그래서 이 도구는 NFD 처리를 실행하기 전에 ç→c, ğ→g, ı→i, ö→o, ş→s, ü→u에 대한 명시적인 음역 표를 먼저 적용합니다. 구체적인 예: "Öğretmenin Güncel Maaşı Ne Kadar?"는 ogretmenin-guncel-maasi-ne-kadar가 됩니다 — 모든 터키어 문자가 올바르게 매핑되고, 공백과 물음표는 하이픈으로 축약되며, 끝에 남은 문장부호는 제거됩니다.
길이는 가독성을 넘어선 문제이기도 합니다: 구글 검색 결과는 URL을 시각적으로 잘라내기 전 일정 부분까지만 보여주므로, 대략 60~70자를 넘어가는 슬러그는 그 뒤의 전체 URL이 정상적으로 작동하더라도 결과 화면에서 잘리기 시작합니다. 일관성은 간결함만큼이나 중요합니다 — 대소문자를 섞어 쓰거나(Some-Words) 어떤 페이지에는 끝에 슬래시를 남기고 다른 페이지에는 남기지 않는 것은 크롤러에게 중복된 URL처럼 보이는 결과를 만들어, 원래 하나의 페이지에 돌아가야 할 순위 신호를 여러 개로 쪼갭니다. 서로 다른 두 콘텐츠가 자연스럽게 같은 슬러그를 만들어 낼 경우("시작하기"라는 제목의 글이 두 개 있는 경우), 대부분의 시스템은 첫 페이지의 URL을 조용히 덮어쓰는 대신 숫자 접미사(getting-started-2)로 구분합니다 — 이는 CMS의 기본 동작에 맡기기보다 의도적으로 결정할 가치가 있는 부분입니다.
알아두어야 할 사항
- SEO에서는 언더스코어보다 하이픈이 낫습니다: 구글은 하이픈이 단어를 구분하고(blue-car는 "blue car"로 읽힘) 언더스코어는 단어를 붙인다고(blue_car는 "bluecar"로 읽힘) 공식적으로 밝힌 바 있습니다.
- 완전한 문장보다 의미 있는 3~6개 단어가 낫습니다 — 슬러그가 길어지면 the, a, of 같은 불필요한 단어부터 빼세요.
- 이미 게시된 슬러그는 301 리다이렉트 없이 절대 바꾸지 마세요. 예전 URL이 쌓아 온 링크와 이력은 조금 더 예쁜 문자열보다 훨씬 가치가 큽니다.
- 뉴스처럼 콘텐츠가 진짜로 시기에 얽매인 경우가 아니라면 슬러그에 날짜나 ID를 넣지 마세요 — URL에 연도가 박힌 스테디셀러 가이드(/guide-2023/)는 내용 자체보다 훨씬 먼저 낡아 보이기 시작합니다.
- 시간이 지나 페이지의 실제 제목이 바뀌더라도 슬러그를 그에 맞게 유지하세요 — 헤드라인이 크게 다시 쓰였다면, 슬러그도 (리다이렉트와 함께) 따라갈지, 아니면 그동안 쌓인 링크 가치를 위해 그대로 둘지를 의도적으로 결정해야 합니다.
- 마이그레이션에서는 일괄 처리의 일관성이 중요합니다: 콘텐츠 전체 아카이브를 같은 규칙 세트로 한 번에 변환하면, 수년에 걸쳐 슬러그를 손으로 만들 때 스며드는 대소문자 불일치나 엉뚱한 문자들을 막을 수 있습니다.
자주 묻는 질문
하이픈과 언더스코어 중 무엇을 써야 하나요?
하이픈입니다. 구글은 오래전부터 하이픈은 단어를 구분하고 언더스코어는 단어를 붙인다고 밝혀왔습니다 — blue-car는 "blue car"로 읽히지만 blue_car는 "bluecar"로 읽힙니다.
슬러그에 날짜나 ID를 넣어야 하나요?
콘텐츠가 정말로 시기에 얽매인 경우(뉴스 등)에만 그렇습니다. 시대를 타지 않는 페이지는 URL에 연도가 없을 때 더 오래갑니다 — /guide-2023/ 은 내용을 갱신해도 2026년에는 낡아 보입니다.
유니코드 정규화만으로 터키어 문자를 처리할 수 없는 이유는 무엇인가요?
NFD 분해는 é나 ü처럼 내부적으로 정말 "기본 문자 + 발음 기호"로 이루어진 문자에만 적용됩니다. 터키어의 ı(점 없는 i)와 ğ는 유니코드에서 그런 식으로 구성되어 있지 않습니다 — 이들은 제거할 결합 기호 형태가 없는, 그 자체로 독립된 문자이기 때문에 대신 명시적인 ç/ğ/ı/ö/ş/ü 음역 표가 필요합니다.
%나 & 같은 숫자와 기호는 어떻게 처리되나요?
숫자는 변경 없이 그대로 통과합니다. 기호는 의미가 있으면 음역되고(& → and), 그렇지 않으면 제거되어 공백과 마찬가지로 단어 경계로 취급됩니다 — 그래서 "%20 İndirim"은 URL에 엉뚱한 문장부호를 남기지 않고 20-indirim이 됩니다.
여러 제목을 한 번에 일괄 변환할 수 있나요?
네 — 한 줄에 제목 하나씩 붙여넣으면 도구가 같은 순서로 한 줄에 슬러그 하나씩을 반환합니다. 마이그레이션이나 대량 가져오기 전에 기사 제목이 담긴 스프레드시트를 하나씩 변환하는 것보다 훨씬 빠릅니다.
비슷한 도구
문제 신고하기
URL 슬러그 생성기
댓글
아직 댓글이 없습니다 — 첫 댓글을 남겨보세요!