slug คือส่วนท้ายที่อ่านได้ของที่อยู่เว็บไซต์ — ตัวอย่างเช่น my-first-post ใน example.com/blog/my-first-post เป็นส่วนที่คนสามารถอ่านได้ก่อนตัดสินใจคลิก และเป็นส่วนที่เครื่องมือค้นหาอ่านเพื่อใช้เป็นคำอธิบายสั้นๆ ของหน้าเว็บนั้น ซึ่งเป็นเหตุผลว่าทำไมมันถึงควรได้รับการใส่ใจมากกว่าแค่รหัสฐานข้อมูลหรือวันที่ เครื่องมือฟรีนี้จะเปลี่ยนข้อความใดๆ ให้กลายเป็น slug เพียงแค่วางชื่อเรื่องลงใน "ข้อความที่ต้องการแปลง" กด "สร้างผลลัพธ์" แล้วผลลัพธ์จะปรากฏขึ้นพร้อมกับปุ่มคัดลอกด้านข้าง ค่าเริ่มต้นคือการตั้งค่าที่เว็บไซต์ส่วนใหญ่ต้องการ — "ตัวพิมพ์เล็ก", ยัติภังค์ระหว่างคำ, ลบคำเชื่อมที่พบบ่อยทิ้ง, แปลงตัวอักษรที่ไม่ใช่ภาษาละติน — ดังนั้น slug ที่พร้อมใช้งานจึงอยู่แค่คลิกเดียว และคุณสามารถสลับเปิดปิดหรือปรับเปลี่ยนการตัดสินใจเหล่านี้ได้ทั้งหมด
ทุกอย่างเกิดขึ้นบนอุปกรณ์ของคุณเอง หน้าเว็บจะโหลดเอนจิน JavaScript ขนาดเล็กและทำงานบนเครื่องของคุณ: ชื่อเรื่องของคุณจะไม่ถูกอัปโหลดและไม่ถูกบันทึก เครื่องมือนี้ยังสามารถทำงานได้แม้ไม่ได้เชื่อมต่ออินเทอร์เน็ต นี่คือเหตุผลว่าทำไมผลลัพธ์ถึงอัปเดตทันทีที่คุณเปลี่ยนการตั้งค่า ลำดับการทำงานเป็นสิ่งที่ควรทราบเพราะมันทำให้คาดเดาผลลัพธ์ได้: ลิงก์ที่วางจะถูกตัดเหลือแค่ส่วนสุดท้ายของ path จากนั้นข้อความจะถูกทำเป็นตัวพิมพ์เล็ก ลบคำหยุด แปลงตัวอักษรที่ไม่ใช่ละติน ลบตัวเลขและอักขระพิเศษหากคุณเปิดใช้งาน แล้วสิ่งที่เหลืออยู่จะถูกนำมาเชื่อมกันด้วยตัวคั่นที่คุณเลือก ตัดความยาวให้เหลือไม่เกินความยาวสูงสุด และสุดท้ายหากมีคำซ้ำจะถูกเติมด้วยตัวเลขต่อท้าย "ข้อความที่ต้องการแปลง" รองรับข้อความได้สูงสุด 500,000 ตัวอักษรในครั้งเดียว ซึ่งเทียบเท่ากับชื่อบทความหลายพันรายการ
หนึ่งบรรทัดที่ป้อนเข้าไป จะได้หนึ่ง slug ออกมา วางรายการชื่อเรื่องทั้งหมด แล้วแต่ละบรรทัดจะกลายเป็น slug ที่มีหมายเลขของตัวเอง โดยมีชื่อเรื่องต้นฉบับแสดงอยู่ด้านบนเป็นสีเทา ดังนั้นในชุดข้อมูลห้าสิบรายการ คุณก็ยังบอกได้ว่า slug ไหนเป็นของชื่อเรื่องใด หากรายการของคุณอยู่ในไฟล์อยู่แล้ว คุณไม่จำเป็นต้องคัดลอกมาวาง: "โหลดจากไฟล์" ซึ่งเป็นปุ่มข้างกล่องป้อนข้อมูล สามารถเปิดไฟล์ข้อความธรรมดา — .txt, .csv, .md, .json และอื่นๆ — แล้วดึงเนื้อหามาใส่ในช่องได้เลย เบราว์เซอร์ของคุณจะอ่านไฟล์นั้นด้วยวิธีเดียวกับที่มันอ่านข้อความที่คุณพิมพ์ และจะไม่มีการอัปโหลดไปที่ไหน "แบ่งข้อมูลด้วย" เป็นตัวกำหนดว่ารายการจะถูกตัดแบ่งอย่างไร "การตรวจจับอัตโนมัติ" คือค่าเริ่มต้น: การขึ้นบรรทัดใหม่จะแยกรายการเสมอ ในขณะที่จุลภาคจะแยกรายการก็ต่อเมื่อข้อความที่ป้อนเข้ามาเป็นบรรทัดเดียวและส่วนต่างๆ ดูเหมือนเป็นค่าเดี่ยวๆ — ดังนั้น "ราคา 3,500 บาท" และ "บทที่ 5: ผลลัพธ์, ข้อสรุป" จะยังคงอยู่ครบถ้วนโดยไม่ถูกแยกเป็นชิ้นๆ "ขึ้นบรรทัดใหม่", "จุลภาค" และ "ช่องว่าง" ใช้สำหรับบังคับเลือกเมื่อคุณรู้รูปแบบของข้อมูลอยู่แล้ว "รูปแบบผลลัพธ์" จะเป็นตัวกำหนดว่าผลลัพธ์ที่ได้จะแสดงออกมาอย่างไร — บรรทัดละรายการ, "คั่นด้วยช่องว่าง" หรือ "คั่นด้วยจุลภาค" — ซึ่งทั้ง "คัดลอกทั้งหมด" และ "บันทึกลงไฟล์" จะทำตามรูปแบบนี้ "ประวัติ" จะเก็บผลลัพธ์ 10 ชุดล่าสุดไว้ในเบราว์เซอร์ของคุณ ดังนั้นรายการที่คุณแปลงเมื่อชั่วโมงที่แล้วก็จะยังคงอยู่ที่นั่น
ข้อความที่ไม่ใช่ตัวอักษรละตินคือส่วนที่เครื่องมือสร้าง slug ส่วนใหญ่ทำได้แค่ใกล้เคียง และมีน้อยมากที่ทำได้ถูกต้องอย่างแท้จริง URL ปลอดภัยที่สุดเมื่ออยู่ในรูปแบบ ASCII ธรรมดา ดังนั้นตัวอักษรซีริลลิก กรีก อาหรับ จีน และอักษรยุโรปที่มีเครื่องหมายกำกับจะต้องถูกแปลง และคำถามที่สำคัญคือจะใช้กฎของใคร หน้าเว็บนี้ตอบโจทย์ด้วยการทำงานสองชั้น ชั้นแรกเป็นแบบทั่วไปซึ่งครอบคลุมทุกระบบการเขียน: มีไลบรารีแปลงตัวอักษรที่จะให้ผลลัพธ์ ASCII ที่สมเหตุสมผลสำหรับเกือบทุกตัวอักษรที่คุณพิมพ์ ซึ่งเป็นความหมายของ "แปลงตัวอักษรจาก" เมื่อเลือก "อัตโนมัติ (ทุกภาษา)" ชั้นที่สองคือตารางที่สร้างขึ้นโดยเฉพาะสำหรับภาษาที่ผลลัพธ์แบบทั่วไปไม่ตรงกับที่คนในประเทศนั้นใช้กันจริงๆ เมนู "แปลงตัวอักษรจาก" จะแสดงชื่อภาษาที่มีตารางเฉพาะในปัจจุบัน และตัวเลือกนี้จะเพิ่มขึ้นเมื่อเครื่องมือรองรับภาษาอื่นที่จำเป็นต้องใช้ตารางเฉพาะมากขึ้น การเลือกตารางใดตารางหนึ่งจะโหลดกฎของตารางนั้นลงในตารางที่สามารถแก้ไขได้ใต้ "กฎการแปลงตัวอักษร" ซึ่งทุกตัวอักษรจะเป็นช่องข้อความที่คุณสามารถเปลี่ยนแปลงได้ และ "รีเซ็ตกฎกลับเป็นค่าเริ่มต้น" จะคืนค่าเดิมกลับมา ตารางภาษายูเครนใช้มาตรฐานตามมติคณะรัฐมนตรีที่ 55 ปี 2010 ซึ่งเป็นมาตรฐานที่พิมพ์ในหนังสือเดินทางยูเครน รวมถึงรายละเอียดที่มักถูกมองข้าม: зг จะกลายเป็น zgh แทนที่จะเป็น zh เพื่อให้แตกต่างจาก ж; є, ї, й, ю และ я จะมีรูปแบบหนึ่งเมื่ออยู่ต้นคำและอีกรูปแบบหนึ่งเมื่ออยู่กลางคำ; และเครื่องหมายอะพอสทรอฟีกับซอฟต์ไซน์จะถูกตัดออกโดยไม่เริ่มคำใหม่ ดังนั้น Знам'янка จะออกมาเป็น znamianka ไม่ใช่ znamyanka ส่วนภาษาเยอรมันค่าเริ่มต้นจะเป็นรูปแบบขยาย ä → ae, ö → oe, ü → ue ซึ่งเป็นแบบที่ที่อยู่เว็บไซต์ของเยอรมันใช้จริงๆ โดยมีรูปแบบพื้นฐาน ä → a เป็นตัวเลือกเสริมหากคุณต้องการ
"ลบคำหยุด (Stop words)" เปิดทำงานเป็นค่าเริ่มต้น ฟีเจอร์นี้จะลบคำเชื่อมเล็กๆ — a, the, and, of, for — ที่ทำให้ slug ยาวขึ้นโดยไม่ได้เพิ่มความหมายใดๆ รายการใต้ "คำหยุด (Stop words)" สามารถแก้ไขได้อย่างอิสระและจะมีคำมาให้แล้ว: รายการคำภาษาอังกฤษบวกกับรายการสำหรับภาษาของหน้าเว็บที่คุณกำลังใช้งาน เพิ่มคำของคุณเอง ลบคำที่คุณต้องการเก็บไว้ หรือปิดฟีเจอร์นี้ไปเลย ซึ่งช่องข้อความจะกลายเป็นสีเทาแทน ขอชี้แจงสองข้อเกี่ยวกับเรื่องนี้ การลบคำหยุดเป็นเพียงการทำให้ที่อยู่สั้นและสะอาดขึ้น ไม่ได้ช่วยดึงอันดับการค้นหาให้ดีขึ้น และเนื่องจากภาษาไทยไม่ใช้การเว้นวรรคระหว่างคำ ข้อมูลทั้งบรรทัดจึงถูกมองเป็นคำๆ เดียว ดังนั้นรายการคำหยุดจึงไม่สามารถค้นหาคำที่ตรงกันในภาษาไทยได้เลย — รายการที่คุณจะได้เห็นคือคำภาษาอังกฤษเท่านั้น หากทุกคำในชื่อเรื่องเป็นคำหยุด เครื่องมือจะแจ้งให้ทราบแทนที่จะคืนค่าช่องว่างเปล่าๆ ให้คุณ
สวิตช์อื่นๆ ที่เหลือใช้กำหนดรูปแบบ "ตัวคั่นใน slug" ใช้เลือกสิ่งที่อยู่ระหว่างคำ และที่ตั้งค่าเริ่มต้นเป็นยัติภังค์ไม่ใช่เพราะความสวยงาม: Google อ่านยัติภังค์เป็นตัวคั่นคำและอ่านขีดล่างเป็นตัวเชื่อมคำ ดังนั้น my_first_post จะถูกบอทอ่านเป็นคำยาวๆ หนึ่งคำ ในขณะที่ my-first-post จะถูกอ่านเป็นสามคำ "ขีดล่าง (_)" มีไว้สำหรับระบบที่จำเป็นต้องใช้มัน "ตัวพิมพ์เล็ก" เปิดอยู่เพราะเซิร์ฟเวอร์ส่วนใหญ่ถือว่าที่อยู่เว็บไซต์เป็นแบบ case-sensitive และตัวพิมพ์เล็กใหญ่ปะปนกันเป็นวิธีที่ง่ายที่จะทำให้คุณมีสอง URL สำหรับหน้าเว็บเดียว "ลบอักขระพิเศษ" จะตัดทุกอย่างที่ไม่ใช่ตัวอักษร ตัวเลข ช่องว่าง ยัติภังค์ หรือขีดล่าง ซึ่งจะช่วยกันพวกเครื่องหมายวรรคตอน อัญประกาศ และอีโมจิออกจากที่อยู่เว็บ — อีโมจิจะถูกลบก่อนการแปลงตัวอักษร เพื่อไม่ให้รูปรจรวดกลายเป็นคำว่า rocket "ลบตัวเลข" ถูกปิดไว้ เพราะตัวเลขในชื่อเรื่องมักเป็นส่วนหนึ่งของชื่อเรื่องนั้น "ความยาวสูงสุด" เริ่มตั้งแต่ 10 ถึง 200 และตั้งค่าเริ่มต้นไว้ที่ 80; เมื่อ slug ยาวกว่านั้น เอนจินจะตัดที่คำสุดท้ายที่พอดีแทนที่จะตัดกลางคำ ตัวเลขข้างผลลัพธ์แต่ละรายการคือความยาวเป็นตัวอักษร และจะเปลี่ยนเป็นสีแดงเมื่อเกิน 60 — นี่ไม่ใช่ขีดจำกัดตายตัว แต่เป็นจุดที่ผลการค้นหาเริ่มตัด slug ของคุณให้สั้นลง และเริ่มยาวเกินกว่าที่จะนำไปวางในข้อความได้สะดวก
มีสวิตช์อีกสองตัวที่ช่วยเปลี่ยนการแปลงจำนวนมากให้กลับมาเป็นงานแค่คลิกเดียว "ทำให้ slug ไม่ซ้ำกัน" ช่วยจัดการกรณีที่ชื่อเรื่องต่างกันสองชื่อถูกแปลงเป็น slug เดียวกัน — "10 เทคนิค" และ "10-เทคนิค" ทั้งสองอย่างกลายเป็น 10-ethkhnikh — เครื่องมือจะเติม -2 ให้กับอันที่สอง เติม -3 ให้กับอันที่สาม โดยจะลดความยาวของคำหลักก่อนหากการต่อท้ายทำให้ยาวเกินความยาวสูงสุดที่คุณตั้งไว้ การมีสองหน้าเว็บในที่อยู่เดียวนั้นเป็นปัญหาที่คุณแก้ไขในรายการนี้ได้ง่ายกว่าการไปตามแก้ใน CMS ของคุณ "ดึง slug จาก URL ที่วาง" ทำงานในทิศทางตรงกันข้าม: เพียงวางลิงก์เต็ม เครื่องมือจะดึงเฉพาะส่วนท้ายสุดของ path ตัด query string และนามสกุล .html หรือ .php ออก และถอดรหัส percent-encoding ดังนั้นลิงก์ Wikipedia ที่ลงท้ายด้วย %D0%9B%D1%8C%D0%B2%D1%96%D0%B2 จะกลับมาเป็น lviv แทนที่จะเป็นตัวเลขฐานสิบหกยาวๆ ฟีเจอร์นี้จะทำงานเมื่อทั้งบรรทัดเป็นลิงก์เท่านั้น ดังนั้น URL ที่ถูกยกมาไว้ในประโยคจะถูกปล่อยไว้ตามเดิม
ทำไมถึงควรเลือกใช้เครื่องมือสร้าง slug นี้?
- ทำงานบนเบราว์เซอร์เท่านั้น: ชื่อเรื่องของคุณจะไม่ถูกอัปโหลด และหน้าเว็บยังทำงานได้แบบออฟไลน์
- แปลงข้อมูลจำนวนมากจากการวางข้อความหรือไฟล์ พร้อมแสดงชื่อเรื่องต้นฉบับเหนือแต่ละ slug
- มาตรฐานการแปลงตัวอักษรจริงตามภาษา ไม่ใช่ตารางเดียวใช้กับทุกภาษา
- ภาษายูเครนใช้ตามมติที่ 55 ปี 2010 — สะกดตรงตามหนังสือเดินทาง
- กฎทุกข้อแก้ไขได้ทีละตัวอักษร และรีเซ็ตกลับได้ด้วยคลิกเดียว
- เติมคำต่อท้าย -2 และ -3 อัตโนมัติ ป้องกันไม่ให้ slug ในชุดข้อมูลซ้ำกัน
- วางลิงก์และดึง slug ออกมา พร้อมถอดรหัส percent-encoding เรียบร้อย
- รายการคำหยุดที่แก้ไขได้ ซึ่งเตรียมรายการมาให้พร้อมสำหรับภาษาของคุณ
- ตัดคำได้อย่างปลอดภัยที่คำเต็ม พร้อมแสดงตัวนับตัวอักษรข้างผลลัพธ์แต่ละอัน
- ใช้งานฟรีแบบไม่มีข้อจำกัด: ไม่ต้องสมัครสมาชิก ไม่มีการจำกัดโควตา และไม่เก็บข้อมูลในเซิร์ฟเวอร์ของเรา
เราจำเป็นต้องใช้ slug ในทุกที่ที่หน้าเว็บต้องมีที่อยู่ที่อ่านได้ บล็อกหรือเว็บไซต์ข่าวจะแปลงทุกหัวข้อข่าวให้เป็น slug ซึ่งเป็นลักษณะการใช้งานที่เครื่องมือนี้ถูกสร้างมาเพื่อรองรับ: วางหัวข้อข่าวของสัปดาห์นี้ และรับ URL ของสัปดาห์นี้กลับไป ร้านค้าออนไลน์ก็ทำสิ่งเดียวกันกับชื่อสินค้าและหมวดหมู่ มักจะทำทีละจำนวนมากๆ หลังจากนำเข้าข้อมูล และมักจะเป็นภาษาที่ที่อยู่เว็บไซต์ไม่สามารถรองรับตัวอักษรนั้นได้โดยตรง เอกสารประกอบและฐานความรู้ก็ใช้หลักการเดียวกันในการสร้างจุดลิงก์ (anchors) และชื่อไฟล์ นอกเหนือจากที่อยู่เว็บไซต์แล้ว ข้อความสะอาดๆ รูปแบบเดียวกันนี้คือสิ่งที่คุณต้องการสำหรับชื่อไฟล์ที่จะไม่เกิดปัญหาเมื่อเปิดในระบบปฏิบัติการอื่น, คีย์ฐานข้อมูลที่คนสามารถอ่านได้ในบันทึกระบบ, ชื่อสาขา (branch name), ชื่อรูปภาพในคลังสื่อ หรือตัวระบุส่วนต่างๆ ในเครื่องมือสร้างเว็บไซต์แบบ static ทุกจุดที่ชื่อซึ่งคนอ่านเข้าใจได้จะต้องอยู่รอดเมื่อถูกใส่เข้าไปในฟิลด์ที่เครื่องจักรอ่าน นั่นคือจุดที่ slug มีความสำคัญ
มีข้อจำกัดบางอย่างที่คุณควรทราบก่อนนำไปใช้งานจริง นี่คือเครื่องมือสร้าง ไม่ใช่เครื่องมือตรวจสอบ: เครื่องมือจะไม่เช็คว่ามี slug นี้อยู่ในเว็บไซต์ของคุณแล้วหรือไม่ เพราะมันไม่รู้ว่าในเว็บไซต์ของคุณมีอะไรอยู่บ้าง — สิ่งที่รับประกันได้คือความไม่ซ้ำกันเฉพาะในชุดข้อมูลที่คุณกำลังทำอยู่เท่านั้น การทำ Redirect ก็เป็นหน้าที่ของคุณเช่นกัน การเปลี่ยน slug ของหน้าเว็บที่เผยแพร่ไปแล้วจะทำให้ที่อยู่เดิมใช้ไม่ได้ และนี่คือสิ่งที่คุณต้องตัดสินใจทำใน CMS ของคุณเองไม่ใช่ในเครื่องมือนี้ "บันทึกลงไฟล์" เป็นการเขียนไฟล์ข้อความธรรมดา ไม่ใช่ไฟล์ CSV หรือ JSON การแบ่งข้อมูลอัตโนมัติจะประเมินการใช้จุลภาคซึ่งถูกต้องเกือบทุกกรณีแต่ไม่ทั้งหมด และนี่คือเหตุผลที่ "แบ่งข้อมูลด้วย" เปิดให้คุณเปลี่ยนการตั้งค่านี้ได้ และการแปลงตัวอักษรเป็นเพียงธรรมเนียมปฏิบัติไม่ใช่การแปล — München กลายเป็น muenchen ไม่ใช่ Munich — ดังนั้นเมื่อหน้าเว็บมีชื่อภาษาปลายทางที่เป็นที่ยอมรับอยู่แล้ว ชื่อนั้นจะเป็น slug ที่ดีกว่าการแปลงอัตโนมัติจากภาษาต้นฉบับ