with one click
generate-audio
Generate TTS audio from speaker_notes and upload to Vercel Blob
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Generate TTS audio from speaker_notes and upload to Vercel Blob
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Process raw sources into wiki pages — creates summaries, entities, and concept pages
Check Sentry errors, Axiom logs, and other monitoring sources for bugs, then fix them with regression tests
Recursively crawl a documentation site, converting each page to markdown
Fetch Google Docs and convert to markdown
Generate AI illustrations for course cards and upload to Vercel Blob
Convert PDF files to markdown
| name | generate-audio |
| description | Generate TTS audio from speaker_notes and upload to Vercel Blob |
| user-invocable | false |
| allowed-tools | Read, Write, Edit, Glob, Grep, Bash |
Generate TTS narration for all page cards with speaker_notes in a course.
/generate-audio <course-slug>
Example: /generate-audio claude-architect
.env to load OPENAI_API_KEY and BLOB_READ_WRITE_TOKEN.courses/<slug>/cards/ for page cards with speaker_notes.courses/<slug>/.enrichment-hashes.json if it exists to check for already-generated audio.tts-1-hd model, voice alloy) with the speaker_notes text.
b. Upload the MP3 to Vercel Blob at path courses/<slug>/audio/<card-id>.mp3.
c. Update the card's frontmatter to add audio: "<blob-url>".
d. Update .enrichment-hashes.json with the MD5 hash of the speaker_notes.alloy).npx tsx scripts/validate-media.ts courses/<slug>
curl https://api.openai.com/v1/audio/speech \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "tts-1-hd",
"input": "<speaker_notes text>",
"voice": "alloy",
"response_format": "mp3"
}' \
--output audio.mp3
curl -X PUT "https://blob.vercel-storage.com/courses/<slug>/audio/<card-id>.mp3" \
-H "Authorization: Bearer $BLOB_READ_WRITE_TOKEN" \
-H "Content-Type: audio/mpeg" \
-H "x-api-version: 7" \
--data-binary @audio.mp3
.enrichment-hashes.json format:
{
"01-welcome.md": { "audio_hash": "a1b2c3d4" },
"02-agentic-loop.md": { "audio_hash": "e5f6g7h8" }
}
Hash is first 8 chars of MD5 of the speaker_notes content. Skip regeneration when hash matches.