it created a dated directory, moved the recording into it and wrote the markdown alongside. nobody asked for an archive. the thing you want from a transcription is the text next to the recording, which is exactly what the file viewer's transcribe button did — POST with saveNextTo, sibling .md, done. overwrites a previous transcription of the same file on purpose: it is derived, running it again means you wanted it again, and a -2 beside it is only a second file to choose between. inline: true, so the file browser runs it and waits rather than making a background job out of a call that takes seconds. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Officer-Session: 656f5c85-e49a-4f1f-b9f3-042a04b4d043
59 lines
2.1 KiB
Markdown
59 lines
2.1 KiB
Markdown
---
|
|
name: Transcribe Audio File
|
|
description: Transcribe an audio file to text over your own whisper.cpp server, no model turn per file.
|
|
category: Media
|
|
version: 1
|
|
mode: script
|
|
inline: true
|
|
language: typescript
|
|
tags:
|
|
- audio
|
|
- transcription
|
|
skills:
|
|
- transcribe
|
|
inputs:
|
|
- name: file_path
|
|
description: Path to the audio file to transcribe. Auto-filled from the file browser.
|
|
required: true
|
|
trigger:
|
|
- type: file
|
|
extensions:
|
|
- mp3
|
|
- wav
|
|
- m4a
|
|
---
|
|
|
|
# Transcribe Audio File
|
|
|
|
Sends the audio file to the `transcribe` plugin's own route — `POST /api/transcribe/transcribe` — and
|
|
files the result next to the original.
|
|
|
|
A **script** task, deliberately: the plugin already does its own language detection and transcription
|
|
server-side, so there is nothing here worth a model turn for. Running one per audio file would be a
|
|
model call spent re-deriving what the plugin already returns.
|
|
|
|
## What it does
|
|
|
|
1. Read the audio file at `file_path` and the caller's spoken-language preferences
|
|
(`GET /api/user/settings`).
|
|
2. `POST` the file to `/api/transcribe/transcribe`. The plugin detects the language and transcribes
|
|
faithfully in it — see `plugins/transcribe/skills/transcribe/SKILL.md` for the contract.
|
|
3. Write the transcription beside the audio file, same name, `.md`. Nothing is moved and nothing is
|
|
created around it.
|
|
|
|
It overwrites a previous transcription of the same file, deliberately: a transcription is derived, and
|
|
running it again means you wanted it again.
|
|
|
|
## Before it runs
|
|
|
|
The plugin has to be configured — `PUT /api/transcribe/config` with a reachable whisper.cpp URL. If it
|
|
is not, this fails with that told plainly rather than a generic error.
|
|
|
|
## What it deliberately does not do
|
|
|
|
The worked example this was adapted from (an agentic task) ran its own detect-language pass before
|
|
transcribing, and generated a title from the transcription's contents. Both are dropped here: the
|
|
detect-then-transcribe step is already what the plugin's route does internally, so repeating it would be
|
|
redundant work against the same server. And a generated title needs a model turn, which is exactly what
|
|
this task exists to avoid spending per file.
|