{"slug": "my-first-chatgpt-codex-plugin-saymd", "title": "My first ChatGPT / Codex plugin: saymd", "summary": "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.", "body_md": "Speak once, get a Markdown prompt any agent can `@`. Free MIT CLI — now live in the ChatGPT / Codex Plugins directory.\n\nBack 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/).\n\n**Here I am.**\n\nThis 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.\n\nMeet **[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).\n\nYou bring your own speech-to-text key (**BYOK**). saymd does not host your audio or sell transcription minutes.\n\n**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).\n\nI 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.\n\nThe bottleneck is not the agent. It's **typing**.\n\nDictation 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.\n\nI 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.\n\nThat's saymd.\n\n`--file idea.m4a`.`.ai/prompt.md``@` that file in your agent and let it execute.\nDefault headings (no template): **Objective · Context · Instructions · Constraints**.\n\n| `--template` | Shape | \n|---|---|\n| `feature` | Objective, Context, Instructions, Constraints, Acceptance criteria | \n| `bug` | Objective, Context, Steps to reproduce, Expected / Actual | \n| `plan` | Objective, Context, numbered Steps, Constraints, Open questions | \n\n*Demo from the GitHub repo — mic or `--file` → structured `.ai/prompt.md`.*\n\n```\nnpx saymd setup\nnpx saymd doctor\nnpx saymd\n```\n\nOr from an existing clip:\n\n```\nnpx saymd --file idea.m4a --template feature\n```\n\nUseful flags:\n\n`-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`\n`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.\n\n**Requirements:** Node 20+, ffmpeg, macOS or Linux (Windows: WSL or `--file` only).\n\nAll four are available on Free. You create the key with the provider, paste it in `saymd setup`, and pay that provider directly.\n\n| Provider | Exact model | Notes | \n|---|---|---|\n| **Gemini (recommended)** | `gemini-3.5-transcribe` | Speech-to-text **and** Markdown structuring | \n| OpenAI | `gpt-4o-transcribe` | Speech-to-text **and** Markdown structuring | \n| Deepgram | `nova-3` | STT only — also needs Gemini or OpenAI to structure | \n| ElevenLabs | `scribe_v2` | STT only — same as Deepgram | \n\nKeys 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).\n\n**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.\n\n**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).\n\nThe Free MIT CLI is the whole product for short recordings. Stay there if that's all you need.\n\nIf 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.\n\n```\nsaymd activate <activation-code>\nsaymd --continue .ai/prompt.md\nsaymd --review .ai/prompt.md\nsaymd --out en\n```\n\nPro adds:\n\n`--continue` — add more speech; merge into the same spec`--review` — missing requirements, constraints, acceptance criteria`--out` — speak one language, write the spec in another`.saymd/vocab.txt`\n| Surface | Status | \n|---|---|\n| **ChatGPT / Codex** | Live in the [OpenAI Plugins Directory](https://chatgpt.com/plugins/plugins_6aa7de5bf4f48191b8eb88fcf33e2f24) — among ~1000 ChatGPT plugins, one of them is mine, and I'm genuinely excited | \n| **Gemini CLI** | `gemini extensions install https://github.com/kondasviktor/saymd` | \n| **Grok Build** | Available via DIY marketplace add from the README; official catalog PR pending | \n| **Claude Code + Cursor** | Currently under review for publishing | \n\nIf you use ChatGPT, search **saymd** under Plugins in your account. Screenshots below of the live listing — Voice to Markdown prompts.\n\n*saymd live in the ChatGPT / Codex Plugins directory.*\n\n*Install screen — starter `@saymd` prompts and the Install plugin button.*\n\nSlash commands in the plugin package include `/saymd`, `/saymd-feature`, `/saymd-bug`, `/saymd-plan`, plus Pro-oriented `/saymd-continue`, `/saymd-review`, `/saymd-out`.\n\nNative loop still works everywhere: run the local CLI → `@` `.ai/prompt.md` → offer to implement.\n\n**Outgrowing the 60-second Free cap?**\n\nKeep the MIT CLI. Add Pro when continue / review / cross-language / longer takes start to matter — **€39/year**.\n\n`npx saymd setup && npx saymd doctor`, then one short recording.\nIf you only remember one line: **agents execute; saymd delivers the usable spec.**\n\n`npx saymd setup` — pick Gemini (`gemini-3.5-transcribe`) unless you already live on OpenAI keys.` npx saymd doctor``npx saymd --seconds 30 --template feature`` saymd activate <code>`\n*Originally published on [Vibe Coder's Life](https://vibecoderslife.com/post/saymd-voice-to-markdown-prompts?utm_source=devto&utm_medium=article&utm_campaign=saymd-voice-to-markdown-prompts). I send a short Tuesday/Friday digest on AI coding tools and shipping with agents — [subscribe](https://vibecoderslife.com/?utm_source=devto&utm_medium=article&utm_campaign=saymd-voice-to-markdown-prompts#subscribe-email).*\n\n*Sources: [saymd.app](https://saymd.app/?utm_source=devto&utm_medium=article&utm_campaign=saymd-voice-to-markdown-prompts) · [GitHub (MIT Free CLI)](https://github.com/kondasviktor/saymd) · [Gemini 3.5 Transcribe](https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-3-5-transcribe/) · [ChatGPT / Codex plugin](https://chatgpt.com/plugins/plugins_6aa7de5bf4f48191b8eb88fcf33e2f24).*\n\n*Disclosure: [Wispr Flow](https://wisprflow.ai/r?VIKTOR944) 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.*", "url": "https://wpnews.pro/news/my-first-chatgpt-codex-plugin-saymd", "canonical_source": "https://dev.to/kondasviktor/my-first-chatgpt-codex-plugin-saymd-1p9d", "published_at": "2026-09-15 16:32:58+00:00", "updated_at": "2026-09-15 16:50:37.833385+00:00", "lang": "en", "topics": ["ai-tools", "ai-agents", "developer-tools", "ai-products"], "entities": ["saymd", "ChatGPT", "Codex", "Gemini 3.5 Transcribe", "OpenAI", "Deepgram", "ElevenLabs", "GitHub"], "alternates": {"html": "https://wpnews.pro/news/my-first-chatgpt-codex-plugin-saymd", "markdown": "https://wpnews.pro/news/my-first-chatgpt-codex-plugin-saymd.md", "text": "https://wpnews.pro/news/my-first-chatgpt-codex-plugin-saymd.txt", "jsonld": "https://wpnews.pro/news/my-first-chatgpt-codex-plugin-saymd.jsonld"}}