Debido al hecho de que github tiene su propia forma de generar atributos id = ".." en h1, h2, h3, etc ... encabezados en la versión html después de procesar Markdown (por ejemplo, Bitbucket usa un patrón poco diferente de títulos de encabezados lentos para id = "slug") es útil no reinventar la rueda y usar la biblioteca que realizó ingeniería inversa en este proceso.
Encontré una biblioteca bastante buena para esta tarea llamada markdown-toc .
Para mí parece la mejor solución porque siempre he instalado el nodo en mi máquina.
Sólo hay que ejecutar npx rebaja -i-toc file.md .
Y parece que es una de las herramientas más populares para esta tarea, al menos en el ecosistema node.js.
ls
cat <<EOF >> test.md | tee
## Table of Contents
<!-- toc -->
- old toc 1
- old toc 2
- old toc 3
<!-- tocstop -->
## abc
This is a b c.
## xyz
This is x y z.
EOF
ls
cat test.md
npx markdown-toc -i test.md
cat test.md
salida: