# Video Transcript

> Turn local audio/video, direct media URLs, or supported public video pages into original-language Markdown transcripts. Use for recordings, lectures, interviews, and podcast transcription, including Chinese/English mixed speech and offline requests. Does not analyze video frames or provide live dictation.

- Skill: `buyoubai/video-transcript` (Agent Skill, multi-file: 10 files)
- Install (CLI): `npx skillmds@latest add buyoubai/video-transcript`
- Raw SKILL.md: https://api.skillmd.com/api/skills/buyoubai/video-transcript/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- License: MIT
- Author: BuYoubai (https://skillmd.com/u/buyoubai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/buyoubai/video-transcript

---


# Video Transcript

Produce a faithful transcript, with raw text retained for comparison. Run the
bundled `scripts/transcribe.py`; resolve its path relative to this Skill's
directory. Paths below assume the current directory is the Skill root.

## Choose the input and engine

1. If a complete, readable transcript already exists, use it for interpretation
   instead of retranscribing. `--from-text` formats existing UTF-8 plain text.
   SRT/VTT need cue parsing first; they are not accepted as plain transcript text.
2. Prefer local ASR unless the user has chosen cloud processing or an established
   preference authorizes it. `--engine groq` uploads audio to Groq; never silently
   fall back from local processing to a cloud service.
3. For a strict “offline / nothing leaves my machine” request, use `--offline`
   with existing local files, executable, and model. Do not read the resulting
   transcript into a remote agent context; report file paths and process status.
   Local transcription without this strict constraint may be followed by normal
   agent review.
4. For web inputs, use `references/sources.md`. For missing dependencies, use
   `references/setup.md`. The downloader does not bypass access controls.

## Run

```bash
# Local media. Set WHISPER_CPP_BIN and WHISPER_MODEL during setup.
python scripts/transcribe.py recording.mp4 --output transcripts/session-01

# Explicitly authorized cloud transcription; key comes from GROQ_API_KEY.
python scripts/transcribe.py recording.mp4 --engine groq --output transcripts/session-02

# Strict offline mode.
python scripts/transcribe.py recording.wav --offline --output transcripts/session-03

# Existing text: no media processing or API calls.
python scripts/transcribe.py raw.txt --from-text --output transcripts/session-04
```

For local mixed speech, use the known dominant language as a hint (for example
`--language zh` for a Chinese course with English phrases) and check that both
languages survive. In a synthetic test, local `auto` rendered Chinese speech in
English; explicit `zh` retained both. If the language is unknown, start with
`auto` and inspect a short sample before a long run. Groq auto-detects per chunk.
Language selection is a recognition hint, not a request to translate.
Inspect `--help` for explicit model and tool
paths. The output directory must be new; source files remain untouched.

## Review and deliver

- A zero exit code plus a nonempty `transcript.md` means the pipeline completed,
  not that every word is correct. Read `metadata.json` for warnings.
- Except in strict offline mode, compare beginning, middle, ending, names, and
  numbers with `raw.txt` and available source evidence. Inspect audio around
  uncertain words when tools allow. Do not invent inaudible words.
- Formatting preserves all nonblank lines by default. Repeated-line removal
  (`--deduplicate`) and simplified Chinese conversion (`--simplified`) require
  a relevant user request. Raw text always survives for comparison.
- Keep transcription separate from summaries. Correct terms only with evidence;
  describe remaining uncertainty. Do not label a merely generated draft verified.
- Deliver the transcript bundle, name the engine, and state any material limits.
  A failed chunk aborts the job; do not present partial text as a complete result.

The bundle contains `transcript.md`, `raw.txt`, `metadata.json`, and local-engine
`raw.srt` when produced. Segmentation boundaries may cut words in cloud mode;
see `references/sources.md` for current limits.

