A DokuWiki to Hugo file exporter to quickly migrate your existing PHP wiki to Hugo
Go to file
Wouter Groeneveld f65a8b0b59 home.txt is actually _index.md 2017-01-16 16:37:58 +01:00
layouts/shortcodes update 2017-01-12 21:45:49 +01:00
src home.txt is actually _index.md 2017-01-16 16:37:58 +01:00
test home.txt is actually _index.md 2017-01-16 16:37:58 +01:00
.gitignore fix regex 2017-01-13 12:59:45 +01:00
LICENSE Initial commit 2017-01-12 16:23:00 +01:00
README.md todo's as dokuwiki's plugin 2017-01-15 20:40:23 +01:00



A DokuWiki to Hugo file exporter to quickly migrate your existing PHP wiki to Hugo

See https://www.dokuwiki.org/wiki:syntax

How do I run this thing?

Main wiring in DokuWikiToHugo - see the tests for an elaborate example.


This generates files in a new folder called 'output' with the same directory structure.

TOML File headers

Every converted file contains a TOML header with:

  • datestamp - looking at the file modified date (transfer from your FTP using 'keep timestamps' option)
  • draft automatically set to false
  • tags: every subfolder is a tag, including the name of the file
  • title: name of the file

See test_hugo_file_config.py for an example.

Following Dokuwiki syntax converted:


Things that needed some conversion:

  • code, file, inlinecode with single quotes
  • italic, strikethrough
  • headings with equal sign
  • linebreaks (double backslash) are at this moment replaced with HTML BRs.
  • ordered lists using dash to markdown
  • emoji following this cheat sheet: http://www.webpagefx.com/tools/emoji-cheat-sheet/ - don't forget to enable emoji in your hugo config.

Things that are the same anyway:

  • horizontal rule (4 slashes VS 3 or more)
  • bold stuff using double asteriks
  • unordered lists as asteriks
  • sub/sup

embedding HTML

Since Hugo still supports html tags, we don't need to do anything but to remove the <html/> tags.

See also the MarkdownInlineHtml class in simplestyle module.

Simple internal links are converted to relrefs like [[mylink]]. Local links with double colon are replaced by forward slash.

[[sub:link]] would become a link to the sub/link article.

If it's a HTTP(S) link, it stays that way.


You'll have to come up with your own shortcodes for those.

See wp.html in the layouts directory. You could customize interwiki links from dokuwiki: [[custom>somelink]] would refer to some custom wiki. Simply add custom.html and link to the website of your choice. Use Hugo's {{ index .Params 0 }} to get the link content.


There's a dokuwiki plugin which enables things like:

<todo>a todo list</todo>
<todo #>done</todo>
<todo #>also checked off</todo>

Hugo supports this using this MD syntax:

- [ ] a todo list
- [x] done
- [x] also checked off

I like lists. So this is naturally supported.

I want to create my own syntax conversion!

No problem, the project was made with extensibility in mind.

Simply drop a python script in the markdown submodule folder location and annotate it with the class decorator @MarkdownConverter.Register. That way it's auto-loaded and wired in the main conversion.



  • Figure out image links ala http://php.net|{{wiki:dokuwiki-128.png}}
  • Tables, should complex ones be supported or can I do a manual convert?
  • no formatting (nowiki, %%) - should this just be a pre?

Not supported and probably will never be

  • embedding php - kill it with fire?
  • macro's - kill it with fire?
  • what to do with footnotes?