ZeroTool Workbench

Markdown 목차 생성기

Markdown 제목에서 클릭 가능한 목차 생성. GitHub / GitLab / Jekyll / Bitbucket 앵커 스타일 지원, <!-- toc --> 마커로 원위치 갱신. 100% 브라우저에서 실행, 업로드 없음.

100% 클라이언트 사이드 데이터가 브라우저 밖으로 나가지 않습니다 무료 · 회원가입 불필요

<!-- toc --> ... <!-- /toc --> 마커 사이의 목차 교체

목차

사용 방법

  1. 왼쪽 입력 영역에 Markdown을 붙여넣습니다.
  2. 앵커 스타일에서 대상 플랫폼 — GitHub / Hugo, GitLab, Jekyll, Bitbucket — 을 선택합니다.
  3. 최소 제목 레벨최대 제목 레벨로 목차에 포함될 제목 범위를 좁힙니다.
  4. 문서 제목이 템플릿에서 따로 렌더링된다면 H1 포함을 끕니다.
  5. 생성된 목차를 그대로 복사하거나, 마커 모드를 켜서 <!— toc —> 마커가 포함된 전체 Markdown을 가져옵니다.

네 가지 앵커 스타일

  • GitHub / Hugo — 소문자 변환, 구두점 제거, 공백을 하이픈으로, Unicode 유지. Hugo는 v0.62부터 goldmark 렌더러에서 GitHub과 동일한 규칙을 사용합니다.
  • GitLab — GitHub과 같은 규칙에 추가로 연속된 하이픈을 하나로 합칩니다. GitLab Flavored Markdown의 렌더링과 일치합니다.
  • Jekyll(kramdown classic) — 비 ASCII 문자를 먼저 제거한 뒤 slug를 만듭니다. Unicode 친화 slugger로 전환하지 않은 Jekyll 사이트 전용.
  • Bitbucket — 모든 앵커에 markdown- 접두사가 붙고, 중복은 -N이 아니라 _N으로 표시됩니다.

마커 모드

마커 모드는 목차를 항상 최신으로 유지하면서, 문서의 나머지 부분은 건드리지 않습니다. 목차가 위치할 자리에 두 개의 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 classic은 비 ASCII를 모두 제거하고, Bitbucket은 모든 앵커에 markdown- 접두사를 붙입니다. 잘못된 스타일로 만든 목차는 링크를 눌러도 목적지에 도착하지 못합니다.

중국어, 일본어, 한국어 제목도 지원하나요?

GitHub, GitLab, Bitbucket 세 스타일은 Unicode 문자를 그대로 앵커에 유지하므로 중국어 / 일본어 / 한글 제목이 그대로 동작합니다. Jekyll classic은 기본적으로 비 ASCII를 제거하므로, 대상이 Jekyll 사이트라면 GitHub 스타일로 전환해 원본 제목을 URL에 보존하기를 권장합니다.

마커 모드는 기존 목차를 어떻게 갱신하나요?

마커 모드를 켜면 도구가 문서에서 <!-- toc --> ... <!-- /toc --> 쌍을 찾아 그 사이의 내용을 새로 만든 TOC로 통째로 교체합니다. 마커 바깥의 본문은 손대지 않습니다. 아직 마커가 없다면 첫 제목 바로 앞에 새 마커 블록을 자동으로 삽입하므로, 복사해 원본 파일에 다시 붙여 넣기만 하면 됩니다.

제목이 중복되면 어떻게 되나요?

중복 앵커는 자동으로 고유화됩니다. GitHub / GitLab / Jekyll은 끝에 -1, -2, -3 …을 덧붙이고, Bitbucket은 자체 렌더링에 맞춰 _1, _2, _3 …을 사용합니다. 생성된 목차의 링크는 항상 고유한 목적지로 연결됩니다.

코드 블록 안의 #도 제목으로 인식되나요?

아닙니다. 펜스드 코드 블록(``` 또는 ~~~) 안의 줄은 모두 코드로 취급되어, 줄 머리의 #은 제목이 되지 않습니다. 기존 <!-- toc --> ... <!-- /toc --> 블록도 같은 방식으로 건너뛰므로, 생성기를 반복 실행해도 옛 TOC가 중첩되지 않습니다.