슬러그(slug)는 웹 주소의 끝부분에 위치하며 사람이 읽을 수 있는 부분입니다. 예를 들어 example.com/blog/my-first-post에서 my-first-post가 슬러그에 해당합니다. 사용자가 클릭을 결정하기 전에 읽을 수 있는 부분이자, 검색 엔진이 해당 페이지의 내용을 짧게 요약한 텍스트로 인식하는 부분이므로 데이터베이스 ID나 날짜보다 훨씬 더 신경을 써야 합니다. 이 무료 생성기는 어떠한 텍스트라도 슬러그로 변환해 줍니다. 제목을 '변환할 텍스트'에 붙여넣고 '결과 생성'을 누르면, 복사 버튼과 함께 결과가 나타납니다. 기본 설정은 소문자 변환, 단어 사이 대시 사용, 불용어 제거, 라틴 문자 이외의 문자 변환 등 대부분의 사이트에서 필요로 하는 옵션들로 구성되어 있습니다. 따라서 클릭 한 번으로 사용 가능한 슬러그를 얻을 수 있으며, 이러한 설정들은 스위치를 통해 자유롭게 변경할 수 있습니다.
모든 처리 과정은 사용자의 기기 내에서 이루어집니다. 페이지는 작은 JavaScript 엔진을 로드하여 로컬 환경에서 실행됩니다. 입력한 제목은 절대 서버로 업로드되거나 기록되지 않으며, 인터넷 연결을 끊어도 도구는 계속 작동합니다. 설정을 변경하는 순간 결과가 즉시 업데이트되는 이유이기도 합니다. 결과를 예측할 수 있도록 작업 순서를 알아두는 것이 좋습니다. 붙여넣은 링크는 먼저 마지막 경로 세그먼트로 축소된 다음, 텍스트가 소문자로 변환되고, 불용어가 제거되며, 라틴 문자 이외의 문자가 변환됩니다. 설정한 경우 숫자와 특수 문자가 제거된 후, 남은 텍스트가 선택한 구분 기호로 연결됩니다. 그런 다음 결과는 최대 길이에 맞춰 잘리며, 마지막으로 중복되는 항목이 있을 경우 숫자 접미사가 추가됩니다. '변환할 텍스트'는 한 번에 최대 500,000자까지 입력할 수 있으며, 이는 수천 개의 기사 제목을 처리할 수 있는 분량입니다.
한 줄을 입력하면 하나의 슬러그가 생성됩니다. 제목 목록 전체를 붙여넣으면 각 줄이 번호가 매겨진 슬러그가 되며, 원본 제목이 그 위에 회색으로 표시되므로 50개의 일괄 작업에서도 어떤 슬러그가 어떤 제목에 속하는지 쉽게 구별할 수 있습니다. 이미 파일로 작성된 목록을 클립보드를 거쳐 가져올 필요는 없습니다. 입력 상자 옆에 있는 '파일에서 로드' 버튼을 누르면 .txt, .csv, .md, .json 등의 일반 텍스트 파일을 열고 그 내용을 입력 필드에 직접 채울 수 있습니다. 브라우저는 이 파일을 사용자가 직접 타이핑한 것과 동일하게 읽어들이며 어딘가로 업로드하지 않습니다. '입력 분할 방식'은 목록을 어떻게 나눌지 결정합니다. 기본값은 '자동 감지'입니다. 줄바꿈은 항상 항목을 나누지만, 쉼표는 한 줄의 입력이 각각 독립적인 값처럼 보일 때만 항목을 나눕니다. 따라서 "가격 1,500원"나 "제5장: 결과, 결론"은 파편화되지 않고 전체 형태를 유지합니다. 데이터의 형태를 미리 알고 있다면 '줄바꿈', '쉼표', '공백'을 선택해 분할 방식을 강제할 수 있습니다. '결과 형식'은 결과를 가져올 때 배치 형식을 어떻게 돌려줄지 결정하며 한 줄에 하나씩, 공백으로 구분, 쉼표로 구분을 선택할 수 있습니다. '모두 복사'와 '파일로 저장' 모두 이 형식을 따릅니다. '기록'은 최근 10개의 배치 작업을 브라우저에 보관하므로, 한 시간 전에 변환한 목록도 여전히 남아 있습니다.
라틴 문자 이외의 텍스트 처리는 대부분의 슬러그 생성기가 대략적으로만 맞추고, 정확히 처리하는 도구는 드뭅니다. URL은 일반 ASCII로 구성할 때 가장 안전하므로 키릴 문자, 그리스 문자, 아랍 문자, 중국어 및 유럽어의 강세 기호 문자를 변환해야 합니다. 문제는 어떤 규칙을 따를 것인가입니다. 이 페이지는 두 가지 계층으로 이 문제를 해결합니다. 일반 계층은 모든 문자 체계를 다룹니다. 입력할 수 있는 거의 모든 문자에 대해 적절한 ASCII 결과를 제공하는 변환 라이브러리이며, '변환할 언어' 메뉴의 '자동 감지 (모든 언어)'가 이에 해당합니다. 특정 계층은 일반적인 변환 결과가 해당 국가에서 실제로 사용하는 방식과 다를 때를 위해 수작업으로 구축한 언어별 테이블 세트입니다. '변환할 언어' 메뉴에는 현재 테이블이 존재하는 언어들이 표시되며, 도구가 대응하는 언어가 늘어날수록 이 세트도 계속 확장됩니다. 하나를 선택하면 '변환 규칙' 아래의 편집 가능한 그리드에 해당 테이블이 로드됩니다. 각 글자는 변경할 수 있는 텍스트 필드이며, '규칙을 기본값으로 재설정'을 누르면 원래대로 되돌아갑니다. 우크라이나어 테이블은 우크라이나 여권에 인쇄된 표준인 2010년 내각 결의안 제55호를 따릅니다. 여기에는 놓치기 쉬운 세부 사항들이 포함되어 있습니다. ж와 구분하기 위해 зг는 zh 대신 zgh가 되고, є, ї, й, ю, я는 단어의 시작 위치와 단어 내부 위치에 따라 형태가 달라집니다. 아포스트로피와 연음 기호는 새로운 단어를 시작하지 않고 그대로 생략되므로, Знам'янка는 znamyanka가 아닌 znamianka로 출력됩니다. 독일어의 기본값은 독일 주소에서 실제로 사용하는 확장된 ä → ae, ö → oe, ü → ue를 적용하지만, 원할 경우 단순한 ä → a 변환 방식을 선택할 수도 있습니다.
'불용어 제거'는 기본적으로 켜져 있습니다. 이는 a, the, and, of, for와 같이 슬러그를 길게만 만들고 의미를 더하지 않는 작은 연결 단어들을 제거합니다. '불용어' 아래의 목록은 완전히 편집 가능하며 이미 채워져 있습니다. 영어 목록과 함께 현재 보고 있는 페이지 언어의 목록이 제공되므로, 우크라이나어 페이지는 в, на, та, і를 인식하고 독일어 페이지는 der, die, das를 인식합니다. 자신만의 단어를 추가하거나, 유지하고 싶은 단어를 삭제하거나, 이 기능을 완전히 끌 수도 있습니다. 기능을 끄면 입력란이 회색으로 변합니다. 이에 대한 두 가지 솔직한 참고 사항이 있습니다. 불용어를 제거하는 것은 순위 상승의 지렛대가 아니라 깔끔함을 위한 것입니다. 더 좋은 검색 순위가 아니라 더 짧고 깔끔한 주소를 얻게 됩니다. 만약 제목의 모든 단어가 우연히 이 목록에 있다면 결과는 아무것도 없는 것이 맞습니다. 따라서 도구는 빈 칸을 주는 대신 이 사실을 메시지로 알려줍니다.
나머지 스위치들은 슬러그의 형태를 결정합니다. '슬러그 구분 기호'는 단어 사이에 무엇을 넣을지 선택합니다. 대시가 기본값인 이유는 취향 때문이 아닙니다. 구글은 대시를 단어 구분 기호로 읽고 밑줄을 연결 기호로 읽습니다. 즉, my_first_post는 크롤러에게 하나의 긴 단어로 인식되지만, my-first-post는 세 개의 단어로 인식됩니다. '밑줄 (_)'은 시스템이 이를 요구할 때를 위해 존재합니다. '소문자로 변환'이 켜져 있는 이유는 대부분의 서버가 주소를 대소문자 구분하여 처리하므로, 대소문자가 섞여 있으면 하나의 페이지에 두 개의 URL이 생기기 쉽기 때문입니다. '특수 문자 제거'는 문자, 숫자, 공백, 대시, 밑줄이 아닌 모든 것을 제거합니다. 이는 구두점, 따옴표, 이모티콘이 주소에 들어가는 것을 막아줍니다. 특히 이모티콘은 로켓 이모티콘이 rocket이라는 단어로 변환되지 않도록 변환 과정 전에 제거됩니다. '숫자 제거'는 꺼져 있는데, 제목의 숫자는 대개 제목의 중요한 일부이기 때문입니다. '최대 길이'는 10에서 200까지 설정할 수 있으며 기본값은 80입니다. 슬러그가 이보다 길면 엔진은 단어 중간을 자르는 대신 설정 범위에 맞는 마지막 온전한 단어에서 자릅니다. 각 결과 옆의 숫자는 글자 수를 나타내며 60이 넘으면 빨간색으로 변합니다. 이는 엄격한 제한은 아니지만, 검색 결과에서 슬러그가 잘리기 시작하고 메시지에 붙여넣기 불편해지기 시작하는 지점입니다.
일괄 변환을 다시 클릭 한 번의 작업으로 만들어주는 두 가지 스위치가 더 있습니다. '슬러그 중복 방지'는 두 개의 다른 제목이 동일한 슬러그로 축소되는 경우를 잡아냅니다. "톱 10 팁"와 "톱-10 팁"는 모두 tob-10-tib가 되는데, 이 기능은 두 번째 슬러그에 -2를, 세 번째에 -3을 부여합니다. 접미사 추가로 인해 최대 길이를 초과하게 되면 우선 기본 부분을 짧게 줄입니다. 한 주소에 두 페이지가 충돌하는 문제는 CMS 내에서 처리하는 것보다 이 목록에서 해결하는 것이 훨씬 비용이 적게 듭니다. '붙여넣은 URL에서 슬러그 추출'은 반대 방향으로 작동합니다. 전체 링크를 붙여넣으면 도구가 경로의 마지막 부분을 가져오고 쿼리 문자열과 .html 또는 .php 확장자를 제거하며 퍼센트 인코딩을 디코딩합니다. 따라서 %D0%9B%D1%8C%D0%B2%D1%96%D0%B2로 끝나는 위키백과 링크는 16진수 나열 대신 lviv로 반환됩니다. 이는 줄 전체가 링크일 때만 작동하므로, 문장 안에 인용된 주소는 일반 텍스트로 취급되어 제자리에 남습니다.
왜 이 슬러그 생성기를 선택해야 할까요?
- 브라우저 전용: 제목이 절대 업로드되지 않으며 페이지는 오프라인에서도 작동합니다
- 붙여넣기 또는 텍스트 파일로부터의 일괄 변환, 각 슬러그 위에 원본 제목 표시
- 모든 언어에 동일한 일반 표 대신, 언어별 실제 변환 표준 적용
- 2010년 결의안 제55호에 따른 우크라이나어 변환 — 여권에 사용되는 철자 기준
- 글자 단위로 모든 규칙을 편집 가능하며, 클릭 한 번으로 초기화 기능 제공
- 일괄 처리 시 슬러그 충돌을 방지하는 자동 -2, -3 접미사 추가
- 링크를 붙여넣기만 하면 퍼센트 인코딩이 디코딩된 슬러그 추출
- 사용자의 언어에 맞춰 이미 채워져 제공되는 편집 가능한 불용어 목록
- 단어 중간이 잘리지 않는 안전한 잘림 처리와 각 결과 옆의 글자 수 표시
- 무료 및 무제한: 가입이나 할당량 제한이 없으며 서버에 어떤 데이터도 보관하지 않음
슬러그는 페이지가 읽기 쉬운 주소를 가져야 하는 모든 곳에 필요합니다. 블로그나 뉴스 사이트는 모든 헤드라인을 슬러그로 변환하며, 이 도구는 바로 이러한 사례를 염두에 두고 만들어졌습니다. 한 주의 헤드라인들을 붙여넣고 해당 주의 URL들을 얻어보세요. 온라인 쇼핑몰도 제품 및 카테고리 이름에 동일한 작업을 수행하며, 대개 데이터를 가져온 후 일괄적으로 주소가 지원하지 못하는 알파벳을 가진 언어에 대해 이 작업을 처리합니다. 문서와 지식 베이스(Knowledge base)도 앵커와 파일 이름을 같은 방식으로 구축합니다. 웹 주소를 넘어서도 다른 운영 체제에서 깨지지 않을 파일 이름, 로그에서 사람이 읽을 수 있는 데이터베이스 키, 브랜치 이름, 미디어 라이브러리의 이미지 이름 또는 정적 사이트 생성기의 섹션 식별자를 위해 동일하게 깔끔한 문자열이 필요합니다. 사람이 읽을 수 있는 이름이 기계가 읽을 수 있는 필드에서 살아남아야 하는 모든 곳에 슬러그가 쓰입니다.
이 도구에 의존하기 전에 알아두어야 할 몇 가지 한계가 있습니다. 이 도구는 생성기이지 검증기가 아닙니다. 당신의 사이트에 무엇이 포함되어 있는지 알 수 없기 때문에, 슬러그가 사이트에서 이미 사용 중인지 확인하지 않습니다. 이 도구가 보장하는 고유성은 지금 변환한 배치 내부에 한정됩니다. 리다이렉트(Redirect) 처리도 사용자의 몫입니다. 발행된 페이지의 슬러그를 변경하면 기존 주소가 끊어지게 되며, 이는 이 도구가 아닌 사용자의 CMS에서 결정해야 할 문제입니다. '파일로 저장'은 CSV나 JSON이 아닌 일반 텍스트로 저장합니다. 자동 분할 기능은 쉼표에 대해 대부분의 경우 올바른 판단을 내리지만 모든 경우에 완벽하지는 않습니다. 바로 이것이 '입력 분할 방식'을 통해 사용자가 분할 방식을 직접 지정할 수 있게 한 이유입니다. 마지막으로, 변환(Transliteration)은 번역이 아니라 일종의 관례입니다. München은 Munich이 아니라 muenchen이 됩니다. 따라서 어떤 페이지가 대상 언어에서 확립된 이름을 가지고 있다면, 원본 텍스트를 기계적으로 변환한 것보다 그 확립된 이름이 슬러그로서 훨씬 더 적합합니다.