brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
elevenlabs-scribeUse ElevenLabs Scribe for speech-to-text production workflows: transcribing audio or video files, diarization and speaker/channel handling, word/character timestamps, captions/subtitles, keyterm prompting, entity detection/redaction, webhooks, realtime STT boundaries, pricing/limits, privacy/retention, consent, artifact custody, and QA for podcasts, intervi…
Independent GitHub snapshot · Automated classification · Original documentation governs
Use this skill when a media-production task needs ElevenLabs Speech to Text (Scribe) for transcripts, caption timing, speaker-labeled interview logs, podcast edit prep, accessibility subtitles, localization handoff, call/interview analysis, or transcript cleanup. Do not use it as a text-to-speech, dubbing, voice cloning, or translation skill; Scribe produces text, timing, and metadata from existing audio/video. Use dubbing or TTS skills only after the transcript is verified and the user has rights to transform the source.
Volatile facts below were verified from official ElevenLabs documentation on 2026-07-10. If building against the live API, re-check model names, limits, pricing, residency endpoints, and retention options before irreversible production work.
scribe_v2 for batch/file transcription. ElevenLabs documents Scribe v2 as supporting 90+ languages, word-level timestamps, speaker diarization up to 32 speakers, dynamic audio tagging, keyterm prompting, entity detection, and smart language detection.scribe_v2_realtime only for live streaming use cases such as agents, live meetings, or interactive monitoring. It is a WebSocket STT service, not the normal path for post-production captions from a finished file.scribe_v1 as retired/unsafe for new work. The API schema still listed scribe_v1 as an allowed value when checked, but the official changelog announced Scribe v1 removal on 2026-07-09. Prefer scribe_v2 and flag any Scribe v1 dependency as a migration issue.Batch endpoint: POST https://api.elevenlabs.io/v1/speech-to-text with multipart form data.
Inputs:
file upload and source_url; cloud_storage_url is deprecated in favor of source_url.Core response fields:
language_code, language_probability, text, and words.words[] entries can include text, start, end, type, speaker_id, characters, and logprob depending on requested options.word, spacing, and audio_event. audio_event represents non-speech sounds such as laughter or applause when event tagging is enabled.Useful parameters:
model_id="scribe_v2".language_code: ISO-639-1 or ISO-639-3; provide it when the language is known and stable, otherwise allow automatic detection.timestamps_granularity: word by default; character returns character-level timing per word; none reduces timing detail and should not be used for captions, edit decision lists, or multichannel combined output.tag_audio_events: defaults to true; use it for podcasts, documentary, accessibility, and edit notes where laughter, applause, footsteps, or other events matter. Disable it only when the downstream deliverable must be pure spoken text.diarize: false by default; set true for mixed-mono multi-speaker recordings when speaker labels are useful.num_speakers: optional 1-32 maximum speaker hint. Use it when the speaker count is known; omit when uncertain and tune with QA.diarization_threshold: optional 0.1-0.4, only when diarize=true and num_speakers is not set. Higher threshold tends to merge speakers; lower threshold tends to split speakers. Default is model-chosen, usually around 0.22.keyterms: bias transcription toward product names, names, jargon, brands, URLs, acronyms, and proper nouns. Batch Scribe v2 allows up to 1000 keyterms, each under 50 characters and up to 5 words after normalization; realtime allows up to 50 keyterms, each under 20 characters. Keyterm prompting adds cost.no_verbatim: Scribe v2 option that removes filler words, false starts, disfluencies, and non-speech sounds for cleaner subtitles/summaries. Do not enable when legal, research, investigative, qualitative interview, or documentary integrity requires verbatim speech.temperature: usually omit or keep 0/near 0 for production; higher values can make results less deterministic and are rarely desirable for transcription.seed: best-effort deterministic sampling, not guaranteed.Choose speaker strategy before sending the file:
Multichannel mode:
use_multi_channel=true, diarize=false, and timestamps_granularity=word or character.speaker_0, speaker_1, etc.num_speakers; channel count determines speaker count.multichannel_output_style="separate" returns one transcript per channel under transcripts.multichannel_output_style="combined" returns one top-level transcript with words merged and sorted by start time; each word carries channel_index. Combined output requires timestamps and does not support webhook delivery, entity detection, or redaction.Diarization mode:
diarize=true when speaker turns matter and channels are not isolated.num_speakers when known (for example, host + guest = 2). If speaker count is unknown, leave num_speakers null and inspect clustering.diarization_threshold only after a first pass shows systematic over-splitting or merging; do not tune blindly.speaker_0 means "cluster 0," not a confirmed person. Human-map labels to names after listening.Speaker library and roles:
use_speaker_library to match known speakers in a workspace speaker library during diarization. Use only when the workspace has deliberately registered speakers and the user has rights/consent to identify them.detect_speaker_roles for agent/customer role labels. It requires diarize=true, cannot be used with multichannel mode, and adds cost. Use only for call-center style audio, not normal podcasts or documentaries.Use additional_formats when the API client supports it, or generate captions from the JSON response if the SDK/tool layer does not expose it. The official API schema lists export option variants including docx, html, pdf, segmented_json, srt, and txt; the ElevenLabs product UI documents subtitle exports as SRT and VTT, and transcript exports as plain text, JSON, HTML, SRT, and VTT. Confirm the exact API variant supported by the client before promising VTT via API.
For caption workflows:
timestamps_granularity=word.no_verbatim=true only when the deliverable is subtitles/summaries and the raw transcript is separately preserved.For edit prep:
speaker_id, start, end, text, and confidence/QA notes.For small/interactive jobs, use synchronous batch transcription and wait for the JSON response.
For long files, high volume, or unattended processing:
webhook=true; the request returns early with a request identifier and the transcript arrives later via webhook.webhook_id to target a specific configured webhook when multiple webhooks exist.webhook_metadata for project IDs, source asset IDs, expected duration, hash, editor job ID, and custody references. Keep it shallow: official docs specify max depth 2 and max size 16 KB.Scribe v2 supports entity detection with exact positions/timestamps and categories such as pii, phi, pci, other, and offensive_language, plus many individual labels (names, DOBs, credit cards, SSNs, health conditions, medications, locations, emails, phone numbers, URLs, etc.). It adds cost.
Use entity detection when:
Use entity redaction when the transcript itself must be safe to share. The API reference requires redaction targets to be a subset of entity_detection; redaction suppresses the entities field. Redaction can be formatted as {REDACTED}, {ENTITY_TYPE}, or enumerated entity markers.
Do not rely solely on automated redaction for regulated or public release. Use it as a first pass, then human-review the original audio and the transcript.
Official API pricing verified 2026-07-10:
Preflight costs with:
billable_audio_hours = duration_hours * max(1, channel_count_when_multichannel)
Then add enabled-feature surcharges. If docs disagree, show the user the conservative estimate and cite the verification date.
Do not upload source recordings until the user has confirmed rights, consent, and privacy posture appropriate to the material.
Official retention/security facts verified 2026-07-10:
enable_logging=false; when used on STT, request audio input and text output are not logged/stored long-term, but support/debugging is limited and transcript storage features are unavailable.api.us.elevenlabs.io can pin API traffic to U.S. servers for latency/routing needs. Use the workspace's configured environment endpoint when required by contract; do not assume the public global endpoint satisfies residency.Artifact custody rules:
raw, corrected, caption, and redacted states distinct.For transcription, the key rights issue is usually recording and processing human speech, not voice synthesis. Before transcribing:
Audit the source.
Choose mode.
diarize=false.diarize=true, optional num_speakers.use_multi_channel=true, diarize=false.scribe_v2_realtime, WebSocket workflow.Prepare audio.
pcm_s16le_16, ensure 16-bit PCM, 16 kHz, mono, little-endian; use it only when low latency matters and the ingest tool can meet the format exactly.Add vocabulary and privacy options.
keyterms from names, brands, product terms, acronyms, domain terms, episode titles, and non-English proper nouns.entity_detection/entity_redaction only when needed; account for cost and output-shape effects.enable_logging=false only when the account is enterprise-enabled for Zero Retention Mode and the loss of request history/transcript storage is acceptable.Transcribe and preserve raw artifacts.
QA before using output.
no_verbatim=true can improve subtitle readability but can erase hesitation, emotion, and evidence that matters in documentary, research, legal, or editorial contexts.no_verbatim=true only if the user wants readable captions, then human-check cue timing against the final cut.Production intent: create a searchable transcript, host/guest turn list, and candidate clips from a 72-minute podcast where speakers are mixed into one track.
Workflow:
{
"model_id": "scribe_v2",
"diarize": true,
"num_speakers": 2,
"timestamps_granularity": "word",
"tag_audio_events": true,
"keyterms": ["guest name", "company name", "product name", "technical acronym"],
"no_verbatim": false
}
Expected result:
speaker_id clusters.Failure modes:
Variations:
Production intent: create a safe review transcript from a customer-support call where agent and customer are on separate channels and may mention account data.
Workflow:
{
"model_id": "scribe_v2",
"use_multi_channel": true,
"diarize": false,
"multichannel_output_style": "separate",
"timestamps_granularity": "word",
"entity_detection": ["pii", "pci"],
"entity_redaction": ["pii", "pci"],
"entity_redaction_mode": "enumerated_entity_type",
"tag_audio_events": false
}
Expected result:
speaker_0 and speaker_1.entities field when redaction is enabled.Failure modes:
Variations:
detect_speaker_roles=true with diarize=true, accounting for cost and QA.Production intent: generate first-pass captions for a 90-second final MP4 and hand them to an editor.
Workflow:
{
"model_id": "scribe_v2",
"timestamps_granularity": "word",
"language_code": "en",
"tag_audio_events": true,
"no_verbatim": true,
"additional_formats": [
{
"format": "srt",
"max_segment_duration_s": 4,
"max_characters_per_line": 42
}
],
"keyterms": ["brand name", "feature name", "speaker name"]
}
Expected result:
additional_formats.Failure modes:
additional_formats; generate SRT from JSON if needed.no_verbatim=true may remove intentional repetitions or brand-style speech.Variations:
no_verbatim if legal approval requires exact spoken words.