# Transcription

Use when a video/audio task needs OpenChatCut transcription, captions, subtitles...

- Repository: https://github.com/0xsline/OpenChatCut (2832 stars)
- Category: Media
- License: AGPL-3.0
- Last updated: 2026-10-21
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add 0xsline/OpenChatCut --skill transcription -g -a claude-code -y`
Codex: `npx skills add 0xsline/OpenChatCut --skill transcription -g -a codex -y`
Cursor: `npx skills add 0xsline/OpenChatCut --skill transcription -g -a cursor -y`
Gemini CLI: `npx skills add 0xsline/OpenChatCut --skill transcription -g -a gemini-cli -y`

## Description

Use when a video/audio task needs OpenChatCut transcription, captions, subtitles, subtitle styling, transcript search, transcript readiness checks, or enabling captions, including local or attached videos where the user asks to add captions/subtitles, transcribe, create bilingual subtitles, clean talking-head speech, remove filler words, or trim pauses.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Transcription

For newly imported local/client-held media, use `import_media` to start transcription, then wait with `track_progress`.

Typical flow:

1. `read_project` with `view: "assets"` to get the video/audio asset ID and transcript status.
2. If this is a fresh client-held import, make sure it went through `import_media action=create_session` plus the OpenChatCut media import helper.
3. Call `track_progress` with `action:"wait"`, `target:"transcription"`, and `assetIds` set to the asset ID or prefix.
4. Use `find_transcript` to search transcript text and confirm word timestamps.
5. Use `edit_captions` action `enable` or `read_captions` as needed once transcription is ready.

Example:

```json
{
  "action": "wait",
  "target": "transcription",
  "assetIds": "13c1aa02cd"
}
```

Uploaded assets start ASR automatically on ingest, but nothing waits for it. Always use `track_progress` for readiness.

For local-only video assets with `local-only; original upload deferred` in `read_project`, transcription cannot run until the bytes are reachable by the backend. Import the source again via the `asset-import` skill (which uploads to S3) or `download_media` from a public URL; do not ask the user to relink it manually in the editor.

## Stuck Transcription And Retry

Do not declare transcription stuck from one non-terminal status. Base the decision on both asset length and the time the agent has actually waited in this task.

The rest: https://github.com/0xsline/OpenChatCut/blob/HEAD/src/agent/skills/transcription/SKILL.md
