Trasiga incheckningslänkar hos flygbolag är ett sådant problem som ser litet ut – tills teamet jagar dem varje vecka. Någon klistrar in en URL i Google Sheets, flygbolaget uppdaterar sidan och plötsligt är er “single source of truth” tyst fel.
Driftansvariga märker det först eftersom de äger processen. Resebyråägare märker det därefter när kunder frågar varför länken ger 404. Och marknadsteam som driver reseinnehåll dras också in i städningen. Den här automatiseringen för Sheets/Postgres-länkar håller incheckningslänkar korrekta och skapar ett sökbart arkiv du kan lita på.
Du får se hur arbetsflödet hämtar URL:er från ett kalkylark, skrapar flygbolagets sida, använder en LLM för att strukturera informationen, skriver tillbaka resultat till Google Sheets och lagrar sedan embeddings i Postgres för semantisk sökning senare.
Så fungerar den här automatiseringen
Här är hela arbetsflödet du kommer att sätta upp:
n8n Workflow Template: Google Sheets + Postgres: korrekta incheckningslänkar
flowchart LR
subgraph sg0["Chat Initiation Flow"]
direction LR
n0@{ icon: "mdi:swap-vertical", form: "rounded", label: "Iterate Records", pos: "b", h: 48 }
n1@{ icon: "mdi:database", form: "rounded", label: "Retrieve Airline Links", pos: "b", h: 48 }
n2@{ icon: "mdi:play-circle", form: "rounded", label: "Chat Initiation Trigger", pos: "b", h: 48 }
n3["<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/>Fetch Airline Page"]
n4@{ icon: "mdi:robot", form: "rounded", label: "LLM Data Extraction", pos: "b", h: 48 }
n5@{ icon: "mdi:brain", form: "rounded", label: "Conversational Model", pos: "b", h: 48 }
n6@{ icon: "mdi:cog", form: "rounded", label: "Delay for Reply", pos: "b", h: 48 }
n7@{ icon: "mdi:database", form: "rounded", label: "Update Sheet Output", pos: "b", h: 48 }
n8@{ icon: "mdi:vector-polygon", form: "rounded", label: "Create Vector Embeds", pos: "b", h: 48 }
n9@{ icon: "mdi:robot", form: "rounded", label: "Prepare Vector Text", pos: "b", h: 48 }
n10@{ icon: "mdi:robot", form: "rounded", label: "Chunk Large Text", pos: "b", h: 48 }
n11@{ icon: "mdi:cube-outline", form: "rounded", label: "Insert into Vector DB", pos: "b", h: 48 }
n12@{ icon: "mdi:cog", form: "rounded", label: "Pause Before Next Batch", pos: "b", h: 48 }
n5 -.-> n4
n0 --> n3
n10 -.-> n9
n6 --> n7
n11 --> n12
n1 --> n0
n8 -.-> n11
n2 --> n1
n7 --> n11
n4 --> n6
n3 --> n4
n12 --> n0
n9 -.-> n11
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 n2 trigger
class n4,n9,n10 ai
class n5 aiModel
class n11 ai
class n8 ai
class n1,n7 database
class n3 api
classDef customIcon fill:none,stroke:none
class n3 customIcon
Varför detta spelar roll: trasiga incheckningslänkar skapar dolt arbete
När flygbolagens webbincheckningssidor förändras (och det gör de, hela tiden) får ditt kalkylark ingen notis. En länk som fungerade förra månaden kan omdirigera i dag, eller landa på en generell “hantera bokning”-sida som förvirrar kunder. Sedan börjar jakten: någon öppnar varje flygbolagssajt, letar runt, uppdaterar URL:en och hoppas att den förblir giltig. Under tiden svarar personalen på onödiga meddelanden och du börjar tvivla på din egen dokumentation. Det handlar inte bara om tid. Det handlar om förtroende och tempo.
Det här växer snabbt. Så här faller det isär i verklig drift.
- Manuella stickprovskontroller över dussintals flygbolag blir en återkommande veckosyssla som ingen egentligen “äger”.
- Team kopierar URL:er till Sheets utan kontext, så senare kan du inte avgöra om en länk är “fel” eller bara ett nytt flöde på flygbolagets webbplats.
- När en kund rapporterar en trasig länk behöver du ändå verifiera sidan, hitta rätt väg och uppdatera arket för alla andra.
- Utan ett arkiv över vad som ändrats fortsätter du att lösa samma flygbolagsproblem varannan månad.
Det du bygger: Google Sheets + Postgres för länkkontroll och arkiv
Det här arbetsflödet gör din befintliga Google Sheet med flygbolagens inchecknings-URL:er till ett levande system som uppdaterar sig självt. Det börjar med att hämta flygbolagslänkar från Google Sheets och itererar sedan genom varje rad i batchar så att det kan hantera stora listor utan att tippa över. För varje flygbolag hämtar n8n sidinnehållet via en HTTP-förfrågan (i praktiken besöker den sidan åt dig) och skickar texten till en LLM som extraherar relevanta detaljer till strukturerad JSON. Efter en kort väntan för att säkerställa att modellsvaret är klart skriver arbetsflödet tillbaka den strukturerade, konsekventa outputen till Google Sheets. Slutligen skapar det embeddings och lagrar dem i en Postgres-vektordatabas så att du kan söka i arkivet senare med naturligt språk i stället för filter.
Arbetsflödet startar från en chatt-triggad körning, så du kan dra igång det vid begäran när du granskar länkar eller efter att du har lagt till nya flygbolag. Därefter går det genom skrapa → extrahera → uppdatera och avslutar med att dela upp längre text, generera embeddings och lägga in allt i Postgres. Slutresultatet är ett uppdaterat ark plus en sökbar historik du kan fråga när frågor dyker upp.
Det du bygger
| Det som automatiseras | Det du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att ditt ark spårar 40 flygbolag och att en manuell verifiering av incheckningslänk tar cirka 5 minuter per flygbolag när du räknar in att klicka runt och uppdatera raden. Det är ungefär 3 timmar av rutinjobb för en enda granskning. Med det här arbetsflödet triggar du en körning, låter n8n hämta och extrahera i batchar och lägger kanske 15 minuter på att granska de uppdaterade raderna och fixa eventuella specialfall. Samma resultat, mycket mindre avbrott.
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 din URL-lista för flygbolag.
- Postgres (med PGVector) för att lagra embeddings och sidarkiv.
- LLM-åtkomst (Ollama eller motsvarande) för extraktion och embeddings.
Svårighetsgrad: Medel. Du kopplar in behörigheter, bekräftar databaskonfigurationen och justerar en prompt så att den matchar dina kolumner i arket.
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
Du startar det via en chattliknande trigger. Arbetsflödet är gjort för granskningar vid begäran, så du kan köra det efter att du lagt till nya flygbolag eller när du misstänker att länkar har driftat.
Google Sheets står för kön. n8n hämtar flygbolagsraderna och använder sedan Split in Batches för att iterera utan att belasta sajter eller slå i dina exekveringsgränser.
Varje flygbolagssida hämtas och “översätts” till JSON. Noden HTTP Request hämtar den aktuella sidan, och LLM-extraktionen gör ostrukturerad text till ett förutsägbart objekt du kan lagra (tänk: fält du kan sortera, filtrera och validera).
Resultat tillbaka till Sheets och in i Postgres som minne. Arbetsflödet uppdaterar Google Sheet med den extraherade datan, delar sedan upp längre text, skapar embeddings och lägger in allt i en Postgres-vektor-DB så att du kan söka senare utifrån betydelse, inte nyckelord.
Du kan enkelt ändra vilka fält som extraheras och var de skrivs i Google Sheets utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: konfigurera triggern för chattstart
Det här arbetsflödet startar när en chattsession initieras, vilket sedan hämtar flygbolagslänkar för bearbetning.
- Lägg till och öppna Chat Initiation Trigger.
- Ställ in Public på
trueför att tillåta offentlig chattinitiering. - Bekräfta att körflödet börjar med Chat Initiation Trigger → Retrieve Airline Links.
Steg 2: anslut Google Sheets
Google Sheets lagrar flygbolagens URL:er och tar emot de extraherade resultaten.
- Öppna Retrieve Airline Links och välj ert kalkylark i Document ID och Sheet Name.
- Inloggningsuppgifter krävs: Anslut era
googleApi-inloggningsuppgifter i Retrieve Airline Links. - Öppna Update Sheet Output, ställ in Operation till
updateoch välj samma kalkylark. - Inloggningsuppgifter krävs: Anslut era
googleApi-inloggningsuppgifter i Update Sheet Output. - I Update Sheet Output → Columns mappar ni row_number till
{{ $('Iterate Records').item.json.row_number }}. - Mappa web check in details till
{{ $json.text.removeTags().replace(/^```json|```$/g, '').trim() }}.
Steg 3: konfigurera batchbearbetning och webb-hämtning
Poster itereras i batchar och varje flygbolagssida hämtas för AI-extraktion.
- Öppna Iterate Records och behåll standardbeteendet för batchar om ni inte behöver en anpassad batchstorlek.
- Öppna Fetch Airline Page och ställ in URL till
=https://r.jina.ai/{{ $json['WEB CHECK IN URL'] }}. - Ställ in Method till
POSToch aktivera Send Headers. - Ställ in Specify Headers till
jsonoch klistra in JSON i JSON Headers exakt så här:{ "Cookie": "cookie-keyname1=[CONFIGURE_YOUR_TOKEN]; cookie-keyname2=[CONFIGURE_YOUR_TOKEN]; cookie-keyname3=[CONFIGURE_YOUR_TOKEN]" }. - Inloggningsuppgifter krävs: Anslut era
httpHeaderAuth-inloggningsuppgifter i Fetch Airline Page.
Steg 4: konfigurera AI-extraktion
Arbetsflödet använder en LLM för att extrahera strukturerad incheckningsdata för flygbolag från sidinnehållet.
- Öppna LLM Data Extraction och ställ in Text till
. - Behåll den definierade prompten i Messages för att säkerställa konsekvent JSON-extraktion.
- Öppna Conversational Model och säkerställ att den är ansluten som språkmodell för LLM Data Extraction.
- Inloggningsuppgifter krävs: Anslut era
ollamaApi-inloggningsuppgifter i Conversational Model. - Bekräfta flödet: Fetch Airline Page → LLM Data Extraction → Delay for Reply.
Steg 5: konfigurera inmatning till vektordatabas
Extraherad data lagras i en vektordatabas för efterföljande sök och hämtning.
- Öppna Chunk Large Text och ställ in Chunk Size till
10000. - Använd Prepare Vector Text för att formatera den extraherade datan till dokument för vektorlager.
- Säkerställ att Create Vector Embeds är ansluten som embedding-modell för Insert into Vector DB.
- Inloggningsuppgifter krävs: Anslut era
ollamaApi-inloggningsuppgifter i Create Vector Embeds (inloggningsuppgifter för AI-undernod konfigureras här, inte i Insert into Vector DB). - Öppna Insert into Vector DB och ställ in Mode till
insert. - Inloggningsuppgifter krävs: Anslut era
postgres-inloggningsuppgifter i Insert into Vector DB. - Bekräfta flödet: Update Sheet Output → Insert into Vector DB → Pause Before Next Batch → Iterate Records.
Steg 6: testa och aktivera ert arbetsflöde
Kör ett end-to-end-test för att bekräfta att arbetsflödet skriver resultat till Google Sheets och lägger in embeddings i Postgres.
- Klicka på Execute Workflow och initiera en chattsession för att trigga Chat Initiation Trigger.
- Verifiera att en rad hämtas från Retrieve Airline Links och bearbetas av Iterate Records.
- Bekräfta att Update Sheet Output skriver strukturerad JSON i kolumnen web check in details.
- Kontrollera att Insert into Vector DB slutförs utan fel och att Pause Before Next Batch väntar
15sekunder. - När allt fungerar, växla arbetsflödet till Active för användning i produktion.
Felsökningstips
- Google Sheets-behörigheter kan gå ut eller kräva specifika rättigheter. Om det strular, kontrollera först det anslutna Google-kontot och delningsinställningarna för kalkylarket.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
- Inlägg i Postgres PGVector kan misslyckas när embedding-dimensionen inte matchar tabellens schema. Bekräfta att storleken på din vektorkolumn matchar embedding-modellen du använder.
Snabba svar
Cirka 45 minuter om ditt ark och din Postgres-databas är klara.
Nej. Du kopplar främst konton, klistrar in behörigheter och justerar en extraktionsprompt så att den matchar dina kolumner.
Ja. n8n har ett gratis alternativ för egen drift och en gratis provperiod på n8n Cloud. Molnplaner börjar på 20 USD/månad för högre volym. Du behöver också räkna in dina LLM-kostnader (för Ollama på din egen server är det främst beräkningskraft; för hostade modeller är det baserat på användning).
Två alternativ: n8n Cloud (hanterat, enklast att sätta upp) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärd och kör n8n bra. Egen drift ger dig obegränsat antal körningar men kräver grundläggande serverhantering.
Ja, och det bör du förmodligen. Du kan ändra vad du hämtar från arket i steget “Retrieve Airline Links” och sedan justera prompten i “LLM Data Extraction” så att den outputar exakt de JSON-fält du behöver (som inloggningssteg, bagageanteckningar eller en sammanfattning för “senast verifierad”). Vanliga anpassningar är att skrapa flera URL:er per flygbolag, skriva till andra kolumner i “Update Sheet Output” och lagra extra metadata tillsammans med embeddings i “Insert into Vector DB”.
Oftast beror det på utgångna OAuth-behörigheter eller att arket inte är delat med det anslutna Google-kontot. Anslut Google Sheets på nytt i n8n och bekräfta sedan att kalkylarks-ID och arbetsbladets/flikens namn inte har ändrats. Om du nyligen duplicerade arket är ID:t annorlunda även om namnet ser identiskt ut.
Om du kör n8n i egen drift finns ingen exekveringsgräns (det beror mest på din server och hur aggressivt du batchar förfrågningar). I n8n Cloud baseras gränserna på månatliga exekveringar, så större flygbolagslistor kan driva dig mot en högre nivå. I praktiken begränsas det här arbetsflödet av skrapning och LLM-hastighet, så de flesta team kör det som en periodisk revision i stället för kontinuerligt.
Ofta, ja. Det här arbetsflödet drar nytta av batchar, väntesteg och datahantering i flera steg – och ärligt talat blir det klumpigt (och dyrt) i enklare “trigger-action”-verktyg. n8n gör det också enklare att kombinera skrapning, AI-extraktion och databaslagring på ett ställe, vilket spelar roll när du bygger ett arkiv du kan fråga senare. Zapier eller Make kan fortfarande fungera bra om du bara vill ha ett enkelt flöde för “kolla länk, skicka varning”, men du slår snabbt i begränsningar när du lägger till embeddings och vektorsök. Prata med en automationsexpert om du vill ha hjälp att välja.
När detta väl rullar slutar ditt ark att vara en skör lista med länkar och blir i stället ett underhållet system med minne. Arbetsflödet tar hand om den repetitiva verifieringen så att du kan fokusera på service, inte städjobb.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.