# 怎么把 YouTube 视频评论导出成 CSV 或 Excel？

> 把 YouTube 视频的评论导出成 Excel 能直接打开的 CSV：正文、作者、点赞、回复数和日期。每 1,000 条评论的费用和 Python 脚本。

网页版：https://okdata.online/zh/answers/export-youtube-comments-csv/

**简短回答：**用 YouTube 视频评论接口（/v1/youtube/videos/comments/list）逐页拉取，每条评论写一行 CSV：每页约 20 条，$0.004，1,000 条评论共 $0.20。每行有正文、作者、点赞、回复数和日期；用带 BOM 的 UTF-8 保存，Excel 打开表情和中文都不会乱码。

上周发的产品测评视频已经有 3,000 条评论，市场负责人要你明天之前整理成表格，按点赞排好，方便团队给吐槽和功能需求打标签。超过几十条，从网页上复制粘贴就没法干了，写个小脚本几分钟就能搞定。

## 用哪个接口

[YouTube 视频评论](/zh/apis/youtube/videos/comments/list/)传视频 `id` 和 `sort`（`top` 按热门，`latest` 按最新），每次返回约 20 条，每条带 `text`、`author`、`likes`、`replies` 和 `published_at`。把 `page.next_cursor` 作为 `cursor` 传回去，直到 `page.has_more` 为 false。

## 脚本

```python
import csv, os, requests

API = "https://api.okdata.online/v1/youtube/videos/comments/list"
H = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
VIDEO = "dQw4w9WgXcQ"   # 链接里 v= 后面那一段
MAX_PAGES = 150         # 约 3,000 条评论

rows, cursor = [], None
for _ in range(MAX_PAGES):
    params = {"id": VIDEO, "sort": "top", **({"cursor": cursor} if cursor else {})}
    body = requests.get(API, headers=H, params=params, timeout=60).json()
    if body["code"] != "ok":
        raise RuntimeError(f"{body['code']}: {body['message']}")
    for c in body["data"]["items"]:
        rows.append([c["id"], c["published_at"], c["author"]["name"], c["likes"], c["replies"], c["text"]])
    if not body["page"]["has_more"]:
        break
    cursor = body["page"]["next_cursor"]

with open(f"{VIDEO}-comments.csv", "w", newline="", encoding="utf-8-sig") as f:
    w = csv.writer(f)
    w.writerow(["comment_id", "published_at", "author", "likes", "replies", "text"])
    w.writerows(rows)
print(len(rows), "条评论已保存")
```

`utf-8-sig` 会在文件开头写一个 BOM，Excel 靠它才能正确显示表情和中文。评论里的逗号、换行，`csv` 模块会自动加引号处理。

导出之后，在 Excel 里加一列标签，比如吐槽、功能需求、夸奖、提问，按点赞从高到低往下标。点赞多的评论往往代表更多人的看法，先把这一批标完，再决定剩下的要不要细看。

## 费用

| 评论量 | 调用次数 | 费用 |
|---|---|---|
| 500 条 | 25 | $0.10 |
| 1,000 条 | 50 | $0.20 |
| 3,000 条 | 150 | $0.60 |

实际翻了几页就付几页的钱。用 `MAX_PAGES` 提前停下，账单也就停在那里。

## 表格里不会有的东西

- **楼中楼回复。** 拿到的是一级评论和它的回复数，回复内容本身没有。
- **精确的旧日期。** 日期有时是从 2 个月前这类标签推算出来的，越早的评论越只能当近似值。
- **评论者所在地。** YouTube 不显示，这个字段是 null。

## 其他做法

- **官方 YouTube Data API。** `commentThreads.list` 每次只消耗 1 个配额单位，还带部分回复。有 Google key、量又不大的话，它免费，也是更好的选择。
- **youtube-comment-downloader。** 开源命令行工具，在你的网络上能跑通的话，导一次很方便；它的 issue 里还有人分享了转成 Excel 的写法。
- **手工复制。** 50 条以内，直接复制粘贴也行。

想大批量读懂评论在说什么，可以看[口碑分析方案](/zh/solutions/word-of-mouth/)。

## 用到的接口

- [YouTube 视频评论](https://okdata.online/zh/apis/youtube/videos/comments/list/) `youtube.videos.comments.list`：$0.004/次 · 每页约 20 条评论

更新于 2026-11-12
