O slug é a cauda legível de um endereço web — o my-first-post em example.com/blog/my-first-post. É a parte que uma pessoa pode ler antes de decidir se clica ou não, e a parte que um motor de busca lê como uma breve descrição do conteúdo da página, razão pela qual merece mais atenção do que uma identificação de base de dados ou uma data. Este gerador gratuito converte qualquer texto num slug: cole um título em "Texto a converter", prima "Gerar", e o resultado aparece com um botão de cópia ao lado. As predefinições são aquelas que a maioria dos sites pretende — letras minúsculas, traços entre palavras, palavras comuns de preenchimento removidas e letras não-latinas transliteradas — pelo que um slug utilizável está à distância de um clique, e cada uma destas decisões é um interruptor que pode alterar.
Tudo acontece no seu próprio dispositivo. A página carrega um pequeno motor JavaScript e executa-o localmente: os seus títulos nunca são enviados, nunca são registados, e a ferramenta continua a funcionar mesmo com a ligação desligada. Esta é também a razão pela qual o resultado é atualizado no momento em que altera uma definição. Vale a pena referir a ordem do trabalho, pois é o que torna o resultado previsível: um link colado é primeiro reduzido ao seu último segmento de caminho, de seguida o texto passa a minúsculas, as palavras vazias são removidas, os carateres não latinos são transliterados, os números e carateres especiais são removidos se assim o tiver solicitado, o que sobrar é unido com o seu separador, o resultado é cortado ao comprimento máximo e, por fim, uma repetição recebe um sufixo numérico. "Texto a converter" aceita até 500.000 carateres de uma só vez, o que equivale a alguns milhares de títulos de artigos.
Uma linha entra, um slug sai. Cole uma lista inteira de títulos e cada linha torna-se o seu próprio slug numerado, com o título de onde surgiu exibido acima a cinzento, para que, num lote de cinquenta, ainda consiga distinguir a que cabeçalho pertence cada slug. Uma lista que já exista num ficheiro não tem de passar pela área de transferência: "Carregar do ficheiro", o botão ao lado da caixa de entrada, abre um ficheiro de texto simples — .txt, .csv, .md, .json e semelhantes — e coloca o seu conteúdo no campo. O seu navegador lê esse ficheiro exatamente da mesma forma que lê o que escreve, e este não é enviado para lado nenhum. "Dividir entrada por" decide como a lista é cortada. "Automático" é a predefinição: uma quebra de linha separa sempre os itens, enquanto que uma vírgula apenas os separa quando a entrada é uma única linha cujas partes se parecem com valores isolados — logo, "preço 3,5 EUR" e "Capítulo 5: resultados, conclusões" permanecem inteiros em vez de se estilhaçarem em fragmentos. "Quebra de linha", "Vírgula" e "Espaço" forçam a escolha quando já conhece o formato dos seus dados. O "Formato de saída" dita como um lote é devolvido ao ser copiado — um por linha, separado por espaços ou separado por vírgulas — e tanto "Copiar tudo" como "Guardar em ficheiro" seguem esta preferência. O "Histórico" preserva os seus últimos 10 lotes no seu próprio navegador, pelo que uma lista que converteu há uma hora continuará lá.
O texto não latino é a parte que a maioria dos geradores de slugs faz mais ou menos bem, mas que poucos acertam por completo. Um URL é mais seguro em ASCII simples, logo carateres cirílicos, gregos, árabes, chineses e letras europeias com acentos têm de ser convertidos, e a única verdadeira questão é através de que regra. Esta página responde em duas camadas. A camada geral cobre qualquer escrita: uma biblioteca de transliteração que oferece uma resposta ASCII sensata para quase qualquer caráter que consiga escrever, que é o que "Transliterar de" significa quando está em "Automático (qualquer idioma)". A camada específica é um conjunto de tabelas criadas manualmente para as línguas em que a resposta genérica não é aquela que o país realmente utiliza; o menu "Transliterar de" enumera as que dispõem de tabela hoje, e o conjunto cresce à medida que a ferramenta chega a mais línguas que necessitem de uma. Escolher uma carrega a sua tabela numa grelha editável em "Regras de transliteração", onde cada letra é um campo de texto que pode alterar, e "Repor regras" repõe-na. A tabela ucraniana segue a Resolução do Conselho de Ministros n.º 55 de 2010, a norma impressa nos passaportes ucranianos, incluindo os pormenores em que é fácil errar: зг passa a zgh e não a zh para se distinguir de ж; є, ї, й, ю e я ganham uma forma no início de uma palavra e outra no seu interior; e o apóstrofo e o sinal brando são omitidos sem iniciar uma nova palavra, logo Знам'янка surge como znamianka e não znamyanka. O alemão assume por defeito a variante alargada ä → ae, ö → oe, ü → ue que as moradas alemãs utilizam efetivamente, havendo a opção mais simples ä → a se a preferir.
"Remover palavras vazias" está ligado por defeito. Omite as pequenas palavras de ligação — a, o, e, de, para — que prolongam um slug sem lhe acrescentar sentido. A lista em "Palavras vazias" é totalmente editável e chega já preenchida: uma lista em inglês mais uma lista da língua da página onde se encontra, logo a página portuguesa conhece o, a, os, as e de. Adicione palavras suas, elimine as que pretende manter, ou desligue a funcionalidade por completo, caso em que o campo fica a cinzento em vez de fingir que ainda tem impacto. Duas notas honestas sobre o assunto. A remoção de palavras vazias é um pequeno ganho na arrumação mais do que um motor para subir nos rankings — obtém um endereço mais curto e limpo, não uma posição melhor nas pesquisas. E se todas as palavras de um título estiverem na lista, o resultado honesto é não obter absolutamente nada, e a ferramenta avisa-o disso mesmo em vez de lhe entregar uma caixa vazia.
Os restantes interruptores definem a forma. "Separador no slug" escolhe o que fica entre as palavras, e a predefinição do traço não é uma questão de gosto: o Google lê um traço como um separador de palavras e um sublinhado como uma junção de palavras, logo my_first_post chega a um rastreador como uma longa palavra, enquanto que my-first-post chega como três palavras. O "Sublinhado (_)" está ali para os sistemas que assim o exigem. "Minúsculas" está ativado pois a maioria dos servidores considera que os endereços são sensíveis a maiúsculas e minúsculas, e usar ambas é uma forma fácil de acabar com dois URLs para uma só página. "Remover carateres especiais" apaga tudo o que não seja uma letra, um dígito, um espaço, um traço ou um sublinhado, que é o que mantém a pontuação, as aspas e os emojis fora do endereço — os emojis são eliminados antes da transliteração de forma específica, para que um foguetão não se converta na palavra rocket. "Remover números" está desligado, pois um número num título faz, habitualmente, parte desse mesmo título. "Comprimento máximo" vai de 10 a 200, com a predefinição em 80; quando um slug excede esse comprimento, o motor corta com segurança na última palavra inteira que couber, em vez de o cortar a meio de uma. O número junto a cada resultado é a sua extensão em carateres, ficando a vermelho para lá dos 60 — não é um limite imposto, mas o ponto em que um slug começa a ser truncado nos resultados de pesquisa e se torna pouco prático de colar numa mensagem.
Existem dois interruptores extra por voltarem a converter tarefas em massa num trabalho à distância de um clique. "Tornar slugs únicos" capta o cenário em que dois títulos diferentes se reduzem ao mesmo slug — "Top 10 dicas" e "Top-10 dicas" tornam-se ambos top-10-dicas — e dá ao segundo um -2 e ao terceiro um -3, encurtando primeiro a base se o sufixo o fizesse exceder o seu comprimento máximo. Ter duas páginas num único endereço é um problema muito mais fácil de resolver nesta lista do que no seu CMS. "Extrair slug de um URL colado" atua no sentido inverso: cole um link completo e a ferramenta apanha a última parte do caminho, omite a cadeia de consulta (query string) e eventuais finais em .html ou .php, e descodifica a codificação por percentagem, logo um endereço da Wikipédia que acabe em %D0%9B%D1%8C%D0%B2%D1%96%D0%B2 retorna lviv e não uma sequência de dígitos hexadecimais. Só dispara quando a linha inteira for um link, pelo que um URL citado no meio de uma frase fica onde está.
Porquê escolher este gerador de slugs?
- Apenas no navegador: os seus títulos nunca são enviados, e a página funciona offline
- Conversão em massa através de cópia ou num ficheiro, com a fonte do título acima do slug
- Normas de transliteração reais por idioma, e não uma tabela genérica para todos
- Ucraniano conforme a Resolução n.º 55 de 2010 — a ortografia adotada nos passaportes
- Todas as regras editáveis, letra por letra, com um botão para repor originais
- Sufixos automáticos -2 e -3 para que não colidam dois slugs num único lote
- Cole um link e retire apenas o slug, com as codificações descodificadas
- Uma lista de palavras vazias editável que já vem preenchida com o seu idioma
- Truncamento seguro numa palavra inteira, com contagem de carateres ao lado
- Grátis e sem limites: sem registo, quota, e nada fica nos nossos servidores
Os slugs são necessários em qualquer lugar em que uma página deva exibir um endereço legível. Um blogue ou site de notícias converte cada cabeçalho num slug, que é o cenário no qual esta ferramenta foi desenhada: cole as manchetes da semana e obtenha os URLs da semana. Uma loja online faz o mesmo com produtos e categorias, frequentemente em massa e numa língua cujo alfabeto não cabe no endereço. Documentação e bases de conhecimento constroem links âncora e nomes de ficheiros da mesma forma. Para lá de endereços web, essa mesma cadeia de carateres limpa é tudo o que se pretende para criar nomes de ficheiros que não se partem num outro sistema operativo, a chave de uma base de dados legível por um humano num registo, um nome de ramo (branch), o nome de uma imagem ou o identificador para secções num gerador de sites estáticos. Qualquer lugar em que um nome legível por um humano tenha de resistir sem se alterar dentro de um campo lido por uma máquina, é um local ao qual um slug pertence.
Vale a pena conhecer alguns limites antes de depender dele. É um gerador, não um validador: não verifica se um slug já está ocupado no seu site, pois não faz ideia do que o seu site possui — a singularidade garantida é dentro do lote à sua frente. Os redirecionamentos continuam a ser responsabilidade sua; alterar o slug de uma página publicada anula o seu antigo endereço, e essa é uma decisão que cabe ao seu CMS e não a esta ferramenta. O "Guardar em ficheiro" escreve texto simples, não CSV ou JSON. A divisão automática realiza avaliações sobre vírgulas que estão certas em quase todos os casos, não em todos eles, razão exata pela qual o "Dividir entrada por" lhe permite alterá-lo. Por último, a transliteração é mais uma convenção do que uma tradução — München converte-se para muenchen, não Munich —, pelo que, quando uma página detém um nome estabelecido no idioma visado, esse nome será sempre um slug melhor do que qualquer conversão automatizada do original.