v0.2.0
Transcript-first video understanding: infer from speech, verify only the uncertain moments, and keep the evidence as a reusable index.
Understanding and evidence
- Transcript collapse is detected and repaired.
va ingestcompares transcribed duration against VAD-detected speech and records the ratio astranscript_coverage; below 0.5 with at least 60 s of speech it retries and keeps the better attempt, stampingtranscript_repair. A tail retranscribe resumes from the stall point instead of redoing the whole file. - Uploader captions come first. When the source already carries an original-language caption track, it is adopted instead of re-transcribing, which turns a 43-minute ingest into seconds.
- ASR provenance.
asr_backendrecords which backend produced the adopted transcript, with a+<backend>(tail)suffix when a tail repair contributed. It isnullon the caption path, wheretranscript_sourceidentifies the origin. - Checkpoint field flags. Build a checkpoint from
--span,--status,--hypothesis,--confidenceand friends instead of JSON. Mixing the two input paths is rejected, including an explicitly empty value.
Editing and handoff
- A separate edit ledger. Cut decisions live in
sequences.jsonland never rewrite the fact ledger. Promotion requires evidence, and terminal promotion now requires coverage of the cut body — overlap alone is not coverage. - Exports:
srt,edl,xml,fcpxml,otio,md, with--idsargument order as cut order, revision pins carried into the handoff, and a Receipt sidecar proving artifact integrity. - Boundary evaluation (
va boundary-eval) plus a join-risk metric that flags jump-cut hazards.
Corpus and reading
va viewrenders a static corpus browser and workspace player — no server, click a scene record to jump the player to its timestamp.va index/va wikibuild a markdown-first vault with entity pages, a tag index, and a relation ledger.- Search fuses per-family ranking so understanding is not buried under raw transcript matches.
Runtime
- Experimental Windows support (workspace lock falls back to
msvcrt, exercised by a CI smoke job). pyannotemoved to thediarizeextra, so the default install stays light; an MLX ASR path is available on Apple silicon.
Interface language
Documentation is bilingual, but the running tool is not uniform: most --help text is English while diagnostics, the va brief/va status summaries, and the va view UI are Korean, and there is no locale switch. Timestamps and structural fields are language-neutral; prose is not — your NLE handoff speaks whatever language the ledger does, and the agent writes those fields in the language you ask in.
Install
git clone https://github.com/mupozg823/timecode-agent.git && cd timecode-agent
uv tool install --python 3.12 . # add '.[diarize]' for pyannote diarizationRequires ffmpeg/ffprobe on PATH, plus yt-dlp for URL ingest. See the README (한국어).