”Syns vi i AI-svar?” är en enkel fråga. Det svåra är att få ett tillförlitligt svar, eftersom du slutar med att köra samma prompt i flera verktyg, kopiera svaren till ett kalkylark och försöka förstå allt i efterhand.
Den här automationen för AI-synlighetsgranskning riktar sig främst till marknadschefer, men kommunikationsansvariga och byråoperatörer känner av det lika mycket. Du slutar lägga eftermiddagar på manuella kontroller och börjar bygga en felfri, repeterbar dataset som du faktiskt kan rapportera på.
Det här arbetsflödet skickar en prompt till OpenAI och Perplexity (med en valfri väg för ChatGPT-webbskrapning), analyserar sentiment och varumärkesrankning och loggar sedan allt i Google Sheets. Nedan ser du exakt hur det körs och vilka resultat du kan förvänta dig.
Så fungerar den här automationen
Hela n8n-arbetsflödet, från trigger till slutresultat:
n8n Workflow Template: OpenAI + Google Sheets: spårning av AI-synlighetsaudit
flowchart LR
subgraph sg0["Manual Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Manual Trigger", pos: "b", h: 48 }
n6@{ icon: "mdi:database", form: "rounded", label: "Append row in sheet", pos: "b", h: 48 }
n7@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model1", pos: "b", h: 48 }
n8@{ icon: "mdi:robot", form: "rounded", label: "Response Sentiment Analyse3", pos: "b", h: 48 }
n9@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser3", pos: "b", h: 48 }
n10@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model (GPT 5)", pos: "b", h: 48 }
n11@{ icon: "mdi:robot", form: "rounded", label: "OpenAI Anfrage", pos: "b", h: 48 }
n12@{ icon: "mdi:swap-vertical", form: "rounded", label: "OpenAI", pos: "b", h: 48 }
n13["<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/httprequest.dark.svg' width='40' height='40' /></div><br/>APIfy Call ChatGPT Scraper"]
n15["<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/perplexity.dark.svg' width='40' height='40' /></div><br/>Perplexity Request"]
n18@{ icon: "mdi:database", form: "rounded", label: "Read Prompts1", pos: "b", h: 48 }
n19@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over prompts", pos: "b", h: 48 }
n20@{ icon: "mdi:cog", form: "rounded", label: "before-loop-input", pos: "b", h: 48 }
n21@{ icon: "mdi:swap-vertical", form: "rounded", label: "manual input", pos: "b", h: 48 }
n22@{ icon: "mdi:cog", form: "rounded", label: "Limit for testing", pos: "b", h: 48 }
n23@{ icon: "mdi:swap-vertical", form: "rounded", label: "Perplexity Mapper", pos: "b", h: 48 }
n24@{ icon: "mdi:swap-vertical", form: "rounded", label: "ChatGPT Mapper", pos: "b", h: 48 }
n25@{ icon: "mdi:swap-vertical", form: "rounded", label: "Prepare Sheet Columns", pos: "b", h: 48 }
n26@{ icon: "mdi:cog", form: "rounded", label: "normalized-tool-response", pos: "b", h: 48 }
n27@{ icon: "mdi:cog", form: "rounded", label: "loop-input", pos: "b", h: 48 }
n28@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If sucessfull", pos: "b", h: 48 }
n29@{ icon: "mdi:cog", form: "rounded", label: "loop-end", pos: "b", h: 48 }
n12 --> n26
n29 --> n19
n27 --> n11
n27 --> n15
n27 --> n13
n21 --> n20
n28 --> n24
n28 --> n29
n18 --> n22
n24 --> n26
n0 --> n18
n11 --> n12
n22 --> n20
n19 --> n27
n23 --> n26
n20 --> n19
n7 -.-> n8
n15 --> n23
n6 --> n29
n25 --> n6
n26 --> n8
n10 -.-> n11
n9 -.-> n8
n13 --> n28
n8 --> n25
end
subgraph sg1["Response Sentiment A Flow"]
direction LR
n1@{ icon: "mdi:robot", form: "rounded", label: "Response Sentiment Analyse1", pos: "b", h: 48 }
n2@{ icon: "mdi:database", form: "rounded", label: "Sheet/Excel updaten", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "LLM-Prompts", pos: "b", h: 48 }
n4@{ icon: "mdi:brain", form: "rounded", label: "Chat Model", pos: "b", h: 48 }
n5@{ icon: "mdi:robot", form: "rounded", label: "Output Parser", pos: "b", h: 48 }
n14@{ icon: "mdi:swap-vertical", form: "rounded", label: "final mapping", pos: "b", h: 48 }
n16["<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/perplexity.dark.svg' width='40' height='40' /></div><br/>Perplexity Request1"]
n17@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map LLM Output", pos: "b", h: 48 }
n4 -.-> n1
n3 --> n16
n5 -.-> n1
n14 --> n2
n17 --> n1
n16 --> n17
n1 --> n14
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 n0 trigger
class n8,n9,n11,n1,n5 ai
class n7,n10,n4 aiModel
class n28 decision
class n6,n18,n2 database
class n13 api
classDef customIcon fill:none,stroke:none
class n13,n15,n16 customIcon
Problemet: spårning av AI-synlighet är för manuellt
Om du har försökt ”granska” ditt varumärke i AI-verktyg känner du redan till fällan. En person kör några prompts i ChatGPT. Någon annan kollar Perplexity efter källhänvisningar. Sedan klistrar ni in fragment i ett kalkylark som aldrig var byggt för detta. Nästa vecka försöker ni igen, men promptformuleringen har ändrats, modellen har ändrats och nu är er ”trend” i praktiken gissningar. Värre: ledningen vill fortfarande ha en uppdatering, vilket gör att du lägger tid på att samla skärmdumpar i stället för att faktiskt lära dig något.
Friktionen byggs på. Här är var det faller isär i riktiga team.
- Att köra samma prompt i flera verktyg tar cirka 10 minuter per prompt, och det är förvånansvärt lätt att glömma en källa.
- Utan ett standardiserat utdataformat kan du inte jämföra svar vecka för vecka, så ”varumärkessynlighet” blir en känsla i stället för ett mått.
- Sentiment och ”vem som rankar över oss” debatteras i Slack eftersom ingen loggade strukturerade fält.
- Källor försvinner i inklistrad text, vilket gör det svårare att bevisa var svaren kom ifrån när du rapporterar.
Lösningen: automatiserad granskning och loggning över flera modeller
Det här arbetsflödet gör kontroller av AI-synlighet till en repeterbar process som du kan köra när du vill. Det börjar med att hämta en lista med prompts från ett Google Sheet (eller använda manuell promptinmatning om du testar). För varje prompt skickar det samma förfrågan till OpenAI för ett baslinjesvar och till Perplexity för ett svar med källor. Om du aktiverar den valfria vägen kan det även anropa en Apify-actor för att hämta ett svar från ChatGPT:s webbgränssnitt, men den vägen innebär risk kopplad till användarvillkor, så många team hoppar över den. När svaren kommer tillbaka normaliserar arbetsflödet fälten så att varje modells utdata blir jämförbar, och kör sedan en LLM-baserad analys för sentiment och varumärkeshierarki (vem som nämns först, tvåa, trea). Till sist lägger det till en felfri rad per modell och prompt i ditt Google Sheet för utdata, redo för veckorapportering.
Arbetsflödet startar med en manuell trigger (lätt att byta till ett schema). Prompts batchas, varje prompt körs mot flera verktyg och svaren mappas till ett konsekvent schema. Sedan klassificerar sentimentgranskningsagenter ton och varumärkesordning, och arket uppdateras med strukturerade kolumner samt källor.
Det du får: automation vs. resultat
| Vad det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du granskar 20 prompts varje måndag i två AI-system (OpenAI och Perplexity). Manuellt kan du räkna med cirka 10 minuter per prompt för att köra den två gånger, kopiera svar, plocka ut källor och tagga sentiment, alltså ungefär 3 timmar totalt. Med det här arbetsflödet lägger du in de 20 promptarna i indatafliken, trycker på kör och väntar på bearbetning; din hands-on-tid är närmare 10 minuter. Du granskar fortfarande arket, men du granskar strukturerade rader, inte bygger om datasetet från noll.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Självhostat alternativ om du föredrar det (Hostinger fungerar bra)
- Google Sheets för inmatningsprompts och granskningsloggning
- OpenAI API för att generera baslinjesvar från modellen
- Perplexity API-nyckel (hämta den i din Perplexity API-dashboard)
Svårighetsnivå: medel. Du kopplar in inloggningar, skapar två flikar i arket och verifierar några fältmappningar.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
En körning startar på kommando (eller enligt schema). Mallen använder en manuell trigger så att du kan testa säkert, och byter sedan till webhook, Telegram-trigger eller tidsstyrt schema när du litar på resultatet.
Prompts kommer från ett enkelt indataark. n8n hämtar din kolumn ”Prompt” från Google Sheets, kan valfritt begränsa antal rader för test, och loopar sedan igenom prompts i batchar så att du inte överbelastar API:erna på en gång.
Varje prompt kontrolleras i flera AI-system. Arbetsflödet frågar OpenAI för baslinjesvaret och Perplexity för ett svar med källhänvisningar. Om du aktiverat den valfria Apify-vägen försöker det göra en ChatGPT-webbskrapning och använder en If-kontroll för att routa runt fel.
Svar normaliseras, analyseras och loggas. Mappningsnoder av typen ”Set” sätter ihop konsekventa fält (prompt, modellnamn, svarstext, flagga för varumärke nämnt, varumärkeshierarki, polaritet, emotionskategori och källor). Sedan läggs raden till i ditt Google Sheet för utdata så att din granskningshistorik alltid är uppdaterad.
Du kan enkelt ändra formatet på promptlistan för att inkludera kategorier eller trattsteg utifrån dina behov. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera den manuella triggern
Det här arbetsflödet startas manuellt så att ni kan testa promptar och output-mappning innan ni aktiverar det.
- Lägg till och öppna Manual Launch Trigger som arbetsflödets startpunkt.
- Koppla Manual Launch Trigger till Retrieve Prompt List.
Steg 2: Anslut Google Sheets
Dessa noder läser in prompt-indata och skriver tillbaka analysresultat till era kalkylark.
- Öppna Retrieve Prompt List och ställ in Range till
A1:A100och sheetId till[YOUR_ID]. - Credential Required: Anslut era
googleSheetsOAuth2Api-uppgifter i Retrieve Prompt List. - Öppna Update Spreadsheet Output och bekräfta att Operation är
appendmed önskade värden för sheetName och documentId. - Credential Required: Anslut era
googleSheetsOAuth2Api-uppgifter i Update Spreadsheet Output. - Öppna Append Row to Sheet och bekräfta att Operation är
appendmed korrekt sheetName och documentId. - Credential Required: Anslut era
googleSheetsOAuth2Api-uppgifter i Append Row to Sheet.
Steg 3: Förbered prompt-indata och loopning
Det här avsnittet bygger promptar, begränsar testobjekt och loopar igenom promptlistan i batchar.
- I Prompt Seed Builder ställer ni in Prompt till
Are Asics running shoes any goodför Perplexity-förpasset. - I Manual Prompt Entry ställer ni in Prompt till
Was sind die besten Laufschuhe?för manuell testning. - Öppna Test Item Limit och ställ in Max Items till
2för att hålla testkörningarna korta. - Verifiera att loop-sökvägen är Retrieve Prompt List → Test Item Limit → Pre-Loop Pass → Iterate Prompt Batches → Loop Input Marker.
Steg 4: Konfigurera parallella LLM-/verktygsanrop
När varje prompt går in i loopen körs tre verktyg parallellt för att hämta svar från olika källor.
- Bekräfta att Loop Input Marker skickar output parallellt till OpenAI Query Chain, Perplexity Query Call och Apify ChatGPT Scrape Call.
- I OpenAI Query Chain ställer ni in Text till
={{ $json.Prompt }}och behåller promptType somdefine. - Öppna OpenAI Chat Model Prime och välj modellen
gpt-5. - Credential Required: Anslut era
openAiApi-uppgifter i OpenAI Chat Model Prime. - Öppna Perplexity Query Call och ställ in model till
sonarmed meddelandeinnehåll={{ $json.Prompt }}. - Credential Required: Anslut era
perplexityApi-uppgifter i Perplexity Query Call. - Öppna Apify ChatGPT Scrape Call och ställ in URL till
https://api.apify.com/v2/acts/automation_nerd~chatgpt-prompt-actor/run-sync-get-dataset-itemsmed JSON Body satt till={ "prompts": [{{ JSON.stringify($json["Prompt"]) }}], "proxyCountry": "DE" }. - Credential Required: Anslut era
httpQueryAuth-uppgifter i Apify ChatGPT Scrape Call.
Steg 5: Mappa och normalisera modellsvar
Dessa noder standardiserar output-fält över de olika AI-verktygen.
- I OpenAI Response Mapper ställer ni in Response till
={{ $json.text }}och LLM tillOpenAI. - I Perplexity Response Map mappar ni Response till
={{ $json.choices[0].message.content }}och källhänvisningar tillSource1tillSource6. - I ChatGPT Response Map mappar ni Response till
={{ $json.response }}och källhänvisningar tillSource1tillSource6. - Säkerställ att alla tre grenar skickar output till Normalize Tool Result innan sentimentsbearbetningen.
Steg 6: Sätt upp sentimentsgranskningsagenter och output-parsers
Två sentimentsagenter betygsätter svaren och tillämpar strukturerad output-parsning.
- I Sentiment Review Agent A behåller ni Text satt till
=You task is to analyse the sentiment of a text message... "{{ $json.Message }}"och säkerställer att hasOutputParser är aktiverat. - Koppla Structured Output Reader till Sentiment Review Agent A och behåll JSON-schemaexemplet för output.
- I Sentiment Review Agent B behåller ni Text satt till
=Take this message and evaluate its content: "{{ $json.Response }}"med hasOutputParser aktiverat. - Koppla Structured Output Reader B till Sentiment Review Agent B och behåll JSON-schemaexemplet för output.
- Öppna Chat Model Core och ställ in modellen till
gpt-4.1-mini. - Credential Required: Anslut era
openAiApi-uppgifter i Chat Model Core. - Öppna OpenAI Chat Model B och ställ in modellen till
gpt-4.1-mini. - Credential Required: Anslut era
openAiApi-uppgifter i OpenAI Chat Model B.
Steg 7: Mappa slutfält och skriv resultaten
Det här steget förbereder output-fält för era sheets och sparar resultaten.
- I Final Field Mapping ställer ni in fält som Message till
={{ $('Map LLM Response').item.json.Message }}och Prompt till={{ $('Prompt Seed Builder').item.json.Prompt }}. - I Assemble Sheet Fields mappar ni Prompt till
={{ $('Loop Input Marker').item.json.Prompt }}och Response till={{ $('Normalize Tool Result').item.json.Response }}. - Behåll uttrycket för varumärkeskontrollen i Assemble Sheet Fields satt till
={{ $('Normalize Tool Result').item.json.Response.toLowerCase().includes("asics") }}. - Säkerställ att Final Field Mapping skickar output till Update Spreadsheet Output och att Assemble Sheet Fields skickar output till Append Row to Sheet.
Steg 8: Testa och aktivera ert arbetsflöde
Kör ett test för att validera promptflöde, parallella verktyg och sheet-output innan ni aktiverar produktion.
- Klicka på Execute Workflow och bekräfta att Retrieve Prompt List läser in värden från ert sheet.
- Följ den parallella körningen efter Loop Input Marker och verifiera att OpenAI Query Chain, Perplexity Query Call och Apify ChatGPT Scrape Call alla returnerar data.
- Bekräfta att output-mappningen lyckas i Normalize Tool Result och kontrollera sedan sentimentresultaten i Sentiment Review Agent B.
- Verifiera att nya rader visas i de sheets som är kopplade till Update Spreadsheet Output och Append Row to Sheet.
- När testningen är klar, växla arbetsflödet till Active för användning i produktion.
Vanliga fallgropar
- Google Sheets-inloggningar kan löpa ut eller kräva specifika behörigheter. Om det börjar skapa fel, kontrollera först skärmen Credentials i n8n och bekräfta att kalkylarket är delat med det anslutna Google-kontot.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om efterföljande noder misslyckas på grund av tomma svar.
- Standardprompts i AI-noder är generiska. Lägg in er varumärkeston tidigt, annars kommer du att redigera utdata i all evighet.
Vanliga frågor
Cirka en timme om dina API:er och ditt ark är redo.
Nej. Du kopplar mest konton och klistrar in API-nycklar. Den enda ”tekniska” delen är att matcha kolumnerna i ditt ark mot arbetsflödets fält.
Ja. n8n har ett gratis självhostat 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 kostnader för OpenAI- och Perplexity-API, som beror på hur många prompts du kör.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller självhostat på en VPS. För självhosting är Hostinger VPS prisvärt och hanterar n8n bra. Självhosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det är en av de bästa förbättringarna. Byt ut Manual Launch Trigger mot en Schedule Trigger och behåll strukturen ”Retrieve Prompt List → Split in Batches → append row” oförändrad. Vanliga anpassningar är att lägga till en kolumn för ”Prompt category”, spåra fler modeller genom att duplicera request-and-map-vägen och lägga till ett enkelt synlighetspoängfält för rapportering.
Oftast handlar det om utgången OAuth, fel Google-konto eller ett behörighetsproblem i kalkylarket. Återanslut Google Sheets i n8n och bekräfta sedan att exakt fil- och fliknamn matchar vad noderna förväntar sig. Kontrollera också att ditt ark har rubriker som ”Prompt” och utdata-kolumnerna; saknade rubriker kan göra att rader läggs till på fel ställe. Om det bara misslyckas ibland kan du slå i Googles rate limits vid stora batchar.
Många.
Ofta, ja, eftersom det här arbetsflödet inte bara är ”skicka prompt, lagra text”. Du loopar igenom många prompts, förgrenar på lyckade körvägar, normaliserar utdata och kör strukturerad LLM-analys, vilket snabbt blir klumpigt i enklare byggare. n8n låter dig också självhosta, så du betalar inte per litet steg när du skalar granskningar. Zapier eller Make kan fortfarande fungera bra för en lättviktig logg med två modeller utan sentiment, utan hierarki och utan batchning. Om du vill ha hjälp att välja, prata med en automationsexpert.
När du har ett granskningsark som fyller sig självt slutar ”Hur går det för oss i AI?” att vara en panikinsats. Arbetsflödet tar hand om den repetitiva loggningen så att du kan fokusera på vad svaren faktiskt säger.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.