跳过内容
SEO Tools AI
SEO Tools AI注册

配方

从表格或 n8n 同步链接评分

大多数工具目录存储在电子表格、Airtable 数据库或小型数据库中。此配方将反向链接检查转化为列填充:每 2,000 行发起一次请求。

SEO Tools AI 研究团队 ·

纸制工人建造连接文件柜与道路的桥梁

五个步骤的配方

01

导出域名

提取列表的网站列,去除协议和路径,并删除重复项。重复项不会额外收费,但会使映射步骤变得混乱。

02

按 2,000 个一组进行分块

bulk_dr 每次调用最多接受 2,000 个域名。因此,5,000 行的表格需要三次调用。

03

发送并检查确认

调用 API,读取 JSON,如果 ok 为 false 则停止。记录 _credits 以便在每次运行后查看余额。

04

带日期写回

将评分和今天的日期存储在两列中。切勿用空值覆盖已有的良好值。

05

每月调度一次

在每月第一天运行。索引每月更新一次,因此更频繁的更新并无益处。

选择作业触发器

触发器决定了调用的频率,因此在构建映射之前请选择触发器。两种触发方式几乎涵盖所有目录场景。

每月第一天的调度是最简单的选项。它与索引更新节奏一致,且无需人工记忆操作。

每月刷新调度

首先放置调度触发器,设置为每月第一天,让它读取整个列表表。每次运行将根据行数生成一批 bulk_dr 调用。

即使表格很小也要保持调度。每月运行一次小型表格仅需一个信用点,且能保持评分的日期和时效性。

每新增一行的触发器

假设列表每隔几天新增一条。按新增行触发的触发器看似诱人,但每次调用都计费,因此逐行调用的成本高于每月一批调用。

如果需要快速获得评分,让新增行流程写入空 dr,由每月运行填充。这样无需每次新增都发起调用。

如果列表批量到达,将新增行在周末汇总为一批。这样只需一次调用,且表格不再仅每月更新一次。

标记已完成行的日期

对每个评分行存储 dr_checked_on。通过该日期过滤,运行将跳过本月已完成的内容,无需单独的队列。

当运行中途停止时,已标记的行保持标记。下次运行将从上次结束的地方继续,这是最经济的恢复方式。

自动化之前

首先手动检查五个列表。对每个列表使用免费的 overview 操作(无需密钥),并将结果与预期进行比较。

这能尽早发现常见意外:指向子域的列表、位于大型网站路径下的产品、或去年春天重定向的域名。评分属于域名,而非产品。

决定表格如何标记这些情况,例如添加一个显示 shares domain 的备注列。读者更容易接受注释,而不是看似错误的评分。

当五个样本看起来正常后,进入批量处理。字段参考 列出了各列,成本示例 展示了运行成本。

小型 Python 版本

需要 requests 包。这是作业结构的示例:先打印一个真实响应,然后将需要的字段映射到自定义列中。

python
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 文件文件夹,或作业需要流程难以处理的逻辑时,脚本更合适。上述脚本示例适用于此类情况。

将脚本放入版本控制,并将密钥保存在环境变量中。从同文件夹文件读取密钥的脚本在共享驱动器上容易泄露。

跳过难点的教程

许多视频展示了首次尝试即成功的流程,仅涉及三行数据。实际列表包含空白、重复项和异常域名,这些正是流程需要处理的地方。

首先使用自己的五个测试行构建流程。如果教程无法通过这五个测试,则该教程并未涵盖完整工作。

将流程交给他人时,包含这五个测试行作为样本。下一位使用者可以在接触真实数据前了解良好运行的样子。

错误含义

API 行为及同步作业应执行的操作。
信号含义作业执行操作
HTTP 401密钥缺失或无效停止,通知人工
HTTP 402信用点耗尽停止,保留旧评分,充值
ok 为 false调用未成功记录响应体,下次运行时重试
域名结果为空不在索引中保持单元格空白
纸制园丁在花园中扶正弯曲的植物茎

在运行之间保持表格整洁

同步作业的质量取决于其写入的表格。一些习惯可防止运行之间积累的缓慢损害。

大多数问题始于看似无害的编辑:在评分列上方插入列,或复制行导致域名悄然更改。

将原始响应保存在独立标签页

将每个原始响应保存在独立标签页,或保存为 JSON Lines(每行一个响应)。此副本允许在不产生额外付费调用的情况下重建可见列。

原始标签页还能回答编辑在六个月后提出的问题:API 在该日期返回了什么。

为每个原始标签页命名批次日期,以便在回滚时按顺序排序。

锁定标题行

冻结标题行,且不要在评分列上方插入列。指向 F 列的映射在插入列后会读取错误数据,且不会报错。

在映射中使用列名而非位置。名称在重排序后依然有效,而位置则不然。

运行前后统计行数

在运行前后将行数写入日志。两个数字的差异应仅包含预期添加的行,若差距过大则表明出错。

每月按评分列对表格排序,查看顶部和底部行。异常值通常指向映射到错误列表的域名。

先在副本上测试

复制表格,在对真实表格操作前对副本运行流程。复制表格无需成本。

覆盖真实评分的错误映射难以撤销,因为旧值已丢失。在第一次真实运行符合预期之前,保留副本。

仅在第二次调度运行与副本匹配后删除副本。连续两次干净运行比单次运行更具指示性。

首次真实运行前

  • 密钥位于平台凭据存储或环境变量中,而非工作流文本中。
  • 一次免费的 overview 调用已针对已知列表进行手动检查。
  • 已在表格副本上测试运行,且副本符合预期。
  • 作业对每个处理的评分旁边写入日期。
  • 状态 401 和 402 将停止作业并向人员发送消息。

同步问题

如果作业中途崩溃,如何避免重复付费?

在写入评分时旁边记录日期,下次运行跳过本月已标记的行。2,000 行的分块意味着崩溃最多损失一个信用点,风险极小,但此习惯可保持表格整洁。

非程序员能设置此流程吗?

大部分可以。n8n 或 Make 中的 HTTP Request 节点仅需 URL、密钥和列表。难点在于将响应转换为列,因此请先进行一次测试调用并查看 JSON,再构建映射。