ZeroTool Workbench

Markdown 目录生成器

从 Markdown 标题生成可点击目录,支持 GitHub / GitLab / Jekyll / Bitbucket 锚点风格,可通过 <!-- toc --> 标记原位更新。完全在浏览器中运行,零上传。

100% 浏览器端运行 数据不离开你的设备 免费 · 无需注册

在 <!-- toc --> ... <!-- /toc --> 标记之间替换目录

目录

使用步骤

  1. 把 Markdown 粘贴到左侧输入区。
  2. 锚点风格 里选目标平台 — GitHub / Hugo、GitLab、Jekyll 或 Bitbucket。
  3. 最小标题级别最大标题级别 圈定要进 TOC 的层级范围。
  4. 如果文档标题由模板单独渲染,关掉 包含 H1
  5. 直接复制生成的目录;或者打开 标记模式,得到带 <!— toc —> 标记的完整 Markdown。

四种锚点风格

  • GitHub / Hugo — 转小写、去标点、空格转连字符、保留 Unicode。Hugo 自 v0.62 起的 goldmark 渲染器默认与 GitHub 一致。
  • GitLab — 同 GitHub,但把连续多个连字符合并为一个,匹配 GitLab Flavored Markdown。
  • Jekyll(kramdown 经典) — 先剥掉所有非 ASCII 字符再生成 slug。仅在 Jekyll 站没有切换到支持 Unicode 的 slugger 时使用。
  • Bitbucket — 每个锚点都带 markdown- 前缀,重复项用 _N 而非 -N

标记模式

标记模式让 TOC 永远新鲜,又不动原文其它部分。 在你想放目录的位置写两条 HTML 注释:

<!— toc —>
<!— /toc —>

之后随时跑一遍生成器,两条注释之间的内容会被替换为新 TOC。 如果文档还没有标记,工具会在第一个标题之前自动插入一段标记块, 复制粘贴回去就能 commit。

实例

简单目录,GitHub 风格

输入:

# API 参考

## 鉴权

### OAuth 流程

## 接口

### GET /users
### POST /users

输出(GitHub 锚点,缩进 2 空格):

- [API 参考](#api-参考)
  - [鉴权](#鉴权)
    - [OAuth 流程](#oauth-流程)
  - [接口](#接口)
    - [GET /users](#get-users)
    - [POST /users](#post-users)

重复标题

两个 ## 示例 在 GitHub / GitLab / Jekyll 下分别变成 #示例#示例-1;Bitbucket 下变成 #markdown-示例#markdown-示例_1

跳过 H1

如果你的静态站从 frontmatter 渲染 H1,关掉 包含 H1,TOC 会从第一个 H2 开始,整体缩进降一级。

FAQ

为什么要选锚点风格?

不同平台把标题转成锚点(slug)的算法不一样。GitHub 保留 Unicode、把空格换成连字符;GitLab 类似但会把连续连字符合并;Jekyll/kramdown 经典模式会先去掉所有非 ASCII;Bitbucket 给每个锚点加上 markdown- 前缀。用错风格生成的目录,链接点过去就是 404。

支持中文、日文、韩文标题吗?

GitHub、GitLab、Bitbucket 三个风格都保留 Unicode 字母,中文 / 日文 / 한글 标题原样进锚点。Jekyll classic 默认会把非 ASCII 全部剥掉,如果目标平台是 Jekyll,建议切到 GitHub 风格以保留原始标题。

标记模式(Marker mode)怎么更新已有目录?

打开标记模式后,工具会在文档中找 <!-- toc --> ... <!-- /toc --> 一对注释,把中间的内容整段替换成新生成的 TOC,标记之外的内容一律不动。如果还没有标记,工具会在第一个标题之前插入一个新的标记块,复制粘贴回原文即可。每次输入变动都会重新生成。

标题重复怎么办?

重复锚点会自动去重。GitHub / GitLab / Jekyll 在重复项后追加 -1、-2、-3……;Bitbucket 用 _1、_2、_3 以匹配它原生的渲染规则。生成出来的目录链接永远指向唯一的目标位置。

代码块里的 # 会被当成标题吗?

不会。被三反引号 ``` 或三个波浪号 ~~~ 包围的代码块内容一律按代码处理,不会被识别为标题。已存在的 <!-- toc --> ... <!-- /toc --> 区段也会被跳过,所以可以反复运行生成器而不会出现旧 TOC 嵌套。