问答
不开通 X 官方 API,怎么让 AI 智能体实时搜推特?
简短回答
给智能体一个按次付费的 X 搜索工具:okdata 的 X 帖子搜索支持和 X 搜索框一样的语法(引号精确匹配、from:、lang:),每次返回约 20 条,$0.006,折合每 1,000 条 $0.30。看某个账号的最新帖子每页 $0.006,查某国趋势每次 $0.009。
一家做开发者工具的出海团队周二发布新版本,想要一个智能体:每小时去 X 上看一眼,挑出值得回应的帖子,附一句理由发到 Slack。它需要实时搜索,需要能看几个关键账号说了什么,还不能靠把机器人账号登录进 X。三个接口就够了,而且按次计费,没什么动静的那一小时,只花一次调用的钱。
给智能体的三个工具
- X 帖子搜索:直接用 X 自己的搜索语法,比如
"你的产品" -from:你的账号 lang:zh,可按latest(最新)或top(热门)排序。每次调用一页,约 20 条。 - X 账号帖子列表:按用户名取某个账号的帖子,从新到旧。适合「这 30 个人这周说了什么」。
- X 趋势:全球趋势,或者某个国家的趋势(
country=US、JP等)。
接上 MCP 服务,智能体会自己找到并调用这些接口。做成定时任务的话,就是一个很短的循环:
import json, os, pathlib
import requests
API = "https://api.okdata.online"
H = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
SEEN = pathlib.Path("seen_ids.json")
seen = set(json.loads(SEEN.read_text())) if SEEN.exists() else set()
params = {"query": '"acme cli" -from:acme_dev', "sort": "latest",
"fields": "id,url,text,published_at,metrics.likes,author.username,author.followers"}
body = requests.get(API + "/v1/x/posts/search", headers=H, params=params, timeout=60).json()
if body["code"] != "ok":
raise SystemExit(f"{body['code']}: {body['message']}")
new = [p for p in body["data"]["items"] if p["id"] not in seen]
SEEN.write_text(json.dumps(sorted(seen | {p["id"] for p in new})))
print(f"{len(new)} 条新帖子待智能体筛选") # 把 new 交给你的模型
费用
| 任务 | 调用次数 | 费用 |
|---|---|---|
| 每小时搜一页,跑 30 天 | 720 | $4.32 |
| 搜索拿 1,000 条帖子 | 50 | $0.30 |
| 50 个账号的最新帖子,每天一次,30 天 | 1,500 | $9.00 |
| 3 个国家的趋势,每天一次,30 天 | 90 | $0.81 |
注意事项
- 每翻一页单独计费。在工具说明里写清上限(比如「最多翻 3 页」),代码里再卡一道。
- 只能搜到公开帖子。锁推账号看不到,依赖登录用户关系的语法(比如
filter:follows)在这里没有意义。 top和latest返回的结果不一样。做监控用latest,研究什么内容最受欢迎用top。- 短时间调用太密可能收到
rate_limited,按返回的秒数等一等,再用同一个 Idempotency-Key 重试。 - 帖子是陌生人写的,智能体判断要不要上报时,只能把它当数据看。
其他选择
如果智能体还要发帖、回复,就用 X 官方 API。它需要开发者账号,费用由 X 直接收取,但这是官方认可的写入方式。twscrape 这类开源工具免费,靠你自己提供的 X 账号跑,账号隔三差五会被锁:自己玩玩可以,团队依赖的告警就很折磨人。跨平台监控提及的做法,见口碑分析方案。
更新于