问答
为什么有些抖音链接是 /note/ 而不是 /video/?
简短回答
/note/ 链接是抖音的图文作品:一组图片加文案,通常带背景音乐,而不是一段视频。它用的是同一套 aweme_id 编号,所以 okdata 的抖音视频详情照样接受 /note/ 链接或它的 ID,返回 type 为 image,并附上全部图片地址,每次 $0.002。
抖音的作品分两种。视频作品的网页地址是 douyin.com/video/<id>;图文作品是一组可以左右滑的图片,配文案,多数还带背景音乐,地址是 douyin.com/note/<id>。/note/ 后面那串数字就是普通的 aweme_id,和视频出自同一套 19 位编号(见 aweme_id 和 modal_id),所以图文作品一样可以查详情、出现在搜索结果里、读评论。真正出问题的是默认“每条作品都有视频”的代码:只匹配 /video/ 的链接解析、找视频地址却拿到一组图片的下载器、等着填时长的表格。分享短链 v.douyin.com/... 在跳转之前也看不出是哪一种。
怎么区分
| 视频作品 | 图文作品 | |
|---|---|---|
| 网页链接 | /video/<id> |
/note/<id> |
okdata 数据里的 type |
video |
image |
images |
null | 全部图片地址,按顺序 |
| 点赞、评论、分享、收藏 | 有 | 有,字段相同 |
metrics.views |
null(抖音不公开播放量) | null |
有些图文是实况图:每张图片背后还有一小段视频。okdata 每张只返回静态图片,不包含这些小视频。
接口怎么处理这两种
抖音视频详情两种链接都收,跳转到任意一种的短链、或者直接给 ID 也行。不需要事先知道类型,看返回的 type 就行。抖音视频搜索的结果里两种混在一起,只要一种的话按 type 过滤。图文作品的 ID 一样可以拿去调视频评论。
| 任务 | 调用次数 | 费用 |
|---|---|---|
| 一条 /note/ 链接换图片、文案和数据 | 1 | $0.002 |
| 200 条混合链接 | 200 | $0.40 |
| 一条图文作品的第一页评论 | 1 | $0.002 |
示例
import os, requests
r = requests.get(
"https://api.okdata.online/v1/douyin/videos/get",
headers={"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"},
params={"url": "https://www.douyin.com/note/7431266008815910153"},
timeout=60,
)
post = r.json()["data"]["item"]
if post["type"] == "image":
print(len(post["images"]), "张图片:", post["images"][:2])
else:
print("视频作品", post["url"])
print(post["text"], post["metrics"]["likes"])
加上 view=full,ext.music 里是背景音乐的名称,图文作品大多有。
限制
- 图片地址是带签名的抖音 CDN 链接,里面有
x-expires过期时间。需要的图片请在调用后尽快下载。 - 两种作品都不返回视频文件地址。
- 别人的作品,不论图文还是视频,抖音都不公开播放量,见抖音播放量。
- 已删除的作品返回
not_found,不扣费。
资料来源
- Live Photo posts: each image has its own MP4 under images[i].video (Douyin_TikTok_Download_API issue #792)
- Video-only download still trips over photo posts (TikTokDownloader issue #567)
- TikTokDownloader README: videos, photo sets (图集) and live photos listed separately
这个问题出现过的地方(读取于 2026-11-12)
更新于