Du använder LLM-noder i n8n, arbetsflödena körs, och sedan dyker fakturan upp senare utan något tydligt ”varför”. Du vet att kostnader uppstår, men att spåra dem till en specifik arbetsflödeskörning (eller en enskild dyr nod) blir rörigt.
Marketing ops-team märker det när experiment i det tysta blir dyra. En produktansvarig får frågan att förklara AI-kostnader i ett möte. Och en konsult som hanterar flera kundautomationer behöver LLM-kostnadsspårning som inte bygger på lösa antaganden.
Det här arbetsflödet loggar tokenanvändning och uppskattad kostnad till Google Sheets per körning och per steg, så att du kan hitta toppar, granska användning och dela en rapport som faktiskt går att förstå. Du får se vad det gör, hur det fungerar, vad du behöver och de vanligaste fallgroparna innan du driftsätter det.
Så fungerar den här automationen
Här är hela arbetsflödet som du kommer att sätta upp:
n8n Workflow Template: Google Sheets: LLM-kostnadsspårning som håller
flowchart LR
subgraph sg0["When Exc. Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/n8n.svg' width='40' height='40' /></div><br/>Get an execution"]
n1@{ icon: "mdi:play-circle", form: "rounded", label: "When Exc.", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "model prices", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Standardize names", pos: "b", h: 48 }
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Check correctly defined"]
n5@{ icon: "mdi:location-exit", form: "rounded", label: "Stop and Error", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If not passed", pos: "b", h: 48 }
n7["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Merge"]
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Calculate cost"]
n9@{ icon: "mdi:play-circle", form: "rounded", label: "Test id", pos: "b", h: 48 }
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Find Nodes with LLM Use"]
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>create models_used list"]
n7 --> n8
n9 --> n0
n1 --> n0
n2 --> n4
n6 --> n5
n6 --> n7
n0 --> n10
n3 --> n2
n4 --> n6
n10 --> n7
n10 --> n11
n11 --> n3
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n1,n9 trigger
class n6 decision
class n4,n8,n10,n11 code
classDef customIcon fill:none,stroke:none
class n0,n4,n7,n8,n10,n11 customIcon
Varför detta är viktigt: förklara LLM-kostnader utan gissningar
LLM-användning i n8n kan kännas osynlig. Ett arbetsflöde körs, kunder får svar, alla är nöjda … tills du ska svara på enkla frågor som ”Vilken nod kostar mest?” eller ”Dubblerade förra veckans ändring våra tokens?” I många upplägg ligger tokenanvändningen begravd i exekveringsdata och sammanfattas inte smidigt för samma körning. Då slutar det med att du scrollar råloggar, exporterar JSON, eller i värsta fall gissar. Så spräcks budgetar och ”AI-kostnader” blir en skrämmande rad i rapporten som ingen kan försvara.
Det går snabbt. Så här brukar det fallera i riktiga team:
- Kostnader syns i efterhand, så du upptäcker problem först när fakturan kommer.
- Du kan inte pålitligt koppla kostnad till en enskild arbetsflödesexekvering utan manuell grävning.
- Olika varianter av modellnamn (”gpt-4-0613” vs ”gpt-4”) gör rapporteringen inkonsekvent och svår att jämföra.
- När en ny modell dyker upp kan spårningen sluta fungera i det tysta om du inte först validerar mappingar och prissättning.
Vad du bygger: en LLM-kostnadsmonitor i Google Sheets för varje n8n-körning
Det här arbetsflödet fungerar som en ”kvitto-skrivare” för din AI-användning. Det startar när ett annat arbetsflöde är klart och skickar över ett execution ID (eller när du kör det manuellt för att testa). Via n8n API hämtar det fullständiga exekveringsdetaljer för den körningen och letar sedan igenom exekveringspayloaden för att hitta LLM-användning där den råkar ligga gömd, även inne i nästlade agentsteg. Därefter standardiserar det modellnamn så att rapporteringen håller sig strukturerad, kontrollerar att dina modellmappingar och prislistor är giltiga och beräknar kostnader utifrån din prissättning per miljon tokens. Till sist skriver det resultaten till Google Sheets så att du kan granska kostnad per arbetsflöde, per nod och per modell utan att öppna en enda loggfil.
Arbetsflödet börjar med en trigger på exekveringshändelse (eller manuell trigger vid uppsättning). Det hämtar exekveringsdata, identifierar alla noder med LLM-användning, slår ihop och räknar fram totalt antal tokens och USD-kostnad, och skickar sedan strukturerade rader till Google Sheets för rapportering och revision.
Det här bygger du
| Vad som automatiseras | Vad du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att du kör 10 AI-tunga n8n-arbetsflöden per dag och att varje arbetsflöde har cirka 5 LLM-anrop. Om du lägger bara 5 minuter per körning på att lista ut ”vad som ändrades” när kostnaderna sticker iväg blir det ungefär 50 minuter varje dag, plus kontextbyten. Med den här automationen skickar du execution ID i slutet av arbetsflödet, låter den processa i en minut eller två och ditt Google Sheet uppdateras med tokenanvändning per steg och uppskattad USD-kostnad. De flesta team går från reaktivt gissande till en daglig avstämning som tar några minuter.
Innan du börjar
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
- Google Sheets för att lagra dina kostnads- och tokenloggar.
- Åtkomst till n8n API för att hämta exekveringsdetaljer via execution ID.
- LLM-arbetsflöden med ”Return Intermediate Steps” aktiverat (ställs in i dina agentinställningar för korrekt extrahering).
Kunskapsnivå: Medel. Du bör vara bekväm med att importera arbetsflöden, lägga till autentiseringsuppgifter och redigera ett par ”Set”-noder och dictionaries.
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
Ett övervakat arbetsflöde avslutas och skickar över ett execution ID. Det renaste mönstret är att lägga till en ”Execute Workflow”-nod i slutet av ditt målflöde och skicka med aktuellt execution ID till den här monitorn.
n8n hämtar fullständiga exekveringsdetaljer via API. Arbetsflödet använder execution ID för att hämta exekveringspayloaden, där tokenanvändning och agentens mellanliggande steg faktiskt finns.
Användning upptäcks, struktureras och prissätts. Kodsteg hittar LLM-användningsposter, ett mapping-steg standardiserar modellnamn och prissättning per miljon tokens används för att räkna fram prompt-, completion- och totalkostnad.
Resultaten slås ihop och loggas i Google Sheets. Du får rader som du kan filtrera på arbetsflödesnamn, nodnamn, modell, status och exekveringstid, vilket gör kostnadsgenomgångar enkla.
Du kan enkelt ändra modellmapping och prislistor så att de matchar dina leverantörer (OpenAI, Claude, OpenRouter, lokala modeller) och dina rapporteringsbehov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: konfigurera triggern Execute Workflow
Konfigurera hur arbetsflödet startar, antingen manuellt eller när ett annat arbetsflöde skickar ett execution-ID.
- Lägg till noden Manual Execution Start för att möjliggöra ad hoc-testning.
- Lägg till noden Execution Event Trigger för automatiska starter från ett annat arbetsflöde.
- I Execution Event Trigger definierar ni en indata med namnet execution_id med typen
number. - Anslut både Manual Execution Start och Execution Event Trigger till Retrieve Execution Details.
Tips: Använd Manual Execution Start med pinnad data för snabb validering under uppsättningen.
Steg 2: anslut n8n API för uppslag av körningar
Det här arbetsflödet läser körningsdata från er n8n-instans via det interna API:t.
- Öppna Retrieve Execution Details.
- Inloggningsuppgifter krävs: Anslut era n8nApi-credentials.
- Ställ in Resource till
executionoch Operation tillget. - Ställ in Execution ID till
{{ $json.execution_id }}.
⚠️ Vanlig fallgrop: Om execution_id saknas eller är ogiltigt kommer Retrieve Execution Details att returnera tom data och efterföljande parsning kommer att misslyckas.
Steg 3: extrahera LLM-användningsdata och kör parallella grenar
Det här steget parsar körningens runData för att hitta användning av språkmodeller och delar upp i parallella bearbetningsspår.
- Konfigurera Locate LLM Usage Nodes att använda den medföljande JavaScript-koden för att extrahera
llm_run_dataochtokensByModel. - Bekräfta att utdata-strukturen innehåller all_nodes_summary, llm_run_data och tokensByModel.
- Locate LLM Usage Nodes skickar utdata både till Combine Streams och Assemble Used Models parallellt.
- I Assemble Used Models behåller ni den medföljande koden som matar ut models_used från
tokensByModel.
Steg 4: standardisera modeller och definiera prissättning
Normalisera modellbeteckningar och ladda prisordlistan innan validering.
- Öppna Normalize Model Labels och ställ in Mode till
raw. - Ställ in JSON Output till den medföljande ordlistan i noden, inklusive nycklar som
"gpt-5-mini": "gpt-5-mini". - Säkerställ att Include Fields innehåller
models_usedoch att Include Other Fields är aktiverat. - Öppna Define Model Pricing och behåll den medföljande JSON Output som innehåller
model_price_dicmed priser per miljon tokens. - Ställ in Include Fields till
standardize_names_dic, models_usedoch aktivera Include Other Fields.
Tips: Se till att modellnycklarna i Normalize Model Labels är i linje med nycklarna i Define Model Pricing för att undvika valideringsfel.
Steg 5: validera ordlistor och beräkna kostnader
Validera att varje använd modell har en standardiserad beteckning och ett pris, och beräkna därefter användningskostnader.
- I Validate Model Dictionaries behåller ni JavaScript-koden som kontrollerar
models_usedmotstandardize_names_dicochmodel_price_dic. - I Branch on Validation bekräftar ni att villkoret använder
{{ $json.passed }}för att routa fel till Halt with Error Notice. - I Halt with Error Notice behåller ni uttrycket för Error Message som
{{ $json.message }}plus listorna över saknade modeller. - Anslut den lyckade grenen från Branch on Validation till Combine Streams så att den kan slås ihop med den parsade användningsdatan.
- I Compute Usage Cost behåller ni JavaScript-koden som beräknar
tokenUsage_costper körning och totalcost.
⚠️ Vanlig fallgrop: Om en modell förekommer i models_used men saknas i model_price_dic kommer Halt with Error Notice att stoppa arbetsflödet.
Steg 6: testa och aktivera ert arbetsflöde
Kör ett kontrollerat test för att bekräfta extrahering och kostnadsberäkningar innan ni aktiverar automatiserad övervakning.
- Klicka på Execute Workflow med Manual Execution Start och ett giltigt
execution_id. - Verifiera att Locate LLM Usage Nodes matar ut
tokensByModelochllm_run_data. - Bekräfta att Compute Usage Cost returnerar ett
cost-objekt medinput_cost,output_costochtotal_cost. - Om valideringen misslyckas, granska feldetaljerna i Halt with Error Notice och uppdatera ordlistorna därefter.
- När resultaten ser korrekta ut, slå på reglaget Active för produktionsanvändning.
Felsökningstips
- n8n API-autentisering kan gå ut eller sakna behörigheter. Om hämtning av exekvering misslyckas, kontrollera först din n8n API-credential i n8n Settings och bekräfta att den kan läsa exekveringar.
- Om du använder Wait-noder eller externa AI-leverantörer under belastning varierar processtider. Öka väntetiden om nedströmsnoder misslyckas på grund av tomma svar.
- Modellnamngivning är oftast boven när du hamnar i felspåret. Uppdatera din mapping i steget ”Normalize Model Labels” och din prissättning i ”Define Model Pricing”, annars fortsätter du att trigga validering för odefinierad modell.
Snabba svar
Cirka en timme om din n8n API-åtkomst och Google Sheets-åtkomst är på plats.
Nej. Du kommer främst att redigera dictionaries för modellnamn och priser. Kodnoderna finns redan med i arbetsflödet.
Ja. n8n har ett gratis alternativ för egen drift och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in kostnader från LLM-leverantören, eftersom det här arbetsflödet beräknar kostnad baserat på prissättningen du anger.
Två alternativ: n8n Cloud (hanterat, enklast uppsättning) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärd och hanterar n8n bra. Egen drift ger obegränsade exekveringar men kräver grundläggande serverhantering.
Ja, och det bör du troligen. Ersätt eller bygg ut modellalias-mappingen i ”Normalize Model Labels”, uppdatera prissättning i ”Define Model Pricing” och justera vad du skriver till Google Sheets så att kolumnerna matchar din rapportering (team, kund, miljö eller arbetsflödesnamn).
Oftast är det n8n API-credentialen: utgånget token, fel base URL eller saknad behörighet att läsa exekveringar. Bekräfta att credentialen som används av ”Retrieve Execution Details” kan komma åt exekveringsdata och testa sedan igen med manuell trigger. Om arbetsflödet i stället hamnar på spåret ”Stop and Error” betyder det ofta att ett modellnamn upptäcktes som ännu inte finns i din normaliserings-dictionary eller din prissättnings-dictionary.
Tillräckligt för de flesta team, eftersom det körs en gång per övervakad exekvering och bearbetar den exekveringens payload. På n8n Cloud är din praktiska gräns din månatliga exekveringskvot; om du kör själv begränsas volymen främst av serverstorlek och hur stor din exekveringsdata blir.
Ofta, ja. Zapier och Make har ingen inbyggd åtkomst till n8n:s exekveringsinternals, vilket är hela poängen här, och du skulle behöva bygga krångliga kringlösningar eller först skicka loggar någon annanstans. n8n hanterar också förgreningar och kodsteg utan att göra varje ”avancerat” behov till ett premiumtillägg. Om du bara vill ha en enkel månadssumma per leverantör kan ett lättviktigt verktyg räcka. Men om du vill ha tydlighet per nod och ett revisionsspår du kan försvara passar den här metoden bättre. Prata med en automationsexpert om du vill ha en second opinion.
När detta väl är på plats slutar du behandla LLM-kostnader som ett mysterium och börjar behandla dem som vilken annan spårbar insatsfaktor som helst. Arbetsflödet sparar kvittona, och du får tillbaka din tid (och din trovärdighet).
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.