a blog engine that only reads .txt files.
drop a folder of plain text files in, get a static html site out. first line of each file is the title. the grammar is tiny on purpose. probably too tiny for your blog, tbh.
---------------------------------------------- 2026-04-19 · small tools are the whole trick ---------------------------------------------- i keep writing tiny clis. not because i'm allergic to frameworks. because by the time i learn the api, the api is already obsolete. plain text is obsolete-proof. the unix philosophy still holds. do one thing well, make it composable with everything else. this blog is 80 kb. it will still render in 2048. -- farkhad [1/3]
write. save. build.
$ tree my-blog/ my-blog/ ├── 2026-04-19-a-thing-i-learned-today.txt ├── 2026-04-14-why-i-stopped-using-obsidian.txt └── 2026-04-05-small-tools.txt $ ttyblog build my-blog/ -o dist/ building 3 posts… · a-thing-i-learned-today.html · why-i-stopped-using-obsidian.html · small-tools.html ✓ wrote 3 files + index.html to dist/ in 38ms. $ ls dist/ index.html a-thing-i-learned-today.html why-i-stopped-using-obsidian.html small-tools.html style.css # 2 kb. one file. no js.
the first line of each file becomes the title. the filename's date prefix becomes the permalink and publish date. paragraphs split on blank lines. that's the spec.
the whole engine, in three bullets.
plain .txt, one per post:
a directory of text files is the whole input. if you can ls it, ttyblog can publish it. the filename holds the date and slug. the first line is the title. nothing else to configure.
six inline rules, that's it:
paragraphs split on blank lines. *italic*, **bold**, `code`, [url], [text](url), lines that start with - become a list. if you want footnotes or tables, this isn't the tool.
a few hundred lines of python:
click, jinja2, a parser i wrote in an afternoon. you can read the whole source in one sitting. fork it, patch it, keep a copy in ~/bin. i haven't tested on windows.
$ pip install git+https://github.com/f4rkh4d/ttyblog $ ttyblog init $ ttyblog new "my first post" $ ttyblog build