n8n+DiffHook

n8n-Web-Scraping — diff-getrieben, webhook-first

Zeigen Sie DiffHook die Seiten, die gescrapt werden sollen, beschreiben Sie mit einem CSS-Selektor, was extrahiert werden muss, und n8n bekommt das HTML-Diff jedes Mal, wenn es sich bewegt — bereits gecached, bereits dedupliziert, bereits signiert.

Der übliche n8n-Scraper besteht aus einem Schedule-Trigger + HTTP Request + HTML Extract + etwas Diff-Code in einem Code-Node gegen einen Datastore. Das funktioniert, scrapt aber bei jedem Tick selbst dann, wenn sich nichts geändert hat, und die Logik „Ist das anders als beim letzten Mal?" verwandelt sich in eine kleine, selbst gebaute Datenbank innerhalb von n8n. DiffHook verschiebt Fetch, HTML-Parsing und Diff aus n8n heraus — der Workflow läuft nur bei echten Änderungen, nicht öfter.

n8n

Der vollstaendige n8n-+-DiffHook-Hub

Alle n8n-Rezepte, Templates und Preise an einem Ort.

Workflow

Scrapen, diffen und an n8n zustellen in 5 Schritten

Fünf Einstellungen, kein Code-Node, kein Storage-Gefummel. Alles deklarativ.

01

Festlegen, was gescrapt wird

Wählen Sie die Ziel-URL und den CSS-Selektor, der den relevanten Block isoliert — eine Produktkarte, eine Preistabelle, einen Changelog-Eintrag. DiffHook rendert die Seite und behält nur das passende HTML.

02

Entscheiden, was als Änderung zählt

Text-only-Diff, um Style-Änderungen zu ignorieren, oder vollständiges HTML-Diff, um jedes Attribut einzufangen. Setzen Sie include_html: true, wenn n8n das Rohmarkup neben dem extrahierten Text sehen soll.

03

Monitor anlegen

Einmalig POST an /v1/monitors mit URL, Selektor, Intervall und einer Webhook-Zustellung, die auf Ihren n8n-Workflow zeigt. Kein Cron, kein Storage, keine Duplikaterkennung — das gehört alles zu DiffHook.

04

Das Diff in n8n empfangen

Der Webhook-Trigger von n8n feuert mit einem signierten JSON-Body aus previous_html, current_html und dem extrahierten Text. Verifizieren Sie den HMAC im Crypto-Node und gehen Sie dann in die nachgelagerten Schritte.

05

Parsen, anreichern, routen

Nutzen Sie den HTML-Extract- oder den Code-Node von n8n, um strukturierte Felder aus dem Diff zu ziehen, reichern Sie bei Bedarf mit einem AI-Node an, und schicken Sie das Ergebnis an Slack, Airtable, Notion oder eine Datenbank.

API-Beispiel

Scrapen und diffen in einem Request

Deklarative Monitor-Definition — include_html liefert das Rohmarkup mit, damit n8n es weiter unten im Pipeline parsen kann.

POST /v1/monitors
POST https://api.diffhook.com/v1/monitors
Authorization: Bearer $DIFFHOOK_API_KEY
Content-Type: application/json

{
  "type": "html_css",
  "url": "https://competitor.example.com/products",
  "css_selector": "main .product-card",
  "include_html": true,
  "interval_seconds": 900,
  "deliveries": [
    {
      "type": "webhook",
      "url": "https://n8n.yourdomain.com/webhook/scrape-products"
    }
  ]
}

Importierbarer Workflow

Drop-in-Scraping-Workflow für n8n

Das Template parst das Diff, extrahiert Produktkarten mit HTML Extract und schickt die strukturierten Zeilen an ein Google Sheet. Tauschen Sie einfach den Ziel-Node gegen Ihren eigenen aus.

FAQ

n8n-Web-Scraping — häufige Fragen

Warum Scraping von n8n nach DiffHook auslagern?
Drei Gründe: Compute, Korrektheit, Komplexität. Compute, weil das Pollen einer Handvoll URLs aus n8n alle fünf Minuten Execution-Minuten frisst, egal ob sich etwas geändert hat oder nicht. Korrektheit, weil man sich mit selbstgeschriebener „Ist das neu?"-Logik in einem Code-Node im Prinzip Dubletten um drei Uhr morgens einhandelt. Komplexität, weil ein DiffHook-Monitor ein einziger POST ist, während das n8n-Äquivalent aus 4+ Nodes plus Datastore besteht.
Kann DiffHook JavaScript-gerenderte Seiten scrapen?
Ja. Setzen Sie type auf html_rendered und wählen Sie die Engine (Playwright oder Puppeteer). DiffHook wartet auf einen Selektor oder auf Network-Idle, bevor der Snapshot entsteht, sodass SPAs und client-gerenderte React-Apps out of the box funktionieren. Siehe die eigenen Seiten zu n8n Playwright und n8n Puppeteer für Engine-spezifische Beispiele.
Wie bekomme ich strukturierte Daten statt rohem HTML?
Zwei Wege. Nehmen Sie einen engen CSS-Selektor, der genau ein Element trifft (DiffHook liefert den extrahierten Text direkt in extracted_text), oder aktivieren Sie include_html: true und parsen Sie das HTML-Fragment in n8n mit dem HTML-Extract-Node. Beide Pfade stehen im importierbaren Template.
Respektiert der Scraper robots.txt und Rate Limits?
Ja. Jeder Monitor hat ein konfigurierbares Intervall (bis runter auf 60 Sekunden in den kostenpflichtigen Tarifen), und DiffHook streut Jitter sowie exponentielles Backoff über 429-/503-Antworten. Wenn ein Ziel ein Disallow in der robots.txt ausliefert, markiert das Dashboard den Monitor als blockiert und hört auf zu fetchen.
Was, wenn die Site ein CAPTCHA einführt oder den Scraper blockiert?
DiffHook zeigt den Status des letzten Fetches pro Monitor an. Sobald eine Site zu blockieren beginnt, sehen Sie den Monitor auf Rot, und der zuletzt funktionierende Cache bleibt erhalten, damit n8n kein Schein-Diff bekommt. Sie können dann den User-Agent rotieren, auf die Render-Engine wechseln oder pro Monitor Request-Header hinzufügen — ohne n8n anzufassen.

Verwandte Workflows

Auch großartig mit DiffHook

Hören Sie auf, per Cron zu scrapen. Scrapen Sie bei Änderungen.

Kostenloser Tarif, 60-Sekunden-Checks, HMAC-signierte Payloads, Playwright- und Puppeteer-Engines inklusive. Keine Karte, keine Bindung.