Subtitle-first video transcription with SRT export, cancellable job controls, and a faster-whisper large-v3 fallback when subtitles are unavailable.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:zeshuochen/dsh-watch-video
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
中文文档 | Full Chinese documentation
Subtitle-first video transcription for DeepSeek Harness. It uses subtitles when available, falls back to faster-whisper large-v3, and writes transcript, SRT, summary, and metadata artifacts without retaining the original video.
Features
- HTTP(S) video input through
yt-dlp. - Subtitle-first processing with Whisper fallback.
- SRT, text, JSON, Markdown summary, and metadata artifacts.
- Cancellable jobs with status and list tools.
- Windows, Linux, and macOS support with process-tree cleanup.
- No external LLM calls and no original-video retention.
- Stale running jobs become
interruptedafter restart; the defaultstaleJobAfterMsis 6 hours, and ambiguous heartbeats are skipped conservatively.
Child-process output is bounded independently per stream: stdout keeps a prefix and stderr keeps a tail, with limits measured in UTF-8 bytes while both streams continue draining. Timeout, cancellation, and output-limit termination clean the entire process tree and return bounded diagnostics. maxOutputBytes takes precedence over the legacy outputLimitBytes name.
Requirements
Node.js 20+, Python 3.10+, yt-dlp, and ffmpeg. Install Node and Python dependencies, run scripts/bootstrap.ps1, then npm run doctor. The first real Whisper fallback downloads the large-v3 model.
Tools
dsh_watch_videodsh_watch_video_statusdsh_watch_video_listdsh_watch_video_cancel
Verification
npm run verify:pack
This clean-package check runs entirely offline: it does not download a Whisper model or access real video sites.
Job status and cancellation are process-local. See README.zh.md for full configuration and platform details.
Links
More in this category
PolinniZhong/dsh-omi-voice★ 75
In-chat read-aloud for DeepSeek Harness: tap to read, pause and resume AI replies with natural Doubao TTS voices (BYOK), reading only the final answer with code, tables and diagrams filtered; local engine, plugin keeps no API key.
PensiveFei/dsh-voice-scribe★ 35
Voice input for the web UI: tap Alt (or Alt+Space) to start/stop dictation, browser Web Speech (zero-config) or OpenAI-compatible cloud ASR, optional polish through DSH-configured LLM, settings UI.
1624318455/dsh-plugin-tts★ 24
Reads assistant replies aloud via free Edge TTS or your own RVC voice models: read-aloud buttons + auto-read, adaptive chunked progressive playback (gapless long reads), one-click voice-pack installs from a registry, and a portable RVC runtime.
WizisCool/dsh-ears★ 22
Voice input plugin for DeepSeek Harness (dsh): a microphone button in the composer turns speech into a draft transcript, with a choice of speech-recognition backends, optional polish through dsh own LLM routes, and a native settings page.
ppy-web/dsh-plugin-xiaomi-mimo-tts★ 19
Adds Xiaomi MiMo text-to-speech to DSH Web with assistant-message read-aloud, PCM streaming, preset and custom voice design, browser speech fallback, playback controls, and optional UI sounds.
PerryLink/dsh-talk★ 17
Voice I/O for DeepSeek Harness — speech-to-text and text-to-speech over the microphone and audio output.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.