Speak once, get a Markdown prompt any agent can @. Free MIT CLI — now live in the ChatGPT / Codex Plugins directory.
Back on 4 Sep, in the AI image prompt commands newsletter, I teased a VCL project built on Gemini 3.5 Transcribe.
Here I am.
This is also my first product live as a ChatGPT / Codex plugin. Among roughly a thousand third-party plugins, one of them is mine — and I'm excited for you to try it.
Meet saymd — a Free MIT CLI that turns microphone speech (or an audio file) into a structured Markdown prompt any agent can @. Not a raw dump into chat. A usable spec: Objective / Context / Instructions / Constraints (or a feature / bug / plan template).
You bring your own speech-to-text key (BYOK). saymd does not host your audio or sell transcription minutes.
Start-here: npx saymd setup → npx saymd doctor → npx saymd. Then @ .ai/prompt.md in your agent. Site: saymd.app · Free MIT: GitHub.
I still prefer the CLI
I spent years in VS Code. Even with Cursor, Codex, Claude Code, and Antigravity desktop apps on the machine, I still prefer the CLI when I can. Less UI chrome. Faster loops. Feels like home.
The bottleneck is not the agent. It's typing.
Dictation helps. Tools like Wispr Flow and native IDE dictate are great for getting words out of your head. The problem: they usually dump messy unstructured text straight into the chat box. Agents then guess the objective, invent constraints, and miss the acceptance criteria you meant to say.
I wanted the opposite: speak once → get a prompt file I can @ in Cursor, Codex, Claude Code, Gemini CLI, Grok Build, Copilot, OpenCode — whatever I'm using that day.
That's saymd.
What saymd does
- You speak (mic) or pass
--file idea.m4a. - Your chosen STT provider transcribes (and, for Gemini / OpenAI, helps structure).
- saymd writes
.ai/prompt.md— structured Markdown, not a transcript paste. - You
@that file in your agent and let it execute.
Default headings (no template): Objective · Context · Instructions · Constraints.
--template |
Shape |
|---|---|
feature |
Objective, Context, Instructions, Constraints, Acceptance criteria |
bug |
Objective, Context, Steps to reproduce, Expected / Actual |
plan |
Objective, Context, numbered Steps, Constraints, Open questions |
Demo from the GitHub repo — mic or --file → structured .ai/prompt.md.
How to run (Free)
npx saymd setup
npx saymd doctor
npx saymd
Or from an existing clip:
npx saymd --file idea.m4a --template feature
Useful flags:
-
-o .ai/prompt.md— output path --template feature|bug|plan-
--seconds 30— shorter first test (Free max is ~60s) -
--lang hu— language hint if auto-detect misses --provider gemini|openai|deepgram|elevenlabs
doctor checks ffmpeg, mic, provider, and API key before your first real take. Press Enter to stop recording early — you don't have to wait for the max.
Requirements: Node 20+, ffmpeg, macOS or Linux (Windows: WSL or --file only).
Providers (BYOK — Free)
All four are available on Free. You create the key with the provider, paste it in saymd setup, and pay that provider directly.
| Provider | Exact model | Notes |
|---|---|---|
| Gemini (recommended) | gemini-3.5-transcribe |
Speech-to-text and Markdown structuring |
| OpenAI | gpt-4o-transcribe |
Speech-to-text and Markdown structuring |
| Deepgram | nova-3 |
STT only — also needs Gemini or OpenAI to structure |
| ElevenLabs | scribe_v2 |
STT only — same as Deepgram |
Keys live in ~/.saymd/config.json (mode 0600) or env vars (GEMINI_API_KEY, OPENAI_API_KEY, …). A typical ~60s dictation is usually well under $0.01 on your own key (provider pricing applies).
Privacy: API keys stay on your machine. Audio goes only to the STT provider you chose, with your key. saymd.app does not receive your audio, transcripts, or prompt files.
Languages (Free): 85+ input languages with automatic detection. On Free, every section of the Markdown is written in the same language you spoke. Pro unlocks cross-language --out (e.g. speak Hungarian → English Markdown).
When a 60-second take isn't enough
The Free MIT CLI is the whole product for short recordings. Stay there if that's all you need.
If you start using saymd every day — continue a spec after the first take, ask it to flag missing requirements, speak one language and write the Markdown in another, or record past a minute — that's Pro. It's a separate package (@saymd/pro), not a hidden switch in the MIT repo. I sell the year first: €39/year at saymd.app. A monthly option exists if you only want to try; yearly is the one I'd pick.
saymd activate <activation-code>
saymd --continue .ai/prompt.md
saymd --review .ai/prompt.md
saymd --out en
Pro adds:
-
--continue— add more speech; merge into the same spec -
--review— missing requirements, constraints, acceptance criteria -
--out— speak one language, write the spec in another - Project vocab via
.saymd/vocab.txt - Longer recordings (default 120s, max 10 minutes)
Where saymd runs today
| Surface | Status |
|---|---|
| ChatGPT / Codex | Live in the OpenAI Plugins Directory — among ~1000 ChatGPT plugins, one of them is mine, and I'm genuinely excited |
| Gemini CLI | gemini extensions install https://github.com/kondasviktor/saymd |
| Grok Build | Available via DIY marketplace add from the README; official catalog PR pending |
| Claude Code + Cursor | Currently under review for publishing |
If you use ChatGPT, search saymd under Plugins in your account. Screenshots below of the live listing — Voice to Markdown prompts.
saymd live in the ChatGPT / Codex Plugins directory.
Install screen — starter @saymd prompts and the Install plugin button.
Slash commands in the plugin package include /saymd, /saymd-feature, /saymd-bug, /saymd-plan, plus Pro-oriented /saymd-continue, /saymd-review, /saymd-out.
Native loop still works everywhere: run the local CLI → @ .ai/prompt.md → offer to implement.
Outgrowing the 60-second Free cap?
Keep the MIT CLI. Add Pro when continue / review / cross-language / longer takes start to matter — €39/year.
Your turn
-
Try Free:
npx saymd setup && npx saymd doctor, then one short recording. - Star the repo: github.com/kondasviktor/saymd — stars help other vibe coders find a Free BYOK voice-to-Markdown CLI.
- Share with a friend who dictation-dumps into chat.
- Pro when continue / review / longer takes start to matter — €39/year.
- Feedback welcome — reply to the newsletter or open an issue. Optional tip jar: Buy Me a Coffee.
If you only remember one line: agents execute; saymd delivers the usable spec.
Quick start checklist
-
npx saymd setup— pick Gemini (gemini-3.5-transcribe) unless you already live on OpenAI keys. npx saymd doctornpx saymd --seconds 30 --template feature-
@.ai/prompt.mdin your agent - Optional: install the ChatGPT/Codex plugin or Gemini CLI extension
- Optional: Pro at saymd.app →
saymd activate <code>
Originally published on Vibe Coder's Life. I send a short Tuesday/Friday digest on AI coding tools and shipping with agents — subscribe.
Sources: saymd.app · GitHub (MIT Free CLI) · Gemini 3.5 Transcribe · ChatGPT / Codex plugin.
Disclosure: Wispr Flow link is a referral. saymd is my product (Free MIT CLI + optional Pro). Buy Me a Coffee is optional support — not required to use Free. Drafting/editing used AI assistance; the product, plugin listing, and CLI are my own shipping work.



Top comments (0)