# 在 Codex 里用 okdata：通过 MCP 拿社媒数据

> 在 Codex 的 config.toml 里加一次 okdata，命令行、IDE 插件和 ChatGPT 桌面版都能查接口、取公开社媒数据。

网页版：https://okdata.online/zh/integrations/codex/

配好之后，Codex 写依赖数据的代码前，可以先看一眼真实数据长什么样。举个例子：你想每周看看观众怎么评价竞品在 YouTube 上的发布视频。先让 Codex 通过 okdata 取一页评论，看清返回的结构，再让它写一个小脚本，每周一直接调 HTTP 接口把评论存成 CSV。摸索阶段走 MCP，最后留下来的脚本完全不依赖 AI。

## 准备

- 装好 Codex：命令行版（终端里能运行 `codex`）、IDE 插件，或者 ChatGPT 桌面版。三者共用同一份配置，配一次就行。
- 一个 okdata 的 key，以 `okd_` 开头。新 key 自带 $0.10 额度。怎么拿 key 见[快速开始](/zh/docs/quickstart/)。
- 把 key 放进环境变量 `OKDATA_API_KEY`。Mac 上加到 `~/.zshrc`（Linux 是 `~/.bashrc`），然后新开一个终端：

```bash
export OKDATA_API_KEY="okd_..."
```

## 添加服务

打开 `~/.codex/config.toml`（没有就新建一个），加上：

```toml
[mcp_servers.okdata]
url = "https://api.okdata.online/mcp"
bearer_token_env_var = "OKDATA_API_KEY"
```

`bearer_token_env_var` 填的是变量名，不是 key 本身。Codex 连接时去读 `OKDATA_API_KEY`，再带上 `Authorization: Bearer <key>`，key 不会落进文件里。如果只想在某个项目里用，就把这三行写进该项目的 `.codex/config.toml`；Codex 只会读你标记为受信任的项目里的配置。

IDE 插件和桌面版也能在设置里添加（**MCP servers**，再点 **Add server**，选 **Streamable HTTP**），但 bearer token 这一项要在 `config.toml` 里设，所以直接改文件最省事。改完重启插件或应用。

## 确认连上了

终端里运行 `codex mcp list`，应该能看到 `okdata` 和它的地址。在 Codex 会话里输入 `/mcp`，能看到它已连接，带四个工具：`find`、`describe`、`call`、`account`。

再问一句：“我的 okdata 余额还有多少？”报出数字就说明 key 能用，这一步不花钱。

## 第一句可以这样说

```text
用 okdata 找到 YouTube 视频评论接口，告诉我单价。
取 https://www.youtube.com/watch?v=<视频 id> 的一页热门评论。
然后写一个 comments_weekly.py：用普通 HTTP 发同样的请求，
key 从环境变量 OKDATA_API_KEY 读取，结果存成 CSV。
```

## 花多少钱

`find`、`describe`、`account` 免费，`call` 按接口单价收费。YouTube 评论一页 $0.004，上面这句话花 $0.004，之后脚本每跑一次再按次计费。[小红书笔记搜索](/zh/apis/xiaohongshu/notes/search/)一页 $0.02。调用失败不扣费。

如果你给 Codex 开了比较宽的自动批准，记得在提示里写上预算，比如“收费调用不超过两次”。

## 出问题时

- **返回 `unauthorized`（401）。** Codex 没读到 key。在终端里运行 `[ -n "$OKDATA_API_KEY" ] && echo 已设置 || echo 没有设置`，显示“已设置”后再从这个终端启动 Codex。从程序坞或开始菜单打开的应用不一定读得到 shell 配置文件里的变量，所以可能出现命令行能用、桌面版不行的情况。实在不行，可以把 `bearer_token_env_var` 那一行换成 `http_headers = { "Authorization" = "Bearer okd_..." }`。这样 key 会明文存在 `~/.codex/config.toml` 里，千万别写进项目里的 `.codex/config.toml`。
- **返回 `insufficient_balance`（402）。** 余额不够这次调用，没有扣费。充值后重试，价格见[定价页](/zh/pricing/)。
- **返回 `rate_limited`（429）。** 一下子调用太多。错误里有 `retry_after_seconds`，等这么多秒再发同一个调用，不扣费。
- **看不到服务或工具。** 检查 TOML：段名必须是 `[mcp_servers.okdata]`，中间是下划线；地址要以 `/mcp` 结尾。网络慢、启动超时的话，在这一段下面加一行 `startup_timeout_sec = 30`。

## 接着看

- [MCP 服务说明](/zh/mcp/)：四个工具做什么，以及该怎么叮嘱智能体。
- [YouTube 视频评论](/zh/apis/youtube/videos/comments/list/)：参数、字段和价格。
