openrouter-automaai

OpenRouter Chat Model para n8n com cache de prompt, telemetria de tokenUsage e campo user para rastreio de custo por cliente. Fork de n8n-nodes-openrouter-cache-chat-model.

Package Information

Released: 2 mo ago
Downloads: 0 weekly / 0 monthly
Latest Version: 0.3.0

Documentation

n8n-nodes-openrouter-automaai

Fork de n8n-nodes-openrouter-cache-chat-model (MIT, por Huda), mantido pela AutomaAI.

Fork de n8n-nodes-openrouter-cache-chat-model
com duas adições que a AutomaAI precisava para medir custo por cliente.

Por que o fork

O node original entrega o cache de prompt corretamente (−71% no custo, medido), mas:

  1. Não reporta tokenUsage. Ele instancia o ChatOpenAI sem callbacks, então o
    n8n nunca recebe o uso de token e nada é gravado no execution_data. O coletor de
    métricas fica cego para todo fluxo migrado — foi o que aconteceu em 01/08/2026:
    66 agentes migrados, e o consumo deles sumiu do dashboard.
  2. Não permite identificar a origem da chamada. Sem o campo user, o
    external_user da API do OpenRouter vem vazio e não dá para separar empresa nem
    conversa no /api/v1/generation.

O que muda

original este fork
cache de prompt sim sim (lógica intacta, 28 testes passando)
tokenUsage no execution_data não sim — via addOutputData, como o node nativo
campo user (rastreio) não sim — opção "User (Rastreio)"

Tipo do node: lmChatOpenRouterAutomaAI — diferente do original, então os dois
convivem instalados. Nada muda nos fluxos existentes até você trocar o node à mão.

Instalação no n8n

Settings → Community Nodes → Install → n8n-nodes-openrouter-automaai
(depois de publicar no npm), ou instalação local:

npm run build
npm pack                      # gera n8n-nodes-openrouter-automaai-0.1.0.tgz
# no servidor do n8n:
cd ~/.n8n/nodes && npm i /caminho/n8n-nodes-openrouter-automaai-0.1.0.tgz
# reiniciar o n8n

Uso do campo User

Preencha com uma expressão que identifique empresa e conversa:

=empresa{{ $('constantes').item.json.empresa_id }}_{{ $('constantes').item.json.whatsapp }}

Depois, na API do OpenRouter:

GET /api/v1/generation?id=<gen-id>
  -> external_user, total_cost, native_tokens_cached, cache_discount

Desenvolvimento

npm install
npm run build
npm test

Discussion