bilibili-transcriber

Transcribe Bilibili video audio into cleaned Chinese transcripts via ASR and LLM cleanup.

Updated Jul 20, 2026
One-click install
npx skills add https://github.com/peachest/skills --skill bilibili-transcriber-peachest
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: bilibili-transcriber
Source: https://github.com/peachest/skills/tree/main/research/bilibili-transcriber
Command: npx skills add https://github.com/peachest/skills --skill bilibili-transcriber-peachest

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires aiohttp, numpy, requests, and includes scripts (resource) and references (resource) components.

What problem does it solve? Bilibili videos lack readable text versions of their spoken content, and raw ASR output arrives as continuous text without punctuation, full of homophone errors. This Skill turns a Bilibili video URL into a punctuated, proofread transcript, including bilingual dual-audio videos where English original and Chinese voice-over are mixed in one track. ## Core Features & Use Cases - Silence-aware chunked ASR: Transcodes MP4 to 16kHz WAV, detects natural pause boundaries, partitions audio with a DP-optimal chunking strategy, and transcribes chunks in parallel against a Whisper-compatible endpoint. - LLM transcript cleanup: Chunks raw ASR text, fixes homophones and adds punctuation via an OpenAI-compatible endpoint, with per-chunk length validation, an escalation ladder for repetition-loop failures, and resumable state markers. - Bilingual dual-pass reconciliation: Re-runs ASR with an English language hint, aligns both timelines into ~90s windows, and merges them into an interleaved zh/EN transcript with divergence flags. - Batch channel processing: Enumerates an uploader's videos into a manifest and runs a crash-safe producer/consumer queue where downloads overlap ASR work. - Use Case: Point the Skill at a 90-minute Mandarin tech talk on Bilibili; it downloads the audio, transcribes it in parallel chunks, flags low-confidence segments, and produces a cleaned, paragraph-formatted transcript. ## Quick Start Transcribe this Bilibili video into a cleaned transcript: https://www.bilibili.com/video/BV1xx/

Frequently Asked Questions about bilibili-transcriber

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I transcribe a Bilibili video to text?▼

Download the audio with the fetch-article script, then run transcribe.sh on the workspace directory. The script transcodes MP4 to 16kHz WAV, chunks long audio at silence boundaries, and sends chunks to a Whisper-compatible ASR endpoint in parallel.

How to fix homophone errors in Chinese ASR transcripts?▼

Run clean-transcripts.py against the transcript directory with an OpenAI-compatible LLM endpoint configured. It chunks the raw text, applies a Chinese proofreading prompt, validates per-chunk length within ±25%, and escalates to halved chunks or higher sampling temperatures when the model repetition-loops.

Can I transcribe bilingual videos mixing English and Chinese audio?▼

Yes, dual-transcribe.py handles dual-audio tracks by re-running ASR with WHISPER_LANG=en, aligning both segment timelines into ~90s windows, and merging them with an LLM into an interleaved transcript with divergence flags. Single-pass zh-hinted ASR would bleed both languages together.

What ASR services work with this transcription pipeline?▼

Any Whisper-compatible endpoint exposing /v1/audio/transcriptions works, including vLLM-hosted models. Configure WHISPER_ENDPOINT and WHISPER_MODEL in runtime.conf; discover the model ID by querying the endpoint's /v1/models route.

Why does transcription fail on long Bilibili videos?▼

ASR endpoints typically reject files over 25MB, so long videos must be chunked. The pipeline detects silence via RMS amplitude windows and partitions at pause boundaries using a DP strategy, keeping chunks near the 600-second target without splitting sentences.

How do I transcribe an entire Bilibili channel in batch?▼

Enumerate the uploader's videos with enumerate-uploader.py (requires a bilibili-cli credential), filter the manifest, then run pipeline-queue.py. Fetch and ASR run as independent worker pools connected by directory queues, with atomic rename claims and crash-safe resume.