Att hålla koll på konkurrentpriser låter enkelt tills det blir en daglig övning i att hoppa mellan flikar, söka, kopiera länkar och gissa vilka annonser som faktiskt är jämförbara.
E-handelschefer märker det när marginalerna pressas. En marknadsansvarig som kör kampanjer märker det när påståenden om ”bästa pris” behöver bevis. Och om du är byrå eller konsult: manuella kontroller skalar inte. Den här automatiseringen av prisrapporter gör ett kalkylark till tydliga, konsekventa e-postrapporter.
Du får se hur arbetsflödet hämtar produktnamn från Google Sheets, hittar erbjudanden via Bright Datas Google Shopping-dataset, använder AI för att sammanfatta resultaten och mejlar en snygg HTML-rapport per produkt.
Så fungerar automatiseringen
Hela n8n-arbetsflödet, från trigger till slutresultat:
n8n Workflow Template: Google Sheets till e-post: konkurrentprisrapporter
flowchart LR
subgraph sg0["When clicking ‘Test workflow’ Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Test workflow’", pos: "b", h: 48 }
n1@{ icon: "mdi:database", form: "rounded", label: "Google Sheets", pos: "b", h: 48 }
n2@{ icon: "mdi:cog", form: "rounded", label: "Wait 30s - Polling Bright Data", pos: "b", h: 48 }
n3@{ icon: "mdi:cog", form: "rounded", label: "Snapshot Progress", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Snapshot Content", pos: "b", h: 48 }
n5@{ icon: "mdi:cog", form: "rounded", label: "Snapshot Request", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If - Checking status of Snap..", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check if snapshot ready", pos: "b", h: 48 }
n8@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n9@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If - Checking status for err..", 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/>Code - Check If Snapshot is .."]
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/>Code - Extract Necessary Data"]
n12@{ icon: "mdi:message-outline", form: "rounded", label: "Email Report", pos: "b", h: 48 }
n13@{ icon: "mdi:swap-vertical", form: "rounded", label: "Error message (replace with ..", pos: "b", h: 48 }
n14@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model", pos: "b", h: 48 }
n15@{ icon: "mdi:robot", form: "rounded", label: "Compare Prices and Generate ..", 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/markdown.dark.svg' width='40' height='40' /></div><br/>Markdown"]
n17["<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/>Code - Build HTML"]
n16 --> n17
n12 --> n8
n1 --> n8
n8 --> n5
n4 --> n10
n5 --> n2
n17 --> n12
n3 --> n6
n7 --> n4
n7 --> n11
n14 -.-> n15
n11 --> n15
n2 --> n3
n9 --> n13
n9 --> n4
n6 --> n9
n6 --> n2
n10 --> n7
n0 --> n1
n15 --> n16
n13 --> n8
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 n15 ai
class n14 aiModel
class n6,n7,n9 decision
class n1 database
class n10,n11,n17 code
classDef customIcon fill:none,stroke:none
class n10,n11,n16,n17 customIcon
Problemet: kontroller av konkurrentpriser är repetitiva (och opålitliga)
Om du säljer mer än en handfull produkter blir konkurrentbevakning en ständig distraktion. Du söker upp en produkt, skummar igenom en massa annonser, öppnar för många flikar och försöker sedan fånga ”det viktiga” på ett sätt som någon annan kan lita på. En vecka senare har formatet ändrats, länkarna är inaktuella och teamet diskuterar skärmdumpar i stället för att bestämma vad som ska göras. Under tiden rör sig priser snabbt. Missar du en förändring i två dagar reagerar du för sent, vilket är sämsta möjliga läge att fatta marginalbeslut.
Det blir mycket snabbt. Här är var det brukar fallera.
- Att söka på samma produkter om och om igen tar ungefär 10 minuter per produkt, och det är sällan ”klart” efter en sökning.
- Resultat sammanfattas inkonsekvent, så du kan inte jämföra en rapport med nästa utan att dubbelkolla källänkarna.
- Google Shopping-annonser är röriga, och att plocka ut pris, säljare och URL korrekt formaterat är lätt att göra fel manuellt.
- Ett stavfel eller en skillnad i versaler/gemener i produktnamnet kan tyst ge noll meningsfulla träffar, så du tror att prissättningen är stabil när den inte är det.
Lösningen: Google Sheets → Bright Data → AI-sammanfattning → e-postrapport
Det här arbetsflödet tar produktlistan du redan underhåller i Google Sheets och gör den till en repeterbar konkurrentprisrapport du faktiskt kan använda. Det börjar med att läsa varje produkttitel från arket, och gör sedan en fråga mot Bright Datas marketplace-dataset (Google Shopping) för att hämta tillgängliga annonser. När dataset-snapshottet är klart hämtar arbetsflödet resultaten, validerar dem och extraherar fälten du bryr dig om, som pris, säljarnamn, titel och annonsens URL. Därefter kliver AI in och sammanfattar de bästa erbjudandena i lättläst Markdown, som konverteras till strukturerad, stylad HTML. Till sist skickar n8n en e-postrapport per produkt, med upp till 20 av de billigaste erbjudandena och klickbara länkar tillbaka till annonserna.
Arbetsflödet startas manuellt (eller enligt ett schema du lägger till senare) och bearbetar produkterna en och en för att vara stabilt. Det väntar och pollar Bright Data tills snapshottet är redo, så du inte fastnar med ofullständig data. Om något misslyckas loggar det en varning och fortsätter till nästa produkt.
Det du får: automatisering vs. resultat
| Vad det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du följer 20 produkter varje vecka. Manuellt tar även en ”snabb” koll kanske 10 minuter per produkt när du väl har sökt, öppnat annonser, kopierat priser och klistrat in länkar, vilket blir runt 3 timmar i veckan. Med det här arbetsflödet uppdaterar du produktnamnen i Google Sheets, kör det och låter det jobba i bakgrunden. Det kan ta cirka 30 minuter från start till slut på grund av snapshot-pollning och AI-generering, men din aktiva tid är närmare 5 minuter.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Google Sheets som källa för produktlistan.
- Bright Data för att fråga mot Google Shopping-annonser.
- Google Gemini API-nyckel (hämta den via Google AI Studio / Google Cloud-uppgifter).
Svårighetsnivå: Medel. Du kopplar konton, installerar en community-nod och klistrar in en API-nyckel.
Vill du inte sätta upp detta själv? Prata med en automationsspecialist (gratis 15-minuters konsultation).
Så fungerar det
En uppdatering i arket (och sedan en körning) startar processen. Arbetsflödet börjar från en manuell trigger och läser direkt dina rader i Google Sheets så att det har aktuella produkttitlar.
Produkterna hanteras i en kontrollerad loop. n8n bearbetar objekt i batchar (en produkt i taget), vilket håller Bright Data-snapshotflödet stabilt och gör fel enklare att isolera.
Bright Data frågas, och sedan pollas det tills resultaten är klara. Arbetsflödet skickar en snapshot-filterförfrågan mot marketplace-datasetet, väntar, kontrollerar status och upprepar tills snapshottet lyckas (eller tills felspåret triggas).
AI förvandlar råa annonser till en rapport du kan vidarebefordra. Efter extrahering och rensning skapar Gemini en Markdown-sammanfattning, n8n konverterar den till HTML, paketerar den med e-postsäker styling och skickar den färdiga rapporten via e-postnoden.
Du kan enkelt justera logiken för produktmatchning så att den blir mer förlåtande (eller striktare) utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera triggern för manuell körning
Det här arbetsflödet startar manuellt så att ni kan testa processen för prisögonblicksbild vid behov.
- Lägg till och öppna Manual Execution Start.
- Låt standardinställningarna vara som de är (inga parametrar krävs).
- Koppla Manual Execution Start till Retrieve Spreadsheet Rows för att starta datahämtningen.
Steg 2: Anslut Google Sheets
Hämta produkttitlar från ett kalkylark som driver snapshot-förfrågningarna.
- Öppna Retrieve Spreadsheet Rows och välj Google Sheets-filen.
- Ställ in Document på
[YOUR_ID]och Sheet pågid=0. - Inloggningsuppgifter krävs: Anslut era googleSheetsOAuth2Api-inloggningsuppgifter.
- Koppla Retrieve Spreadsheet Rows till Iterate Records Batch för att bearbeta objekt ett i taget.
title så att Request Snapshot Filter kan använda {{$json.title}}.Steg 3: Konfigurera hämtning av Bright Data-snapshot
Begär en filtrerad marknadsplats-snapshot, polla tills den är klar och hämta sedan datan.
- I Request Snapshot Filter, ställ in Dataset på
[YOUR_ID]. - Ställ in Filters Group på
={"operator":"and","filters":[{"name":"title","operator":"includes","value":"{{$json.title}}"},{"name":"item_price","operator":"is_not_null"}]}. - Inloggningsuppgifter krävs: Anslut era brightdataApi-inloggningsuppgifter i Request Snapshot Filter, Fetch Snapshot Status och Retrieve Snapshot Data.
- I Pause Before Polling, ställ in Amount på
30(sekunder) för att vänta mellan statuskontrollerna. - I Fetch Snapshot Status, ställ in Snapshot ID på
{{ $json.snapshot_id }}. - I Verify Snapshot State, säkerställ att villkoret kontrollerar Status med
{{ $json.status }}notEqualsrunning. - I Detect Snapshot Errors, säkerställ att villkoret kontrollerar Status med
{{ $json.status }}equalsfailed. - I Retrieve Snapshot Data, ställ in Snapshot ID på
{{ $('Request Snapshot Filter').item.json.snapshot_id }}.
Steg 4: Validera och förbered snapshot-data
Validera snapshot-strukturen och extrahera endast de fält som används i AI-sammanfattningen.
- I Script: Validate Snapshot, behåll JavaScript-koden som kontrollerar
Array.isArray($json.items). - I Assess Snapshot Ready, bekräfta att villkoret använder
{{ $json.isArray}}för att styra flödet. - I Script: Extract Fields, behåll extraktionslogiken som matar ut
price,seller_name,titleochurl. - Säkerställ att Iterate Records Batch loopar igenom poster genom att koppla Dispatch Email Report och Set Error Notification tillbaka till den för fortsatt batchning.
Steg 5: Konfigurera generering av AI-sammanfattning
Använd Gemini för att analysera de extraherade annonserna och skapa en Markdown-sammanfattning.
- Öppna Generate Price Summary och ställ in Text på
{{$json}}. - Behåll promptinnehållet i Generate Price Summary så att modellen rankar de 20 källorna med lägst pris.
- Öppna Gemini Chat Engine och ställ in Model Name på
models/gemini-2.0-flash. - Inloggningsuppgifter krävs: Anslut era googlePalmApi-inloggningsuppgifter i Gemini Chat Engine (det här är språkmodellen för Generate Price Summary).
Steg 6: Konfigurera e-postutskicket
Konvertera AI-utdata till HTML, omslut den med styling och skicka rapporten.
- I Convert Markdown HTML, ställ in Mode på
markdownToHtmloch Markdown på{{ $json.text }}. - I Compose HTML Wrapper, behåll HTML-omslagskoden så att e-postmeddelandet får konsekvent styling.
- I Dispatch Email Report, ställ in HTML på
{{ $json.html }}. - Ställ in Subject på
=Your N8N report about {{ $('Iterate Records Batch').item.json.title }}. - Ställ in To Email och From Email på
[YOUR_EMAIL]. - Inloggningsuppgifter krävs: Anslut era smtp-inloggningsuppgifter i Dispatch Email Report.
Steg 7: Lägg till felhantering
Fånga misslyckade snapshots och loopa till nästa post med ett meddelande.
- I Set Error Notification, behåll meddelandetilldelningen satt till
=Bright Data snapshot error for item "{{ $('Iterate Records Batch').item.json.title }}": {{ $('Fetch Snapshot Status').item.json.warning }}. - Säkerställ att Detect Snapshot Errors routar fel till Set Error Notification.
- Verifiera att Set Error Notification kopplas tillbaka till Iterate Records Batch så att arbetsflödet fortsätter med nästa rad.
Steg 8: Testa och aktivera ert arbetsflöde
Kör ett manuellt test för att verifiera datahämtning, AI-utdata och e-postleverans innan ni aktiverar.
- Klicka på Execute Workflow från Manual Execution Start för att köra ett test.
- Bekräfta att Request Snapshot Filter returnerar ett
snapshot_idoch att pollningen slutförs i Fetch Snapshot Status. - Kontrollera att Dispatch Email Report skickar ett e-postmeddelande med formaterat HTML-innehåll och ett ämne som innehåller produkttiteln.
- När ni är nöjda, slå på arbetsflödet till Active för användning i produktion.
Vanliga fallgropar
- Bright Data-inloggningsuppgifter kan löpa ut eller så kan dataset-åtkomst vara begränsad. Om det slutar fungera, kontrollera först åtkomst i din Bright Data-workspace och tokenstatus.
- Om du använder Wait-noder eller extern snapshot-bearbetning varierar tiderna. Öka väntetiden om nedströmsnoder fallerar för att snapshot-innehållet fortfarande är tomt.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du att redigera utdata i all evighet.
Vanliga frågor
Räkna med ungefär en timme om dina Bright Data- och Google-konton är redo.
Nej. Du kopplar främst konton och klistrar in API-nycklar. Det finns Code-noder i arbetsflödet, men du kan köra det som det är utan att redigera dem.
Ja. n8n har ett gratis alternativ för egen hosting 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 Bright Data-användning och kostnader för Gemini API.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och hanterar n8n bra. Egen hosting ger dig obegränsade körningar men kräver grundläggande serveradministration.
Ja, men då vill du ändra Bright Data-filterförfrågan och extraheringslogiken tillsammans så att resultaten inte blir brusiga. Många team går från skiftlägeskänslig matchning till ett normaliserat titelfält (gemener, trimmat) och lägger sedan till en regel för ”minsta likhet” innan objekt skickas till Gemini. Du kan också begränsa antal resultat per säljare, exkludera marknadsplatser du inte vill ha och justera regeln ”topp 20 billigaste” till ”topp 10 plus bäst betygsatta” om det ligger närmare dina inköpskriterier.
Oftast beror det på en utgången token eller saknade dataset-behörigheter i Bright Data. Det andra vanliga problemet är att snapshottet aldrig når läget ”klart”, vilket kan hända om filtret inte ger några träffar eller om datasetet är hårt belastat. Kontrollera också skiftläget i dina produkttitlar, eftersom en mismatch kan ge ”giltiga” tomma resultat som senare ser ut som att arbetsflödet har gått sönder.
Dussintals per körning är realistiskt för de flesta små team.
För just det här jobbet är n8n oftast bättre, eftersom arbetsflödet behöver loopar, väntan/pollning, felspår och lite transformation innan AI-sammanfattningen. Zapier och Make kan göra delar av det, men mönstret ”polla tills snapshottet är klart, och fortsätt sedan” kan bli krångligt och dyrt i volym. n8n ger dig också möjligheten att köra med egen hosting, vilket spelar roll när du kör det ofta. Om du bara behöver en enkel ”skicka ett mejl när en cell ändras” funkar de verktygen bra. Prata med en automationsspecialist om du vill ha hjälp att välja den enklaste lösningen.
När detta väl rullar blir konkurrentbevakning en bakgrundsuppgift i stället för en punkt i kalendern. Du får korrekt formaterade indata, konsekventa utdata och prisbeslut som tas i tid.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.