

# 如何比较固定 X 账号样本的粉丝增长

使用同一份固定名单和 2 个已保存的观测时点来比较粉丝增长。将粉丝数加权增长率与账号等权平均增长率分开呈现。

固定名单是指你在查看哪些账号涨粉之前选定并保存的账号列表。名单中的账号数量固定。观测时点是为这份名单保存的某次观测时间。配对样本组由名单中符合以下条件的账号组成：在起止 2 个观测时点的账号 ID 相同，且符合你设定的计数规则。

粉丝数加权增长率 = 净变化量之和 / 起始粉丝数之和。起始粉丝数越多的账号，对这个结果的影响越大。账号等权平均增长率则给每个纳入计算的账号相同的权重。这 2 个数值可能相差很大。这种差异并不是计算错误。

## 先检查 1 个已知账号

Actor 是托管运行的数据采集程序。Task 是保存好的输入预设。Actor 负责采集结果行。本文中的比较需要你自行完成。

使用 [X Profile Metrics Actor](https://apify.com/chronometrica/x-profile-metrics)。公开构建版本为 1.0.4。已保存的 [X Competitor Profile Comparison Task](https://apify.com/chronometrica/x-profile-metrics/examples/x-competitor-profile-comparison) 已于 2026-10-13T14:22:40Z 检查。公开 Task 只是初始输入，不能自动完成比较。

Task 的示例输入包含 3 个账号：

```json
{
  "profiles": [
    "https://x.com/OpenAI",
    "https://x.com/NASA",
    "https://x.com/elonmusk"
  ]
}
```

先检查 1 个已知账号

首次检查时，将整个列表替换为 1 个已知公开账号的 URL。使用输入键 `profiles`。不要使用 `startUrls`。Actor 也接受公开用户名。首次检查使用完整 URL 更清楚。

```json
{
  "profiles": [
    "https://x.com/OpenAI"
  ]
}
```

先检查 1 个已知账号

在依赖运行结果之前，先在该列表中填入你自己已知的公开账号 URL。Actor 会尝试为每个去重后的输入生成 1 行结果。

查看每行结果中的以下字段：`profileId`、`profileUrl`、`handle`、`followersCount`、`profileMetricStatus`、`status`、`failureCategory`、`statusReason` 和 `observedAt`。`profileId` 是稳定的账号身份标识。`handle` 是公开用户名。`observedAt` 是来源观测时间。`profileMetricStatus` 是一个对象。其中各指标键的值为 `exact` 或 `unavailable`。`unavailable` 表示计数并非精确值。

缺失的 `followersCount` 为 null。精确的 0 是真实计数。不要将 null 转成 0。否则，缺失记录的账号可能会被误认为是新账号，从而产生错误的净变化量。

运行摘要与结果行分开提供。查看 `inputCount`、`datasetRows`、`usefulRows`、`billableRows`、`failedRows`、`statusCounts` 和 `stopReason`。

一次新执行的单账号运行返回了已知且正确的 OpenAI `profileId`。其粉丝数为精确值。运行摘要显示：`inputCount` 为 1，`datasetRows` 为 1，`usefulRows` 为 1，`billableRows` 为 1，`failedRows` 为 0。`statusCounts` 显示 ok 为 1。`stopReason` 为 `inputs_exhausted`。这表示此次运行已处理完提供给它的全部输入。

这次运行证明，当前可以采集 1 个已知账号的数据。它不能证明对账号样本反复运行仍能保持准确。后续可以将名单分成多个独立且有数量上限的批次。每批最多可包含 1000 个输入。这是当前上限。单账号运行不能证明包含 1000 个输入的批次会成功。

Actor 不返回早期计数，不返回增长数值，也不返回粉丝身份。它不返回新增关注或取消关注各自的总量，不安排定时运行，也不保存名单的历史记录。它无法补采过去日期的数据。你必须自行保存起止 2 个观测时点的数据。

不要用这个独立的 `followersCount` 减去较早的 X Post Metrics `profileFollowers` 值。这些值来自不同来源。它们的差值不是经过测试验证的增长结果。

## 按 8 个步骤进行比较

1. 采集新计数之前，先明确比较要回答的问题。在查看哪些账号涨粉之前，保存固定名单。保留这份原始名单。在每个观测时点报告覆盖情况。覆盖数量是指名单中具有可用结果行的账号数量。不断变化的热门账号名单回答的是另一个问题。从已经增长的账号中选出的名单回答的也是另一个问题。开始后，不要改用上述任何一类名单。
2. 在每个要保存的观测时点，采集各个已知账号的当前快照。快照就是你在该时间保存的结果行。Actor 无法补采过去日期的数据。你必须自行保留早期结果行。有关保留旧记录和检查时间间隔的方法，请参阅 [Facebook 帖子指标历史记录](https://chronometrica.com/zh-Hans/articles/facebook%E5%B8%96%E5%AD%90%E6%8C%87%E6%A0%87%E9%9A%8F%E6%97%B6%E9%97%B4%E5%8F%98%E5%8C%96/)页面。该页面仅用于指导保存记录和检查时间间隔。请用本文的步骤决定哪些账号保留在配对样本组中，以及如何汇总计数。
3. 只有当 2 行的 `profileId` 均非空且相同时，才将它们配对。同一个 `profileId` 即使用户名的拼写变了，仍可配对。相同用户名对应不同 `profileId` 则属于冲突。不要对有冲突的记录进行配对。经过取整的计数或标为 `unavailable` 的计数都不是精确值。将它们排除在 2 个增长汇总指标之外。同时排除失败行、缺失行和没有起始计数的账号。[不要用旧计数替换本次返回的 null](/zh-Hans/articles/%E5%B0%86%E6%9C%89%E6%9D%A5%E6%BA%90%E4%BE%9D%E6%8D%AE%E7%9A%84-x-%E4%B8%AA%E4%BA%BA%E8%B5%84%E6%96%99%E7%A0%94%E7%A9%B6%E5%AD%98%E5%85%A5%E6%99%BA%E8%83%BD%E4%BD%93%E8%AE%B0%E5%BF%86/)。不要在不作说明的情况下，将本次新采集成功的账号加入配对样本组。
4. 2 个汇总指标必须使用相同的起始观测时点和结束观测时点，也必须使用相同的精确计数规则。来源观测时间是 `observedAt`。时间间隔是从起始 `observedAt` 到结束 `observedAt` 的时长。“每周”这类标签不是来源观测时间。如果某个账号覆盖的时长明显更长或更短，将它放入另一个分组。不要合并覆盖不同时段的分组。
5. 汇总计数之前，先记录配对样本组和覆盖情况。对每个纳入计算的账号，净变化量 = 结束计数 - 起始计数。起始计数不为 0 时，相对增长率 =（结束计数 - 起始计数）/ 起始计数。相对增长率就是净变化量除以起始计数。起始计数精确为 0 的账号仍可计算净变化量，但其相对增长率无法用百分比表示，因为不能除以 0。净变化量可能为负数。这可能是粉丝减少，也可能是计数被修订。它不能说明谁取消了关注，也不能解释计数变化的原因。
6. 选择一个起始计数精确且不为 0 的样本组。2 个汇总指标都使用这个相同的样本组、相同的精确计数和相同的时间分组。粉丝数加权增长率 = 净变化量之和 / 起始计数之和。权重指单个账号对汇总数值的影响程度。起始计数越大，权重越高。账号等权平均增长率是同一样本组中各账号相对增长率的平均值。这个平均值就是账号等权均值。平均值的计算方法是将所有数值相加，再除以数值的个数。每个纳入计算的账号只计 1 次。小账号的增长百分比可能很高，但对总量的贡献仍然很小。加权汇总结果会更接近大账号的增长率。账号等权平均值则会向小账号的增长率靠近。在每个数值旁标明样本组名称和权重规则。不要给这 2 个汇总指标起相同的名称。
7. 将起始计数精确为零的账号排除在百分比计算样本组之外。你仍可展示它们的净变化量。缺失和失败的账号也应在汇总指标之外单独展示。如果采集成功的账号集合发生变化，汇总结果也可能变化。即使每个纳入计算的账号本身都没有变化，也可能出现这种情况。报告纳入计算的账号数量，并报告每种排除状态。不要只报告汇总数值。上述汇总指标均不统计去重后的新增粉丝人数，不评判受众质量，也不表明变化由某条帖子引起。
8. 提供每个账号的配对记录、名单覆盖情况，以及明确命名的 2 个汇总指标。比较后续时段时，保留相同的账号和相同的观测时点规则。如果账号发生变化，明确展示这项变化。不要将这份名单的增长视为所有 X 账号的增长。不要指望 Actor 替你监测这份名单。不要将这份选定的名单视为能够证明更广泛总体情况的证据。

## 比较一份原创虚构名单

本节中的所有账号、ID、时间和计数均为原创虚构内容。它们不是 Actor 输出，也不是产品运行结果。本节没有实际运行任何粉丝历史面板采集。

精确计数配对行的假定起始 `observedAt` 为 2026-09-15T15:00:00Z。同一批行的假定结束 `observedAt` 为 2026-10-13T15:00:00Z。ProfileA、ProfileB 和 ProfileC 均使用这 2 个时间。它们在起止 2 个观测时点的 `status` 均为 ok。它们在 `profileMetricStatus` 中的 followers 值均为 `exact`。这些行没有记录任何失败。

下文中的“未知”表示未观测到该值。未知不等于 0。null 表示计数缺失。null 不等于 0。

| 名单条目 | 用户名 | profileId | 起始 followersCount | 结束 followersCount | followers 状态 | 净变化量 | 纳入范围 |
| --- | --- | --- | --- | --- | --- | --- | --- |
| ProfileA | ProfileA | 2 个时点均为 fic-A | 100 | 120 | 2 个时点均为 exact | 20 | 净变化量计算和百分比计算样本组 |
| ProfileB | ProfileB | 2 个时点均为 fic-B | 1000 | 1010 | 2 个时点均为 exact | 10 | 净变化量计算和百分比计算样本组 |
| ProfileC | ProfileC | 2 个时点均为 fic-C | 0 | 12 | 2 个时点均为 exact | 12 | 仅计算净变化量 |
| ProfileD | ProfileD | 未知 | null | 未知 | 起始计数缺失 | 无 | 已排除 |
| ProfileE | ProfileE | 未知 | 未知 | null | unavailable；本次计数采集失败 | 无 | 已排除 |
| ProfileF | ProfileF | 起始为 fic-F-1，结束为 fic-F-2 | 未知 | 未知 | 未使用；ID 冲突 | 无 | 已排除 |

ProfileC 的起始计数精确为 0。这个 0 是真实计数。ProfileD 没有起始计数，因此没有基线。基线就是起始计数。它的结束计数未知，也未补填。ProfileE 本次计数采集失败。它的结束 `followersCount` 为 null，followers 状态为 `unavailable`。`failureCategory` 和 `statusReason` 标明了这次失败。这些字段的确切文本不属于本虚构示例，因此这里不作编造。ProfileF 保留了 2 个 ID，因为用户名相同，但 ID 不同。它的计数仍为未知。将这项冲突排除在计算之外。不要在不作说明的情况下选用其中 1 个 ID。

接下来的说明同样是原创虚构内容，并不是名单中的第七个条目。起始用户名 AlphaNews 和结束用户名 Alpha_News 的 `profileId` 都是 fic-same。检查 ID 后，将这两行配对。用户名拼写变化并不表示换了一个人。名单仍有六个条目。

可用于计算净变化量的配对账号有 3 个，名单共 6 个账号：ProfileA、ProfileB 和 ProfileC。基线非零的百分比计算样本组有 2 个账号，名单共 6 个账号：ProfileA 和 ProfileB。不要将这称为完全覆盖。

ProfileA 的净变化量 = 120 - 100 = 20。ProfileA 的相对增长率 = (120 - 100) / 100 = 20%。ProfileB 的净变化量 = 1010 - 1000 = 10。ProfileB 的相对增长率 = (1010 - 1000) / 1000 = 1%。

百分比计算样本组由 ProfileA 和 ProfileB 组成。起始计数之和 = 100 + 1000 = 1100。结束计数之和 = 120 + 1010 = 1130。净变化量之和 = 1130 - 1100 = 30。这等于 20 + 10。粉丝数加权增长率 = 30 / 1100，约为 2.72727%。账号等权平均增长率 = (20% + 1%) / 2 = 10.5%。

这 2 个结果对应不同的目标量。目标量是指明确定义的某个量。粉丝数加权增长率给 ProfileB 更高的权重，因为 1000 大于 100。账号等权平均增长率则给 20% 和 1% 相同的权重。这 2 个数值不能相互替代。

ProfileC 从 0 增至 12。其净变化量 = 12 - 0 = 12。这个净变化量有效。其相对增长率 = (12 - 0) / 0。这个值无定义。将 ProfileC 排除在由 2 个账号组成的百分比计算样本组之外。不要把 12 加入 1100 的起始计数之和。

| 汇总指标名称 | 样本组 | 起始计数之和 | 结束计数之和 | 净变化量之和 | 具体计算 |
| --- | --- | --- | --- | --- | --- |
| 粉丝数加权增长率 | 仅 ProfileA 和 ProfileB | 1100 | 1130 | 30 | 30 / 1100 = 约 2.72727% |
| 账号等权平均增长率 | 仅 ProfileA 和 ProfileB | 未使用 | 未使用 | 未使用 | (20% + 1%) / 2 = 10.5% |

百分比计算样本组有 2 个账号。净变化量计算集合有 3 个账号。名单有 6 个账号。不要将净变化量之和 30 理解为 30 个去重后的不同用户。这些记录没有说明谁关注了账号，也没有说明谁取消了关注。它们不表明变化由某条帖子引起。唯一有实际测量结果的采集检查，是上一节中的单账号运行。

## 下一步

汇总任何计数之前，先为一份固定名单及其配对样本组命名。然后根据你要回答的问题，选择粉丝数加权增长率或账号等权平均增长率。使用 [X Profile Metrics Actor](https://apify.com/chronometrica/x-profile-metrics) 采集结果行。从 [X Competitor Profile Comparison Task](https://apify.com/chronometrica/x-profile-metrics/examples/x-competitor-profile-comparison) 开始。仅使用 [Facebook 帖子指标历史记录](https://chronometrica.com/zh-Hans/articles/facebook%E5%B8%96%E5%AD%90%E6%8C%87%E6%A0%87%E9%9A%8F%E6%97%B6%E9%97%B4%E5%8F%98%E5%8C%96/)页面来指导保存观测记录和检查时间间隔。

## 来源和延伸阅读

- [X Profile Metrics Actor](https://apify.com/chronometrica/x-profile-metrics)
- [X Competitor Profile Comparison Task](https://apify.com/chronometrica/x-profile-metrics/examples/x-competitor-profile-comparison)
- [Facebook 帖子指标历史记录](https://chronometrica.com/zh-Hans/articles/facebook%E5%B8%96%E5%AD%90%E6%8C%87%E6%A0%87%E9%9A%8F%E6%97%B6%E9%97%B4%E5%8F%98%E5%8C%96/)
- [有没有 Twitter 监测工具（免费或付费）？](https://www.reddit.com/r/socialmedia/comments/nogpj5/is_there_a_twitter_monitoring_toolfree_or_paid/)