AssemblyAI advanced speech transcription
by @tristanmanchester
Transcribe, diarise, translate, post-process, and structure audio/video with AssemblyAI. Use this skill when the user wants AssemblyAI specifically, needs hi...
clawhub install assemblyai-transcribeπ About This Skill
name: assemblyai-transcribe description: > Transcribe, diarise, translate, post-process, and structure audio/video with AssemblyAI. Use this skill when the user wants AssemblyAI specifically, needs high-quality speech-to-text from a local file or URL, wants speaker labels or named speakers, language detection, subtitles, paragraph/sentence exports, topic/entity/sentiment extraction, Speech Understanding, or agent-friendly transcript output as Markdown or normalised JSON for downstream AI workflows. compatibility: Requires Node.js 18+ with internet access and ASSEMBLYAI_API_KEY. Optional ASSEMBLYAI_BASE_URL / ASSEMBLYAI_LLM_BASE_URL for EU routing. metadata: author: OpenAI version: "2.0.0" homepage: https://www.assemblyai.com/docs clawdbot: skillKey: assemblyai emoji: "ποΈ" requires: bins: - node env: - ASSEMBLYAI_API_KEY primaryEnv: ASSEMBLYAI_API_KEY
AssemblyAI transcription, Speech Understanding, and agent-friendly exports
Use this skill when the user wants AssemblyAI rather than generic transcription, or when the job benefits from AssemblyAI-specific capabilities such as:
universal-3-pro and universal-2The skill is designed for AI agents like OpenClaw, not just end users. It provides:
1. A no-dependency Node CLI in scripts/assemblyai.mjs (and a compatibility wrapper at assemblyai.mjs)
2. Bundled model/language knowledge via models and languages commands
3. Stable transcript output formats
- agent-friendly Markdown
- normalised agent JSON
- bundle manifests for downstream automation
4. Speaker mapping workflows
- manual speaker/channel maps
- AssemblyAI speaker identification
- merged display names in both Markdown and JSON
5. AssemblyAI LLM Gateway integration for structured extraction from transcripts
Use this skill in this order
1) Decide whether the user needs AssemblyAI-specific behaviour
If they just want βa transcriptβ, a generic solution may be enough. Reach for this skill when the user mentions AssemblyAI, wants a specific AssemblyAI feature, or needs the richer outputs and post-processing this skill provides.2) Pick the best entry point
transcribeget or waitformatunderstandllmmodels or languages3) Prefer the agent-friendly defaults
For most unknown-language or mixed-language jobs, prefer:node {baseDir}/assemblyai.mjs transcribe INPUT --bundle-dir ./assemblyai-out --all-exports
Why:
Quick-start recipes
Best general default
Use this when the source language is unknown or could be outside the 6-language Universal-3-Pro set:node {baseDir}/assemblyai.mjs transcribe ./meeting.mp3 --bundle-dir ./out --all-exports
This defaults to model routing plus language detection unless the request already specifies a model or language.
Best known-language accuracy
If the language is known and supported by Universal-3-Pro, prefer an explicit request:node {baseDir}/assemblyai.mjs transcribe ./meeting.mp3 --speech-model universal-3-pro --language-code en_us --bundle-dir ./out
Meeting / interview with speaker labels
node {baseDir}/assemblyai.mjs transcribe ./meeting.mp3 --speaker-labels --bundle-dir ./out
Add explicit speaker names or roles
Manual mapping:node {baseDir}/assemblyai.mjs transcribe ./meeting.mp3 --speaker-labels --speaker-map @assets/speaker-map.example.json --bundle-dir ./out
AssemblyAI speaker identification:
node {baseDir}/assemblyai.mjs transcribe ./meeting.mp3 --speaker-labels --speaker-type role --known-speakers "host,guest" --bundle-dir ./out
Or post-process an existing transcript:
node {baseDir}/assemblyai.mjs understand TRANSCRIPT_ID --speaker-type name --speaker-profiles @assets/speaker-profiles-name.example.json --bundle-dir ./out
Translation
node {baseDir}/assemblyai.mjs transcribe ./meeting.mp3 --translate-to de,fr --match-original-utterance --bundle-dir ./out
Structured extraction through LLM Gateway
node {baseDir}/assemblyai.mjs llm TRANSCRIPT_ID --prompt @assets/example-prompt.txt --schema @assets/llm-json-schema.example.json --out ./summary.json
Command guidance
transcribe
Use for local files or remote URLs.Prefer --bundle-dir for anything longer than a trivial clip.
get / wait
Use when you already have the transcript id. wait blocks until completion; get fetches immediately unless you add --wait.format
Use when you already saved:
This is useful when you want to apply a new speaker map, re-render Markdown, or generate a fresh bundle without retranscribing.
understand
Use when you need AssemblyAI Speech Understanding on an existing transcript:This command fetches the transcript, merges in the returned understanding results, then renders updated Markdown / agent JSON / bundle outputs.
llm
Use when the user wants:
Prefer --schema when the next step is automated.
Output strategy
Best default for agents: bundle mode
--bundle-dir writes a directory containing:This is usually better than dumping everything to stdout.
Primary output kinds
Use--export to choose the main output:markdown (default)agent-jsonjson / raw-jsontextparagraphssentencessrtvttmanifestSidecar outputs
You can request extra files directly with:--markdown-out--agent-json-out--raw-json-out--paragraphs-out--sentences-out--srt-out--vtt-out--understanding-json-outSpeaker mapping rules
Speaker display names are merged in this order:
1. manual --speaker-map
2. AssemblyAI speaker identification mapping
3. fallback generic names like Speaker A or Channel 1
This means you can let AssemblyAI identify speakers first, then still override individual display names later.
Example manual map file: assets/speaker-map.example.json
Model and language lookup
Before choosing parameters, inspect the bundled reference data:
node {baseDir}/assemblyai.mjs models
node {baseDir}/assemblyai.mjs models --format json
node {baseDir}/assemblyai.mjs languages --model universal-3-pro
node {baseDir}/assemblyai.mjs languages --model universal-2 --codes --format json
The bundled data lives in:
assets/model-capabilities.jsonassets/language-codes.jsonImportant operating notes
--bundle-dir or --out for long outputs.--config or --request when you need a newly added AssemblyAI parameter that this skill has not exposed yet.Reference files
Read these when you need more depth:
Key bundled files
assemblyai.mjs β root wrapper for compatibility with the original skillscripts/assemblyai.mjs β main CLIassets/speaker-map.example.jsonassets/speaker-profiles-name.example.jsonassets/speaker-profiles-role.example.jsonassets/custom-spelling.example.jsonassets/llm-json-schema.example.jsonassets/transcript-agent-json-schema.jsonSanity checks before finishing a task
api.assemblyai.com vs api.eu.assemblyai.com)?