These are the tools I use for my personal web page authoring. The scripts can be improved to process just the modified files (and to be less hacky in general), the XSLTs can be made more generic, but it works for now, and is pretty simple. Editing: - skeleton.xml is the primary skeleton to start with, for *.xhtml files in ~/homepage/src/. This stage is mostly needed to get unified styles, metadata properties, and other bits in case if I'll change them. The same can be achieved by processing (X)HTML files, but such a processing may get tricky, and it's also nicer to have a less verbose skeleton. Editing is done with the emacs html-mode, with . Indexing: - xml-notes-dump.xsl (with some help from Makefile) is used to create notes-dump.xml in the build directory. - xml-notes-sort.xsl sorts that to create notes-by-publication-date.xml and notes-by-modification-date.xml. - xml-notes-limit.xsl is used to extract the most recent notes. Opaque files can be indexed externally, as done with build/blog.xml. HTML: - xml-to-html.xsl is used to translate source files into actual (X)HTML in ~/homepage/. Indexes can be included into those using the or element (so it should run after those are built, if they are used). Atom feed: - xml-notes-to-atom.xsl translates a dump of notes (such as notes-by-modification-date.xml) into an atom feed. Publishing: - publish.sh runs all of the above and uploads the files with rsync.