· back
Next round of improving Textpod on <2026-04-15 Wed>.
Introduced --base-path flag, to serve notes under sub-path.
To start Textpod with sub-path, use:
textpod --token $TEXTPOD_TOKEN --base-path notes
textpod.el is a companion Emacs package for quick publishing notes from Org Mode documents.
Install it like this:
(use-package textpod
:config
(setq textpod-token (cadr (auth-source-user-and-password "finita.myaddr.dev" "textpod")))
(setq textpod-url "/notes"))
Then these helper functions do the heavy-lifting:
When creating a note, textpod.el sets TEXTPOD_ID property that's equal
to node'id.
Default separator \n\n---\n\n is fragile as it requires exactly two
newlines before / after the note. I often messed up notes when
editing notes.md file manually. To fix that, I replaced it with ^L
character (insert in Emacs via C-q C-l) which usually represents new
pages.
Attachement links need to respect --base-path flag.
My current workflow:
Assets are stored next to Notes under assets/ directory
I can quickly search for them, then open in Emacs/qView:
find ../assets -name "*prefix-in-emacs*"
../assets/m-g-prefix-in-emacs.png
../assets/m-s-prefix-in-emacs.png
I can reference an asset as an image:

An image is a link to an image file that does not have a description part (Images (The Org Manual)).
Textpod already support images. What happens when I drag-n-drop an image file to the textarea? Textpod copies them under attachments directory.
What I want:
POST /notes/assets/<name>, accepting
binary as payload.Okay, I implemented it, let's test.
Prompt: Implement textpod-org-heading-to-note function, it should select current (top) heading - the one that has TEXTPOD_ID parameter, and call textpod-org-region-to-note on it.
The command {M-x textpod-org-heading-to-note} works!
Currently I use TEXTPOD_ID property. If using ID property, notes will
automatically become Org-roam nodes. Currently IDs are generated as
timestamps via (setq org-id-method 'ts) with nanoseconds precision.
Then it will come with seconds precision. I will need to a prefix, to
be able to quickly find them (e.g. with {M-x deadgrep}).
To declutter the index page, h3 markdown headings (h2 Org headings)
are wrapped into <details> tag. The note page renders normally,
showing table of contents on the left sidebar.