Receita
Sincronize as pontuações de links de uma planilha ou n8n
A maioria dos diretórios de ferramentas vive em uma planilha, uma base do Airtable ou um pequeno banco de dados. Esta receita transforma uma verificação de backlink em um preenchimento de coluna: uma solicitação por 2.000 linhas.
Equipe de pesquisa da SEO Tools AI ·

A receita em cinco etapas
Exporte os domínios
Pegue a coluna de sites dos seus listados, remova o protocolo e os caminhos, e elimine duplicatas. Duplicatas não custam nada a mais, mas tornam a etapa de mapeamento confusa.
Divida em grupos de 2.000
O bulk_dr aceita até 2.000 domínios por chamada. Uma planilha de 5.000 linhas, portanto, precisa de três chamadas.
Envie, verifique ok
Chame a API, leia o JSON e pare se ok for falso. Registre _credits para ver o saldo após cada execução.
Escreva de volta com uma data
Armazene a classificação e a data de hoje em duas colunas. Nunca sobrescreva um bom valor com um vazio.
Agende uma vez por mês
Execute no primeiro dia do mês. O índice muda aproximadamente mensalmente, então executar com mais frequência não traz ganhos.
Escolha o que inicia o trabalho
O gatilho decide com que frequência as chamadas acontecem, então escolha-o antes de construir o mapeamento. Dois tipos de início cobrem quase todos os diretórios.
Um agendamento no primeiro dia do mês é a opção mais simples. Ele corresponde ao ritmo do índice, e ninguém precisa lembrar de um botão.
Um agendamento para a atualização mensal
Coloque um gatilho de agendamento primeiro, defina-o para o primeiro dia de cada mês e deixe-o ler toda a tabela de listados. Cada execução faz então um lote de chamadas bulk_dr, dimensionado conforme o número de linhas.
Mantenha o agendamento mesmo quando a tabela for pequena. Um trabalho mensal que roda em uma planilha pequena custa um crédito, e mantém as pontuações datadas e atualizadas.
Um gatilho em cada nova linha
Suponha que os listados cheguem um de cada vez, a cada poucos dias. Um gatilho que dispara por nova linha é tentador, mas cada chamada é cobrada individualmente, então uma chamada por linha custa mais do que um lote mensal.
Se você quiser a pontuação rapidamente, deixe o fluxo de nova linha escrever um dr em branco e deixe a execução mensal preenchê-lo. A linha recebe seu número sem uma chamada para cada chegada.
Se os listados chegarem em lotes, agrupe as novas linhas em um lote no final da semana. Isso custa uma chamada, e a planilha não muda apenas uma vez por mês.
Uma data que marca linhas concluídas
Armazene dr_checked_on em cada linha que você pontuar. Uma execução que começa com um filtro nessa data pula o que já foi feito este mês, e não é necessária uma fila separada.
Quando uma execução para no meio, as linhas já carimbadas permanecem carimbadas. A próxima execução retoma de onde a última terminou, que é a recuperação mais barata possível.
Antes de automatizar qualquer coisa
Execute a verificação manualmente em cinco listados primeiro. Use a ação gratuita overview para cada uma, que não precisa de chave, e compare o que você vê com o que esperava.
Isso captura as surpresas comuns cedo: um listado que aponta para um subdomínio, um produto que vive em um caminho de um site maior, um domínio que fez redirecionamento na primavera passada. Uma classificação pertence a um domínio, não a um produto.
Decida como sua planilha marca esses casos, por exemplo, com uma coluna de nota que lê shares domain. Os leitores perdoam uma nota de rodapé muito mais facilmente do que uma pontuação que parece errada.
Quando os cinco parecerem razoáveis, passe para o lote. Sua referência de campo lista as colunas, e o exemplo de custo mostra quanto custa uma execução.
Uma versão pequena em Python
Precisa do pacote requests. É um esboço para a forma do trabalho: imprima uma resposta real primeiro, depois mapeie os campos que você precisa para suas próprias colunas.
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)
Fazendo no Google Sheets ou n8n
O Sheets pode chamar uma URL do Apps Script com UrlFetchApp, e o n8n tem um nó de Solicitação HTTP. Ambos fazem a mesma coisa que o script acima.
No n8n, coloque um gatilho de agendamento primeiro, depois um nó que lê sua planilha ou tabela, depois uma etapa de divisão de itens que constrói grupos de 2.000, depois a Solicitação HTTP. Adicione um nó final que escreve a classificação e a data de volta.
Mantenha a chave no armazenamento de credenciais da plataforma, não no texto do workflow. Workflows são compartilhados, copiados e colados em fóruns, e uma chave colada junto é dinheiro gasto.
Sem código ou um script: qual forma se adapta à sua equipe
Ambas as rotas fazem a mesma chamada. A diferença é quem terá que manter o fluxo daqui a um ano, e quão fácil é explicá-lo para essa pessoa.
Escolha a forma que você ainda consegue ler após uma pausa de vários meses. Um fluxo inteligente que ninguém entende é pior do que um script simples que todos podem seguir.
Um fluxo que você pode explicar ao próximo editor
Um fluxo curto do n8n com quatro nós rotulados é fácil de entregar: gatilho, ler, lote, escrever de volta. Nomeie cada nó após o que ele faz, não após o rótulo padrão.
Evite empilhar muitos ramos para casos extremos. Cada ramo é mais um lugar onde um domínio pode receber a pontuação errada.
Quando um script justifica seu lugar
Um script faz sentido quando a entrada é uma pasta de arquivos CSV, ou quando o trabalho precisa de lógica que um fluxo lida de forma inadequada. O esboço acima se encaixa nesse caso.
Coloque o script em controle de versão e mantenha a chave em uma variável de ambiente. Um script que lê sua chave de um arquivo na mesma pasta é um vazamento esperando por uma unidade compartilhada.
Tutoriais que pulam a parte difícil
Muitos vídeos mostram um fluxo que funciona na primeira tentativa com três linhas. Listados reais têm espaços em branco, duplicatas e domínios estranhos, e é aí que o fluxo precisa de atenção.
Construa o fluxo em suas próprias cinco linhas de teste primeiro. Se um tutorial não sobreviver a isso, o tutorial nunca foi o trabalho inteiro.
Quando você entregar o fluxo para outra pessoa, inclua as cinco linhas de teste como amostra. A próxima pessoa pode ver como uma execução boa se parece antes de tocar nos dados reais.
O que os erros significam
| Sinal | Significado | O que o trabalho faz |
|---|---|---|
| HTTP 401 | Chave ausente ou inválida | Pare, alerte um humano |
| HTTP 402 | Créditos esgotados | Pare, mantenha pontuações antigas, recarregue |
ok é falso | A chamada não teve sucesso | Registre o corpo, tente novamente na próxima execução |
| Resultado vazio para um domínio | Não está no índice | Deixe a célula em branco |

Mantenha a planilha limpa entre execuções
Um trabalho de sincronização é tão bom quanto a planilha para a qual ele escreve. Alguns hábitos impedem o dano lento que se acumula entre uma execução e a próxima.
A maioria dos problemas começa com uma edição inocente: uma coluna inserida acima da pontuação, ou uma linha copiada que muda silenciosamente um domínio.
Mantenha respostas brutas em sua própria aba
Armazene cada resposta bruta em sua própria aba, ou como JSON Lines com uma resposta por linha. Essa cópia permite reconstruir as colunas visíveis sem uma segunda chamada paga.
Uma aba bruta também responde à pergunta que um editor faz seis meses depois: o que a API retornou naquela data.
Nomeie cada aba bruta com a data do lote, para que as cópias sejam ordenadas quando você rolar para trás através delas.
Bloqueie a linha de cabeçalho
Congele a linha de cabeçalho e nunca insira uma coluna acima da pontuação. Um mapeamento que aponta para a coluna F lerá os dados errados após uma inserção, e fará isso sem nenhum erro.
Nomeie as colunas no mapeamento, não por posição. Um nome sobrevive a uma reordenação, e uma posição não.
Conte as linhas antes e depois
Escreva a contagem de linhas no log antes da execução e novamente depois dela. Os dois números devem diferir apenas pelas linhas que você pretendia adicionar, e uma lacuna indica que algo deu errado.
Ordene a planilha pela coluna de pontuação uma vez por mês e olhe para as linhas do topo e do fundo. Valores estranhos lá geralmente apontam para um domínio que foi mapeado para o listado errado.
Teste em uma cópia primeiro
Duplique a planilha e execute o fluxo contra a cópia antes de tocar na real. Uma cópia não custa nada para fazer.
Um mapeamento ruim escrito sobre pontuações ao vivo é difícil de desfazer, porque os valores antigos se foram. Mantenha a cópia até que a primeira execução honesta corresponda ao que você esperava.
Exclua a cópia apenas após a segunda execução agendada ter correspondido a ela. Duas execuções limpas consecutivas são um sinal melhor do que uma.
Antes da primeira execução ao vivo
- A chave está no armazenamento de credenciais da plataforma ou em uma variável de ambiente, não no texto do workflow.
- Uma chamada gratuita
overviewfoi verificada manualmente contra um listado que você conhece. - A execução foi testada em uma cópia da planilha, e a cópia correspondeu ao que você esperava.
- O trabalho escreve a data ao lado de cada pontuação que toca.
- Status 401 e 402 param o trabalho e enviam uma mensagem para uma pessoa.
Perguntas sobre sincronização
Como evito pagar duas vezes se o trabalho travar no meio?
Escreva a data ao lado de cada pontuação conforme avança, e faça com que a próxima execução pule as linhas já carimbadas este mês. Lotes de 2.000 significam que um travamento custa no máximo um crédito, então o risco é mínimo, mas o hábito mantém a planilha organizada.
Um não-programador pode configurar isso?
Principalmente sim. Um nó de Solicitação HTTP no n8n ou Make precisa apenas de uma URL, uma chave e uma lista. A parte complicada é transformar a resposta em colunas, então faça uma chamada de teste e olhe o JSON antes de construir o mapeamento.