抖音 · 字幕提取

抖音字幕提取:口播和画面上的字幕一起提

简单说:贴一条抖音链接,返回带秒数的口播字幕,和压在画面里的字幕、花字(带大致时间)。不用下载视频、不登录。 5 分钟视频完整读取 6 积分(约 ¥0.864),只要口播 3 积分;要 SRT 文件,用下面 5 行代码转。

两种字幕

抖音视频的「字幕」其实是两样东西

口播字幕

视频里说的话。抖音大部分视频没有可以下载的字幕文件,所以按语音转写,每段带开始的秒数(transcript)。

只要这一种就选「只要文案」:每 2 分钟 1 积分,5 分钟视频 3 积分。

画面上的字幕、花字

剪辑时压在画面里的字幕条、大字标题、花字。逐帧识别出来,每条带大致时间(on_screen),和口播分开放。

用完整读取:1 积分起,每分钟 1 积分,5 分钟视频 6 积分,口播也一起给。

在线提取

网页里贴链接,或者用代码转成 SRT

在 控制台 贴链接即可。要字幕文件,用这段代码:先取带秒数的口播字幕,再写成 subs.srt。 单条视频的文案见 抖音文案提取。

import time, requests

API = "https://linkdigest.dev/api/v1/digest"
H = {"Authorization": "Bearer ld_live_..."}  # 控制台 → API 密钥
body = {"url": "https://v.douyin.com/xxxxxxx/"}  # 分享链接或整段分享文案

while True:  # 视频读得久时先返回 pending,同样的请求再发一次,只扣一次费
    r = requests.post(API, headers=H, json=body).json()
    if not r.get("pending"):
        break
    time.sleep(15)

def ts(s):
    ms = int(round(s * 1000))
    h, ms = divmod(ms, 3_600_000); m, ms = divmod(ms, 60_000); sec, ms = divmod(ms, 1000)
    return f"{h:02}:{m:02}:{sec:02},{ms:03}"

segs = r["transcript"]  # 口播字幕;画面上的字在 r["on_screen"]
with open("subs.srt", "w", encoding="utf-8") as f:
    for i, seg in enumerate(segs):
        end = segs[i + 1]["t"] if i + 1 < len(segs) else seg["t"] + 5
        f.write(f"{i + 1}\n{ts(seg['t'])} --> {ts(end)}\n{seg['text']}\n\n")

在 AI 工具里

接进 Claude Code / Cursor,贴链接说「把字幕提出来」

claude mcp add --transport http linkdigest \
  https://linkdigest.dev/mcp \
  --header "Authorization: Bearer ld_live_..."

常见问题

抖音字幕提取有免费的吗?
注册送 10 积分,不用绑卡:只要口播字幕大约能提 20 分钟的视频。之后支付宝 ¥9.9 买 50 积分,一次性、不订阅、不过期。同一条视频任何人提过,再提不扣积分。
能直接导出 SRT 字幕文件吗?
不直接给 SRT 文件。返回的口播字幕每段都带开始秒数,可以复制成 Markdown 或拿 JSON;本页的 5 行代码把它写成 subs.srt,导进剪映、Premiere 都能用。
提出来的字幕准吗?
口播清楚的视频基本准;方言、多人抢话、背景音乐很响时会出错。画面上的字是逐帧识别的,字号小、动得快的花字可能漏掉,时间是大致的(按抽帧的时刻)。
要下载视频吗?要登录抖音吗?
都不用。在网页里贴链接就行,不登录、不用 Cookie,也不提供视频下载。个别视频抖音的播放器不给外部读取,这一条说明原因、不扣积分,可以在抖音里保存后上传。
要提几十条视频的字幕呢?
控制台选「多条链接 → 一页」一次贴一批,或者用批量接口;做法和条数上限见「批量提取抖音文案」页(linkdigest.dev/zh/douyin-wenan-piliang-tiqu)。

不用注册先试一条;注册送 10 积分,不用绑卡。支持的平台上有链接读不出来,就是一个值得报告的 bug。