Audio & video
Blog Audio Generate
blog-audio-generate
Takes only a post slug, reads the spoken script produced by blog-audio-script, waits for explicit script approval so small wording tweaks don't burn TTS credits, then calls ElevenLabs text-to-speech with conversational voice settings. The MP3 lands in public/audio/posts/ for static streaming and the post's hasAudio frontmatter flips on automatically, so the audio player appears on the post without any manual wiring.
What it does
- Accepts only a post slug - paths and storage are managed automatically
- Requires explicit user approval of the spoken script before calling TTS
- Checks the script was written for spoken delivery before calling TTS
- Calls ElevenLabs with conversational voice settings that honour break tags
- Saves the MP3 to public/audio/posts/{slug}.mp3
- Sets hasAudio: true on the post after success
Output example
Narration generated for the post If You're Selling AI as a Cost Cutter, You're Selling It Wrong.
Example prompt
“/blog-audio-generate Generate audio for the blog post ai-jargon.”
Install
npx dot-skills add levi-putna/twistedbrackets.com/blog-audio-generateInstalled with dot-skills, which keeps one .skills/ folder as the source of truth and links it into Claude Code, Cursor, and other agents. Learn more about dot-skills.
Needs ELEVENLABS_API_KEY and ELEVENLABS_VOICE_ID. Run npx dot-skills doctor after installing to check your environment.