Receita
Acompanhe backlinks com um diff semanal que você lê em um minuto
Extraia, armazene, compare, publique. A receita inteira é um arquivo Python, uma pasta com JSONs datados e uma linha de cron.

A receita, do início ao fim
- 1
Crie a chave
Faça login com o Google, crie uma chave na página da conta e exporte-a como
RANKIFT_KEY. Nunca faça commit dela no repositório. - 2
Escolha a ação
refdomainspara o diff em nível de domínio, que é o que a maioria dos alertas precisa. Usebacklinksapenas quando precisar de URLs e âncoras, pelo mesmo custo de 2 créditos. - 3
Armazene snapshots datados
Um arquivo por domínio por execução, nomeado com a data. O disco é barato, e os arquivos antigos permitem responder a perguntas que ninguém fez ainda.
- 4
Diff e publicação
Compare os dois arquivos mais recentes, imprima o que saiu e o que entrou, e saia silenciosamente se ambas as listas estiverem vazias.
- 5
Agende a execução
Cron na segunda-feira de manhã. Adicione uma notificação de falha, porque um monitor silencioso é pior que nenhum monitor.
diff.py
Verificado contra os parâmetros documentados: action, q, per, page e key. A forma da resposta varia por ação, então imprima uma resposta real e defina ROWS e ID para corresponder antes de confiar nela.
import json, os, sys, glob, urllib.parse, urllib.request
KEY, SITE = os.environ['RANKIFT_KEY'], 'https://rankift.com/api.php'
ROWS, ID = 'rows', 'domain' # adjust after inspecting one response
def pull(domain):
out, page = [], 1
while True:
qs = urllib.parse.urlencode({'action': 'refdomains', 'q': domain,
'per': 1000, 'page': page, 'key': KEY})
with urllib.request.urlopen(f'{SITE}?{qs}') as r:
batch = json.load(r)[ROWS]
out += batch
if len(batch) < 1000 or page >= 5: # five pages = 5,000 rows
return out
page += 1
domain, date = sys.argv[1], sys.argv[2]
json.dump(pull(domain), open(f'snap/{domain}-{date}.json', 'w'))
files = sorted(glob.glob(f'snap/{domain}-*.json'))
if len(files) > 1:
old = {r[ID] for r in json.load(open(files[-2]))}
new = {r[ID] for r in json.load(open(files[-1]))}
lost, gained = sorted(old - new), sorted(new - old)
if lost or gained:
print(f'{domain}: -{len(lost)} +{len(gained)}')
print('lost:', lost[:25])Por que um diff supera um dashboard
Um gráfico mostra que a linha se moveu. Um diff mostra quais domínios se moveram, que é o que você pode agir.
Ferramentas como Ahrefs e Semrush mostram links novos e perdidos em suas próprias interfaces, e para trabalho ad hoc isso é bom. O problema começa com cinquenta sites e um analista, quando o ritual de segunda-feira de abrir cada projeto consome a manhã.
Um script transforma esse ritual em um arquivo. Ele também deixa um arquivo datado, então em março você pode responder como estava o perfil em outubro sem pedir uma exportação a um fornecedor.
A linha de cron
Executa na segunda-feira às 07:00 horário do servidor e envia qualquer saída para você, por isso o script não imprime nada quando nada mudou.
0 7 * * 1 cd /srv/linkwatch && for d in example.com rival-one.com rival-two.com; do python3 diff.py $d $(date +%F); done | mail -s 'link diff' your-team-listO que custa
| Configuração | Chamadas por semana | Créditos por semana | Por ano |
|---|---|---|---|
| 1 domínio, menos de 1.000 domínios de referência | 1 | 2 | cerca de $0.01 |
| 1 domínio, 4.000 domínios de referência | 4 | 8 | cerca de $0.04 |
| Seu site e 5 concorrentes, 1 página cada | 6 | 12 | cerca de $0.06 |
| 50 sites de clientes, 1 página cada | 50 | 100 | cerca de $0.52 |

Pegadinhas que encontramos, para você não encontrar
Os snapshots só mudam quando o índice muda. Atualizamos cerca de uma vez por mês, então a maioria das execuções semanais retorna uma lista idêntica e não imprime nada. Isso é intencional. O silêncio é o resultado esperado.
A paginação profunda é limitada a 50.000 linhas, e o limite de cinco páginas no script mantém você bem abaixo disso. Domínios enormes precisam de um plano diferente: ordene com sort e order=desc em um campo que a ação aceita, e pare cedo assim que as linhas deixarem de ser interessantes.
Execute a primeira extração manualmente e leia o JSON. Verifique os nomes dos campos. Depois, compare a contagem de linhas com o total de domínios de referência de uma resposta da ação gratuita overview, se essa resposta contiver um.
Trate HTTP 401 e 402 explicitamente, porque 401 significa uma chave inválida e 402 significa que o saldo chegou a zero. Ambos devem estar na sua notificação de falha. Quando um diff disparar, siga o manual de links perdidos na primeira hora.
Medindo uma campanha de links comprados, um snapshot de cada vez
Comprar links sem uma linha de base é uma maneira comum de acabar com um número que você não consegue defender. Tire o snapshot antes da primeira publicação entrar no ar e mantenha-o junto a cada snapshot que vier depois.
Depois, compare domínios de referência, não contagens brutas, porque um doador pode conter muitos links. Cada nova linha no diff é um site que você pode abrir e verificar manualmente.
Uma campanha que parece plana por um mês não é automaticamente uma falha. As atualizações do índice são lentas, então o diff atrasa o que aconteceu nas páginas ao vivo, e esse atraso faz parte do método.
Como medir se backlinks comprados funcionaram?
Comece pela data da primeira publicação e procure pelas linhas de doador que aparecem depois dela. Conte apenas aquelas que permaneceram nos dois snapshots seguintes. Depois, compare essa contagem com o que você pagou pelas publicações e registre o resultado ao lado das datas.
O que o snapshot antes da compra deve conter?
A lista completa de domínios de referência, salva no mesmo formato de arquivo de todas as execuções posteriores, com a data e o domínio no nome do arquivo. Uma linha de base em um formato diferente não pode ser comparada, e esse é o único erro que você não pode corrigir depois.

Como uma semana barulhenta aparece no diff
Uma semana com milhares de novas linhas nem sempre é uma crise. Muitas vezes são scrapers. Eles copiam páginas, e as cópias criam links que ninguém publicou. Verifique o doador primeiro antes de assumir qualquer coisa sobre o seu próprio site.
Ordene as novas linhas por qualidade do doador antes de lê-las. A maior parte da lista geralmente é ruído, e uma rápida olhada nas linhas do topo diz se o pico merece o resto da sua manhã.
Se as linhas forem páginas de scraper, registre a contagem e siga em frente. Se forem sites reais com links para suas páginas de dinheiro, siga os passos de triagem.
Por que o diff mostra ganhos de spam?
Porque o diff relata o que apareceu no índice, não o que um humano escolheu. Spam que o índice capturou parece o mesmo que um link editorial até você abrir a página do doador e lê-la.
Com que frequência devo revisar candidatos a disavow?
Mensalmente se adapta melhor ao ritmo do índice do que diariamente. Uma revisão diária mostra principalmente a mesma lista novamente, enquanto uma mensal dá a cada candidato tempo para ser reindexado antes de você julgá-lo. A página de triagem de links de spam tem os passos de decisão.
Antes de confiar no primeiro diff
- A primeira extração foi lida manualmente, linha por linha, por pelo menos uma página.
- Os nomes dos campos correspondem às constantes no topo do script.
- Um 401 e um 402 falham no trabalho de forma ruidosa, não silenciosamente.
- A pasta de snapshots é backupada ou sincronizada em algum lugar onde você pode restaurá-la.
- Alguém além do autor viu o primeiro alerta e concorda que vale a pena uma mensagem.
Mantenha o arquivo de snapshots útil por um ano
Mantenha todos os arquivos datados, incluindo aqueles que parecem inalterados. Um ano de snapshots semanais ocupa pouco espaço em disco, e responde a perguntas que ninguém fez ainda, como quando um doador apareceu pela primeira vez.
Nomeie os arquivos de forma consistente, com o domínio, a data e a ação. Nomes mistos fazem o script de diff escolher o par errado, e um par errado produz um alerta confiante e errado.
Comprima os arquivos mais antigos uma vez por trimestre se o espaço for importante. Mantenha os doze mais recentes descompactados, para que a execução semanal nunca espere por um arquivo.
Como encontrar o primeiro snapshot onde um doador apareceu?
Ordene os arquivos datados por nome, depois procure em cada um pelo domínio do doador até o primeiro acerto. Um loop curto faz isso em algumas linhas, e o resultado é tão bom quanto a nomenclatura que você manteve desde o início.
O que devo excluir e o que devo manter?
Mantenha todos os snapshots em que uma decisão foi baseada, além do primeiro e do último de cada mês. Exclua o resto apenas depois que o arquivo foi verificado, porque um arquivo excluído não pode responder a uma pergunta depois.
Envie o diff para onde as pessoas já leem
Um diff que cai em uma pasta não lida não tem valor. Compartilhado é melhor que privado. Publique o resultado no canal que sua equipe já assiste, e mantenha a mensagem curta o suficiente para agir com uma única olhada.
Uma boa mensagem nomeia o domínio, a contagem de linhas perdidas e ganhas, e o primeiro passo. Ela deixa de fora a lista completa, que pertence ao arquivo anexado.
O silêncio em uma semana tranquila faz parte do design. Se nada mudou, ninguém precisa de um lembrete de que nada mudou. Mantenha assim. O canal permanece legível para o próximo alerta real.
O que a mensagem deve conter?
Três coisas: o nome do doador ou concorrente, as duas contagens e um link para o arquivo salvo. Quando uma pontuação é anexada, adicione a melhor Domain Rating entre as novas linhas, porque um domínio forte muda a prioridade mais do que dez domínios fracos.
Quem recebe o aviso de falha?
Alguém que possa corrigir o trabalho, não apenas alguém que lê as mensagens. Um 401 precisa de uma nova chave, e um 402 precisa de um recarga na página da conta. Nenhum é resolvido esperando pela próxima segunda-feira.
Estendendo
Troque refdomains por backlinks quando o alerta precisar da URL do doador e da âncora. Mantenha em mente o mesmo custo de dois créditos.
Adicione bulk_dr para pontuar todos os domínios novos, com um crédito por chamada de até 2.000 domínios. Então sua mensagem pode dizer "3 novos, melhor DR 72" em vez de uma lista crua.
Para o Google Sheets, a mesma string de consulta funciona no Apps Script com UrlFetchApp. E para concorrentes, use os limites de alertas de backlinks de concorrentes.