Skip to main content
Glama
DavidLearning1023

bilibili-info-gathering

transcribe_audio

Transcribe a Bilibili video's audio with a local ASR backend when no usable subtitles exist, returning transcript data that matches the standard transcript structure for downstream use.

Instructions

没有字幕时的第三条路:下载音轨 → 本地 ASR 自建转写。

什么时候用

  • get_transcript 返回 transcript: null(无字幕)

  • 或字幕是 ai_subtitle 且错误多到不能作为依据

⚠️ 判「有没有字幕」必须带登录态:未登录时 B站返回空字幕列表, 看起来像"没字幕"(实测 6 个视频 + 195 个分P 全部返回空列表)。

转写引擎是使用者自备的(模型体积大,不进仓库)。 两种接法: ① pip install faster-whisper(首次会下模型,large-v3 约 3 GB) ② 设 BIG_ASR_CMD 指向你已有的转写命令(含 {audio} {out} 占位符) 两个都没有时,本工具返回 status="no_backend" + 完整安装指引, 并明确告诉你要把「该视频无可用字幕」记成结论里的缺口—— 不静默失败(静默失败会让 Agent 误以为"这视频没讲")。

返回结构与 get_transcript 一致(data_source="asr"),可直接接进后续流程。 ⚠️ 本地 ASR 同样会误转,处理标准与 AI 字幕完全一致(数字/术语要标注 "建议回原片核对"),并在引用时注明 engine(转写模型)。

page:多 P 视频转写第几部分(默认 1)。这个参数以前是假的—— 签名里收了 page 但实现里写死读 P1。现在按 page 取对应的 cid, 音轨缓存也按分P分目录(否则 P2 会复用 P1 的音轨,静默返回 P1 的转写)。

Input Schema

NameRequiredDescriptionDefault
bvidYes
pageNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.1

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full load: it discloses the backend must be user-supplied, the two setup paths, and that a missing backend yields status="no_backend" with install guidance rather than a silent failure. It also states the return structure matches get_transcript with data_source="asr" and that ASR output inherits the same verification caveats — leaving only minor gaps like latency/cost of a 3 GB model download beyond what's implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with a bold one-line summary, then headed sections with bullets — good structure for a complex tool. The narrative about page previously being a no-op is somewhat verbose, though it does justify trusting the parameter now.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be spelled out, and the description still links its output to get_transcript compatibly. Coverage of failure modes, backend prerequisites, login preconditions, and per-part caching is sufficient for an agent to invoke this correctly and interpret failures.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It does an excellent job on 'page' (multi-P selection, per-part audio caching so P2 doesn't silently reuse P1) but never explains 'bvid' at all. Half the parameters are documented, half are not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the operation precisely (download audio track → local ASR transcription) and positions it explicitly as the third path relative to get_transcript. An agent can distinguish this tool from get_transcript and grab_frames without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit trigger conditions: get_transcript returns transcript: null, or the subtitle is ai_subtitle with unacceptable error rates. Also adds a necessary precondition (must be logged in, otherwise the subtitle list is falsely empty) which prevents a whole class of misdiagnosis.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.