Slug 是网址中可读的末尾部分 —— 例如 example.com/blog/my-first-post 中的 my-first-post。这是用户在决定是否点击之前可以阅读的部分,也是搜索引擎将其作为页面内容简短描述的部分,这就是为什么它比数据库 ID 或日期更值得花心思。这个免费的生成器能将任何文本转换为 Slug:将标题粘贴到“要转换的文本”中,点击“生成”,结果就会出现在旁边,并带有一个复制按钮。默认设置是大多数网站希望的配置 —— 转换为小写、单词间使用连字符、移除常见的停用词、音译非拉丁字母 —— 因此只需点击一下即可获得可用的 Slug,而且所有这些设置都可以通过开关进行更改。
所有的处理都在您自己的设备上进行。页面加载了一个小型的 JavaScript 引擎并在本地运行:您的标题绝不会被上传,也不会被记录,即使断开网络连接,该工具也能继续工作。这也是为什么当您更改设置时结果会立即更新的原因。处理的顺序值得说明,因为正是它使输出变得可预测:粘贴的链接首先被缩减为最后的路径段,然后文本被转换为小写,接着移除停用词,之后非拉丁字符被音译,如果勾选的话则移除数字和特殊字符,然后剩下的内容将使用您选择的分隔符连接起来,接着结果会被裁剪到最大长度,最后,重复的项会获得一个数字后缀。“要转换的文本”一次最多可接受 500,000 个字符,相当于几千篇文章的标题。
一行输入对应一个 Slug。粘贴整个标题列表,每一行都会变成一个带编号的 Slug,其上方的灰色文字显示它对应的原始标题,因此即使在一批五十个结果中,您仍然可以分辨出哪个 Slug 属于哪个标题。如果列表已经存在于文件中,则无需通过剪贴板:点击输入框旁边的“从文件加载”按钮,打开一个纯文本文件(如 .txt、.csv、.md、.json 等),其内容就会直接填入字段中。您的浏览器读取该文件的方式与读取您输入的内容完全相同,且不会上传到任何地方。“输入拆分方式”决定了如何分割列表。“自动检测”是默认设置:换行符总是会分隔项目,而逗号仅在输入为单行且所有部分看起来都像独立值时才会起分隔作用 —— 因此“价格 1,500 元”和“第5章: 结果, 结论”会保持完整,而不会碎裂成片段。如果您已经清楚数据的格式,“换行”、“逗号”和“空格”允许您强制进行拆分。“结果格式”决定了获取批量结果的方式 —— 换行、以空格分隔或以逗号分隔 —— “全部复制”和“保存为文件”都会遵循该格式。“历史记录”会在您自己的浏览器中保留最近 10 次的批处理结果,因此您在一小时前转换的列表依然存在。
非拉丁文本是大多数 Slug 生成器只能做到大致准确、很少能做到完全准确的部分。URL 在纯 ASCII 码下是最安全的,因此西里尔字母、希腊语、阿拉伯语、中文以及带重音的欧洲字母必须进行转换,唯一的问题是遵循什么规则。本页面通过两个层面来解决。通用层面覆盖所有书写系统:一个音译库能为您输入的几乎任何字符提供合理的 ASCII 转换,这就是“音译源语言”菜单中“自动(任何语言)”的含义。特定层面是一组为那些通用转换与国家实际使用情况不符的语言手工构建的表格;“音译源语言”菜单中列出了目前已有表格的语言,而且随着工具支持更多需要的语言,这个集合还在不断增加。选择其中一个会在“音译规则”下方加载其对应的可编辑网格,每个字母都是一个您可以修改的文本字段,而“将规则重置为默认值”则能将其恢复原样。乌克兰语表格遵循 2010 年内阁第 55 号决议,即乌克兰护照中使用的标准,包括一些容易遗漏的细节:зг 变为 zgh 而不是 zh,以与 ж 区分开;є、ї、й、ю 和 я 在词首有一种形式,在词中则有另一种形式;撇号和软音符号会被直接删除而不会开启新词,所以 Знам'янка 会转换为 znamianka 而不是 znamyanka。德语默认使用德国地址实际采用的扩展形式 ä → ae、ö → oe、ü → ue,如果您更喜欢,也可以选择简单的 ä → a 变体。
“移除停用词”默认开启。它会去掉那些徒增 Slug 长度却不增加含义的小连接词 —— 如 a、the、and、of、for 等。“停用词”下方的列表是完全可编辑的,并且默认已经填好内容:包含一个英语列表以及当前页面语言对应的列表,所以乌克兰语页面认识 в、на、та 和 і,德语页面认识 der、die 和 das。您可以添加自己的词汇,删除想要保留的词汇,或者完全关闭此功能,此时该字段会变为灰色而不是假装仍起作用。关于它有两点需要说明。移除停用词主要是为了让地址变得更短、更整洁,而不是提升排名的手段 —— 它不能带来更好的位置。另外,如果标题中的每个词碰巧都在列表里,最终的结果就什么都没有,该工具会直接告诉您这一点,而不是给您一个空框。
其余的开关决定了 Slug 的形态。“Slug 分隔符”选择单词之间放置什么字符,默认使用连字符并不是品味问题:Google 将连字符视为单词分隔符,而将下划线视为连接符,因此 my_first_post 会被爬虫读取为一个长词,而 my-first-post 会被读取为三个词。“下划线 (_)”提供给那些坚持使用它的系统。“转换为小写”保持开启,因为大多数服务器区分地址的大小写,混用大小写很容易导致同一个页面出现两个 URL。“移除特殊字符”会剥离所有非字母、非数字、非空格、非连字符或下划线的内容,这能将标点符号、引号和表情符号排除在地址之外 —— 特别是表情符号会在音译之前被移除,以防止火箭表情变成 rocket 这个词。默认没有勾选“移除数字”,因为标题中的数字通常是标题的一部分。“最大长度”范围从 10 到 200,默认值为 80;当 Slug 超过该长度时,引擎会在放得下的最后一个完整单词处截断,而不是从中间切断某个词。每个结果旁边的数字代表其字符长度,超过 60 时会变红 —— 这并非硬性限制,而是 Slug 在搜索结果中开始被截断、且粘贴到消息中变得尴尬的临界点。
还有两个开关,因为它们能让批量转换回归一键操作。“使 Slug 唯一”用于捕捉两个不同标题转化为相同 Slug 的情况 —— “热门 10 技巧”和“热门-10 技巧”都会变成 remen-10-jiqiao —— 它会给第二个添加 -2,第三个添加 -3,如果后缀会超出您的最大长度,它会先缩短基础部分。两个页面使用同一个地址的问题,在这个列表中捕获要比在您的 CMS 中处理便宜得多。“从粘贴的 URL 提取 Slug”则反向工作:粘贴完整的链接,工具会提取路径的最后一部分,去掉查询字符串以及任何 .html 或 .php 后缀,并解码百分号编码。例如,一个以 %D0%9B%D1%8C%D0%B2%D1%96%D0%B2 结尾的维基百科链接,转换后会得到 lviv 而不是一串十六进制数字。它仅在整行都是链接时才会触发,因此句子中引用的地址会保持原样。
为什么选择这款 Slug 生成器?
- 仅在浏览器中运行:标题绝不会被上传,页面支持离线工作
- 支持从剪贴板或文本文件批量转换,每个 Slug 上方都会显示源标题
- 提供各语言真实的音译标准,而非对所有语言使用单一通用表
- 乌克兰语遵循 2010 年第 55 号决议 —— 护照中使用的拼写规范
- 每一个规则都可以逐个字母进行编辑,并支持一键重置
- 自动添加 -2 和 -3 后缀,确保批量处理时没有两个 Slug 发生冲突
- 粘贴链接即可提取出 Slug,并自动解码百分号编码
- 带有可编辑的停用词列表,自动为您当前语言填好预设词汇
- 确保在完整单词处安全截断,并在每个结果旁显示字符数
- 免费且无限制:无需注册,没有额度限制,我们的服务器不保留任何内容
任何需要携带可读地址的页面都需要 Slug。博客或新闻网站会将每个标题都转换为一个 Slug,这也是这款工具设计的初衷所在:粘贴一周的头条,获取一周的 URL。在线商店针对产品和类别名称进行相同的操作,通常在导入后批量处理,且通常使用地址无法支持的字母系统语言。文档和知识库也以同样的方式构建锚点和文件名。除了网址,同样的干净字符串也是跨操作系统不会出错的文件名、日志中人眼可读的数据库键、分支名称、媒体库中的图片名称,或者是静态站点生成器中区块的标识符。凡是人类可读名称需要存活于机器可读字段的地方,就是 Slug 的用武之地。
在依赖它之前,有几个限制值得了解。这是一个生成器,而不是验证器:它不会检查某个 Slug 在您的网站上是否已被占用,因为它完全不知道您的网站包含什么 —— 它所保证的唯一性仅限于您面前的这批数据中。重定向也是您的工作;更改已发布页面的 Slug 会破坏其旧地址,这是由您的 CMS 而不是此工具决定的。“保存为文件”写入的是纯文本,不是 CSV 或 JSON。自动拆分功能对逗号做出的判断在绝大多数情况下都是正确的,但并非完美无缺,这正是“输入拆分方式”允许您推翻它的原因。而且音译是一种约定而不是翻译 —— München 会变成 muenchen,而不是 Munich —— 因此,如果某个页面在目标语言中已经有既定名称,那么该名称将比对原文的任何自动转换更适合作为 Slug。