Transcription
Local-first conversational AI video editor with a professional multi-track timeline, Agent Skills, MCP integration, and Remotion-powered rendering.
npx -y skills add 0xsline/OpenChatCut --skill transcriptionAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 22 days oldThe repository was created 22 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
What its author says it does
Copied from the file, not written here
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
4.4 KB, as published. Nobody here has run it
Transcription
For newly imported local/client-held media, use import_media to start transcription, then wait with track_progress.
Typical flow:
read_projectwithview: "assets"to get the video/audio asset ID and transcript status.- If this is a fresh client-held import, make sure it went through
import_media action=create_sessionplus the OpenChatCut media import helper. - Call
track_progresswithaction:"wait",target:"transcription", andassetIdsset to the asset ID or prefix. - Use
find_transcriptto search transcript text and confirm word timestamps. - Use
edit_captionsactionenableorread_captionsas needed once transcription is ready.
Example:
{
"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.
- Read the asset with
read_projectview: "assets"and note its duration when available. - Start counting elapsed wait time from the first
track_progressaction:"wait"or from the earliest reliable in-task timestamp where the agent observed transcription as pending/running. - If transcription reports an explicit failed, errored, or timed-out terminal state, retry immediately after confirming the asset is remote-ready and is video/audio.
- If transcription remains pending/running with no failure, treat it as stuck only after elapsed wait time exceeds
max(5 minutes, min(60 minutes, 2 × asset duration)). For example, wait at least 5 minutes for a 30-second clip, about 20 minutes for a 10-minute asset, and about 60 minutes for a 1-hour or longer asset. - If duration is unknown, wait at least 10 minutes across more than one
track_progresscall before treating it as stuck, unless the tool reports an explicit failure.
When stuck, use manage_transcript with action: "retry_transcription" and the asset id/prefix. This force-retries ASR for audio/video assets and starts a new transcription run; it does not wait for completion. After retrying, call track_progress with target:"transcription", action:"wait", and the returned or same asset id before reading transcripts or captions.
Example retry:
{
"action": "retry_transcription",
"asset": "13c1aa02cd"
}
If captions read back as empty, check the source-time range of the timeline clip. A transcript can be ready while the current visible clip starts before the first spoken word; add or trim a clip so the transcribed source words fall inside the timeline range, then extend/update the captions item duration if needed.
Use the raw tools when you need finer control:
track_progresswithtarget: "transcription"for status/wait.find_transcriptfor query-based transcript lookup.read_captionsandedit_captionsfor caption display edits.manage_transcriptactionfixfor source transcript repair.manage_transcriptactionretry_transcriptionto force-retry ASR after a transcription is stuck, timed out, or failed.clean_scriptfor mechanical timeline playback cleanup of fixed fillers and batch pauses after transcript-ready media is on the timeline.
When a transcript-ready request becomes an editorial talking-head edit, follow the public-safe talking-head workflow in shared talking-head-guide. In short: use clean_script only for mechanical cleanup, then use Script (read_script -> edit timeline.md -> apply_script) for semantic repeated-take, silence, filler, or coherence edits, and verify the resulting script rather than trusting tool success alone.