通过 GraphQL 实现 Twitter 关键词搜索、监控及趋势分析
Twitter Intel — 关键词搜索和趋势监视器.是一项面向实际任务的技能,主要用于Search Twitter 以关键词标注,收集高参与度的微博,分析一段时间的趋势,并生成结构化的报告.;Powered by rnet twitter.py.。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
按关键词搜索 Twitter,采集高互动推文,分析时间维度上的趋势变化,并生成结构化报告。底层由 rnet_twitter.py 提供 GraphQL 搜索能力(无需浏览器自动化)。
阶段 1:按需搜索(用户触发) 用户输入 “search OpenAI on twitter” → 执行搜索 → 过滤结果 → 生成报告 阶段 2:关键词监控(定时任务驱动) 配置文件定义关键词 → 定时执行搜索 → 与上一次运行结果比对 → 发现新增高互动推文即触发告警 阶段 3:趋势分析(按需或每周执行) 聚合已保存的搜索结果 → 按周分组 → 检测话题演变 → 生成叙述性分析报告
# 安装 rnet(支持 TLS 指纹模拟的 Rust HTTP 客户端)
pip install "rnet>=3.0.0rc20" --pre
# 必需文件:
# 1. rnet_twitter.py — 轻量级异步 Twitter GraphQL 客户端
# 获取地址:https://github.com/PHY041/rnet-twitter-client
# 2. twitter_cookies.json — 你的认证 cookies
# 格式示例:[{"name": "auth_token", "value": "..."}, {"name": "ct0", "value": "..."}]
# 获取方式:Chrome DevTools → Application → Cookies → x.com
# Cookies 有效期约 2 周;若遇到 403 错误,请及时刷新。
请将环境变量 TWITTER_COOKIES_PATH 设置为你本地 cookies 文件的路径。
当用户输入类似 “search [keyword] on twitter”、“twitter intel [topic]” 或 “find tweets about [X]” 时触发:
import asyncio, os
from rnet_twitter import RnetTwitterClient
async def search(query, count=200):
client = RnetTwitterClient()
cookies_path = os.environ.get("TWITTER_COOKIES_PATH", "twitter_cookies.json")
client.load_cookies(cookies_path)
tweets = await client.search_tweets(query, count=count, product="Top")
return tweets
搜索模式说明:
| 模式 | product= |
适用场景 |
|---|---|---|
| 高互动模式 | "Top" |
发现具有影响力的推文,用于内容深度分析 |
| 实时模式 | "Latest" |
追踪突发讨论、实时舆情监控 |
常用 Twitter 搜索操作符:
| 操作符 | 示例 | 效果 |
|---|---|---|
lang:en |
OpenAI lang:en |
仅限英文推文 |
since: / until: |
since:2026-01-24 until:2026-02-24 |
限定日期范围 |
-filter:replies |
OpenAI -filter:replies |
仅返回原创推文(排除回复) |
min_faves:N |
min_faves:50 |
设定最少点赞数(仅在 Latest 模式下生效) |
from: |
from:karpathy |
指定作者账号 |
"exact" |
"AI agent" |
精确匹配短语 |
原始搜索完成后,进一步筛选高质量推文:
filtered = [
t for t in tweets
if keyword.lower() in t["text"].lower()
and (t["favorite_count"] >= 10 or t["retweet_count"] >= 5)
and not t["is_reply"]
]
输出结构化摘要:
## Twitter Intel: [keyword] **时间范围:** [date range] | **共发现推文:** N | **过滤后保留:** N ### 互动最高的推文(按互动量排序) 1. @author(X 点赞,Y 转发,Z 展示量)— 发布时间 “推文正文……” [链接] ### 核心话题 - 话题 1:[描述](N 条推文) - 话题 2:[描述](N 条推文) ### 重要作者 | 作者 | 粉丝数 | 本批次推文数 | 总互动量 |
{
"monitors": [
{
"id": "my-product-en",
"query": "MyProduct lang:en -filter:replies",
"product": "Top",
"count": 100,
"min_likes": 10,
"alert_threshold": 100,
"enabled": true
}
]
}
{
"my-product-en": {
"last_run": "2026-02-24T12:00:00Z",
"last_tweet_ids": ["id1", "id2"],
"total_collected": 450
}
}
search_tweets(query, count, product) 执行搜索min_likes 进行初步过滤last_tweet_ids 对比 → 仅提取新增推文favorite_count >= alert_threshold → 立即发出告警{monitor_id}/YYYY-MM-DD.json当用户输入 “analyze twitter trend for [keyword]” 或 “twitter trend report” 时触发:
{monitor_id}/ 目录下所有已保存的每日 JSON 文件| 用户输入 | Agent 行为 |
|---|---|
/twitter-intel [keyword] |
执行搜索 + 过滤 + 报告(Top 模式,200 条推文) |
/twitter-intel "[phrase]" --latest |
以 Latest 模式执行搜索 |
monitor "[keyword]" on twitter |
将关键词添加至监控配置 |
twitter intel status |
显示所有启用中的监控项及其最近运行时间 |
twitter trend report [keyword] |
分析历史存储数据,生成趋势叙事报告 |
refresh twitter cookies |
引导用户完成 cookies 刷新流程 |
rnet_twitter.py 内部封装处理https://abs.twimg.com/responsive-web/client-web/main.*.js 中提取最新 IDauth_token 约 2 周过期。请留意 403 错误并及时刷新。相关专题
热门下载
相关下载
精品课程
共32课时 | 10.5万人学习
共23课时 | 7.7万人学习
共26课时 | 10.9万人学习
最新文章