Documentation
Transcription for OpenAI Codex with TextOps
Use TextOps to transcribe Hebrew and English audio and video directly from OpenAI Codex, then keep working with the transcript in the same session — summaries, documentation, subtitles, action items. TextOps is an independent product; it is not affiliated with or endorsed by OpenAI.
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, the format Codex loads from its skills directory. Install it with the skills CLI — it detects Codex (and any other agents on your machine) and installs into the right folders:
npx skills add https://github.com/textops/transcription-speech-to-text-hebrew --skill transcription-speech-to-text-hebrew -g -yOr clone the GitHub repository and copy the transcription-speech-to-text-hebrew folder into your agent's skills directory. Python 3.8+ is required; yt-dlp is installed automatically when needed.
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 from Codex
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 Codex
Codex has no background-monitor tool, so the skill uses its "other environments" path: after submitting the job it calls scripts/transcribe.py --job-id <id> --check-once every few seconds until the job is done (exit code 3 = still processing, 0 = done). Each check is a short HTTP call, and a job can always be resumed later with its job ID.
When the transcript is ready, ask for the next step in the same session:
- Summarize the transcript into meeting minutes with action items and owners.
- Turn the transcript into an SRT subtitle file.
- Write a README for this project based on the recorded walkthrough.
Because the transcript is a file on disk, Codex only reads the parts it needs, and only when you ask.
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.