earmark
earmark
Turn the things you meant to read into a private podcast feed.
Links
AI / Agents
Developers
Community
Full license MIT
Meta
Requires: Python >=3.11,<3.13
Provides-Extra: misaki, dev
earmark init ~/pCloud\ Drive/public/audio --base-url https://filedn.com/XXXX/audio
earmark publish paper.pdfearmark extracts the text from a document (PDF, DOCX, PPTX, EPUB, HTML, Markdown) or an article URL, rewrites it into something that sounds good read aloud, narrates it locally with Kokoro-82M, and puts the MP3 on a podcast feed your phone can subscribe to.
Everything runs on your machine. No API keys, no per-minute cost.
Install
Requires uv and ffmpeg.
brew install ffmpeg
git clone https://github.com/jhelvy/earmark.git
cd earmark
uv tool install --python 3.12 -e .Python 3.11 or 3.12 specifically: the Kokoro toolchain does not yet support 3.13 or newer, and uv will fetch a suitable interpreter for you. Full detail in Installation.
The commands
earmark text SOURCE -> text/<name>.md look at it, fix it
earmark audio SOURCE -> audio/<name>.mp3 narrate it
earmark publish SOURCE -> feed.xml all of the abovepublish runs the whole chain, so earmark publish paper.pdf is all you ever need to type. The other four commands are setup and housekeeping: init, config, feed, voices.
Everything earmark makes lands in one folder you choose (your library), which is meant to be a folder served on the public web. There is no library setting anywhere, because the library is the folder its earmark.toml sits in.
Start here
| Quickstart | empty folder to something playing on your phone |
| The library | why a library is a folder |
| The pipeline | text, audio, publish, and editing in between |
| Text cleaning | what gets rewritten before anything is spoken |
| Choosing a voice | 54 voices and how to pick one |
| Publishing anywhere | GitHub Pages, rclone, rsync: one line each |
| Subscribing on your phone | where the feed URL goes in each app |
| Reference | every command, flag and config key |