Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
January 21, 2026

OpenAI + Google Sheets: säkrare textkontroller

Rickard Andersson Partner, Nodenordic.se

Inkommande text är rörig. Kontaktformulär, supportchattar, RSS-snuttar, webhook-payloads. En enda dålig prompt injection eller ett dolt script kan tyst förgifta nästa AI-steg du kör.

OpenAI Sheets logging är en räddare i nöden när du behöver fart och ett revisionsspår. Marketing Ops-team som granskar UGC märker det först. Säkerhetsmedvetna founders märker det också. Det gör även konsulter som bygger kundautomationer som inte har råd med ”överraskande” output.

Det här arbetsflödet granskar inkommande text med OpenAI, rensar den, riskpoängsätter och loggar allt till Google Sheets. Du ser var attacker stoppas, vad som saneras och vad som blockeras innan det når dina AI-verktyg.

Så fungerar den här automationen

Hela n8n-arbetsflödet, från trigger till slutoutput:

n8n Workflow Template: OpenAI + Google Sheets: säkrare textkontroller

Problemet: inkommande text kan kapa din AI

Om du kör AI på användarskapad text har du förmodligen sett det. Någon klistrar in en ”hjälpsam” instruktion som försöker skriva över din systemprompt. En annan inskickning innehåller en skum URL-förkortare. En tredje gömmer HTML i Markdown som ser ofarlig ut tills den hamnar i ett mejl, en kunskapsbas eller ett nedströms LLM-steg. Att granska allt manuellt tar tid, och det är lätt att missa den enda rad som spelar roll. Samtidigt är det värre att släppa igenom allt: du får dataläckor, trasiga outputs eller en AI-assistent som börjar följa angriparens instruktioner.

Det eskalerar snabbt. Här är var det fallerar i riktiga team.

  • Manuella granskningar stjäl cirka 1–2 timmar under intensiva dagar, och det är under ”snabbskannen” som subtil prompt injection slinker igenom.
  • Osäkra länkar slinker igenom, vilket innebär att du kan råka sammanfatta eller lagra innehåll som aldrig borde betraktas som tillförlitligt.
  • Utan en logg kan du inte bevisa vad som hände i efterhand, så varje incident blir gissningar och fingerpekande.
  • Enkla nyckelordsfilter är lätta att kringgå, och de blockerar också legitimt innehåll som råkar innehålla ”fel” fras.

Lösningen: granska, sanera, poängsätt och logga

Det här n8n-arbetsflödet fungerar som en säkerhetsmässig ”reception” för all inkommande text innan den når resten av din automation. Det startar när innehåll kommer in till en webhook-endpoint (till exempel från ett formulärverktyg, en chattplattform eller ett annat arbetsflöde). Därefter kontrollerar OpenAI texten mot riskkategorier och vanliga missbrukssignaler, och sedan letar ett andra lager efter prompt injection-mönster, skadlig formatering och misstänkta URL:er. Om innehållet är acceptabelt sanerar arbetsflödet det (tar bort farlig HTML och tveksamma protokoll), formaterar en tydlig rapport och markerar payloaden som redo för nedströms användning. Om det inte är acceptabelt skickas det till en avvisningsväg och kan larma dig via e-post så att inget farligt fortsätter i det tysta.

Arbetsflödet börjar med en inkommande webhook och mappar din payload till konsekventa fält. OpenAI utvärderar och validerar texten, sedan rensar ett saneringslager det som går att rensa på ett säkert sätt. Till sist returnerar arbetsflödet ett strukturerat svar och sparar beslutet och den sanerade texten i Google Sheets för ett tydligt revisionsspår.

Vad du får: automation vs. resultat

Exempel: så här ser det ut

Säg att du hanterar 30 inkommande meddelanden per dag från ett formulär och ett webhookflöde. Manuellt blir även 4 minuter per meddelande ungefär 2 timmar av skanning, copy-paste och tvekan kring länkar. Med det här arbetsflödet skickar du texten en gång till webhooken och väntar sedan på att de automatiska kontrollerna och saneringen ska bli klara (oftast en minut eller två). Du granskar bara den lilla andel som flaggas, och allt annat är redan loggat i Google Sheets med risknoteringar.

Det här behöver du

  • n8n-instans (testa n8n Cloud gratis)
  • Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
  • OpenAI för moderering, validering och formateringskontroller
  • Google Sheets för att lagra beslut, poäng och sanerad text
  • OpenAI API-nyckel (hämta den i OpenAI-dashboarden)

Svårighetsnivå: Medel. Du klistrar in inloggningsuppgifter, mappar en JSON-payload och justerar några promptar och tröskelvärden.

Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15-minuters konsultation).

Så fungerar det

En webhook tar emot texten. Du POST:ar JSON som { “content”: “your_text”, “source”: “identifier” } till arbetsflödets endpoint, och n8n fångar upp det direkt.

Payloaden mappas till strukturerade fält. Ett Set-steg standardiserar vad ”content” och ”source” betyder så att senare kontroller inte skapar fel när en app skickar lite andra nycklar.

OpenAI kör riskkontroller i lager. Först utvärderas och bekräftas modereringsliknande flaggor. Sedan letar en valideringspass efter prompt injection-mönster, XSS-liknande payloads, data URI-tricks och misstänkta URL:er. Vissa resultat slås ihop så att du får ett konsekvent slutbesked.

Felfritt innehåll saneras och paketeras för nedströms användning. Om det godkänns tar arbetsflödet bort farlig markup, formaterar en presentationsklar rapport och kör en sista QA-beredskapskontroll så att outputen går att använda. Om det inte godkänns bygger det en avvisningsrapport och kan skicka ett larmmejl så att den dåliga payloaden inte förblir dold.

Du kan enkelt justera avvisningströskeln för att vara striktare eller mer förlåtande utifrån dina behov. Se hela implementationsguiden nedan för alternativ för anpassning.

Steg-för-steg-guide för implementation

Steg 1: Konfigurera webhook-triggern

Konfigurera den inkommande webhooken så att externa system kan skicka innehåll för säkerhetsbearbetning och få ett svar.

  1. Lägg till och öppna Incoming Webhook Trigger.
  2. Ställ in Pathsanity-check.
  3. Ställ in HTTP MethodPOST.
  4. Ställ in Response ModeResponse Node så att arbetsflödet kan svara via Return Webhook Reply.

⚠️ Vanlig fallgrop: Om webhooken testas innan Return Webhook Reply är konfigurerad kan anrop hänga eftersom det saknas en responsnod.

Steg 2: Anslut OpenAI

Det här arbetsflödet använder flera OpenAI-drivna noder för klassificering, validering, sanering, formatering och QA-kontroller.

  1. Öppna Moderate Text Flags och välj era OpenAI API-inloggningsuppgifter.
  2. Öppna Validate Input Patterns, Sanitize Content Layer, Format Presentation och Final QA Readiness och anslut samma OpenAI-inloggningsuppgifter till varje nod.

Inloggningsuppgifter krävs: Anslut era openAiApi-inloggningsuppgifter

⚠️ Vanlig fallgrop: Med fem OpenAI-noder kommer en saknad inloggningsuppgift på en enda nod att bryta pipelinen—verifiera att alla är anslutna.

Steg 3: Sätt upp payload-mappning och modereringsgrind

Mappa inkommande webhook-payload, klassificera för policyöverträdelser och kombinera strömmar för efterföljande validering.

  1. I Map Payload Data, ställ in tilldelningen data till {{ $json.body }}.
  2. Konfigurera Moderate Text Flags med Operation satt till classify och Input till =.
  3. Bekräfta att Evaluate True Categories innehåller den medföljande JavaScript-koden som kontrollerar modereringskategorier och returnerar status och violations.
  4. Ställ in Verify Moderation Result för att kontrollera att {{ $json.status }} är lika med success.
  5. Säkerställ att Combine Streams har Mode satt till combine och Combine By satt till combineByPosition.

Map Payload Data skickar utdata parallellt till både Moderate Text Flags och Combine Streams.

Steg 4: Konfigurera pipeline för validering, sanering och formatering

Använd AI-noder för att validera input, sanera osäkert innehåll, formatera output och köra slutlig QA innan aggregering.

  1. I Validate Input Patterns, behåll JSON Output aktiverat och skicka användarmeddelandet med {{ $json.data.message }}.
  2. Ställ in Branch on Rejected så att den jämför att {{ $json.message.content.status }} är lika med REJECTED.
  3. I Sanitize Content Layer, använd {{ $json.message.content.validated_input }} som input och behåll JSON Output aktiverat.
  4. Ställ in Check Rejection Status så att den utvärderar att {{ $json.message.content.status }} är lika med REJECTED.
  5. I Format Presentation, ange {{ $json.message.content.sanitized_content }} som input och behåll JSON Output aktiverat.
  6. I Final QA Readiness, ange {{ $json.message.content.encoded_output }} som input och behåll JSON Output aktiverat.

Format Presentation skickar utdata parallellt till både Final QA Readiness och Aggregate Results.

Steg 5: Konfigurera aggregering och routningslogik

Aggregera resultat, uppdatera utdatafält och routa beslut till antingen svar eller ombearbetning.

  1. I Aggregate Results, ställ in Modecombine, Combine BycombineByPosition och Number Inputs4.
  2. I Update Output Fields, mappa alla fält med uttryck som {{ $json.message.content.action }}, {{ $json.message.content.sanitized_content }} samt rapportfälten som visas i noden.
  3. I Route by Decision, konfigurera regler för att kontrollera att {{ $json.message.content.status }} är lika med DELIVER, ESCALATE_REVIEW eller REPROCESS.
  4. Säkerställ att Route by Decision skickar utdata till Return Webhook Reply för levererade/eskalerade resultat och tillbaka till Validate Input Patterns för ombearbetning.

⚠️ Vanlig fallgrop: Felkonfigurerade statussträngar i Route by Decision kan routa giltiga objekt tillbaka till Validate Input Patterns och skapa loopar.

Steg 6: Konfigurera avvisningsrapportering och e-postaviseringar

När innehåll avvisas, sammanställ en rapport och avisera ert team via e-post, och returnera sedan ett reservsvar.

  1. I Build Rejection Report, mappa fält med uttryck som {{ $json.message.content.threat_assessment }} och {{ $json.message.content.critical_findings }}.
  2. Öppna Dispatch Alert Email och ställ in To Email{{ toEmail }} och From Email{{ fromEmail }}.
  3. Ställ in Subject{{ $json.message.input.threat_assessment.rejection_reason }}.
  4. Använd de medföljande HTML- och Text-kropparna med uttryck som {{ $('Incoming Webhook Trigger').item.json.headers['cf-connecting-ip'] }} och {{ $('Incoming Webhook Trigger').item.json.webhookUrl }}.
  5. I Compose Fallback Message, ställ in aiResponse till Unable to process your request at this time. Please try again later..

Inloggningsuppgifter krävs: Anslut era smtp-inloggningsuppgifter

Steg 7: Testa och aktivera ert arbetsflöde

Validera arbetsflödet end-to-end och aktivera det för produktionsanvändning.

  1. Klicka på Execute Workflow och skicka en POST-förfrågan till Incoming Webhook Trigger-URL:en med ett body.message-fält.
  2. Bekräfta att lyckade körningar returnerar data från Return Webhook Reply som innehåller uppdaterade fält från Update Output Fields.
  3. Skicka en test-payload som ska avvisas och verifiera att Build Rejection Report triggar Dispatch Alert Email, följt av Compose Fallback Message.
  4. När allt är verifierat, växla arbetsflödet till Active för att aktivera bearbetning i produktion.
🔒

Lås upp fullständig steg-för-steg-guide

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • OpenAI-inloggningar kan löpa ut eller slå i användningsgränser. Om saker slutar fungera, kontrollera först dina credential-inställningar i n8n och OpenAI:s användningsdashboard.
  • Om du använder Wait-noder eller extern rendering varierar bearbetningstiderna. Öka väntetiden om nedströms noder fallerar på tomma svar.
  • Behörigheter i Google Sheets kan vara förvånansvärt strikta när du byter konto. Om rader slutar loggas, bekräfta att arket är delat med samma Google-användare som är ansluten i n8n.

Vanliga frågor

Hur lång tid tar det att sätta upp den här OpenAI Sheets logging-automationen?

Cirka 30 minuter om din åtkomst till OpenAI och Google Sheets är klar.

Behöver jag kunna koda för att automatisera granskning av inkommande text?

Nej. Du kopplar främst konton och justerar några promptar och fältmappningar.

Är n8n gratis att använda för det här OpenAI Sheets logging-arbetsflödet?

Ja. n8n har ett gratis self-hosted-alternativ 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 OpenAI API-kostnader, som vanligtvis är några cent per batch av kontroller beroende på hur mycket text du processar.

Var kan jag hosta n8n för att köra den här automationen?

Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsat antal körningar men kräver grundläggande serverhantering.

Kan jag anpassa det här OpenAI Sheets logging-arbetsflödet för striktare regelefterlevnad?

Ja, och det bör du. Skärp trösklarna i switchen ”Route by Decision”, justera promptarna i ”Validate Input Patterns” och ”Sanitize Content Layer” så att de matchar din policy, och lägg till extra URL-regler om din bransch blockerar förkortare eller vissa domäner. Många team skriver också ett fält för ”beslutsorsak” i Google Sheets så att granskare ser exakt varför något avvisades.

Varför misslyckas min OpenAI-anslutning i det här arbetsflödet?

Oftast beror det på en ogiltig eller utgången API-nyckel i din OpenAI-credential i n8n. Det kan också vara ett fakturerings- eller kvotproblem på ditt OpenAI-konto, eller en modellbehörighetskonflikt om din workspace begränsar vissa modeller. Om felen bara sker på stora payloads, minska inputstorleken eller trunkera innehållet innan OpenAI-noderna.

Hur många poster kan den här OpenAI Sheets logging-automationen hantera?

Om du self-hostar n8n finns ingen fast körningsgräns (det beror främst på din server och OpenAI:s rate limits).

Är den här OpenAI Sheets logging-automationen bättre än att använda Zapier eller Make?

Det beror på hur säkerhetsinriktat du behöver göra det. Det här arbetsflödet använder flera OpenAI-kontroller, slår ihop resultat och routar olika utfall, vilket är precis där n8n ofta känns renare och mer kontrollerbart än en enkel 2-stegs Zap. Self-hosting är också viktigt om du vill ha obegränsade körningar och tajtare kontroll över dataflödet. Zapier eller Make kan fortfarande vara helt okej om du bara behöver en lättare innehållskontroll och en enda ”logga till sheet”-åtgärd. Om du vill ha hjälp att välja, prata med en automationsexpert.

Det här är den typen av arbetsflöde du sätter upp en gång och sedan förlitar dig på tyst varje dag. De repetitiva kontrollerna sker automatiskt, och du har ett tydligt underlag i Google Sheets när någon frågar: ”Hur kunde det här slinka igenom?”

Kontakta oss

Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.

×

Använd mall

Få direkt tillgång till denna n8n-arbetsflödes JSON-fil

Launch login modal Launch register modal