𝕏 情感追踪器
此应用使用 Grok API 对 𝕏 上有关任意话题的言论逐帖评分,按日追踪情感变化。它可作为品牌监测或跟踪产品发布反响的起点。
输入一家公司、一款产品或一起事件等话题,应用会在 𝕏 搜索最近 10 天与之相关的热门帖子,过滤无关内容并分析情感。可在网页或终端运行,实时查看搜索、选中的帖子以及 Grok 的推理过程。实现方法参照 𝕏 情感分析笔记本。
你将学到
使用内置 X Search 工具和 𝕏 搜索运算符检索帖子
按天分别发起搜索并行执行,从而收集超过单次搜索上限的帖子
通过引用仅保留 X Search 实际返回的帖子
利用 SDK 的流式事件实时展示服务端搜索和推理过程
以结构化输出为每条帖子评分,并对得分做范围限制,因为 Schema 的最小值和最大值不会被强制执行
使用较低推理强度加快各步骤,即使 Grok 需要逐帖评分也能快速完成
通过服务器发送事件从 Node 服务器向网页实时传送进度,并在页面关闭时取消任务
运行示例
需要 Node.js 22.13 或更高版本。将 API 密钥保存在 .env(仓库根目录),或导出环境变量 XAI_API_KEY。
cd examples/x-sentiment-tracker/typescript
npm install
npm run web打开 http://localhost:3000,输入或选择话题并点击 Analyze。页面类似社交舆情仪表盘,逐日展示正在进行的搜索、找到和保留的帖子数,以及 Grok 在评分时的推理。随后展示 -1(负面)至 +1(正面)的总体得分、正面/中立/负面帖子的比例、逐日情感变化、评分理由,以及每条帖子的分数。点击 Stop 或关闭页面可取消。
要从终端分析话题,请将其作为参数传入。默认话题是 SpaceX。
npm start -- SpaceX话题会原样写入查询,因此也可以直接在话题中使用 𝕏 搜索运算符,例如 Starship OR Starlink。
每次搜索最多返回 10 条帖子,因此应用会对过去 10 天逐日搜索,所有搜索并行进行,最多收集 100 条。一次运行约需一分半钟,费用约 0.80 美元,主要来自 X Search:除 token 费外,每获取 1,000 条帖子另收 5 美元。需要缩短范围时,可修改 DAYS,其定义位于文件顶部:src/sentiment.ts。
工作原理
共享代码位于 src/sentiment.ts。analyze() 执行以下步骤并通过回调报告进展,以便网页和终端分别用自己的方式展示相同的进度:
findPosts()发出流式grok-4.7请求,使用xSearch()在一天的范围内搜索,要求以 JSON 返回当天最热门的帖子。server_tool_call事件会实时报告正在执行的搜索,citation事件会收集 Grok 引用的帖子,应用以此剔除 X Search 未返回的帖子。analyze()会为过去 10 天并行执行,并去除重复项。创建客户端时启用了retryBeforeOutput,因此 Grok 开始回答之前失败的搜索会重试。如果某一天的搜索仍然失败,程序会跳过该天并报告错误。filterPosts()使用较低推理强度,仅保留能反映人们对该话题态度的帖子。scoreSentiment()为保留的每条帖子评分,再评估话题整体情感,流式展示 Grok 的推理。该步骤同样使用低推理强度:默认设置会让 Grok 在回答前逐条推理,耗时数分钟。Schema 要求分数在 -1 到 1 之间,但不会强制执行,所以程序会把越界值限制在端点值。
src/server.ts 为页面运行 analyze() 来分析所选话题,并通过服务器发送事件报告每一步。它会将 AbortSignal 传给每个请求,因此关闭页面或点击 Stop 都能取消正在运行的任务。public/index.html 使用原生 HTML 和 JavaScript,以仪表盘展示事件,并根据每天的帖子得分计算当天的情感。src/index.ts 在终端中输出相同步骤。