配方
从表格或 n8n 同步链接评分
大多数工具目录存储在电子表格、Airtable 数据库或小型数据库中。此配方将反向链接检查转化为列填充:每 2,000 行发起一次请求。
SEO Tools AI 研究团队 ·

五个步骤的配方
导出域名
提取列表的网站列,去除协议和路径,并删除重复项。重复项不会额外收费,但会使映射步骤变得混乱。
按 2,000 个一组进行分块
bulk_dr 每次调用最多接受 2,000 个域名。因此,5,000 行的表格需要三次调用。
发送并检查确认
调用 API,读取 JSON,如果 ok 为 false 则停止。记录 _credits 以便在每次运行后查看余额。
带日期写回
将评分和今天的日期存储在两列中。切勿用空值覆盖已有的良好值。
每月调度一次
在每月第一天运行。索引每月更新一次,因此更频繁的更新并无益处。
选择作业触发器
触发器决定了调用的频率,因此在构建映射之前请选择触发器。两种触发方式几乎涵盖所有目录场景。
每月第一天的调度是最简单的选项。它与索引更新节奏一致,且无需人工记忆操作。
每月刷新调度
首先放置调度触发器,设置为每月第一天,让它读取整个列表表。每次运行将根据行数生成一批 bulk_dr 调用。
即使表格很小也要保持调度。每月运行一次小型表格仅需一个信用点,且能保持评分的日期和时效性。
每新增一行的触发器
假设列表每隔几天新增一条。按新增行触发的触发器看似诱人,但每次调用都计费,因此逐行调用的成本高于每月一批调用。
如果需要快速获得评分,让新增行流程写入空 dr,由每月运行填充。这样无需每次新增都发起调用。
如果列表批量到达,将新增行在周末汇总为一批。这样只需一次调用,且表格不再仅每月更新一次。
标记已完成行的日期
对每个评分行存储 dr_checked_on。通过该日期过滤,运行将跳过本月已完成的内容,无需单独的队列。
当运行中途停止时,已标记的行保持标记。下次运行将从上次结束的地方继续,这是最经济的恢复方式。
自动化之前
首先手动检查五个列表。对每个列表使用免费的 overview 操作(无需密钥),并将结果与预期进行比较。
这能尽早发现常见意外:指向子域的列表、位于大型网站路径下的产品、或去年春天重定向的域名。评分属于域名,而非产品。
决定表格如何标记这些情况,例如添加一个显示 shares domain 的备注列。读者更容易接受注释,而不是看似错误的评分。
小型 Python 版本
需要 requests 包。这是作业结构的示例:先打印一个真实响应,然后将需要的字段映射到自定义列中。
import csv, requests
KEY = "sk_live_..."
BASE = "https://seotoolsai.org/api.php"
rows = list(csv.DictReader(open("listings.csv")))
domains = sorted({r["domain"] for r in rows})
for i in range(0, len(domains), 2000):
chunk = domains[i:i + 2000]
r = requests.post(BASE, params={"action": "bulk_dr", "key": KEY},
data={"domains": ",".join(chunk)}, timeout=60)
if r.status_code in (401, 402):
raise SystemExit(f"stop: HTTP {r.status_code}")
data = r.json()
if not data.get("ok"):
raise SystemExit("api said not ok")
print(data["_credits"]) # cost and remaining balance
open(f"raw_{i}.json", "w").write(r.text)
在 Google Sheets 或 n8n 中操作
Sheets 可以通过 Apps Script 的 UrlFetchApp 调用 URL,n8n 拥有 HTTP Request 节点。两者与上述脚本功能相同。
在 n8n 中,首先放置调度触发器,然后是读取表格或表的节点,接着是构建 2,000 个一组分组的拆分步骤,最后是 HTTP Request。添加一个最终节点将评分和日期写回。
将密钥保存在平台的凭据存储中,而非工作流文本中。工作流会被分享、复制并粘贴到论坛中,随文本粘贴的密钥会导致资金消耗。
无代码或脚本:哪种形式适合您的团队
两种路径发起相同的调用。区别在于一年后谁负责维护流程,以及向该人解释流程的难易程度。
选择几个月后仍易读的形式。一个无人能懂的复杂流程不如一个大家都能遵循的简单脚本。
一个你能向下一位编辑解释的流程
一个带有四个标记节点(触发、读取、分批、写回)的简短 n8n 流程易于交接。根据节点功能命名,而非使用默认标签。
避免为边缘情况堆叠多个分支。每个分支都是域名可能获得错误评分的额外风险点。
脚本何时适用
当输入是 CSV 文件文件夹,或作业需要流程难以处理的逻辑时,脚本更合适。上述脚本示例适用于此类情况。
将脚本放入版本控制,并将密钥保存在环境变量中。从同文件夹文件读取密钥的脚本在共享驱动器上容易泄露。
跳过难点的教程
许多视频展示了首次尝试即成功的流程,仅涉及三行数据。实际列表包含空白、重复项和异常域名,这些正是流程需要处理的地方。
首先使用自己的五个测试行构建流程。如果教程无法通过这五个测试,则该教程并未涵盖完整工作。
将流程交给他人时,包含这五个测试行作为样本。下一位使用者可以在接触真实数据前了解良好运行的样子。
错误含义
| 信号 | 含义 | 作业执行操作 |
|---|---|---|
| HTTP 401 | 密钥缺失或无效 | 停止,通知人工 |
| HTTP 402 | 信用点耗尽 | 停止,保留旧评分,充值 |
ok 为 false | 调用未成功 | 记录响应体,下次运行时重试 |
| 域名结果为空 | 不在索引中 | 保持单元格空白 |

在运行之间保持表格整洁
同步作业的质量取决于其写入的表格。一些习惯可防止运行之间积累的缓慢损害。
大多数问题始于看似无害的编辑:在评分列上方插入列,或复制行导致域名悄然更改。
将原始响应保存在独立标签页
将每个原始响应保存在独立标签页,或保存为 JSON Lines(每行一个响应)。此副本允许在不产生额外付费调用的情况下重建可见列。
原始标签页还能回答编辑在六个月后提出的问题:API 在该日期返回了什么。
为每个原始标签页命名批次日期,以便在回滚时按顺序排序。
锁定标题行
冻结标题行,且不要在评分列上方插入列。指向 F 列的映射在插入列后会读取错误数据,且不会报错。
在映射中使用列名而非位置。名称在重排序后依然有效,而位置则不然。
运行前后统计行数
在运行前后将行数写入日志。两个数字的差异应仅包含预期添加的行,若差距过大则表明出错。
每月按评分列对表格排序,查看顶部和底部行。异常值通常指向映射到错误列表的域名。
先在副本上测试
复制表格,在对真实表格操作前对副本运行流程。复制表格无需成本。
覆盖真实评分的错误映射难以撤销,因为旧值已丢失。在第一次真实运行符合预期之前,保留副本。
仅在第二次调度运行与副本匹配后删除副本。连续两次干净运行比单次运行更具指示性。
首次真实运行前
- 密钥位于平台凭据存储或环境变量中,而非工作流文本中。
- 一次免费的
overview调用已针对已知列表进行手动检查。 - 已在表格副本上测试运行,且副本符合预期。
- 作业对每个处理的评分旁边写入日期。
- 状态 401 和 402 将停止作业并向人员发送消息。
同步问题
如果作业中途崩溃,如何避免重复付费?
在写入评分时旁边记录日期,下次运行跳过本月已标记的行。2,000 行的分块意味着崩溃最多损失一个信用点,风险极小,但此习惯可保持表格整洁。
非程序员能设置此流程吗?
大部分可以。n8n 或 Make 中的 HTTP Request 节点仅需 URL、密钥和列表。难点在于将响应转换为列,因此请先进行一次测试调用并查看 JSON,再构建映射。