Du missar inte EU:s hållbarhetsuppdateringar för att du inte bryr dig. Du missar dem för att de är begravda i portaler, PDF:er, utskottsidor och listor med ”gårdagens ärenden” som aldrig slutar förändras.
Hållbarhetskonsulter känner av smärtan med automatiserad EU-policybevakning först. Men complianceansvariga och drift-/operationschefer fastnar i samma loop. Det här arbetsflödet gör skanning till en enkel triagelista, så att du kan se vad som spelar roll på några minuter.
I stället för att läsa allt hämtar du automatiskt nya ärenden, klassificerar vad som faktiskt är hållbarhetsrelaterat med OpenAI, loggar det i Google Sheets och skapar Google Tasks för uppföljning.
Så fungerar automatiseringen
Här är hela arbetsflödet du kommer att sätta upp:
n8n Workflow Template: Google Sheets + Google Tasks för EU-policybevakning
flowchart LR
subgraph sg0["When clicking ‘Test workflow’ Flow"]
direction LR
n0@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n1["<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"]
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", 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/>Extract Yesterday Records"]
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/html.dark.svg' width='40' height='40' /></div><br/>Extract HTML Blocks"]
n5["<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/html.dark.svg' width='40' height='40' /></div><br/>Parse Blocks"]
n6@{ icon: "mdi:cog", form: "rounded", label: "Google Tasks", pos: "b", h: 48 }
n7@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Test workflow’", pos: "b", h: 48 }
n8@{ icon: "mdi:robot", form: "rounded", label: "Classification Agent", pos: "b", h: 48 }
n9@{ icon: "mdi:swap-vertical", form: "rounded", label: "Collect Answer", pos: "b", h: 48 }
n10@{ icon: "mdi:database", form: "rounded", label: "Record Sustainability Proced..", pos: "b", h: 48 }
n11@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Links", pos: "b", h: 48 }
n2 --> n10
n2 --> n6
n2 --> n0
n1 --> n2
n11 --> n0
n6 --> n0
n5 --> n11
n9 --> n1
n0 --> n8
n0 --> n1
n4 --> n5
n8 --> n9
n3 --> n4
n7 --> 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 n7 trigger
class n8 ai
class n2 decision
class n10 database
class n3 api
classDef customIcon fill:none,stroke:none
class n1,n3,n4,n5 customIcon
Varför detta är viktigt: ligga steget före EU:s hållbarhetsärenden
EU-policybevakning låter enkelt tills du faktiskt gör den. Ena dagen är det en post om ”planerad debatt” med vag formulering, nästa dag är det en PDF som ligger gömd bakom en ärendesida, och när du har klickat dig igenom tre utskott har du tappat tråden. Värst är den mentala belastningen. Du ställer hela tiden frågan: ”Är det här relevant för vår CSRD-omfattning eller inte?” och den frågan tar fokus från verkligt arbete som riskplanering, leverantörsdialog eller kundstrategi. Och ärligt talat: manuell bevakning skalar inte; när volymen ökar skapar processen fel.
Friktionen bygger på. Så här faller det isär i praktiken.
- Du lägger cirka 30–60 minuter per dag på att öppna portaler, leta efter gårdagens ärenden och försöka förstå vad som har ändrats.
- Relevanta ärenden missas eftersom titeln låter generisk tills du läser detaljerna.
- Även när du hittar något viktigt hamnar det ofta i någons webbläsarflikar i stället för i en delad logg.
- Uppföljningen blir inkonsekvent eftersom ”vi borde granska detta” inte blir en tilldelad uppgift med förfallodatum.
Det du bygger: automatiserad EU-hållbarhetstriage till Sheets + Tasks
Det här arbetsflödet övervakar Europaparlamentets lagstiftningsportal efter poster från föregående dag, hämtar relevanta HTML-segment och extraherar nyckelfält som titel, utskott, föredragande och PDF-länken. Därefter kör det varje ärende genom en OpenAI-klassificerare som svarar på en enkel fråga: är detta direkt kopplat till hållbarhetsämnen som miljö, cirkulär ekonomi eller åtgärder mot föroreningar? Poster som inte godkänns filtreras bort tyst. Poster som godkänns loggas i ett Google Sheet (er gemensamma sanningskälla) och omvandlas till en Google Task så att någon faktiskt granskar lagstiftningen. Du får en kort, fokuserad lista i stället för ett brusigt flöde.
Arbetsflödet startar med en manuell trigger (eller ett schema om du vill). Därifrån skrapar det, parsar, normaliserar PDF-länkar och bearbetar poster i batchar. Till sist förgrenar det: ”ja”-poster går till Google Sheets och Google Tasks, medan allt annat ignoreras.
Det du bygger
| Det som automatiseras | Det du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att du kontrollerar portalen 5 dagar i veckan och går igenom cirka 20 ärenden per dag. Manuellt kan även en snabb översikt plus att kopiera detaljer till ett ark ta runt 3 minuter per post, så du hamnar på ungefär en timme om dagen – och det är innan du skapar uppföljningsuppgifter. Med det här arbetsflödet triggar du det på under en minut, låter det bearbeta i bakgrunden och lägger sedan cirka 10 minuter på att granska bara ”ja”-posterna i Google Sheets och göra triage i Google Tasks. Det är nästan en timme tillbaka på intensiva dagar.
Innan du börjar
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Google Sheets för en delad bevakningslogg.
- Google Tasks för att skapa granskningspunkter automatiskt.
- OpenAI API-nyckel (hämta den i din OpenAI-dashboard)
Svårighetsnivå: Medel. Du kopplar Google-inloggningar, klistrar in en API-nyckel och gör små ändringar för att matcha ditt bevakningsark och din uppgiftslista.
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
En manuell körning (eller ett schema) sätter igång allt. I mallen startar du när du vill, vilket är bra medan du validerar resultat. Efter det byter de flesta till ett dagligt schema så att det körs utan att någon behöver komma ihåg det.
Arbetsflödet hämtar gårdagens portalposter och extraherar ärendedetaljer. Det hämtar relevanta HTML-block, parsar ut fält som titel och utskott och normaliserar sedan PDF-länkar så att URL:erna blir konsekventa och användbara senare.
Varje ärende bearbetas i batchar och klassificeras av OpenAI. n8n loopar igenom poster, frågar modellen om ämnet matchar dina hållbarhetskriterier och fångar ”ja/nej”-resultatet tillsammans med posten så att efterföljande steg kan fatta tydliga beslut.
Godkända poster går till Google Sheets och Google Tasks. En sammanslagning binder ihop postdata och AI-resultatet, ett ”if”-villkor förgrenar bara de relevanta, och sedan loggar arbetsflödet raden i Sheets och skapar en uppgift i din valda uppgiftslista.
Du kan enkelt ändra hållbarhetskriterierna för att fånga fler (eller färre) poster utifrån dina behov. Se hela implementeringsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: konfigurera den manuella triggern
Starta arbetsflödet med en manuell trigger så att ni kan testa hela flödet för scraping och klassificering från start till mål.
- Lägg till och öppna Manual Execution Start.
- Lämna standardinställningarna som de är (inga fält krävs).
- Valfritt: behåll Flowpast Branding i canvasen som referens.
Steg 2: koppla kedjan för datahämtning och HTML-tolkning
Det här segmentet hämtar EU-lagstiftningsposter, extraherar HTML-block och tolkar strukturerade fält.
- I Fetch Prior Day Records ställer ni in URL till
=https://oeil.secure.europarl.europa.eu/oeil/en/search?sessionDay.allDays=false&sessionDay.day={{$now.minus(18,'days').format('yyyyMMdd')}}&sessionDay.type=ALL. - I Pull HTML Segments ställer ni in Operation till
extractHtmlContentoch säkerställer att extraktionsnyckelnBlocksanvänder CSS-selektorn.erpl_document-wrappermed Return Array aktiverat. - I Parse Segment Fields ställer ni in Operation till
extractHtmlContent, Data Property Name tillBlocksoch konfigurerar extraktionsnycklarna förReference Number,Committee,Rapporteur,Title/Description,PDF Link(attributhref) samtDate.
Steg 3: normalisera länkar och batcha poster
Förbered formatet för PDF-länken och iterera varje post genom AI- och merge-pipelinen.
- I Normalize PDF Links behåller ni Include Other Fields aktiverat och ställer in tilldelningen för PDF Link till
=https://oeil.secure.europarl.europa.eu{{ $json['PDF Link '] }}. - Lägg till Iterate Records Batch efter Normalize PDF Links för att bearbeta poster en och en (standardinställningar för batch).
- Bekräfta att Iterate Records Batch routar till både Sustainability Classifier och Combine Streams som visas i arbetsflödet.
Steg 4: konfigurera AI-klassificering och merge
Det här steget klassificerar varje post och mergar AI-svaret tillbaka in i originaldatan.
- Öppna Sustainability Classifier och ställ in Model till
gpt-4-turbo. - I Sustainability Classifier bekräftar ni att meddelandeinnehållet använder
{{ $json['Title/Description'] }}och{{ $json["Committee"] }}, och behåller JSON Output aktiverat. - Inloggningsuppgifter krävs: koppla era OpenAI-credentials i Sustainability Classifier.
- I Capture AI Result ställer ni in sustainability till
={{ $json.message.content.answer }}. - I Combine Streams ställer ni in Mode till
combineBySqlför att sammanfoga AI-resultatet med originalposten.
Steg 5: konfigurera routning och utdataåtgärder
Endast hållbarhetsrelaterade poster passerar den villkorliga grenen och skrivs sedan till Sheets och Tasks parallellt.
- I Branch Condition konfigurerar ni villkoret som Left Value
={{ $json.sustainability }}är lika medyes. - Bekräfta den parallella routningen: Branch Condition skickar utdata till både Log Sustainable Procedures och Create Google Task Item parallellt.
- I Log Sustainable Procedures behåller ni Operation inställd på
appendoch mappar kolumnerna till JSON-uttrycken som visas (t.ex.={{ $json['Title/Description'] }}). - Inloggningsuppgifter krävs: koppla era googleSheetsOAuth2Api-credentials i Log Sustainable Procedures.
- I Create Google Task Item ställer ni in Task till
[YOUR_ID]och Title till=Study {{ $json['Reference Number'] }} - EU Legislation. - I Create Google Task Item ställer ni in Notes till
=Title: {{ $json['Title/Description'] }} Reference Number: {{ $json['Reference Number'] }} Committee: {{ $json.Committee }} Rapporteur: {{ $json.Rapporteur }} PDF Link: {{ $json['PDF Link '] }} Date: {{ $json.Date }}och Status tillneedsAction. - Inloggningsuppgifter krävs: koppla era Google Tasks-credentials i Create Google Task Item.
PDF Link innehåller ett tab-tecken; behåll det exakt som konfigurerat, annars fylls inte länken i.Steg 6: testa och aktivera ert arbetsflöde
Kör ett manuellt test för att validera HTML-tolkningen, AI-klassificeringen och de parallella utdataflödena.
- Klicka på Execute Workflow på Manual Execution Start.
- Verifiera att Fetch Prior Day Records returnerar HTML och att Parse Segment Fields ger strukturerade fält som utdata.
- Kontrollera att Sustainability Classifier returnerar JSON med
{"answer":"yes"}eller{"answer":"no"}. - För “yes”-poster: bekräfta att Log Sustainable Procedures lägger till en rad och att Create Google Task Item skapar en uppgift.
- När allt är verifierat, ställ om arbetsflödet till Active för användning i produktion.
Felsökningstips
- Inloggningar för Google Sheets och Google Tasks kan löpa ut eller kräva särskilda behörigheter. Om det slutar fungera, kontrollera först din Google-anslutning i n8n under Credentials.
- Om EU-portalens sidstruktur ändras kan HTML-parsningen börja returnera tomma fält. När titlar eller PDF-länkar blir tomma, inspektera den hämtade HTML:en och uppdatera selektorerna i pars-noderna.
- Standardprompter för AI är generiska. Lägg in dina definitioner (CSRD-ämnen, branschexkluderingar, ”räkna som hållbarhet om…”) tidigt, annars lägger du eftermiddagarna på att tveka kring klassificeringen.
Snabba svar
Cirka 30 minuter om dina Google- och OpenAI-konton är redo.
Nej. Du kopplar främst konton och klistrar in en API-nyckel. Den enda ”finjusteringen” är att välja vilka fält du vill spara och hur strikt AI-filtret ska vara.
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 volymer. Du behöver också räkna in OpenAI API-användning (ofta några dollar i månaden vid måttlig volym).
Två alternativ: n8n Cloud (hanterad, 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 serverhantering.
Ja, och det bör du. De flesta anpassningar görs i prompten för hållbarhetsklassificeraren och i förgreningsvillkoret: du kan utöka bortom ”miljö/cirkulär ekonomi/föroreningar” till att inkludera branschämnen (kemikalier, förpackningar, transport), skärpa den till bara CSRD-relevanta poster eller skicka ”kanske”-poster till ett separat ark. Du kan också ändra Google Tasks-steget för att skriva till en annan uppgiftslista eller skapa uppgifter endast för högprioriterade utskott.
Oftast beror det på att Google-auktoriseringen har löpt ut eller att fel konto är anslutet. Återanslut Google Sheets-inloggningen i n8n och bekräfta sedan att Sheet ID och fliknamn matchar exakt. Kontrollera också delningsbehörigheter om arket ligger i en delad Drive.
De flesta små team kör detta dagligen utan att behöva tänka på några gränser.
Ofta, ja. Det här arbetsflödet tjänar på batchning, sammanslagning av flöden och villkorsstyrd förgrening, och n8n hanterar det snyggt utan att förvandlas till en labyrint av betalda ”tasks”. Du får också ett alternativ för egen hosting, vilket spelar roll när du vill köra mer utan att fakturan klättrar varje vecka. Zapier eller Make kan fortfarande vara bra om du bara behöver en enkel ”RSS till ark”-lösning och inte bryr dig om strikt AI-filtrering. Men när du vill ha konsekvent parsning plus ett AI-beslut plus två utgångar (Sheets och Tasks) är n8n oftast det lugnare valet. Vill du ha en snabb rekommendation baserad på din volym och teamsetup, prata med en automationsexpert.
Sätt upp det här en gång och låt sedan arbetsflödet sköta bevakningen. Du lägger tiden på att fatta beslut, inte på att leta länkar.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.