Pular para o conteúdo
ArchiLinks
ArchiLinksCadastre-se

Ferramenta de verificação de backlinks: scripts que você pode agendar

Toda chamada aqui funciona com curl ou qualquer cliente HTTP. Substitua a chave, mantenha o padrão: chamar, salvar, diff.

Equipe de pesquisa do ArchiLinks ·

Bancada de trabalho em miniatura com ferramentas de Python, Node e Bash ao lado de uma escada e um cronômetro

Regras básicas

Uma chamada, uma cobrança. Cada solicitação é cobrada uma vez, independentemente da contagem de linhas, e uma única chamada retorna até 1.000 linhas. A paginação profunda para em 50.000 linhas, e per aceita valores de 10 a 5.000.

Isso muda como você escreve os scripts. Solicite per=1000 e faça paginação apenas quando precisar de mais, porque uma ferramenta de verificação de backlinks baseada em páginas pequenas multiplica seu custo por dez sem ganho real. Os erros são claros: HTTP 401 para chave ausente, 402 quando o crédito acaba, e todo corpo JSON carrega ok.

Antes de automatizar

Execute cada script uma vez manualmente contra um domínio pequeno e leia o JSON. Os nomes dos campos, o contêiner de linhas e os campos de paginação devem vir de uma resposta real, não dos nossos exemplos, então confirme-os antes que um job cron dependa deles.

Python: salvar um snapshot datado

Os nomes dos campos na resposta são mostrados como exemplo. Imprima uma resposta antes de confiar em uma chave.

python
import json, sys, datetime, requests

BASE = "https://archilinks.com/api.php"
KEY = "sk_live_..."

def snapshot(domain, action="refdomains"):
    r = requests.get(BASE, params={"action": action, "q": domain, "per": 1000, "key": KEY}, timeout=30)
    if r.status_code in (401, 402):
        sys.exit(f"API said {r.status_code}: check key or balance")
    r.raise_for_status()
    body = r.json()
    assert body.get("ok"), body
    name = f"{domain}-{action}-{datetime.date.today()}.json"
    json.dump(body, open(name, "w"), indent=1)
    print(name, body.get("_credits"))

snapshot(sys.argv[1])

Node: DR em massa para uma lista

bulk_dr aceita até 2.000 domínios por 1 crédito por chamada, via GET com um parâmetro de domínios ou via corpo POST. O separador de vírgula abaixo é um exemplo; teste com dois domínios primeiro. Node 18 ou posterior tem fetch embutido.

javascript
const domains = ["example.com", "example.org"];
const url = new URL("https://archilinks.com/api.php");
url.search = new URLSearchParams({
  action: "bulk_dr",
  domains: domains.join(","),
  key: "sk_live_...",
});

const res = await fetch(url);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
console.log(JSON.stringify(await res.json(), null, 2));

Bash e jq: diff semanal

Salve um snapshot com a data, depois compare dois arquivos. Mantenha o cron semanal ou mensal; o índice é atualizado aproximadamente uma vez por mês.

bash
# crontab: 0 6 1 * *  /opt/seo/pull.sh old-shop.com
curl -s "https://archilinks.com/api.php?action=refdomains&q=$1&per=1000&key=$KEY" \
  | jq -S . > "snap-$1-$(date +%F).json"

# compare two dated files
diff <(jq -S . snap-old-shop.com-2026-09-01.json) <(jq -S . snap-old-shop.com-2026-10-01.json) | head -50

Qual ação para qual script

ScriptAçãoCusto por execuçãoSaída
Linha de base de migraçãotoppages, refdomains4 créditosDois arquivos JSON
Limpeza de outreachbulk_dr1 crédito por chamada, até 2.000 domíniosDR por prospect
Sobreposição de concorrentesintersect2 créditosSites vinculando a 2–10 domínios
Monitoramento de anchor textanchors2 créditosLista de anchor text
Verificação de portfóliocompare1 crédito por chamada, até 20 domíniosMétricas lado a lado
Mecanismo de nova tentativa em miniatura com almofadas de borracha, sino de alarme e contador de moedas empilhadas

Lidando com as bordas

Scripts falham nas bordas. Planeje para elas.

Envolva cada chamada em uma tentativa de nova conexão (retry) que aguarde e desista após três tentativas, exceto para 401 e 402, que uma nova tentativa nunca corrigirá. Registre o objeto _credits de cada resposta autenticada, para que um pico de gastos apareça nos seus logs antes de aparecer no seu saldo, e limite loops com um número máximo de páginas.

Mantenha snapshots no git ou em armazenamento de objetos com a data no nome do arquivo. Simples, sem graça, eficaz. Para migrações, combine esses scripts com a receita de mapa de redirecionamento e a lista de verificação de migração. Usuários do Google Sheets podem chamar as mesmas URLs do Apps Script com UrlFetchApp, e uma planilha com um gatilho mensal é um monitor perfeitamente válido.

Perguntas sobre scripts

Três perguntas surgem antes que a maioria dos scripts vá para produção, e cada uma tem uma resposta curta.

Como verifico quantos backlinks meu site tem, de graça?

Chame a ação de visão geral ou estatísticas sem chave. Ambas são gratuitas e retornam os totais do nosso próprio índice de links.

Para as listas por trás dos totais, você precisa de uma chave e 2 créditos por chamada.

O que acontece quando o saldo acaba?

A API retorna HTTP 402. Seu script deve parar e alertar, não tentar novamente em loop. Recarregue a partir da página da conta com USDT (TRC-20) e execute novamente.

Posso chamar a API do navegador?

Sim. O CORS está aberto. No entanto, não coloque uma chave no código front-end público, pois qualquer pessoa pode lê-la e gastar seu crédito.

Esteira transportadora em miniatura com engrenagens precisas movendo moedas de ouro eficientemente com uma única chave

Paginação sem desperdiçar créditos

A paginação é onde os scripts silenciosamente custam mais do que deveriam. Cada solicitação de página é uma chamada separada com sua própria cobrança, então um loop que pede uma página a mais paga por nada.

Leia os campos de paginação em uma resposta real antes de escrever o loop. Os exemplos neste site mostram a estrutura, mas os nomes e o sinal de parada vêm do JSON ao vivo.

Pare quando uma página vier incompleta

Uma página com menos linhas do que você pediu geralmente é a última. Deixe o loop parar ali em vez de solicitar uma página extra para ter certeza.

Se a resposta contiver um total ou um campo de próxima página, use isso como sinal de parada. Conte as linhas que você salvou contra isso, para que uma discrepância apareça no log.

Limite todos os loops

Defina um máximo rígido de páginas em todos os loops. Um limite protege seu saldo se um nome de campo mudar e o script continuar solicitando a mesma página.

Escolha o limite com base no tamanho que você espera, depois aumente-o deliberadamente quando um domínio real precisar de mais páginas.

Escreva cada página conforme ela chega

Salve cada página em disco assim que ela retornar, com o número da página no nome do arquivo. Um script que para na página quarenta pode retomar do último arquivo salvo em vez de começar novamente e pagar duas vezes.

Mantenha os arquivos em uma pasta por domínio e por data, para que uma nova execução nunca misture duas extrações.

Executando os scripts em agendamento

Qualquer agendador serve. O que importa é que cada execução deixe um arquivo para trás, e que uma execução falha avise alguém.

Escolhendo um host para a tarefa

O cron serve para um servidor com um disco que você controla. Um job de CI serve para um repositório que já mantém os snapshots, para que o histórico viva ao lado do código que o lê.

Qualquer que seja sua escolha, mantenha a lista de domínios em um arquivo, para que adicionar um domínio seja uma edição em vez de uma mudança no script.

Alertando falhas, não cada sucesso

Alerte quando o script falhar, ou quando o saldo cair abaixo de um nível que você escolheu. Uma mensagem de sucesso toda manhã treina as pessoas a ignorarem o canal que carrega o problema real.

Registre o objeto _credits de cada execução, como o exemplo em Python faz, e revise a tendência uma vez por mês.

Um diff semanal em cinco etapas

01

Escolha as ações

Escolha as duas ou três chamadas que respondem à sua pergunta. Cada uma custa créditos, então anote o custo ao lado dela.

02

Salve a resposta bruta

Armazene o JSON exatamente como ele chegou, com o domínio e a data no nome do arquivo. A formatação pode esperar até a etapa de diff.

03

Ordene as chaves antes de comparar

Use jq -S ou equivalente, para que a ordem das chaves não apareça como uma mudança. O exemplo em bash acima faz isso.

04

Compare as listas, não os arquivos

Junte as duas respostas na URL ou domínio, depois relatore o que foi adicionado, removido e alterado. Um diff de texto bruto de um arquivo longo é difícil de agir.

05

Revise o diff e aja

Envie os domínios que deixaram de vincular para quem cuida do outreach, e as páginas removidas para quem cuida dos redirecionamentos.

Testando um script antes que um job cron dependa dele

Um script que roda sem supervisão deve provar seu valor primeiro. Use um domínio pequeno, leia o JSON completo e só então amplie a lista.

Uma verificação rápida de sanidade é comparar os totais com a chamada de visão geral gratuita para o mesmo domínio. Os números não precisam corresponder exatamente a uma lista paga, mas devem concordar em escala.

Execute com dois domínios

Dois domínios testam o loop, os nomes dos arquivos e os caminhos de erro. Um domínio pode passar por sorte, enquanto dois mostram se o loop é redefinido entre domínios.

Use um domínio que você conhece bem e um que não conhece, para que você possa julgar se a saída parece correta.

Mantenha a chave fora de logs e tickets

Scripts frequentemente imprimem o endereço completo da solicitação, e a chave está nesse endereço como um parâmetro. Remova a chave de qualquer linha que saia do servidor, ou envie-a no cabeçalho Authorization, o que a mantém fora do endereço.

Se uma chave aparecer em um ticket ou repositório público, pare o job agendado que a usa antes da próxima execução.

Mantenha uma nota curta de onde a chave está, quais scripts a leem e quais hosts eles chamam. Essa nota é o que você precisa quando alguém perguntar quem pode gastar o saldo.

Escolhendo a ação para cada pergunta

Comece pela pergunta, não pela lista de endpoints. Uma migração precisa saber quais URLs carregam links, enquanto uma lista de outreach precisa de pontuações de domínio. Um host, duas perguntas. Cada uma custa um número diferente de créditos.

Escreva o custo ao lado da pergunta antes de escrever qualquer código. Um script que roda semanalmente multiplica um preço pequeno por cinquenta e duas vezes, e essa multiplicação é fácil de esquecer até que o saldo mostre.

Retries que param quando devem

Tente novamente uma solicitação que falhou por um motivo temporário, como um timeout ou um erro de servidor, um pequeno número de vezes com uma pausa crescente entre as tentativas. Não tente novamente um 401 ou 402, pois esperar não mudará nenhuma das respostas.

Registre cada nova tentativa com a ação e o domínio, para que um padrão de falhas apareça como um padrão em vez de como silêncio.

Defina a contagem de novas tentativas em um só lugar, para que todas as chamadas no script sigam a mesma regra. Loops de nova tentativa espalhados tendem a discordar uns dos outros, e a discordância é difícil de encontrar em um log.