stormwatch / writefreely.el

*Frictionless* blogging with Org Mode. No setup required.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool


This small library allows you to publish and update your Org-mode files as posts to any instance of the federated blogging platform write freely. No account nor registration is required for anonymous posts in the platform.

View it in action:


An example post generated with this library can be found here. The source org file can be found under in the root of this repository.


This project is available on Melpa. To use it:

(use-package writefreely
  :after org
  :ensure t
  ;; Authentification token, if wanted.
  ;; Alternatively (setq writefreely-auth-token "00000000-0000-0000-0000-000000000000")
  :config (load-library "writefreely-auth-token.el.gpg"))

This package now depends on ox-gfm to get the code export done properly.


  1. Write an Org file. You may want to set the following options, to tweak ox-gfm’s export: toc:nil -:nil \n:t.
  2. Call writefreely-publish-or-update to push the post to Here writefreely.el will store the post-id and post-access-token as local variables directly in your org document. This allows you to visit your post online, or update it later.
  3. Call writefreely-visit-post to visit your post online.

To configure your writefreely instance, simply customise the variables writefreely-instance-url and, most importanly, writefreely-instance-api-endpoint. Per default they point to

All posts will be created anonymously, unless you set the variable writefreely-auth-token is set to a valid user access token. For more information about generating access tokens visit

When authenticated, you may choose to submit posts anonymously or to one of your collections.

If using the, instance, for example, copy and paste the following into your shell, changing the username and password to those of your account:

curl "" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{"alias": "user", "pass": "12345"}'


*Frictionless* blogging with Org Mode. No setup required.


Language:Emacs Lisp 100.0%