Gopher Publishing Tools

Write in Emacs. Convert Markdown to Gopher plain text with a keybind. Serve over HTTP as static files. Visitors browse in a web terminal. No server, no database, no build step at any stage.

embed-gopher

A static site as a Gopher browser.

embed-gopher is a single HTML file that turns any static site into a Gopher content browser. Drop it into any folder you can serve over HTTP and it works. No dependencies, no build step, no server-side code.

It displays plain text files and gophermap menus in a retro terminal aesthetic, with a scanline/vignette overlay, Share Tech Mono font, and CSS custom properties for theming. It works with GitHub Pages, Netlify, and Cloudflare Pages.

embed-gopher terminal browser showing a Gopher content listing

The included generate-gophermap.sh script handles bulk conversion of existing sites. It reads Hugo Markdown source or rendered HTML and generates the gophermap and plain text files automatically.

markdown-to-gopher

Publish without leaving Emacs.

markdown-to-gopher is an Emacs Lisp script (md-to-gopher.el). Bound to C-c g in Emacs. It takes a Hugo Markdown file, strips the front matter and Markdown syntax, writes a plain text file, moves it to the Gopher directory, and appends an entry to the gophermap automatically.

It is designed to work alongside embed-gopher. The loop is: write a post in Emacs, press C-c g, and the plain text version is live. No other step required.

generate-gophermap.sh

Bulk convert an existing site.

Included inside the embed-gopher repository. If you have an existing Hugo site or a directory of rendered HTML, generate-gophermap.sh converts it into Gopher content in one pass. It supports Hugo mode (reads Markdown source) and HTML mode (reads rendered output), and integrates as a Hugo build step. This is the fast path for getting an existing site into Gopher format without converting posts one at a time.

Open source

Free to use, fork, and adapt.

All three tools are MIT-licensed and on GitHub. Questions or contributions welcome.