Ein JavaScript-Inhaltsverzeichnis ist sicher keine schlechte Idee. Allerdings schalte ich JavaScript beim Surfen immer aus und kann das dann als Besucher also nicht sehen.
Ich hatte das mal für mich von Hand geschrieben, allerdings in Python und auch nur für eine einzige Überschriftenebene. War etwas komplizierter, als ich zunächst gedacht hatte. Aber eine ganz interessante Programmieraufgabe (wenn man die Zeit dazu hat).
Bei mir sah der Ablauf dann so aus:
# Getting range of "Contents"
# Extracting old contents from "Contents"-range
# Deleting "Contents"-range
# Getting new contents from headlines
# Composing new "Contents"-range
# Inserting "Contents"-range
# Rewriting headlines
# Updating internal links
Der Witz daran war, ich konnte einfach einen neuen Abschnitt in der html-Seite einfügen (wie gesagt, alles nur auf einer Ebene), dann das Skript über die html-Seite laufen lassen, und die Nummerierungen der Abschnitte und das Inhaltsverzeichnis waren in der Seite aktualisiert (das Ergebnis habe ich sicherheitshalber nicht in die Ausgangsdatei, sondern in eine Ergebnisdatei geschrieben). Innerhalb des Texts in den Abschnitten hatte ich manchmal auch auf andere Abschnitte verlinkt. Das Skript konnte auch diese Links mit aktualisieren ("Updating internal links").
Na ja, bei Dir ist die Ausgangslage und das, was Du tun möchtest, bestimmt etwas anders.