- X 的屏蔽词(静音词)隐藏推文。它们从不屏蔽,也从不看昵称、用户名或简介。
- X Spam Blocker 把一个关键词变成一条屏蔽候选。你确认,然后它才屏蔽。
- 先匹配用户名和昵称。正文是精度差得最远的字段。
- 凡是无辜的人也会用的词,都用前瞻正则再要求第二个条件。
「按关键词屏蔽账号」听起来像 X 该有的一项设置,可它没有。X 有的是屏蔽词(静音词),那是另一件事,解决的是另一个问题。这篇讲的是这条线画在哪里,以及怎样写出能抓住垃圾号、又不误伤正在谈论他们的人的关键词和正则。这就是推特关键词屏蔽真正要做的事。
屏蔽词(静音词)实际做什么
X 的屏蔽词(静音词)在:设置 → 隐私和安全 → 静音和屏蔽 → 屏蔽词(静音词)。你添加一个词或短语,选择它作用于时间线、通知还是两边,是否只对你未关注的人生效,以及持续多久。
在这些限度之内它很好用,也是对付一个你已经厌倦的话题的合适工具。但注意它碰不到的地方:
- 它隐藏推文。账号本身不动,仍然可以关注你、回复你、引用你、给你发私信。
- 它匹配的是推文正文。它不匹配昵称、用户名或简介,而机器人最可靠的自我宣传就写在那里。
- 没有任何办法把一次命中变成隐藏以外的动作。
- 静音是按词来的,而且要永久维护:新的垃圾脚本永远需要一个新词。
关键词静音和关键词屏蔽
| X 的屏蔽词(静音词) | 关键词屏蔽(本插件) | |
|---|---|---|
| 对推文的效果 | 对你隐藏 | 作者被屏蔽后,从页面上移除 |
| 对账号的效果 | 没有 | 已屏蔽:不能关注、回复、引用或给你发私信 |
| 匹配的字段 | 正文 | 正文、昵称、用户名、简介 |
| 模式 | 词和短语 | 子串,加上完整的 JavaScript 正则 |
| 会回溯生效 | 不会 | 不会,只处理时间线上已经出现的内容 |
| 确认 | 不适用 | 先过目候选列表,然后才会执行 |
| 可撤销 | 删掉这个词 | 在日志里点「解除」,一次即可 |
它们是互补,不是竞争。静音一个话题,屏蔽一个账号。如果烦你的是一个主题,屏蔽词(静音词)更干净。如果烦你的是一串明天会换一条推文再来的账号,能了结这件事的是关键词屏蔽。
该匹配哪个字段
在设置里,四个字段是各自独立的开关,这个选择比规则怎么写更重要。按「命中是不是你希望的那个意思」从高到低:
- 用户名。 用户名是刻意选的,几乎不会碰巧。用户名里的
airdrop近乎必中。 - 昵称。 几乎一样好,仿冒者和赠送机器人会把说辞放在这里。
- 简介。 适合站外联系方式和推广用语。只有插件已经见过其主页数据的账号才有,所以把它当作加分,不要当作基础。
- 正文。 最显眼的选择,也是最差的一个。含糊的东西都在这里:批评、引用、玩笑,以及有人在问这件事是不是骗局。
具体一点:开着正文时,关键词 giveaway 既会抓到机器人,也会抓到写下 “another fake giveaway in my replies” 的人。关掉正文、打开用户名,它会抓到 @Giveaway_King2026,放过那句抱怨。
写出站得住的关键词
关键词是普通的、不区分大小写的子串:没有语法,一行一个。三个习惯能让它们可靠:
- 优先用短语,而不是单词。
claim your reward是安全的,claim不是。 - 记住子串不认词边界。
art会匹配 “start”、“particle” 和 “@artist”。如果你要的是这个词本身,用正则框和\bart\b。 - 一个想法一条规则。 能用一句话说清的规则,以后才修得了。又长又巧的规则,第一次误伤就会被整段删掉。
插件还自带一份很小的内置列表,针对某一类回复垃圾,在第一次运行时并入你的词库。它只做加法:你删掉其中任何一行,就会保持删除。
你需要的那一点正则
模式放进正则框,一行一个,使用 JavaScript 语法,两边不要加斜杠。五样东西几乎能覆盖全部:
| 片段 | 含义 | 示例 |
|---|---|---|
| | 或者 | airdrop|giveaway|presale |
\b | 词边界 | \bdm\b:「dm」,而不是「admin」 |
? | 可选字符 | signals?:signal 或 signals |
.* | 任意内容、任意长度 | free.*mint |
(?=…) | 还必须包含 | 见下文 |
这个引擎有两个特性值得记住。模式不区分大小写,所以永远不要写 [Aa]irdrop。而且它们在编译时不带 Unicode 标志,因此 \p{L} 一类写法没有用。要覆盖非 ASCII 字符,请用明确的字符范围。
双条件写法
这是唯一值得学的一种构造,因为它能把一个太宽的词变成一条安全的规则。(?=…) 是前瞻:它断言某样东西存在,但不消耗它。连续几个,意思就是「这些都必须在某处出现」。
(?=.*airdrop)(?=.*\b(dm|telegram)\b) 读作:提到了空投,并且把你往私人渠道里推。骗局两件都做。抱怨骗局的人只做第一件、不做第二件,于是碰不到。任何有歧义的词都可以这样救回来:给它配一个陪同条件,垃圾总有、日常说话很少有。比如一个联系渠道、像 claim 这样的祈使,或者一个短链接。
匹配是针对正文、昵称、用户名和简介拼在一起的文本,这有两个后果。一对前瞻的两半可以由不同字段满足:用户名里含有 airdrop,加上一条写着 “DM me” 的推文,就是一次命中。而且 ^ 和 $ 并不表示推文的开头和结尾,所以请写不锚定的模式。
规则看到文本之前发生了什么
你的规则不是只对着页面上的原始文本测试。插件会做出三个版本,逐个尝试:
- 原始文本,和页面上完全一样。因此写成要匹配标点或全角字符的规则仍然有效。
- 清理后的版本:去掉隐形字符,再做 Unicode 规范化,让全角、带圈和上下标字母折回普通字母。
- 收紧后的版本:在清理后的文本上去掉每一个空格、标点和表情,只留下字母和数字。
第三个版本就是为什么垃圾号用表情把一个词拆开时,关键词仍然能命中。你的关键词会经过同样的处理,所以你从一条垃圾回复里原样复制出来的短语,连隐形字符一起,仍然能当过滤用。为什么需要这些,写在隐形字符手法里。
白名单是过滤的一部分,不是安全网
词库里的第三个框接受用户名,一行一个,不带 @。标签是「白名单 handle(一行一个,不带 @)」。这些账号永远不会被标出,也永远不会出现在候选里,无论他们发什么。
把它当成第一步,而不是事后补救。最容易被一条宽规则抓到的,是你看得最多的账号:圈子里讨论骗局的人、引用机器人的人,以及用着同一套词汇的人。花三十秒把他们放进白名单,你才有余地把规则写得更狠。
信任一条规则之前先测试
- 加上规则,开着扫描,并让全自动保持关闭。这是默认值,也是它成为默认值的原因。
- 刷一段热闹的回复区,看着候选。每一行都会写出标出它的规则。
- 先读列表,先不要屏蔽。一条规则抓出三个明显的机器人、外加一个你认识的人,就需要先加陪同条件再用。
- 只有一条规则连续两次都给出干净的列表,才考虑让它不用过目就运行。即便如此,你在意的账号也要先放进白名单。
围绕这件事的完整流程,包括节奏和限流,写在如何在推特上批量屏蔽账号里。
常见问题
X 自己能按关键词屏蔽账号吗?
不能。X 可以静音词语,把匹配的推文从时间线和通知里隐藏,也可以手工屏蔽一个你点名的账号。它没有任何功能能把一个关键词变成一次屏蔽,屏蔽词(静音词)也从不对照昵称或简介匹配。
X 允许设置多少个屏蔽词(静音词)?
X 没有公布一个硬性数字,实际中人们会维护很长的列表。限制不在数量,而在于一个屏蔽词永远只是隐藏一条推文。那个账号仍然可以关注你、回复你、给你发私信。
关键词规则会作用到我关注的账号吗?
插件看得到的每一条推文都会,包括你关注的账号。白名单存在的原因正是这个。把你在看的账号放进去,任何规则都碰不到他们。
这里的正则区分大小写吗?
不区分。模式在编译时不区分大小写,所以不需要 [Aa] 这样的字符类,也不需要行内标志。不过它们在编译时不带 Unicode 标志,因此 \p{...} 属性转义不会生效。
关键词会匹配到另一个词里面的片段吗?
会。关键词是普通子串,所以 art 会匹配 start 和 @artist。如果这会造成误伤,把这个词放进正则框,并用 \b 词边界包起来。
确认之后,在 X 上批量屏蔽垃圾号
免费 Chrome 插件。无需账号、没有服务器、没有追踪。


