Traduzi o site inteiro numa única rodada do Claude Code
Adicionei o português a todos os 18 destes tutoriais numa rodada só. Uns três minutos. Na mão teria sido um dia de copiar, traduzir, colar, ligar, repetir dezoito vezes. O truque não foi um prompt mais esperto. Foi rodar os dezoito de uma vez, e tomar cuidado com um arquivo.
A tarefa era chata e idêntica dezoito vezes: pegar cada tutorial em inglês, traduzir para o português, colocar na pasta certa, adicionar uma linha ao índice. Um por um, é uma tarde inteira que você vai detestar. Mas todo arquivo tem a mesma forma, e nada no arquivo 7 depende do arquivo 3. Esse é o sinal: isto deveria rodar em paralelo, não em fila.
A forma: um agente por arquivo
Em vez de um agente moendo dezoito arquivos em sequência, você dispara dezoito agentes, cada um dono de exatamente um arquivo. Todos trabalham ao mesmo tempo. O arquivo único mais lento define o seu tempo de relógio, não a soma de todos eles.
A única regra que faz ou quebra tudo
Aqui está a parte que pega as pessoas, e a razão de isto valer um tutorial. Cada agente escrevendo o próprio arquivo novo é seguro: caminhos diferentes, sem colisão. Mas os dezoito também precisam adicionar uma linha ao mesmo arquivo de índice. Se você deixar dezoito agentes escreverem esse arquivo de uma vez, eles atropelam uns aos outros e você termina com uma bagunça corrompida.
Então você não deixa. Cada agente devolve a entrada de índice em vez de escrevê-la. Você junta as dezoito e escreve o índice uma vez, num lugar só, depois que terminam. Paralelize os arquivos; serialize o arquivo compartilhado.
// um agente por arquivo, todos rodando ao mesmo tempo
const entries = await parallel(files.map((f) => () =>
agent(`Leia ${f}, traduza, escreva a página traduzida
e devolva a entrada de índice deste artigo como JSON.`,
{ schema: ENTRY })
));
// A REGRA: monte o índice compartilhado UMA VEZ, aqui mesmo.
// Nunca deixe os agentes paralelos escreverem este arquivo.
const manifest = JSON.parse(read('tutorials.json'));
manifest.push(...entries.filter(Boolean));
write('tutorials.json', JSON.stringify(manifest, null, 2)); O que cada agente recebe
O briefing por agente é enxuto e idêntico, exceto pelo nome do arquivo. As três linhas que mantêm a compilação viva: não tocar nos blocos de código, corrigir a profundidade dos imports e escrever na pasta certa.
Leia a página em inglês em src/pages/tutorials/<slug>.astro.
Traduza cada frase humana. Mantenha TODOS os blocos de código byte a byte idênticos.
Corrija os caminhos de import (o novo arquivo fica uma pasta mais fundo: ../../ -> ../../../).
Escreva o resultado em src/pages/<lang>/tutorials/<slug>.astro.
Devolva a entrada de índice deste artigo como JSON. Aquela linha do "mantenha os blocos de código byte a byte idênticos" importa mais do que parece. Um agente tradutor deixado por conta própria vai alegremente "melhorar" o nome de uma variável ou traduzir um comentário de código para algo que não roda mais. Diga a ele que o código está fora de alcance.
Os bugs que peguei (pra você não pegar)
- A entrada chegou como texto. Passei a lista de arquivos como dado; o script recebeu como uma string grande só e o
.mapexplodiu. Uma linha resolveu: faça o parse de volta para uma lista antes de usar. - Uma compilação pegou um arquivo escrito pela metade. Rodei uma compilação enquanto os agentes ainda escreviam. Uma página estava no meio do salvamento e a compilação engasgou. Deixe o lote inteiro terminar, depois compile uma vez.
- Slugs e links cruzados. Se suas páginas traduzidas ganham nomes novos, os links entre elas quebram. Mantive os nomes de arquivo traduzidos idênticos dentro de uma pasta de idioma, então um link é só uma troca de prefixo que sempre resolve.
Quando vale a pena
Não para três arquivos. De cinco para cima da mesma mudança de forma idêntica, a montagem se paga: traduzir um site, renomear um padrão num código inteiro, mudar o estilo de todos os cards, regerar a metadata de cada página. Qualquer coisa em que o trabalho por arquivo é idêntico e os arquivos não dependem uns dos outros.
Agora tente isto
- Traduzir. O caso exato daqui: uma pasta de idioma, um agente por página.
- Refactor em massa. "Renomeie este hook em tudo e atualize os imports", um agente por arquivo.
- Metadata em massa. Gere uma descrição de SEO para cada página a partir do conteúdo, coletada e escrita uma vez.
- Nada de escrita em arquivo compartilhado. Seja qual for a tarefa, ache o único arquivo que todos querem tocar e escreva você mesmo, depois.
O que de fato aconteceu
Dezoito páginas, uma rodada, alguns minutos. A IA traduzindo cada página não foi a vitória, ela faz isso quer você rode uma ou dezoito. A vitória foi fazer todas de uma vez e recusar deixar elas brigarem pelo único arquivo que compartilham. Paralelize o trabalho, monte a parte compartilhada num lugar só.
Deixe seu e-mail e eu te aviso quando o próximo build subir, com o fluxo de verdade que usei. Sem spam.
Mais tutoriais ↗