Awesome-openclaw-skills assemblyai-transcribe
Transcribe audio/video with AssemblyAI (local upload or URL), plus subtitles + paragraph/sentence exports.
install
source · Clone the upstream repo
git clone https://github.com/sundial-org/awesome-openclaw-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sundial-org/awesome-openclaw-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/assemblyai-transcribe" ~/.claude/skills/sundial-org-awesome-openclaw-skills-assemblyai-transcribe && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sundial-org/awesome-openclaw-skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/assemblyai-transcribe" ~/.openclaw/skills/sundial-org-awesome-openclaw-skills-assemblyai-transcribe && rm -rf "$T"
manifest:
skills/assemblyai-transcribe/SKILL.mdsource content
AssemblyAI transcription + exports
Use this skill when you need to transcribe audio/video or export readable formats (subtitles, paragraphs, sentences) using AssemblyAI.
The helper script in this skill implements the basic REST flow:
- (Local files) Upload via
.POST /v2/upload - Create a transcript job via
.POST /v2/transcript - Poll
until the transcriptGET /v2/transcript/:id
isstatus
(orcompleted
).error
Setup
This skill requires:
on PATH (Node.js 18+ recommended; script uses built-in fetch)node
in the environmentASSEMBLYAI_API_KEY
Recommended Clawdbot config (
~/.clawdbot/clawdbot.json):
{ skills: { entries: { // This skill declares metadata.clawdbot.skillKey = "assemblyai" assemblyai: { enabled: true, // Because this skill declares primaryEnv = ASSEMBLYAI_API_KEY, // you can use apiKey as a convenience: apiKey: "YOUR_ASSEMBLYAI_KEY", env: { ASSEMBLYAI_API_KEY: "YOUR_ASSEMBLYAI_KEY", // Optional: use EU async endpoint // ASSEMBLYAI_BASE_URL: "https://api.eu.assemblyai.com" } } } } }
Usage
Run these commands via the Exec tool.
Transcribe (local file or public URL)
Print transcript text to stdout:
node {baseDir}/assemblyai.mjs transcribe "./path/to/audio.mp3" node {baseDir}/assemblyai.mjs transcribe "https://example.com/audio.mp3"
Write transcript to a file (recommended for long audio):
node {baseDir}/assemblyai.mjs transcribe "./path/to/audio.mp3" --out ./transcript.txt
Pass advanced transcription options
Any fields supported by
POST /v2/transcript can be passed via --config:
node {baseDir}/assemblyai.mjs transcribe "./path/to/audio.mp3" \ --config '{"speaker_labels":true,"summarization":true,"summary_model":"informative","summary_type":"bullets"}' \ --export json \ --out ./transcript.json
Export subtitles (SRT/VTT)
Transcribe and immediately export subtitles:
node {baseDir}/assemblyai.mjs transcribe "./path/to/video.mp4" --export srt --out ./subtitles.srt node {baseDir}/assemblyai.mjs transcribe "./path/to/video.mp4" --export vtt --out ./subtitles.vtt
Or export subtitles from an existing transcript ID:
node {baseDir}/assemblyai.mjs subtitles <transcript_id> srt --out ./subtitles.srt
Export paragraphs / sentences
node {baseDir}/assemblyai.mjs paragraphs <transcript_id> --out ./paragraphs.txt node {baseDir}/assemblyai.mjs sentences <transcript_id> --out ./sentences.txt
Fetch an existing transcript
node {baseDir}/assemblyai.mjs get <transcript_id> --format json node {baseDir}/assemblyai.mjs get <transcript_id> --wait --format text
Guidance
- Prefer
when output might be large.--out <file> - Keep API keys out of logs and chat; rely on env injection.
- If a user asks for EU processing/data residency, set
to the EU host.ASSEMBLYAI_BASE_URL - AssemblyAI requires that uploads and the subsequent transcript request use an API key from the same AssemblyAI project (otherwise you can get a 403 / 'Cannot access uploaded file').