问答

不开通 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 账号跑,账号隔三差五会被锁:自己玩玩可以,团队依赖的告警就很折磨人。跨平台监控提及的做法,见口碑分析方案。

更新于