Sites multilíngues

Como automatizar traduções de sites com n8n, Cloudflare e GPT

No meu fluxo, o n8n escolhia o idioma, enviava a string para um Worker ou para o GPT e filtrava a resposta antes de gravá-la no TranslatePress.

Assistir ao vídeo original no YouTube
Thumbnail do vídeo: Automatizando tradução de forma gratuita ou barata com Cloudflare e GPT

No meu WordPress, o TranslatePress enviava as strings para a API do Google Tradutor. Eu pagava por volta de R$ 120 por milhão de caracteres e queria dividir o trabalho entre serviços mais baratos. A solução foi montar uma fila no n8n, escolher a rota pelo idioma, conferir cada resposta e só então gravar a tradução no banco.

Calcule o custo antes de trocar o serviço de tradução

O TranslatePress enviava cada trecho do meu site à API do Google Tradutor. Na época, a tarifa que eu pagava ficava perto de R$ 120 por milhão de caracteres. Esse era o meu custo naquele período, não uma cotação para usar hoje: cada fornecedor calcula a conta de um jeito, e o preço pode mudar.

Antes de trocar de serviço, conte quantos caracteres o site envia por mês em cada idioma e coloque no cálculo as tentativas repetidas e as traduções que alguém precisa corrigir. A API de texto pode cobrar por caracteres; os modelos de IA costumam cobrar por tokens de entrada e de saída. Compare o gasto real de uma amostra do seu conteúdo, não só o preço anunciado por unidade.

A lógica não depende de WordPress. No meu caso, o TranslatePress guardava os textos no MySQL; em outro projeto, a fila pode estar numa tabela própria ou num documento. O que a automação precisa receber é o texto original, o idioma de destino e um identificador que permita atualizar a linha certa depois.

Use o n8n para buscar uma fila de cada idioma

Eu instalava o n8n na minha VPS porque precisava chegar ao MySQL por um túnel SSH. Make e Zapier não tinham funcionado com a conexão que eu usava; isso descreve a minha configuração, não uma limitação universal desses serviços. Hospedar o n8n também não elimina custos: o servidor, os backups e a manutenção continuam por conta de quem opera o fluxo.

O meu workflow rodava uma vez por minuto. Um trecho de JavaScript sorteava um idioma e o n8n consultava o banco correspondente para encontrar as linhas mais recentes sem tradução. A partir daí, o mesmo item seguia para a rota daquele idioma e voltava com o texto traduzido. Essa divisão evitava mandar uma frase para o serviço errado.

Para montar uma fila parecida, preserve o identificador da linha junto com o texto. Se cada idioma estiver num banco diferente, selecione a conexão correspondente; se todos estiverem na mesma tabela, use uma coluna de idioma para filtrar. Nos dois casos, marque a linha como concluída só depois de receber e conferir a resposta.

  1. Agende o workflow na frequência que o servidor e o orçamento conseguem atender; o meu era executado a cada minuto.
  2. Escolha um idioma e consulte apenas textos pendentes daquela fila.
  3. Envie o texto, o idioma de destino e o identificador da linha para a rota de tradução.
  4. Valide a resposta antes de atualizar o registro original.

Na rota do GPT, instrua cada idioma e valide o retorno

Na parte do GPT, eu separava as instruções por idioma. É uma boa maneira de deixar claro o destino e preservar elementos que não devem mudar, como nomes, URLs, variáveis e marcação do site. Mas a tradução ainda precisa ser conferida: se vier vazia, idêntica ao original ou com um marcador apagado, o fluxo deve deixar a linha pendente em vez de gravar aquilo como resultado pronto.

Eu calculava que usar um Assistant por idioma me poupava cerca de 60 tokens por chamada, porque não precisava repetir as instruções em cada texto. Esse número descrevia o meu fluxo antigo. A Assistants API foi encerrada em 26 de agosto de 2026, então ela não serve para montar uma integração nova. Hoje, escolha uma API disponível e confira a cobrança por tokens de entrada e de saída; instruções reutilizadas também podem fazer parte da conta. O cache de prompt só reduz o custo quando a chamada atende às condições de reaproveitamento, por isso eu mediria o consumo em vez de presumir a economia.

  1. Mantenha instruções específicas por idioma, incluindo tom, termos que não devem ser traduzidos e tratamento de variáveis.
  2. Envie cada string com o idioma de origem e o de destino, sem perder o ID da linha.
  3. Recuse resposta vazia, cópia do original ou texto que tenha perdido placeholders.
  4. Registre a falha para nova tentativa ou revisão manual; só então atualize o TranslatePress.

Reserve a Cloudflare para os idiomas que o serviço atende

Na outra rota que usei, o painel da Cloudflare oferecia um template chamado Translation app. Eu publicava o Worker, enviava a string e o idioma de destino pelo n8n e recebia o texto traduzido para gravar no banco. A lista de idiomas suportados decidia quais strings podiam seguir por ali; as outras ficavam com a rota do GPT.

O limite de 100 mil requisições por dia se refere ao plano Workers Free, não a uma promessa de cem mil traduções de IA sem custo. Requisições do Worker e consumo de um modelo são coisas diferentes. Hoje a Cloudflare também documenta modelos de tradução no Workers AI, como o M2M100, com campos próprios para texto e idiomas; antes de escolher essa rota, confira se o par de idiomas está coberto e o preço atual do modelo.

Quando há vários destinos, não mande a frase para a primeira API disponível. Faça o n8n consultar uma tabela simples de roteamento: idioma, serviço, modelo e estado de disponibilidade. Assim, se uma língua sair da lista de um serviço ou o custo mudar, você troca a rota sem mexer na fila inteira.

Planilha era uma possibilidade; a fila não precisa vir do WordPress

Eu queria testar uma fórmula do Google Sheets para aproveitar a tradução na própria planilha e devolver o resultado ao workflow, mas não tinha terminado essa integração. As cotas e a forma de sincronizar as células ainda precisavam ser verificadas. Por isso, trataria Sheets como uma ideia a validar, não como uma parte pronta do meu sistema.

A mesma lógica serve para um banco de dados, uma planilha ou um documento: leia o texto e o idioma, escolha uma rota compatível, valide a resposta e grave no destino usando o mesmo identificador da origem. No meu caso, essa divisão era o que permitia usar a Cloudflare nos pares atendidos e recorrer ao GPT nas outras línguas, sem deixar uma resposta ruim marcada como tradução concluída.

A ferramenta que recebia cada trecho no WordPress está em TranslatePress com GPT. Também expliquei os limites que encontrei ao usar TranslatePress com o Google Tradutor.