通过 GraphQL 实现 Twitter 关键词搜索、监控及趋势分析
Twitter Intel — 关键词搜索和趋势监视器.
功能概述
Twitter Intel — 关键词搜索和趋势监视器.是一项面向实际任务的技能,主要用于Search Twitter 以关键词标注,收集高参与度的微博,分析一段时间的趋势,并生成结构化的报告.;Powered by rnet twitter.py.。
核心要点
- 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
使用与执行
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
结果检查与注意事项
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
Twitter Intel — 关键词搜索与趋势监控
按关键词搜索 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 文件的路径。
阶段 1:按需搜索
当用户输入类似 “search [keyword] on twitter”、“twitter intel [topic]” 或 “find tweets about [X]” 时触发:
步骤 1 — 执行搜索
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" |
精确匹配短语 |
步骤 2 — 过滤与增强
原始搜索完成后,进一步筛选高质量推文:
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"]
]
步骤 3 — 生成报告
输出结构化摘要:
## Twitter Intel: [keyword] **时间范围:** [date range] | **共发现推文:** N | **过滤后保留:** N ### 互动最高的推文(按互动量排序) 1. @author(X 点赞,Y 转发,Z 展示量)— 发布时间 “推文正文……” [链接] ### 核心话题 - 话题 1:[描述](N 条推文) - 话题 2:[描述](N 条推文) ### 重要作者 | 作者 | 粉丝数 | 本批次推文数 | 总互动量 |
阶段 2:关键词监控(Cron 定时任务)
配置文件
{
"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
}
}
Cron 工作流
- 读取配置文件 → 遍历所有启用的监控项
- 对每个监控项:
- 调用
search_tweets(query, count, product)执行搜索 - 依据
min_likes进行初步过滤 - 与状态文件中的
last_tweet_ids对比 → 仅提取新增推文 - 若任意新增推文的
favorite_count >= alert_threshold→ 立即发出告警 - 将所有新增推文写入当日文件:
{monitor_id}/YYYY-MM-DD.json - 更新状态文件
- 调用
- 如有值得关注的新推文,则发送汇总通知
阶段 3:趋势分析
当用户输入 “analyze twitter trend for [keyword]” 或 “twitter trend report” 时触发:
- 加载指定
{monitor_id}/目录下所有已保存的每日 JSON 文件 - 将推文按自然周进行分组
- 对每一周,提取以下信息:
- 该周推文总数 + 总互动量
- 点赞数 Top 5 的推文
- 主导性话题(使用 LLM 自动归类)
- 新出现的重要作者
- 情感倾向变化
- 逐周生成连贯的叙事性分析报告
命令对照表
| 用户输入 | 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 刷新流程 |
技术备注
- SearchTimeline 接口必须使用 POST 请求(GET 将返回 404)—— 此逻辑已由
rnet_twitter.py内部封装处理 - GraphQL 查询 ID 会定期轮换—— 若搜索返回 404,请重新从
https://abs.twimg.com/responsive-web/client-web/main.*.js中提取最新 ID - 速率限制:约 300 次请求 / 15 分钟窗口。每页返回约 20 条推文,获取 200 条推文需约 10 次请求;因此每 4 小时运行一次 cron 是安全的。
- Cookies 有效期:
auth_token约 2 周过期。请留意 403 错误并及时刷新。
热门AI工具
相关专题
本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。
0
2026.10.22
本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。
0
2026.10.22
本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。
0
2026.10.22
本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。
0
2026.10.22
本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。
0
2026.10.22
本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。
0
2026.10.22
本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。
0
2026.10.22
PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。
0
2026.10.22
热门下载
相关下载
精品课程
共32课时 | 10.5万人学习
共23课时 | 7.7万人学习
共26课时 | 10.9万人学习
