Converta una lista di titoli in slug URL unici
Questo strumento converte con una sola richiesta deterministica un elenco ordinato di titoli di pagine, articoli, prodotti o altre intestazioni in slug adatti agli URL.
Esegui gratis nel browser
Trasforma il testo in minuscolo, rimuove i comuni accenti latini, sostituisce spazi e punteggiatura con trattini e conserva le cifre. Se due titoli producono la stessa base, il risultato successivo riceve un suffisso numerico crescente. L’ordine originale resta invariato, così Lei può allineare facilmente l’output a un’importazione, una coda editoriale, una migrazione o un flusso di pubblicazione.
Crei uno slug pulito per ogni titolo
Invii i titoli esattamente nell’ordine in cui desidera ricevere i risultati. Ogni titolo diventa un componente URL compatto: le maiuscole diventano minuscole, i comuni segni diacritici latini vengono rimossi e ogni sequenza di spazi o punteggiatura diventa un solo trattino. I separatori iniziali e finali scompaiono, mentre le cifre restano disponibili per versioni, capitoli, anni ed edizioni. L’operazione richiede stringhe effettive e non converte in silenzio oggetti, booleani o numeri, perché tale conversione potrebbe creare percorsi plausibili ma errati. Ogni titolo deve inoltre produrre almeno una lettera ASCII o una cifra dopo la normalizzazione. La risposta contiene l’array degli slug nello stesso ordine e il conteggio, affinché Lei possa verificare la corrispondenza completa. Nessuna informazione esterna viene recuperata, memorizzata, riordinata o dedotta; lo stesso input produce sempre lo stesso output.
Risolva le collisioni senza perdere l’ordine
Titoli diversi possono normalizzarsi nello stesso slug, poiché maiuscole, accenti, spazi ripetuti e punteggiatura smettono di distinguerli. La prima occorrenza mantiene la base; quelle successive ricevono -2, -3 e ulteriori suffissi crescenti. L’univocità viene controllata rispetto a tutti gli slug già emessi, non soltanto contando testi sorgente identici. Questo dettaglio è importante quando un titolo termina naturalmente con un numero o quando grafie diverse convergono nella stessa forma. L’elaborazione da sinistra a destra assegna una priorità chiara all’ordine fornito e rende ogni nuova esecuzione riproducibile. Se esiste una priorità editoriale, collochi per primo il titolo che deve conservare lo slug senza suffisso. Lo strumento non esamina il Suo sito o database e non conosce quindi le rotte già pubblicate. Includa i titoli esistenti pertinenti oppure confronti l’output con il Suo indice degli slug riservati prima di salvare le rotte.
Usi il risultato in sicurezza nella pubblicazione
L’output in blocco è particolarmente utile tra i dati editoriali e un sistema di gestione dei contenuti. Mantenga ogni slug accanto alla riga sorgente e non ordini l’array separatamente: la corrispondenza posizionale permette a un foglio importato, a uno script di migrazione o a un generatore statico di assegnare la rotta corretta. Convalidi l’intera richiesta prima di rendere permanenti le modifiche, perché un titolo non valido rifiuta tutta l’operazione ed evita migrazioni parziali. L’algoritmo crea componenti URL ASCII prudenti; non traslittera ogni sistema di scrittura, non sceglie parole chiave, non abbrevia i titoli e non garantisce l’univocità rispetto ai record omessi. Per l’automazione, una richiesta costa $0.002; la stessa logica deterministica è disponibile nel browser. Conservi insieme titoli e slug per verificare i reindirizzamenti ed eviti di rigenerare rotte pubbliche consolidate senza una strategia pronta.
Casi d'uso
Prepari un’importazione nel CMS
Generi un componente di rotta univoco per ogni titolo ordinato prima di inserire in blocco articoli o pagine.
Migri un archivio di contenuti
Normalizzi le vecchie intestazioni e rilevi i suffissi di collisione mantenendo l’allineamento con l’esportazione sorgente.
Costruisca le rotte di un sito statico
Crei nomi di file o segmenti deterministici per una raccolta durante un processo ripetibile.
Domande frequenti
Che cosa accade se due titoli generano lo stesso slug?
Il primo mantiene la base; le collisioni successive ricevono suffissi crescenti come -2, -3 e -4.
L’output conserva l’ordine di input?
Sì. Ogni slug occupa la posizione del titolo sorgente e il conteggio indica quanti ne sono stati prodotti.
Quanto costa una richiesta?
Il prezzo dell’API è $0.002 per richiesta, anche in presenza di collisioni tra titoli.
Vengono controllati gli slug già usati sul mio sito?
No. L’univocità è garantita solo nella lista inviata, senza accedere al Suo sito, CMS o database.
Perché un titolo è stato rifiutato?
Ogni elemento deve essere una stringa e produrre almeno una lettera ASCII o una cifra dopo la normalizzazione.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/data/slugify-batch \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"titles":["Getting Started","Getting Started","API Reference"]}'const res = await fetch("https://api.kit.forhosting.com/data/slugify-batch", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"titles": [
"Getting Started",
"Getting Started",
"API Reference"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/slugify-batch",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"titles": [
"Getting Started",
"Getting Started",
"API Reference"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/slugify-batch", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"titles":["Getting Started","Getting Started","API Reference"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"titles":["Getting Started","Getting Started","API Reference"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/slugify-batch", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"titles": [
"Getting Started",
"Getting Started",
"API Reference"
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.slugify_batch",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_items | 10000 |
max_chars_per_title | 10000 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |