Twitter 监控 API 如何运作
使用 TweetStream 的 Twitter 监控 API,你的后端打开一个经过身份验证的 WebSocket,你选定的 X 账号产生的事件都会以 JSON 送达。数据流保持打开时也可以添加或移除账号。
TweetStream 负责什么
- 随时添加或移除账号
- 把账号发送到添加和移除接口,或通过账号管理连接发送。消费端连接持续运行,并按新列表路由。
- 不止帖子的账号事件
- 删除、置顶、资料变化、关注和取消关注在可用时推送,并附带代币检测和帖子图片 OCR。
- Discord 路由
- 所有套餐都可以把同样的提醒发送到 Discord webhook,团队成员阅读提醒的同时,机器人照常消费数据流。
- 客户端重连
- 重连由你的客户端负责。使用指数退避,连接稳定 30 秒后重置等待时间,Node.js 和 Python 指南都是这样做的。
用 Node.js 或 Python 连接
Node.js:打印观察列表中的新帖子
typescriptimport WebSocket from "ws";
const ws = new WebSocket("wss://ws-global.tweetstream.io/ws", [
"tweetstream.v1",
`tweetstream.auth.token.${process.env.TWEETSTREAM_API_KEY}`,
]);
ws.on("message", (raw) => {
const event = JSON.parse(raw.toString());
if (event.t === "tweet" && event.op === "content") {
console.log(event.d?.author?.handle, event.d?.text);
}
});Python:打印观察列表中的新帖子
pythonimport asyncio
import json
import os
import websockets
PROTOCOLS = ["tweetstream.v1", f"tweetstream.auth.token.{os.environ['TWEETSTREAM_API_KEY']}"]
async def main():
async with websockets.connect("wss://ws-global.tweetstream.io/ws", subprotocols=PROTOCOLS) as ws:
async for raw in ws:
event = json.loads(raw)
if event["t"] == "tweet" and event["op"] == "content":
tweet = event["d"]
print(tweet.get("author", {}).get("handle"), tweet.get("text"))
asyncio.run(main())团队为什么使用它
- 3 天试用包含 5 个跟踪账号和 1 个 WebSocket 连接。
- 无需运行自己的账号关注进程,也能监控重点账号列表。
- 所有套餐都包含 Discord 路由,提醒可以直达团队采取行动的频道。
- 投入生产前即可查看账号和连接容量。
常见问题
我可以实时监控指定 X/Twitter 账号吗?
可以。TweetStream 跟踪你列出的账号,不必依赖覆盖整个 X 的关键词搜索。
如何在不重启机器人的情况下添加或移除账号?
在后端调用添加和移除接口,或通过账号管理 WebSocket 发送命令。消费端连接保持打开,会自动使用新的列表。请求格式见账号管理文档。
提醒如何交付?
通过 WebSocket API 以 JSON 形式接收。所有套餐还可以把同样的提醒发送到 Discord webhook,在控制台中设置即可。
连接断开时客户端应该怎么做?
用指数退避重连,连接稳定 30 秒后重置等待时间。事件处理要保持幂等,避免重复消息触发第二笔交易。Pro、Scale 和 Ultra Speed 可以用 History API 回放断线期间错过的事件。
最多可以监控多少个 X 账号?
Minimum 可监控 50 个账号,Pro 可监控 250 个。Scale 可自定义上限。