Core to my effort to improve this blog and my writing more generally is a better revision process. I now use tools to catch mechanical errors or to point out when I’ve slipped into passive voice accidentally, but that doesn’t address the flow of prose, the feel of the words washing over the reader. Reading out loud is a superb way to improve, but I’m not always in a position to do that.
So, last year, I built an Apple Shortcut that takes a Markdown file and converts it to an MP3 read by a premium Apple text-to-speech voice. This was fine, but clunky. I couldn’t easily adjust the reading speed, and finding the start of some paragraph to revisit meant scrubbing through an audio file. In short, I rarely used it.
After determining no simple app exists that had my basic criteria—Markdown editing and preview, ability to use built-in voice models, variable reading speed, and the ability to select a paragraph to read—I blindly threw the problem at Claude.
It did a fine job on the first try, generating an HTML file with an embedded script that, in total, was only around 15 kB. The only issue was that it couldn’t find the premium “Zoe” voice I knew was available when I opened the file in Safari—Claude’s recommendation. When I instead opened the file in Firefox, my browser of choice, everything clicked.
Then, we had ten minutes of quick iteration. I requested:
- A way to start progress at a (somewhat) arbitrary point in the text file. Its solution was to allow each paragraph to be clicked, and the voice would begin reading that selected paragraph.
- Simple menus to select the typeface and font size for the editor and preview windows.
- A dark/light theme toggle.
- A setting to adjust the paragraph highlight color in the preview window. It had defaulted to a rather aggressive yellow.
Here’s the final result.

Claude capably handled everything, and given my lack of large-scale programming knowledge, I was shocked it managed to build this using only the chat interface. I began this project assuming it would be my first opportunity to use Claude Code. I guess I’ll need to imagine something more ambitious.
You can access the Markdown Reader HTML file here, and follow instructions for getting the Zoe premium voice on macOS here.