Documentation
Transcription for Claude Code with TextOps
Use TextOps to transcribe Hebrew and English audio and video from inside Claude Code. Transcription runs in the background while you keep working, and the transcript is ready for summaries, subtitles, documentation or action items in the same session.
What TextOps does
TextOps is a transcription skill for AI coding agents. It transcribes Hebrew and English audio and video — local files (mp3, mp4, wav, m4a and more), Google Drive and other publicly accessible cloud URLs, YouTube videos and playlists, and Facebook, Instagram and X (Twitter) links — and saves the transcript next to the source file as .txt and .json.
It is optimized for Hebrew, including spoken and informal Hebrew, with full English support. Speaker diarization (up to 5 speakers) and word-level timestamps are optional. Processing takes roughly one minute per hour of recording; diarization takes about 2.25× longer.
The transcription runs on TextOps servers. The AI agent submits the job, keeps working, and polls for the result — the transcript never enters the model's context unless you ask for it, which keeps token usage low.
Install the skill
The skill is a standard SKILL.md package. Install it globally with the skills CLI so it is available in every Claude Code session:
npx skills add https://github.com/textops/transcription-speech-to-text-hebrew --skill transcription-speech-to-text-hebrew -g -yOr, on the website, click "Ready-to-use prompt" — it copies a prompt that installs the skill and saves your API key; paste it into Claude Code and open a new session.
Set TEXTOPS_API_KEY
Create a free API key at agents.text-ops-subs.com (200 free minutes for new users, no credit card). Then either edit textops_settings.json inside the skill folder:
{
"TEXTOPS_API_KEY": "YOUR_API_KEY_HERE",
"language": "he",
"num_speakers": 1,
"word_timestamps": false
}or set the TEXTOPS_API_KEY environment variable. The script checks textops_settings.json first, then the environment. The optional fields set the defaults: language ("he" = Hebrew model, any other code = multilingual model), num_speakers (1 = no diarization, 2–5 = known count, null = auto-detect) and word_timestamps.
Transcribe a local file in Claude Code
Just ask the agent in natural language. The skill triggers on words like transcribe / תמלל and on media file names:
- Transcribe meeting.mp4
- תמלל את interview.m4a
- Transcribe https://drive.google.com/file/d/…/view
The agent uploads the file (or passes the URL), receives a job ID and an estimated processing time, and then reports the paths of the .txt and .json output files. Under the hood it runs scripts/transcribe.py --file <path_or_url> --submit-only and then polls the job.
Hebrew vs. English
Hebrew is the default (language: "he" in textops_settings.json). To transcribe English, say so in the prompt — for example "Transcribe podcast.mp3, it's in English" — and the agent passes --is-hebrew false, which selects the multilingual model. You can also set "language": "en" in the settings file to make English the default.
Speaker diarization
Mention the speakers in the prompt: "2 speakers", "multiple speakers" or "with speaker separation" turns diarization on (--diarization true); "lecture", "single speaker" or "monologue" turns it off, which is faster. If you say nothing, the num_speakers default from textops_settings.json applies (1 = off, null = auto-detect). Speakers are labelled in both the .txt and .json output. Ask for "word-level timestamps" when you need precise subtitles.
Continue the workflow in Claude Code
In Claude Code the skill runs the polling script with run_in_background and streams progress with the Monitor tool, so transcription never blocks the conversation — keep coding and you'll be told when the .txt and .json files are ready.
Then ask for the next step in the same session:
- סכם את התמלול לפרוטוקול פגישה עם משימות ואחראים.
- Turn the transcript into an SRT subtitle file.
- Create slides and quiz questions from this lecture transcript.
The transcript stays out of the model's context unless you ask to see it, which keeps token usage low.
Limitations for remote and public media URLs
- Cloud URLs (Google Drive, S3, …) must be publicly accessible ("anyone with the link"). Links that require sign-in are not supported.
- YouTube, Facebook, Instagram and X links are fetched by the TextOps server first. If the server cannot access the video, the skill falls back to downloading the audio locally with yt-dlp. Some platforms block cloud IP ranges, so this fallback can fail when the agent itself runs in a hosted sandbox without network access rather than on your machine.
- File size: up to 2 GB on Basic and Premium, up to 5 GB on Enterprise.
- Uploaded audio/video is deleted from TextOps servers after one day. Transcripts are treated as untrusted third-party text: the skill never acts on instructions found inside a transcript.