Automação

Como conectei o ChatGPT ao n8n sem usar a API do modelo

Em janeiro de 2025, conectei um GPT personalizado ao n8n para atualizar páginas de cidades sem gerar cada texto por uma chamada paga à API do modelo. Veja como organizei o webhook, a busca do registro e a gravação.

Assistir ao vídeo original no YouTube
Thumbnail do vídeo: Usando ChatGPT sem API para Automações e Workflow N8N Webhook

Em janeiro de 2025, eu atualizava páginas de cidades do Japão copiando o nome da cidade e da província para o ChatGPT e depois colando a resposta no banco. Para um dos lotes, a API do modelo já tinha passado de US$ 50. Montei uma Ação em um GPT personalizado para enviar o texto a um webhook do n8n: eu iniciava a tarefa pelo chat, e o fluxo encontrava o artigo certo e atualizava o registro. A integração ainda chama um webhook; o que eu deixei de usar foi uma chamada paga à API para gerar cada texto.

Comece com uma atualização pequena e fácil de conferir

Eu já tinha uma página para cada cidade. O GPT recebia cidade e província, preparava um trecho de HTML com pontos turísticos e mandava o resultado para atualizar aquela página. A meta era completar um registro existente, não criar uma publicação nova nem deixar o modelo escolher sozinho onde gravar.

Antes, eu mantinha o Navicat aberto, copiava os dados, pedia o texto no chat e colava a resposta no banco. Preferi o resultado que recebia pelo ChatGPT ao que havia testado pela API, mas isso foi a minha impressão daquele fluxo, não um teste controlado entre configurações idênticas.

Também queria conduzir o trabalho pelo celular. Eu mandava uma cidade ou respondia “ok” para o GPT passar ao próximo item de uma lista. Esse detalhe deixava uma pessoa no comando de cada atualização; o fluxo não rodava sozinho em segundo plano.

Defina o que o GPT envia antes de montar a automação

Uma Ação precisa saber para onde enviar a requisição e quais campos mandar. No meu caso, o schema descrevia uma pergunta — cidade e província — e a resposta em HTML. Separar esses valores facilitou localizar a página sem misturar a chave de busca com o conteúdo que eu queria gravar.

Um corpo simplificado para esse tipo de chamada pode ter esta forma: `{"pergunta":"Kyoto, Kyoto-fu","resposta":"<p>...</p><h3>...</h3>"}`. Os nomes e o formato precisam combinar com o schema da Ação e com o que o Webhook do n8n recebe. Eu testaria primeiro com uma única cidade e conferiria o JSON que chegou antes de liberar o workflow para a lista inteira.

No n8n, encontre o registro e só então atualize o conteúdo

Eu separei a busca da gravação em dois nós de SQL. O primeiro procurava o ID do artigo pela cidade e pela província; o segundo atualizava aquele ID com o HTML recebido. Daria para combinar as operações, mas eu preferia conseguir conferir qual registro seria alterado antes da escrita.

Uma ordem segura para esse fluxo é:

  1. Receba a pergunta e a resposta pelo Webhook do n8n.
  2. Separe cidade e província e procure um único artigo com esses valores.
  3. Se nenhum registro — ou mais de um — corresponder, pare sem gravar.
  4. Atualize pelo ID encontrado, usando a resposta como conteúdo e parâmetros de consulta no SQL.
  5. Confira a execução e o artigo atualizado antes de enviar o próximo item.

Proteja o webhook; a confirmação do chat não é autenticação

Naquele teste, deixei o webhook sem autenticação porque achei que só eu teria o endereço. Isso foi uma decisão minha, não uma proteção. Quem descobre a URL consegue tentar chamar o workflow. O n8n oferece autenticação básica, por cabeçalho ou JWT; eu escolheria uma delas e manteria a consulta restrita aos campos de que a atualização precisa.

Eu também mostrei uma configuração da Ação para reduzir confirmações antes de enviar chamadas. Como esse fluxo grava no banco, não marcaria uma operação como inofensiva só para tirar uma etapa de aprovação. A confirmação que aparece no ChatGPT e a autenticação exigida pelo Webhook protegem coisas diferentes: mantenha o endpoint autenticado e deixe explícita a aprovação de uma escrita quando ela for necessária.

Na primeira tentativa, o n8n falhou porque a VPS ainda estava reiniciando. Reenviei depois que o serviço voltou. Isso me ensinou a conferir disponibilidade e registrar falhas antes de processar uma lista maior; se o webhook não responder, eu não assumiria que a cidade foi atualizada.

A economia na API não elimina os outros custos

Naquele lote, a conta da API do modelo para atualizar um dos meus bancos já tinha passado de US$ 50. Eu já pagava pelo ChatGPT, então preferi usar a conversa para iniciar a geração. ChatGPT e plataforma de API têm faturamentos separados: isso evitou uma nova conta de API naquele fluxo, mas não tornou o processo gratuito. A assinatura e o servidor onde meu n8n rodava continuavam na conta.

Esse arranjo servia ao meu jeito de trabalhar: eu queria revisar as páginas e mandar cada próxima cidade pelo chat. Se você precisa que o processo rode sozinho, sem alguém iniciar ou acompanhar cada item, uma Ação de GPT não é o gatilho adequado; o workflow deve chamar o serviço de geração que você escolher e contabilizar esse uso.

Confira se sua conta ainda permite manter esse tipo de GPT

Eu montei esse fluxo em janeiro de 2025. Em outubro de 2026, a criação de GPTs novos está indisponível para contas pessoais; as permissões em espaços de trabalho também dependem do plano e da configuração de cada organização. A OpenAI prevê aposentar os GPTs personalizados em 11 de dezembro de 2026, e as Ações não migram automaticamente para a alternativa oferecida. A disponibilidade e os avisos da conta podem variar, então eu conferiria a orientação que aparece no próprio ChatGPT antes de começar.

O desenho técnico continua fácil de entender — uma conversa envia campos para um Webhook, e o n8n executa a atualização —, mas a forma de iniciar essa chamada depende do que sua conta ainda oferece. Se você já tem um GPT que usa Ações, confirme que ele continua funcionando e planeje outro caminho antes da data de retirada. Se está começando agora, não conte com criar um GPT pessoal novo para reproduzir exatamente o meu fluxo.

Usei um fluxo parecido no n8n para limpar dados antigos do TranslatePress. Também contei como levei vários sites do WordPress para o Odoo.