Att kopiera detaljer från rättsfall ur stökiga HTML-sidor är den typen av jobb som ser ”snabbt” ut tills du har bränt en hel eftermiddag och fortfarande inte litar på ditt kalkylark.
Juridiska forskare känner den här smärtan först. Men processupportteam och complianceanalytiker stöter på samma vägg, bara med större högar. Den här Bright Data Sheets-automationen gör ostrukturerade målsidor till felfria rader som du kan sortera, filtrera och återanvända.
Du får se vad arbetsflödet gör, vad du behöver för att köra det och hur det tar bort repetitiva moment utan att tappa detaljerna som spelar roll.
Så fungerar den här automationen
Hela n8n-arbetsflödet, från trigger till slutligt resultat:
n8n Workflow Template: Bright Data + Google Sheets: rensad ärendedata
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:cog", form: "rounded", label: "List all tools for Bright Data", pos: "b", h: 48 }
n2@{ icon: "mdi:code-braces", form: "rounded", label: "Create a binary data for Lin..", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set the Legal Case Research ..", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Bright Data MCP Client For L..", pos: "b", h: 48 }
n5@{ icon: "mdi:robot", form: "rounded", label: "Case Extractor", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n8@{ icon: "mdi:cog", form: "rounded", label: "Bright Data MCP Client For L..", pos: "b", h: 48 }
n9@{ icon: "mdi:robot", form: "rounded", label: "HTML to Textual Data Extract..", 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/httprequest.dark.svg' width='40' height='40' /></div><br/>Webhook Notification for HTM.."]
n11@{ icon: "mdi:cog", form: "rounded", label: "Write the case content to disk", pos: "b", h: 48 }
n12@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model For..", 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/code.svg' width='40' height='40' /></div><br/>Code to output the collectio.."]
n14@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model for..", pos: "b", h: 48 }
n15@{ icon: "mdi:cog", form: "rounded", label: "Wait", pos: "b", h: 48 }
n15 --> n8
n5 --> n13
n7 --> n15
n6 -.-> n5
n1 --> n3
n3 --> n4
n0 --> n1
n13 --> n7
n9 --> n2
n9 --> n10
n4 --> n5
n12 -.-> n5
n2 --> n11
n8 --> n9
n10 --> n7
n14 -.-> n9
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 n5,n6,n9 ai
class n12,n14 aiModel
class n10 api
class n2,n13 code
classDef customIcon fill:none,stroke:none
class n10,n13 customIcon
Problemet: målsidor är läsbara för människor, smärtsamma för kalkylark
Domstolssajter älskar semistrukturerade sidor. Rubriker skiljer sig mellan jurisdiktioner, tabeller kapslas, och nyckelfält är uppdelade över flera sektioner. Så du gör den manuella dansen: öppnar ett mål, letar upp diarienumret, scrollar efter parter, hämtar beslutsdatum, kopierar sammanfattningen, klistrar in den någonstans, och inser sedan att du missade domstolens namn och får gå tillbaka. Multiplicera det med 30 mål för ett PM, eller 300 för en datamängd, så blir det ett slit. Ännu värre: det är lätt att läsa av ett fält fel eller klistra in i fel kolumn, vilket i tysthet saboterar din analys senare.
Friktionen bygger på. Här är var det faller isär.
- Olika jurisdiktioner placerar samma ”grundläggande” målfakta på helt olika ställen på sidan.
- Manuell kopiera/klistra in skapar subtila fel, som omkastade datum eller saknade partnamn, som du ofta upptäcker först efter att rapporten är byggd.
- Team tappar timmar på att rensa samma data igen, eftersom ingen litar på förra månadens extrahering.
- Även duktiga jurister och researchers bränner fokus på formatering i stället för att hitta mönster mellan mål.
Lösningen: Bright Data-skrapning + AI-extrahering till strukturerade fält
Det här arbetsflödet tar en lista med URL:er till rättsfall, hämtar rå HTML på ett tillförlitligt sätt med Bright Data och använder sedan ett AI-steg för att omvandla den stökiga sidan till strukturerad information du faktiskt kan använda. Det börjar med att tilldela en eller flera URL:er som ”case source”, skrapar sedan sidan som HTML via Bright Datas MCP-verktyg (så du slipper kämpa med grundläggande blockeringar eller trasiga förfrågningar). Därefter identifierar en LLM-baserad extraherare det du bryr dig om och konverterar innehållet till läsbar text plus specifika fält. Efter det loopar arbetsflödet igenom fler mållänkar i batchar, upprepar processen konsekvent och skickar det extraherade resultatet till en webhook för vidare lagring. Det sparar också en filkopia för arkivering, vilket är praktiskt när du behöver kunna visa underlag i efterhand.
Enkelt uttryckt: du anger mållänkarna, Bright Data hämtar sidorna, AI gör dem till strukturerade målposter, och n8n skickar posterna till ditt system (inklusive Google Sheets) samtidigt som en arkivfil sparas i bakgrunden.
Det du får: automation kontra resultat
| Vad det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut i praktiken
Säg att du behöver 50 mål för ett researchrace. Manuellt är det vanligt att lägga cirka 10 minuter per mål för att hitta fält, kopiera, rensa formatering och klistra in i Google Sheets, vilket är ungefär 8 timmar monotont arbete. Med det här arbetsflödet lägger du in URL-listan en gång, låter Bright Data hämta sidorna, och AI-extraheringen kör i bakgrunden medan n8n loopar igenom dem. Även om du avsätter cirka 30 minuter för att sätta upp körningen plus lite väntetid har du i praktiken tagit tillbaka större delen av en arbetsdag.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Self-hosting-alternativ om du föredrar det (Hostinger fungerar bra)
- Bright Data för tillförlitlig skrapning av målsidor.
- Google Sheets för att lagra felfria, sökbara rader.
- Google Gemini API-nyckel (hämta den från Google AI Studio).
Kunskapsnivå: Medel. Du kopplar upp autentisering och är bekväm med att redigera prompts och fältmappningar.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Du startar körningen med en lista av mål-URL:er. I arbetsflödet startar en manuell trigger, och sedan tilldelar ett ”set”-steg de initiala käll-URL:erna till mål som du vill extrahera.
Bright Data hämtar rå HTML. Arbetsflödet använder Bright Datas MCP-skrapläge för att hämta varje sida som HTML, vilket är betydligt mer pålitligt än att försöka tolka det som din webbläsare råkade rendera.
AI gör om sidan till strukturerad måldata. En LLM-extraheringskedja gör om HTML till läsbar text och plockar ut fälten du bryr dig om (domstol, jurisdiktion, målnummer, beslutsdatum, sammanfattning och liknande). Ett steg för strukturerad parsning hjälper till att hålla output konsekvent från mål till mål.
Arbetsflödet skickar ut posten och fortsätter loopa. Varje extraherat mål skickas till en webhook (som kan mata Google Sheets eller din databas), en filkopia sparas för arkiv, och sedan bearbetar en batch-loop nästa mål efter en kort väntan.
Du kan enkelt ändra vilka fält som extraheras så att de matchar dina kolumner i arket utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera den manuella triggern
Starta arbetsflödet med en manuell trigger så att ni kan testa hela pipelinen vid behov.
- Lägg till noden Manual Run Starter som din trigger.
- Lämna alla inställningar på standardvärden för manuell körning.
Steg 2: Anslut MCP och definiera URL:er för källor till ärenden
Dessa noder etablerar åtkomst till MCP-verktyget och definierar era initiala inställningar för ärendesökning och webhook.
- Öppna Retrieve MCP Tool List och anslut MCP-uppgifter. Credential Required: Anslut era mcpClientApi-uppgifter.
- I Assign Case Source URLs ställer ni in följande tilldelningar:
- url till
https://www.courtlistener.com/?q=IT%20laws%20for%20cyber%20crime&type=o&order_by=dateFiled%20desc&stat_Published=on - webhook_url till
https://webhook.site/[YOUR_ID] - base_url till
https://www.courtlistener.com
- url till
- Konfigurera Primary MCP Scrape med:
- toolName inställt på
scrape_as_html - operation inställt på
executeTool - toolParameters inställt på
={ "url": "{{ $json.url }}" }
- toolName inställt på
- Anslut MCP-uppgifter i Primary MCP Scrape. Credential Required: Anslut era mcpClientApi-uppgifter.
https://webhook.site/[YOUR_ID] med er faktiska webhook-endpoint, annars skickas era uppdateringar ingenstans.Steg 3: Sätt upp AI-extrahering för ärendelistor
Det här steget extraherar strukturerade ärendeposter från den initiala HTML-skrapningen med Gemini och en parser för strukturerad output.
- Öppna Case Data Extractor och ställ in text till
=Extract the content in a structured format. Here's the content : {{ $json.result.content[0].text }}. - Säkerställ att Case Data Extractor har hasOutputParser aktiverat.
- I Structured Parser ställer ni in jsonSchemaExample till
[{ "Id": "", "Link" : "", "Title": "United States v. IXCOLGONZALEZ"}]. - Konfigurera Gemini Chat Model - Cases med modelName inställt på
models/gemini-2.0-flash-exp. - Anslut Google Gemini-uppgifter i Gemini Chat Model - Cases. Credential Required: Anslut era googlePalmApi-uppgifter.
Obs: Structured Parser är en AI-verktygsundernod; uppgifter ska läggas till i den överordnade Case Data Extractor via Gemini Chat Model - Cases, inte direkt i Structured Parser.
Steg 4: Iterera och skrapa individuella ärendesidor
När ni har ärendelistan loopar arbetsflödet igenom varje post, begränsar anropstakten och skrapar detaljerad HTML.
- I Assemble Case Collection behåller ni jsCode som
return $input.first().json.outputför att skicka de extraherade ärendena vidare. - Använd Iterate Case Records för att dela upp ärenden i batchar för looping.
- Ställ in Delay Gate att vänta med amount inställt på
10för att strypa förfrågningar. - Konfigurera Loop MCP Scrape med toolParameters inställt på
={ "url": "{{ $('Assign Case Source URLs').item.json.base_url }}/{{ $json.Link }}" }. - Anslut MCP-uppgifter i Loop MCP Scrape. Credential Required: Anslut era mcpClientApi-uppgifter.
10.Steg 5: Konvertera HTML, skicka webhooks och spara filer
Konvertera skrapad HTML till text och kör sedan två åtgärder parallellt: skicka en webhook-uppdatering och lagra en lokal JSON-fil.
- I HTML to Text Conversion ställer ni in text till
=Extract html to textual content {{ $json.result.content[0].text }}. - Konfigurera Gemini Chat Model - HTML med modelName inställt på
models/gemini-2.0-flash-expoch anslut uppgifter. Credential Required: Anslut era googlePalmApi-uppgifter. - HTML to Text Conversion skickar output parallellt till både Build Binary Payload och Dispatch Webhook Update.
- I Dispatch Webhook Update ställer ni in:
- url till
={{ $('Assign Case Source URLs').item.json.webhook_url }} - contentType till
multipart-form-data - body-parametern case_content till
={{ $json.text }}
- url till
- I Build Binary Payload behåller ni functionCode som angivet för att skapa base64-kodad binärdata.
- I Persist Case File ställer ni in fileName till
=d:\Case-{{ $('Iterate Case Records').item.json['Id'] }}.jsonoch operation tillwrite.
Steg 6: Testa och aktivera ert arbetsflöde
Verifiera hela pipelinen innan ni aktiverar den för användning i produktion.
- Klicka på Execute Workflow och starta körningen från Manual Run Starter.
- Bekräfta att Primary MCP Scrape returnerar HTML och att Case Data Extractor ger en strukturerad lista.
- Verifiera att Dispatch Webhook Update tar emot en
case_content-payload och att Persist Case File skriver en JSON-fil. - När allt körs korrekt, växla arbetsflödet till Active för att använda det i produktion.
Vanliga fallgropar
- Bright Data-autentisering kan gå ut eller kräva specifika behörigheter. Om det börjar skapa fel, kontrollera först din Bright Data API-token och din proxy zone-konfiguration i Bright Data-dashboarden.
- Om du använder Wait-noder eller extern rendering varierar processningstiderna. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du att sitta och redigera output för alltid.
Vanliga frågor
Cirka 45 minuter om du redan har Bright Data och Google konfigurerat.
Ingen kodning krävs. Du kopplar mest ihop konton, klistrar in dina mål-URL:er och justerar extraktionsfälten så att de matchar dina kolumner i Google Sheets.
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 Bright Data-användning samt kostnader för Gemini API.
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 obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det bör du. Du kan justera AI-extraktionsprompten i stegen ”Case Data Extractor” och ”HTML to Text Conversion” för att hämta fält som målnummer, kärande/svarande, hänvisningar, utfall och domare. Om du skriver till Google Sheets mappar du de fälten till exakt de kolumner du vill ha. Många team lägger också till ett maskningssteg före webhooken om känsliga uppgifter kan förekomma.
Oftast är det ett problem med API-token eller att proxyzonen inte är konfigurerad på det sätt som MCP-skrapningen förväntar sig. Bekräfta att din Bright Data API_TOKEN är aktuell och att zonnamnet för Web Unlocker matchar det du konfigurerade för MCP. Om det bara misslyckas på vissa sidor kan du också stöta på sidspecifik blockering, så testa en annan mål-URL och jämför. Ärligt talat är felaktiga autentiseringsuppgifter den vanligaste orsaken.
Många – i praktiken begränsas du av din n8n-plan och hur snabbt målsajterna svarar.
För det här upplägget är n8n oftast ett bättre val eftersom det hanterar loopar, batchning och förgreningslogik snyggt utan att bli ett dyrt spindelnät av steg. Self-hosting spelar också roll här: om du extraherar hundratals mål blir prissättning ”per task” snabbt irriterande. Zapier eller Make kan ändå fungera om du bara behöver ett litet antal mål och vill ha det enklaste gränssnittet. Nackdelen är att kombinationen skrapning + strukturerad extrahering är svårare att hålla stabil i de verktygen. Prata med en automationsexpert om du vill ha en snabb rekommendation för exakt din volym och stack.
Felfri måldata är grunden för snabbare research och bättre beslut. Sätt upp detta en gång, så slutar ditt kalkylark att vara flaskhalsen.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.