Это не автоматически, но использует регулярные выражения Notepad ++:
Заменить все первое на второе (удаляет все строки, не имеющие заголовков)
^##(#?)(#?)(.*?)$(.|\r|\n)*?(?=^##|\z)
-\1\2 [\3](#\3)\n
Затем (преобразует заголовки III в пробелы)
-##
-
Затем (преобразует заголовки II в пробелы)
-#
-
Затем (удалить неиспользуемые символы в начале и в конце заголовка ссылки)
\[ *((?:(?![ .:#!\?;]*\])[^#])*)[ #:!\?;]*\]
[\1]
Затем (преобразовать последние лексемы в нижний регистр и тире вместо пробелов)
\]([^ \r\n]*) ([^\r\n ]*)
]\L\1-\2
Удалить неиспользованные последние фунты и начальные тире:
(?:()[-:;!\?#]+$|(\]#)-)
\1\2
Удалите ненужные символы в ссылках:
(\].*?)(?:\(|\))
\1
И, наконец, добавьте скобки вокруг окончательных ссылок:
\](?!\()(.*?)$
\]\(\1\)
И вуаля! Вы даже можете поместить это в глобальный макрос, если будете повторять это достаточно времени.