跳到正文
Transcript Dock
登录免费开始

站点菜单

Transcript Dock
简介工作原理、指南,以及可以转录的内容。
快速开始提交链接,等待任务完成,导出文稿。共三个请求。
身份验证API 密钥、权限范围、Idempotency-Key 和 X-Request-Id。
任务创建、等待、列出、取消和重试任务。
文稿文稿对象,以及 txt、srt、vtt、json 导出。
批量一次请求最多 50 个视频。
上传转录你自己的音频和视频文件。
Webhook任务或批量完成时收到回调,并验证签名。
错误所有错误代码、含义以及处理方法。
速率限制各套餐的提交、进行中任务和读取限制,以及 429 响应。
价格与点数每份字幕文稿 1 个点数,AI 转录每分钟 2 个点数。套餐与额外点数。
来源YouTube、TikTok、你的文件和直接链接:支持的 URL 和模式。
MCP在 Claude、Cursor、Windsurf 或你自己的智能体中查找并转录视频。
OpenAPI 规范用于代码生成和类型化客户端的 OpenAPI 3.1 规范。
Claude Code一条命令即可把 Transcript Dock 添加到 Claude Code。
Claude 应用在 claude.ai、Claude Desktop 或手机端,把 Transcript Dock 添加为自定义连接器。
Cursor在 Cursor 中把 Transcript Dock 添加为 MCP 服务器。
Windsurf把 Transcript Dock 添加到 Windsurf,让 Cascade 能查找并转录视频。
OpenClaw把 Transcript Dock 连接到 OpenClaw 自主智能体。
19 条结果
指南

用于 RAG 和 LLM 流水线的视频文稿

把 YouTube 和 TikTok 视频变成 LLM 可以搜索和引用的文本块:获取带时间的分段、按时间分块、保留时间戳链接。

更新于


先说结论:请以 JSON 而不是纯文本获取文稿。segments 数组为每一行字幕都带有开始和结束时间,所以你可以按时间分块,并把开始时间存为元数据。这样模型给出的每个回答,都可以链接到视频中的确切时刻。

为什么带时间的分段胜过纯文本#

  • 引用:知道自己从第 754 秒开始的文本块,可以变成指向那个时刻的链接。
  • 自然的边界:字幕行在停顿处结束,所以文本块很少把一句话从中间截断。
  • 来源信息:source_origin 会告诉你文字来自创作者、平台自动字幕还是 AI 转录,language 则给出它的语言。

获取并分块#

下面的代码获取一份文稿,并把分段按大约一分钟一个窗口分组。文稿 JSON 的结构记录在 API 参考中。

rag_ingest.py
import requests
 
API = "https://www.transcriptdock.com"
H = {"Authorization": "Bearer td_live_YOUR_KEY"}
 
def transcript(url: str) -> dict:
job = requests.post(f"{API}/v1/jobs", headers={**H, "Idempotency-Key": f"rag-{url}"[:128]},
json={"source": {"url": url}, "mode": "captions_only"}).json()
while job["status"] not in ("succeeded", "failed", "cancelled"):
job = requests.get(f"{API}/v1/jobs/{job['id']}", params={"wait": 25}, headers=H).json()
if job["status"] != "succeeded":
raise RuntimeError(job["error"]["code"])
return requests.get(f"{API}/v1/transcripts/{job['result_id']}", headers=H).json()
 
def chunks(t: dict, seconds: float = 60.0):
"""Group caption segments into windows of about `seconds`, never splitting a segment."""
url = t["source"]["canonical_url"]
buf, start = [], None
for seg in t["segments"]:
if start is None:
start = seg["start"]
buf.append(seg["text"])
if seg["end"] - start >= seconds:
yield {"text": " ".join(buf), "start": start, "url": f"{url}&t={int(start)}s" if "youtube" in url else url}
buf, start = [], None
if buf:
yield {"text": " ".join(buf), "start": start, "url": url}
 
t = transcript("https://www.youtube.com/watch?v=dQw4w9WgXcQ")
for c in chunks(t):
print(c["start"], c["url"], c["text"][:80]) # embed c["text"], store start and url as metadata

大量视频#

  • 用视频发现找到视频:YouTube 搜索、某个频道、某个播放列表或某个 TikTok 主页。
  • 把它们作为批量任务提交,让 Webhook 在每个任务完成时通知你的摄取程序,而不是轮询。
  • 重新读取和重新导出文稿都是免费的,提交你已经转录过的链接会直接返回已保存的结果,所以重新运行一次摄取不会重复花费。

按需获取的智能体#

并不是每条流水线都需要索引。连接了 Transcript Dock MCP 服务器的智能体,可以在用户提到某个视频时调用 get_video_transcript,把文本直接读入自己的上下文。关于框架,参见 LangChain 和 n8n。