---
title: "用关键词列表匹配评论"
description: "创建一个可复用的关键词列表，将其附加到条件节点，并了解编辑或删除活动依赖的列表时会发生什么。"
canonical: https://docs.afp.monster/zh-cn/guides/keyword-lists
updated: 2026-08-19
pageType: guide
---

关键词列表是一个命名词集合，你保存一次并指向多个活动。通过将节点的匹配类型设置为 **Keyword list** 将一个附加到条件节点，到达条件的每条消息都会与列表进行检查：匹配的消息离开 **Match** 输出，其他所有内容离开 **No Match**。编辑列表会改变所有指向它的条件节点。

![关键词列表对话框，包含一个命名列表和几个关键词，以及添加和删除关键词的控件](../../../../assets/screenshots/guides/keyword-lists/keyword-list-dialog.webp)

## 你需要什么

- 在画布上打开的活动，触发节点连接到条件节点。参见 [在画布上构建活动](/zh-cn/guides/build-a-campaign)。
- 你期望人们评论或发送的简短词集合。你可以稍后添加和移除关键词，无需触碰使用该列表的活动。

## 关键词列表包含什么？

两样东西：一个你通过它选择的名称，以及关键词本身。AFP 在列表保存时会清理关键词。

| 列表的部分 | 包含什么 | AFP 如何处理 |
|---|---|---|
| 名称 | 列表在每个关键词列表选择器中显示的标签 | 必须在你的账户可见的列表中唯一。重复的名称在保存时会被拒绝。 |
| 关键词 | 与评论或私信文本匹配的单词和短语 | 前导和尾随空格会被修剪，空白条目会被丢弃，重复条目会被合并为一个。没有关键词的列表会被拒绝。 |

列表在它们出现的所有地方按名称排序，管理器按页加载它们，搜索框按名称过滤——而不是按列表内的关键词过滤。

关键词是否必须作为完整单词出现，以及两个字符串如何比较，是匹配规则而不是列表设置。[关键词匹配规则](/zh-cn/reference/keyword-matching) 将它们与条件节点提供的其他匹配类型一起覆盖。

## 如何创建关键词列表？

列表在关键词列表管理器中创建，该管理器以对话框形式打开在应用上方，也作为自己的设置页面存在。在任何地方创建的列表都对你的账户可以访问的所有活动可用。

1. 打开关键词列表管理器。
2. 点击 **New keyword list**。
3. 为列表输入名称。
4. 输入关键词，每个单词或短语一个条目。
5. 保存列表。

保存的列表会立即出现在每个关键词列表选择器中，包括你即将配置的条件节点上的选择器。

两次保存会被拒绝，每次都有解释而不是静默失败：一个已被另一个可见列表使用的名称，以及一个没有关键词的列表。

## 如何将列表附加到条件节点？

1. 点击画布上的条件节点以打开其设置。
2. 将匹配类型设置为 **Keyword list**。
3. 从下拉列表中选择列表。它用你的账户可见的所有列表填充，按名称排序。
4. 要反转测试，打开反转匹配。 **Match** 输出然后接收包含*没有*任何关键词的消息。
5. 点击 **Save** 写入活动的活动图。

:::note
在节点设置中选择列表只会更改你浏览器中的活动。引用在保存活动时到达 AFP，每次保存都会写入活动图的新版本。新执行记录运行最新保存的版本。
:::

### 我可以将关键词列表附加到触发节点吗？

不可以——关键词匹配属于条件节点。触发节点决定哪些事件启动活动：监视哪篇帖子，以及一个人是否可以多次启动活动。它没有关键词设置。触发器只能连接到条件，所以条件是检查消息文本的地方。

```d2 title="Where a keyword list sits: the condition node's match type, deciding which branch runs"
direction: down
arrives: "评论或私信到达"
trigger: "触发节点\n哪些事件启动活动"
cond: "条件节点\n匹配类型：关键词列表" {shape: diamond}
actions: "你配置的操作"
other: "其他分支，或无"
arrives -> trigger -> cond
cond -> actions: Match
cond -> other: "No Match"
```

## 一个列表能否服务多个活动？

可以，这就是使用列表而不是在每个条件节点中输入词的原因。产品中每个关键词列表选择器读取相同的列表集合，所以一个列表可以支持任意数量的条件节点，跨越任意数量的活动和主页。

复用是双向的：一次编辑会改变所有指向该列表的条件节点。当两个活动需要分叉时，创建第二个列表而不是编辑共享列表。

列表属于一个账户。如果你的账户位于一个主账户之下，选择器会显示该主账户拥有的列表以及你自己的个人列表，且唯一名称检查覆盖这两组。参见 [在一个账户下管理社交账号](/zh-cn/guides/profiles-and-master-accounts)。

## 编辑活动正在使用的列表会发生什么？

编辑列表——重命名它、添加关键词、移除关键词——适用于所有引用它的活动，无需重新保存这些活动。运行与创建列表时相同的唯一名称检查，且编辑永远不会将列表在所有者之间移动。

新执行记录会立即使用编辑后的关键词：下一条到达指向该列表的条件节点的评论或私信会根据新词进行评判。

已经停在条件上等待回复的执行记录会在其整个生命周期中保留它开始时的关键词集合。在你的编辑之后到达的回复会根据旧词匹配，且这会在执行记录结束时结束。[测试和调试活动](/zh-cn/guides/test-and-debug-campaigns) 显示如何查看哪些执行记录停住了。

## 如果删除活动仍引用的列表会发生什么？

在活动直接引用列表时，删除会被拒绝：AFP 返回 `Can't remove this keyword list, because it's used for campaigns`，列表保留。删除列表对你的账户或社交账号没有任何影响——只有列表被移除。

:::caution
条件节点对列表的引用存在于活动已保存的活动图中，删除仅被条件节点引用的列表**不会**被拒绝。该条件然后找不到列表并将所有消息发送到其 **Match** 输出，所以一个曾经过滤的活动开始回复所有内容。在删除列表之前，将使用该列表的每个条件节点指向另一个列表或另一个匹配类型，并保存每个活动。
:::

## 为什么我的关键词列表没有匹配？

| 症状 | 原因 | 修复方法 |
|---|---|---|
| 每条消息都走 **Match** 分支 | 条件节点指向一个已被删除的列表，或一个没有关键词的列表——两者都会落入匹配 | 附加一个存在且有词列表，或更改匹配类型，然后保存活动 |
| 一条明显包含关键词的消息走 **No Match** 分支 | 反转匹配已开启，这会反转测试 | 关闭反转匹配并保存 |
| 保存列表因名称被拒绝 | 你的账户可见的另一个列表已使用该名称 | 重命名列表 |
| 保存列表因关键词被拒绝 | 提交列表时没有关键词条目 | 添加至少一个关键词，然后保存 |
| 你输入的关键词在保存的列表中缺失 | 空白条目会被丢弃，重复会在保存时合并 | 重新打开列表并检查它保留的关键词 |
| 编辑不影响正在进行中的会话 | 执行记录停在条件上，保留它开始时的关键词集合 | 等待该执行记录结束；下一个会使用新关键词 |
| 在列表管理器中搜索关键词找不到任何内容 | 搜索仅过滤列表名称 | 按列表名称搜索 |
| 条件从未运行 | 活动已保存但未启用，或触发器未触发 | 将活动切换为启用，然后读取其执行记录 |

## 相关

- [关键词匹配规则](/zh-cn/reference/keyword-matching) — 匹配类型以及如何比较消息文本。
- [测试和调试活动](/zh-cn/guides/test-and-debug-campaigns) — 确认条件走了哪个分支。
- [节点类型](/zh-cn/reference/node-types) — 你可以从调色板添加的每个节点。
- [入门](/zh-cn/start) — 从注册到活跃活动的路径。
