My first ChatGPT / Codex plugin: saymd A developer released saymd, a free MIT-licensed CLI that converts microphone speech or audio files into structured Markdown prompts that coding agents can reference with an @ mention. The tool, now listed in the ChatGPT/Codex Plugins directory, uses a bring-your-own-key model with providers including Gemini 3.5 Transcribe, OpenAI's gpt-4o-transcribe, Deepgram nova-3, and ElevenLabs scribe_v2, and outputs prompts organized into Objective, Context, Instructions, and Constraints sections with feature, bug, and plan templates. It requires Node 20+ and ffmpeg on macOS or Linux, and the developer says a typical 60-second dictation costs well under a cent on the user's own API key. 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 https://vibecoderslife.com/post/ai-image-prompt-commands-chatgpt-gemini-grok newsletter, I teased a VCL project built on Gemini 3.5 Transcribe https://blog.google/innovation-and-ai/models-and-research/gemini-models/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 https://saymd.app/?utm source=devto&utm medium=article&utm campaign=saymd-voice-to-markdown-prompts — 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 https://saymd.app/?utm source=devto&utm medium=article&utm campaign=saymd-voice-to-markdown-prompts · Free MIT: GitHub https://github.com/kondasviktor/saymd . 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 https://wisprflow.ai/r?VIKTOR944 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. --file idea.m4a . .ai/prompt.md @ 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 . 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 . 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 . 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 https://saymd.app/?utm source=devto&utm medium=article&utm campaign=saymd-voice-to-markdown-prompts . A monthly option exists if you only want to try; yearly is the one I'd pick. saymd activate