Generate an Atom feed from a directory of text/gemini files.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
makeworld 371bec6227 Use local timezone 1 year ago
.gitignore Initial commit 2 years ago
LICENSE Use local timezone 1 year ago Update README. 2 years ago Use local timezone 1 year ago Bump version for dev. 2 years ago


Gemfeed is a simple tool for generating Atom feeds for directories of text/gemini files. It may not be adequate for large, complicated Gemini sites, but if you have, for example, a gemlog which is just a single directory full of .gmi files, each of which corresponds to one post, then the idea is that you can call gemfeed from a regular cronjob (or by hand after you write each post, if you like!) and maintain an Atom feed for your gemlog with very little extra effort.

Basically, when run Gemfeed will find all world-readable .gmi or .gemini files in the current directory and add the 10 most recently created ones to an Atom feed it will save to the file atom.xml.

  • Each file's creation time will be used as the corresponding entry's update time.
  • The first heading line in each file (i.e. the first line encountered which begins with #, ## or ###) will be used as the corresponding entry's title. If your file contains no heading line, the filename will be used as a title instead, with its extension removed.
  • If an index.gmi or index.gemini file is found, it won't be included as an entry in the feed, but the first heading line in the index file will be used as the title for the feed. If your index file contains no heading line, you'll get the dorky default "Just another Gemini feed".

The only information you need to provide to make this happen is a base URL (with -b or --base). If you provide a base URL of gemini:// then Gemfeed will assume that a file it finds named my-first-post.gmi is accessible via the URL gemini://, and that the file it produces will be accessible via the URL gemini:// Basically, you should provide the URL which will your server will map to the directory you're trying to generate a feed for.

If you want to, you can provide additional information above and beyond the base URL:

  • You can specify a directory other than the present working directory with -d or --directory.
  • You can specify a number of posts other than 10 with -n
  • You can change the output filename with -o or --output.
  • You can specify your own feed title and subtitle with -t or --title and -s or --subtitle, respectively. If you specify a title, it will override any heading line in your index file.
  • You can specify an author name for the feed with -a or --author and/or an author email address for the feed with -e or --email.
  • If you specify -q or --quiet, Gemfeed will write nothing to stdout unless there's a problem - ideal for cron jobs!