推特告警:修好你的通知 vs 搭一套关键词告警

17 min readSocialAPI 工程团队

推特告警:修好你的通知 vs 搭一套关键词告警

两个完全不同的问题共用这个搜索词,而它们的答案毫无共同之处。

1. 你的通知坏了或者太吵。 小红点消不掉、通知不来了、安卓和网页表现不一样。★这是设置问题,解法在 App 里。★

2. 你想知道有人提到了某个话题。 你的品牌、竞品、某个关键词 —— 来自你没关注的账号。★X 没有这个功能。通知只覆盖发生在你账号身上的事。★

这篇前半修第一个问题,后半搭第二个。


修好 X 自带的通知

消不掉的小红点

通常是同步问题,而不是真有未读。

  1. 打开通知页并滑到顶部
  2. 单独检查「提及」标签 —— 一条未读提及会留下主标签清不掉的红点
  3. 强制关闭并重开 App
  4. 还不行?退出登录再登回

⚠️ 没有"全部标记为已读"按钮。 红点靠查看来清除,这就是一条埋在繁忙标签里的提及能让它一直卡着的原因。

通知收不到

按顺序检查:

  • App 设置 → 通知 → 推送通知,确认你要的类别是开的
  • 设备设置 → X → 系统层面的通知权限已开启
  • ★电池优化(安卓)★ —— 这是安卓上最常见的原因,激进的省电会挂起后台推送
  • 质量过滤器 —— 设置 → 通知 → 过滤器。它会隐藏 X 判定为低质量账号的通知,而且默认开启

通知太多

  • 静音你回复过、但不想继续跟的对话
  • 高级过滤 —— 静音来自没有头像、新注册、或没关注你的账号的通知
  • 关掉单个账号的发帖通知 —— 资料页上的小铃铛

★这些都不是第三方工具能替你修的。★ 这是你账号自己的设置,而任何提出"帮你修通知"的工具,索要的是你三十秒就能自己做完的事情的账号权限。


通知做不到的那件事

通知是关于你的账号的。 提及、回复、点赞、关注、引用 —— 全是涉及你的事件。

★它们无法告诉你:有人发帖谈论了你的话题,但没有 @ 你。★ 而那恰恰是相关讨论的大多数 —— 人们一直在讨论品牌、产品和竞品,而不 @ 任何人。

最接近的原生选项是给特定账号开启发帖通知(资料页上的铃铛)。那对你已经知道的少数几个账号有效,但它不可扩展,也无法盯一个关键词。

盯话题而不是盯账号,意味着定时查询搜索 —— 而那正是接口的用途。


搭关键词告警

机制很简单:定时搜索、和已见过的比对、对新出现的告警。

import requests, json, pathlib

BASE = "https://api.socialapi.tech"
KEY  = "your_api_key"
HDRS = {"X-API-Key": KEY}
SEEN = pathlib.Path("seen.json")

def search(query, limit=50):
    r = requests.get(f"{BASE}/v1/search/advanced",
                     params={"query": query, "product": "Latest", "limit": limit},
                     headers=HDRS, timeout=60)
    r.raise_for_status()
    return r.json()["data"]

def check(query, min_faves=0):
    seen = set(json.loads(SEEN.read_text())) if SEEN.exists() else set()
    fresh = []

    for post in search(query):
        if post["id"] in seen:
            continue
        seen.add(post["id"])
        # ★阈值要在告警之前判,不是之后★
        if post.get("like_count", 0) >= min_faves:
            fresh.append(post)

    SEEN.write_text(json.dumps(sorted(seen)[-5000:]))   # 给文件封顶
    return fresh

for p in check('"acme corp" -filter:retweets', min_faves=2):
    print(f"@{p['author']['username']} ({p['like_count']} 赞): {p['text'][:80]}")

两处在真正干活:

  • ★按推文 ID 去重,不要按文本去重。★ 搜索在两次运行之间会返回重叠结果,少了 seen 集合,你每一轮都会为同一条推文告警。
  • ★给 seen 文件封顶。★ 不封顶它会无限增长;而最近几千个 ID 就够了,因为搜索本来就只返回近期内容。

决定这套东西有没有人用的那部分

★★告警系统不是因为漏报而失败的,是因为吵到没人看而失败的。★★

一旦告警被忽略,漏报就成了必然 —— 所以噪音才是真正要紧的失败模式。三条规则能解决大部分:

1. 设互动阈值。 一条零点赞的品牌提及没有触达任何人。判阈值需要每条结果都带互动数据 —— 它随推文一起返回。min_faves:2 能去掉相当可观的量而不丢掉任何重要的东西。往上调,直到告警值得读。

2. 排除转发。 -filter:retweets。否则一条传开的提及会产生几百条几乎一样的告警。

3. 给人看的要批量,不要流式。 ★即时告警对突发事件是对的,对其它一切都是错的。★ 每几小时一份摘要会被读;一串单条推送会被静音,而一个被静音的通道比没有通道更糟。

⚠️ 调参陷阱: 人们一开始把阈值设得太低、被淹没、然后放弃整套系统。★起步要比感觉上更严,再往松调 —— 你能看见的失败(太安静)可以补救,你看不见的失败(通道被忽略)不能。★


实际该盯什么

查询 抓到什么
"品牌名" -filter:retweets 正文里的直接提及
to:你的品牌 发给你的回复
url:你的域名.com 分享你链接的人
"品牌" (broken OR "doesn't work" OR down) 客服问题
"竞品" (switching OR alternative) 购买信号

★@ 提及和 to: 是不同的集合★ —— 有人点你的名却没回复你,永远不会进入你的回复串。只盯其中一个会漏掉大约一半;这个区分在这里。

同样值得盯的:对你推文的引用 —— 它们同样不进回复串,而实质性的批评通常就在那里。


大家会问的问题

推特的小红点为什么消不掉? 通常是**「提及」标签里有未读**。单独检查它,然后强制关闭 App。

怎么清除推特通知? 靠查看 —— 没有批量清除。要把「提及」和主标签分开检查。

推特通知为什么不工作? 检查 App 设置、系统层权限、以及电池优化。安卓上省电是最常见的原因。

怎么删除推特通知? 单条通知无法删除,它们会自然过期。消红点靠查看。

安卓上推特通知为什么不来? 通常是电池优化挂起了后台推送。在设备电池设置里把这个 App 排除。

怎么关闭推特通知? 设置 → 通知 → 偏好设置 → 推送通知。可以按类别关,不必全关。

有人发了某个关键词能通知我吗? 原生不行 —— 通知只覆盖涉及你账号的事件。需要自己定时查搜索,或者用一个替你做这件事的工具。

怎么设置关键词告警? 定时搜索、和已见过的去重、对超过互动阈值的新结果告警。

特定的人发帖能通知我吗? 能 —— 资料页上的铃铛。那是按账号的,超过几个就不好用了。

质量过滤器是什么? 一个隐藏 X 判定为低质量账号通知的设置。默认开启,而且可能隐藏掉正当的提及。

怎么屏蔽没关注的人的通知? 通知 → 过滤器 里的高级过滤,可以静音没关注你的、新注册的、或没有头像的账号。

为什么我收到不关心的推文通知? 通常是你回复过但没静音的对话,或者某个账号的发帖通知还开着。

不用账号能监控提及吗? 读公开数据不需要你的账号,但退出登录的浏览被限制得很厉害 —— 这正是接口的用途。

关键词告警该多久跑一次? 5-15 分钟能覆盖大多数需求。 更快更贵,而且很少改变你的行动 —— 轮询频率决定成本。

怎么避免重复告警? 按推文 ID 去重并存下已告警的。按文本去重会失败,因为几乎相同的推文之间总有细微差别。

为什么我的告警太多? 阈值太低,或者把转发算进去了。加 min_faves: 和 -filter:retweets。

能把告警发到 Slack 或邮件吗? 能 —— 那是你这边的集成。告警逻辑一样,只是投递方式不同。

告警该即时还是批量? 突发事件即时,其它一切批量。 ★摘要会被读,一串推送会被静音。★

提及和关键词告警有什么区别? 提及是 @ 了你的,原生就会通知。关键词告警抓的是那些从不 @ 你的讨论 —— 而那通常是更大的那一部分。

能对话题标签告警吗? 能,同样的机制,查询换成 #标签 —— 见衡量标签。

能对热榜告警吗? 热榜是一份单独的列表,你要轮询它并做差集 —— 见热榜怎么运作。

告警对受保护账号有效吗? 无效。受保护的推文无论用什么方法都不可公开读取。

怎么测试我的告警设置? 用第二个账号发一条含你关键词的推文,确认它送达。在依赖它之前测通整条链路。

如果我的关键词太泛怎么办? 加限定词或互动阈值。★一个太泛的关键词产生的噪音,靠任何投递端调优都解决不了。★

告警和监控有什么区别? 告警打断你;监控建立记录。 ★同一条管道,不同的产出★ —— 监控那一侧。

为什么某个关键词收不到告警? 通常是查询的问题,不是投递的问题。 ★先把这个查询当成普通搜索测一遍★ —— 如果那里就返回空,任何告警层都救不了。

怎么知道我的账号是不是被限制了? 先试着发帖,再看能不能被搜到 —— ★如果帖子能发出去但没人找得到,那是可见性问题,不是限流★ —— 怎么测。

怎么设置一个关键词告警? 把查询存下来、按计划轮询、再和已经见过的做差集。 ★这就是每个告警工具底层做的事。★

能对竞品的帖子设告警吗? 能 —— 一个定时跑的 from: 查询 —— 在一个账号内搜索。

告警能有多快? ★取决于你的轮询间隔,或者用流做到接近实时★ —— 实时意味着什么。

我的告警为什么很吵? 查询太宽了。 ★加限定词或互动阈值★ —— 没有任何投递端调优能修好一个坏查询。

能对话题标签设告警吗? 能 —— ★不过标签抓的是词,不是主题★ —— 这个取舍。

能对品牌提及设告警吗? 能 —— ★搜品牌词,并且要预期拿到的是一个窗口而不是完整集合★。

怎么避免重复告警? 存帖子 ID 做差集 —— ★按 ID 去重,绝不按文本★。

能对粉丝变化设告警吗? 只能靠拍快照做差集 —— 追踪怎么做。

告警对受保护账号有效吗? 无效 —— ★没有任何东西能到达受保护账号★。

告警该一直跑着吗? ★让间隔匹配对象变化的速度★ —— 间隔恒定比间隔短更重要。

告警最常见的失效原因是什么? ★一个从没当成普通搜索测过的查询。★


简短版

如果你的通知坏了,那是设置问题:提及标签、系统权限、电池优化、质量过滤器。没有工具能替你修,也不该有工具为此索要你的账号。

如果你想知道人们什么时候在讨论你的话题,通知做不到 —— 那是定时搜索,而难的部分不是取数,是★把量控制到告警仍然值得读★。

我们的 API 覆盖取数这一段 —— 支持完整操作符语法的搜索、每条推文都带互动数据所以你能在告警前判阈值、以及游标翻页。只读、固定按次价格、没有属于你的限流要管。

延伸阅读:监控的轮询 vs 流式 · 为什么引用和回复是不同集合 · 追踪标签活动 · 轮询频率的成本。