# 社媒接口返回的 JSON 太长，喂给大模型太费 token，怎么省？

> 一页抖音或小红书结果的完整 JSON 动辄几千 token。只把任务需要的字段交给模型，每次调用价格不变。具体参数、字段搭配和示例代码。

网页版：https://okdata.online/zh/answers/reduce-llm-tokens-social-data/

**简短回答：**别等拿到再删，直接让接口少返回：okdata 可以指定只返回哪几个字段，也可以用精简视图去掉空值，两者都不影响价格（小红书搜索每页都是 $0.02）。做评论情感分析时，每条评论留三个字段通常就够了。

搜了三次抖音，上下文就用掉一半，智能体开始忘记你最初的要求；Claude Code 甚至会因为工具结果太大，把它转存成文件。办法是少要字段，条数照旧：一页 20 条视频，每条只留五个字段，体积只有带着头像、图片列表、话题标签和全部数据指标那一版的一小部分。

## 两个参数，所有接口通用

[抖音视频搜索](/zh/apis/douyin/videos/search/)、[小红书笔记搜索](/zh/apis/xiaohongshu/notes/search/)、[抖音视频评论](/zh/apis/douyin/videos/comments/list/)等每个 okdata 接口都支持这两个参数：

- `fields`：只保留你列出的字段，嵌套字段用点号，例如 `fields=id,title,metrics.likes`。写错的字段会出现在 `warnings` 里，不会悄悄失效。
- `view`：默认返回多少。`standard` 是默认值，`compact` 会再去掉所有空字段，`full` 会在 `ext` 里附带平台特有字段，放进提示词基本用不上。

这两个参数都不改变价格，也不改变条数。按次计费，瘦身后的一页和完整的一页价钱一样。

## 不同任务留哪些字段

| 任务 | fields | 每页价格 |
|---|---|---|
| 评论情感分析 | `text,likes,published_at` | $0.002 |
| 扫热榜 | `rank,name,heat` | $0.002 |
| 筛博主 | `id,name,followers,posts,likes,bio` | $0.002 |
| 内容调研 | `id,url,title,text,metrics.likes,metrics.comments,author.name` | $0.02 |

## 自己对比一下

下面把同一个搜索跑两遍，一遍默认字段，一遍精简字段，打印各自的大小。共两次调用，$0.04。

```python
import json, os, requests

URL = "https://api.okdata.online/v1/douyin/videos/search"
H = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}

for fields in (None, "id,title,metrics.likes,author.name"):
    params = {"query": "露营装备", **({"fields": fields} if fields else {})}
    body = requests.get(URL, headers=H, params=params, timeout=60).json()
    if body["code"] != "ok":
        raise RuntimeError(body["message"])
    size = len(json.dumps(body["data"], ensure_ascii=False))
    print(fields or "standard", size, "个字符", body["warnings"])
```

走 MCP 时，智能体在 `params` 里传同样的参数，比如 `{"query": "露营装备", "fields": "id,title,metrics.likes"}`。记得在提示词里明确要求，模型很少会主动少要字段。

## 比参数更省的几个习惯

- **原始数据存下来，给模型看精简版。** 完整响应写进文件或数据库，当前步骤需要什么就给模型什么。之后想回查，不用再花钱调一次。
- **每拿一页先总结，再拿下一页。** 十页评论先变成十段短笔记，再合成一份总结，比一次塞进一个超长提示词稳得多。
- **字幕：** `fields=text` 只返回纯文本，不带每段的时间戳，体积常常能少一半。只有需要精确引用到第几秒时，才保留分段。
- **条数也要裁。** 模型只需要点赞最高的 20 条评论，就先在代码里排序，把其余的丢掉再拼提示词。

## 其他做法

用 `jq` 或几行 Python 自己裁剪，对任何接口都适用，也不花钱，只是完整响应得先传到你的程序里。最不推荐的是让 MCP 客户端自动截断长结果：它从末尾往前砍，模型丢掉的是最后几条数据，没用的字段反而留着。完整参数说明见[请求与响应](/zh/docs/requests/)。

## 用到的接口

- [小红书笔记搜索](https://okdata.online/zh/apis/xiaohongshu/notes/search/) `xiaohongshu.notes.search`：$0.02/次 · 每页约 20 篇笔记
- [抖音视频搜索](https://okdata.online/zh/apis/douyin/videos/search/) `douyin.videos.search`：$0.02/次 · 每页约 20 条视频
- [抖音视频评论](https://okdata.online/zh/apis/douyin/videos/comments/list/) `douyin.videos.comments.list`：$0.002/次 · 每页约 20 条评论

更新于 2026-11-12
