Slug — это читаемый хвост веб-адреса, например my-first-post в example.com/blog/my-first-post. Это та часть, которую человек может прочитать перед тем, как кликнуть, и которую поисковая система воспринимает как краткое описание содержимого страницы. Именно поэтому он заслуживает большего внимания, чем идентификатор базы данных или дата. Этот бесплатный генератор превращает любой текст в slug: вставьте заголовок в поле «Текст для конвертации», нажмите «Сгенерировать», и результат появится рядом с кнопкой копирования. По умолчанию включены настройки, которые нужны большинству сайтов — нижний регистр, дефисы между словами, удаление общих служебных слов и транслитерация нелатинских букв. Готовый к использованию slug доступен в один клик, и каждое из этих решений можно изменить с помощью переключателей.
Все происходит на вашем собственном устройстве. Страница загружает небольшой JavaScript-движок и запускает его локально: ваши заголовки никогда не загружаются на сервер, не логируются, а инструмент продолжает работать даже без подключения к интернету. Именно поэтому результат обновляется в тот же момент, когда вы меняете настройку. Стоит упомянуть порядок обработки, поскольку именно он делает результат предсказуемым: вставленная ссылка сначала сокращается до последнего сегмента пути, затем текст переводится в нижний регистр, после этого удаляются стоп-слова, затем транслитерируются нелатинские символы, затем удаляются числа и спецсимволы (если вы выбрали это), затем все оставшееся соединяется выбранным разделителем, после чего результат обрезается до максимальной длины, и, наконец, повторяющиеся значения получают числовой суффикс. Поле «Текст для конвертации» принимает до 500 000 символов за один раз — это несколько тысяч заголовков статей.
Одна строка на входе — один slug на выходе. Вставьте целый список заголовков, и каждая строка станет отдельным пронумерованным slug'ом, а исходный текст будет отображаться над ним серым цветом, так что в партии из пятидесяти штук вы все равно сможете понять, к какому заголовку относится тот или иной slug. Список, который уже находится в файле, не обязательно пропускать через буфер обмена: кнопка «Загрузить из файла» рядом с полем ввода открывает простой текстовый файл (.txt, .csv, .md, .json и тому подобные) и вставляет его содержимое в поле. Ваш браузер читает этот файл точно так же, как если бы вы ввели текст вручную, и ничего никуда не загружается. Опция «Разделять ввод по» решает, как список разбивается на части. «Автоматически» используется по умолчанию: перенос строки всегда разделяет элементы, в то время как запятая разделяет их только тогда, когда ввод состоит из одной строки, части которой выглядят как самостоятельные значения. Таким образом, «цена 3,5 руб.» и «Глава 5: результаты, выводы» остаются целыми вместо того, чтобы разбиваться на фрагменты. Опции «С новой строки», «Запятая» и «Пробел» позволяют принудительно сделать выбор, если вы заранее знаете формат своих данных. Опция «Формат результата» определяет, как возвращается пакет при его копировании — по одному на строку, через пробел или через запятую, и обе кнопки «Скопировать всё» и «Сохранить в файл» следуют этому правилу. «История» хранит ваши последние 10 пакетов в вашем браузере, так что список, который вы конвертировали час назад, все еще находится там.
Нелатинский текст — это та часть, с которой большинство генераторов slug'ов справляются примерно правильно, и лишь немногие — абсолютно точно. URL безопаснее всего держать в простом ASCII, поэтому кириллицу, греческий, арабский, китайский и европейские буквы с диакритикой нужно конвертировать, и единственный реальный вопрос — по чьим правилам. Эта страница решает этот вопрос на двух уровнях. Общий уровень охватывает все системы письма: библиотека транслитерации с разумным ASCII-ответом почти для любого символа, который вы можете ввести, и этот слой работает для символов, которых не покрывает ни одна таблица. Специфический уровень — это набор созданных вручную таблиц для языков, где общий ответ не совпадает с тем, который реально использует страна: русский — один из таких языков, и список пополняется по мере того, как инструмент доходит до языков, которым нужна своя таблица. Выбор одного из них загружает его таблицу в редактируемую сетку под разделом «Правила транслитерации», где каждая буква — это текстовое поле, которое можно изменить, а кнопка «Сбросить правила» возвращает всё как было. Русская таблица следует приказу МИД России № 4271, стандарту, напечатанному в загранпаспортах, включая детали, которые легко упустить. Украинская таблица, например, следует постановлению Кабинета Министров № 55 от 2010 года. Для немецкого языка по умолчанию используется расширенный вариант ä → ae, ö → oe, ü → ue, который действительно используют немецкие адреса, с простым вариантом ä → a, если вы предпочитаете его.
Опция «Удалить стоп-слова» включена по умолчанию. Она отбрасывает небольшие связующие слова — такие как «и», «в», «на» — которые удлиняют slug, не добавляя ему смысла. Список в поле «Стоп-слова» полностью редактируется и предоставляется уже заполненным: английский список плюс список для языка страницы, на которой вы находитесь, поэтому русская страница знает слова «и», «в» и «на», а немецкая — der, die и das. Добавьте свои собственные слова, удалите те, которые хотите оставить, или полностью отключите эту функцию, и в этом случае поле станет серым, вместо того чтобы притворяться, что оно все еще имеет значение. Два честных замечания по этому поводу. Удаление стоп-слов — это скорее небольшое улучшение аккуратности, чем рычаг для ранжирования: вы получаете более короткий и чистый адрес, а не лучшую позицию. И если каждое слово в заголовке случайно окажется в списке, честным результатом будет отсутствие результата, поэтому инструмент сообщит вам об этом, вместо того чтобы выдать пустое поле.
Остальные переключатели определяют форму. Опция «Разделитель в slug» выбирает то, что стоит между словами, и дефис по умолчанию — это не дело вкуса: Google читает дефис как разделитель слов, а подчеркивание — как соединитель, поэтому my_first_post достигает поискового робота как одно длинное слово, в то время как my-first-post — как три. «Подчеркивание (_)» предназначено для систем, которые на этом настаивают. Опция «Нижний регистр» включена, поскольку большинство серверов чувствительны к регистру в адресах, а смешанный регистр — это простой способ получить два URL для одной страницы. Опция «Удалить спецсимволы» убирает все, что не является буквой, цифрой, пробелом, дефисом или подчеркиванием, и именно это не пускает пунктуацию, кавычки и эмодзи в адрес — эмодзи удаляются специально до транслитерации, чтобы ракета случайно не превратилась в слово rocket. Опция «Удалить числа» выключена, поскольку число в заголовке обычно является его частью. «Макс. длина» варьируется от 10 до 200 и по умолчанию равна 80; когда slug длиннее, движок обрезает его на последнем целом слове, которое помещается, а не посередине. Цифра рядом с каждым результатом — это его длина в символах, и она становится красной после 60 — это не жесткий лимит, а точка, в которой slug начинает обрезаться в результатах поиска и становится неудобным для вставки в сообщение.
Существуют еще два переключателя, потому что они превращают массовую конвертацию обратно в задачу в один клик. Опция «Сделать уникальными» отлавливает случаи, когда два разных заголовка сводятся к одному и тому же slug'у — «Топ 10 советов» и «Топ-10 советов» оба становятся top-10-sovetov — и дает второму суффикс -2, третьему -3, сначала укорачивая базовую часть, если суффикс выходит за установленную максимальную длину. Две страницы по одному адресу — это проблема, которую гораздо дешевле отловить в этом списке, чем в вашей CMS. Опция «Взять slug из ссылки» работает в обратном направлении: вставьте полную ссылку, и инструмент возьмет последнюю часть пути, отбросит строку запроса и любые окончания вроде .html или .php, а также декодирует percent-encoding, так что ссылка на Википедию, заканчивающаяся на %D0%9B%D1%8C%D0%B2%D1%96%D0%B2, вернется как lviv, а не как набор шестнадцатеричных цифр. Это срабатывает только тогда, когда вся строка является ссылкой, поэтому адрес, процитированный внутри предложения, остается там, где он есть.
Почему стоит выбрать этот генератор slug'ов?
- Работает только в браузере: ваши заголовки никогда не загружаются на сервер, и страница продолжает работать офлайн
- Массовая конвертация из вставки или текстового файла, с исходным заголовком над каждым slug'ом
- Реальные стандарты транслитерации для каждого языка, а не одна общая таблица для всех
- Русская транслитерация по приказу № 4271 — написание, используемое в загранпаспортах
- Каждое правило можно редактировать по буквам, со сбросом в один клик
- Автоматические суффиксы -2 и -3, чтобы ни один из slug'ов в пакете не конфликтовал с другим
- Вставьте ссылку и получите из нее slug с декодированным percent-encoding
- Редактируемый список стоп-слов, который поставляется заполненным для вашего языка
- Безопасное усечение на целом слове, с подсчетом символов рядом с каждым результатом
- Бесплатно и без ограничений: ни регистраций, ни квот, ничего не хранится на наших серверах
Slug'и нужны везде, где страница должна иметь читаемый адрес. Блог или новостной сайт превращает каждый заголовок в slug, и именно под этот сценарий и создавался этот инструмент: вставьте заголовки за неделю, получите URL-адреса за неделю. Интернет-магазин делает то же самое для названий товаров и категорий, обычно массово после импорта, и обычно на языке, алфавит которого адрес не может вместить. Документация и базы знаний создают якоря и имена файлов таким же образом. Помимо веб-адресов, такая же чистая строка — это то, что вам нужно для имени файла, которое не сломается в другой операционной системе, ключа базы данных, который человек сможет прочитать в логе, имени ветки кода, имени изображения в медиабиблиотеке или идентификатора раздела в генераторе статических сайтов. Любое место, где читаемое человеком имя должно выжить после помещения в машиночитаемое поле, — это место для slug'а.
Стоит знать о нескольких ограничениях, прежде чем полагаться на этот инструмент. Это генератор, а не валидатор: он не будет проверять, занят ли уже slug на вашем сайте, потому что он понятия не имеет, что содержит ваш сайт — уникальность, которую он гарантирует, находится только в пределах пакета перед вами. Редиректы — тоже ваша работа; изменение slug'а опубликованной страницы ломает ее старый адрес, и это решение для вашей CMS, а не для этого инструмента. Кнопка «Сохранить в файл» записывает простой текст, а не CSV или JSON. Автоматическое разделение принимает решение о запятых, которое верно почти в каждом случае, но не во всех, и именно поэтому опция «Разделять ввод по» позволяет вам переопределить это. А транслитерация — это условность, а не перевод — Москва становится moskva, а не английским названием города — поэтому, когда страница имеет устоявшееся название на целевом языке, это название будет лучшим slug'ом, чем любая автоматическая конвертация оригинала.