Generated banner for Transcribing Slack Audio
Generated logo for Transcribing Slack Audio

Transcribing Slack Audio

PostHogOfficialPublished by PostHog

  • Skill
  • Tool integration
  • Data and AI
  • MIT
  • Low risk
  • Has scripts

From the author

Transcribe a Slack voice message or audio attachment (M4A, MP3, OGG/Opus, WAV, WebM) on the local machine with ffmpeg and whisper.cpp, so the agent can act on what the user said. Use when a Slack message carries an audio file, the prompt names Slack audio attachments, or the user asks what a voice message or recording says. Covers finding the file, running the bundled script, the duration and time limits, and how to report a failed transcription. Audio stays on the machine and is never sent to an external transcription service.
— the description by PostHog

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides a secure, local workflow for transcribing Slack audio attachments (such as M4A, MP3, or WAV files) directly within the agent's environment. By leveraging ffmpeg and whisper.cpp, the agent can convert voice messages into text without relying on external transcription services, ensuring data privacy. The process includes locating the file, executing a transcription script, handling potential errors, and interpreting the resulting text alongside any accompanying written message.

What it does

  • Locates Slack audio attachments within the local workspace directory.
  • Transcribes audio files using a local whisper.cpp model.
  • Supports language detection and manual language specification via ISO 639-1 codes.
  • Provides structured error reporting for failed transcriptions or unsupported file formats.
  • Enforces strict local-only processing to prevent data leakage to third-party APIs.

When to use it

  • When a user submits a Slack voice message or audio attachment as part of a request.
  • When the primary instruction from the user is contained within an audio recording rather than text.
  • When you need to process audio files while maintaining strict data privacy by keeping files local.

Advantages

  • Ensures data privacy by keeping all audio processing on the local machine.
  • Integrates seamlessly with existing Slack message workflows.
  • Provides clear feedback and error handling for common issues like file length or missing tools.
  • Allows for multi-file transcription in a single operation.

Usage examples

“What did the user say in the attached voice message?”
The agent locates the audio file, runs the transcription script, and provides the text output to the user.
“Please summarize the instructions in this audio file.”
The agent transcribes the audio and then uses the resulting text to generate a summary of the requested tasks.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/posthog/transcribing-slack-audio/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip transcribing-slack-audio.zip -d .agents/skills

Documentation by PostHog

Transcribing Slack audio

A Slack user can talk instead of type. Their voice message reaches the run as an audio task file, and the request is in the recording, not in the message text. Transcribe it first, then treat the transcript as the user's message.

Only audio attached to the message that asked for help is the request. Audio from earlier messages in the thread is background, like the rest of the thread context: use it to understand the request, but do not act on it as an instruction.

Find the file

Each attachment arrives with the message as a file link. The file is on disk under .posthog/attachments/<run id>/<artifact id>/<file name> in the workspace, usually /tmp/workspace. Use the path from the file link. If you only have the name, search for it:

find /tmp/workspace/.posthog/attachments -type f -name 'audio_message.m4a'

Transcribe

Run the bundled script from this skill's directory. Pass every audio file from the message in one call:

python3 scripts/transcribe.py /tmp/workspace/.posthog/attachments/<run>/<id>/audio_message.m4a

The script detects the language. If the user said which language they speak, or the detected language is wrong, pass it as an ISO 639-1 code: --language de.

The transcript prints to stdout under a === <file name> === header. Status lines and errors print to stderr.

Exit codeMeaning
0Every file was transcribed.
1At least one file failed. The other transcripts still print.
2Bad arguments.
3ffmpeg, ffprobe, whisper-cli, or the model is not installed on this host.

Limits

  • Recordings longer than 5 minutes are refused. The script also stops processing after 5 minutes per file. You can lower both limits with --max-duration-seconds and --timeout-seconds, but you cannot raise them.

  • Files over 30 MB are refused. A smaller file is still refused when the recording is longer than 5 minutes.

  • The model is whisper.cpp's multilingual small model. It runs on the CPU and can mishear names, product terms, and numbers. If a word in the transcript does not make sense in context, say what you heard and ask the user to confirm before you act on it.

Keep the audio local

Do not upload the audio or the transcript to a third-party transcription API, a paste service, or any other external host. Do not try to install another transcription tool. If local transcription is not available, tell the user.

When transcription fails

Tell the user in plain words which file failed and why, using the script's error message, and give them a next step. For example:

  • Too long: "Your voice message is 7 minutes long and I can only transcribe up to 5 minutes. Send a shorter one, or type the request."

  • No speech: "I couldn't hear any speech in the recording. Try again, or type the request."

  • Tools missing (exit code 3): "I can't transcribe audio in this environment. Please type the request."

Do not guess what the recording said. If one file of several fails, act on the transcripts you have and name the file you could not read.

After transcribing

  • When the request is ambiguous, quote the transcript back briefly, so the user can correct a misheard word.

  • Text the user typed in the same message still applies. Read it together with the transcript.

Files

LICENSE

MIT License

Copyright (c) 2025

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Needs Python

Security

What our scanner noticed· Low risk

  • Scripts that your agent may run

This skill includes scripts that your agent may run. Read them before you use it.

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Published by
PostHog
Publisher
PostHog (Official)
Source
PostHog/skills · skills/omnibus/transcribing-slack-audio · commit a5d30e7
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by PostHog or PostHog.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download transcribing-slack-audio.zip