Lieferantenrechnungen aus jedem Portal einsammeln
Lieferanten, die keine Rechnungen mehr mailen, erwarten, dass du sie im Portal abholst. Ein Workflow meldet sich mit einem Tresor-Zugang an, liest die Rechnungsliste als JSON und schickt sie monatlich an deine Buchhaltung.
So läuft der Monatslauf
Ein Workflow je Lieferantenportal, ein Zeitplan, der ihn auslöst. Jeder Block unten ist ein einfaches JSON-Objekt; die Labels werden zu Variablen, die spätere Blöcke lesen.
-
Portal-Zugang einmal im Tresor ablegen
Leg einen Zugang mit der Anmelde-URL des Portals an. Der Workflow verweist nur auf die Id; das Passwort wird ausschließlich auf dieser Seite im Moment des Tippens freigegeben und taucht in keiner Ausgabe auf.
-
Anmelden und Rechnungsliste öffnen
Ein Login-Block übernimmt die Anmeldung, inklusive TOTP-Code, falls das Portal einen verlangt. Ein Navigations-Block öffnet die Rechnungsübersicht direkt, statt sich durch Menüs zu klicken, die sich ändern.
-
Rechnungen als Daten lesen
Ein Extraktions-Block macht aus der Tabelle JSON nach deinem Schema: Nummer, Datum, Nettobetrag, Dokumentlink. Zeilen, die nicht ins Schema passen, werden gemeldet statt geraten.
-
Ergebnis ans ERP übergeben
Ein http_request-Block sendet die Liste an deinen eigenen Endpunkt. Dein System entscheidet, was neu ist; der Browser hat nur den Teil erledigt, der einen Browser brauchte.
-
Den Zeitplan laufen lassen
Ein Zeitplan-Trigger startet den Workflow am Ersten des Monats nach Europe/Berlin. Eine verpasste Nacht ist ein Lauf, kein Stau, und jede Auslösung wird mit Ergebnis protokolliert.
Alles in einem Publish
import { Browserberg } from '@browserberg/sdk';
const bb = new Browserberg({
apiKey: process.env.BROWSERBERG_API_KEY,
baseUrl: 'https://browserberg.com',
});
const wf = await bb.workflows.publish({
title: 'Monatsrechnungen aus dem ACME-Lieferantenportal',
blocks: [
{ blockType: 'login', label: 'Anmelden', credentialId: 'cred_acme_portal' },
{ blockType: 'navigation', label: 'Rechnungen_oeffnen', url: 'https://portal.acme-lieferant.example/rechnungen' },
{ blockType: 'extraction', label: 'Rechnungen_lesen',
instruction: 'jede in diesem Monat ausgestellte Rechnung: Nummer, Datum, Nettobetrag und Dokumentlink',
schema: { type: 'object', properties: { rechnungen: { type: 'array', items: { type: 'object',
properties: { nummer: { type: 'string' }, datum: { type: 'string' },
netto: { type: 'number' }, url: { type: 'string' } } } } } } },
{ blockType: 'http_request', label: 'An_ERP', method: 'POST',
url: 'https://erp.intern.example/hooks/rechnungen', body: '{{ Rechnungen_lesen_output }}' },
],
});
await bb.triggers.create(wf.workflowId, {
kind: 'schedule', name: 'Monatserster',
cron: '0 6 1 * *', timezone: 'Europe/Berlin',
});
Was du bekommst
| Umgang mit Zugangsdaten | Im Tresor, per Id referenziert, nur auf der Freigabe-Seite freigegeben; TOTP wird unterstützt |
|---|---|
| Ausgabe | JSON nach deinem Schema plus ein Protokoll jedes Blocks pro Lauf |
| Zeitplan-Semantik | Cron plus IANA-Zeitzone; die Zeitumstellung löst einmal aus, nie doppelt |
| Wenn sich das Portal ändert | Der Lauf scheitert mit benanntem Block; ein Heilungsvorschlag kann die Korrektur vorschlagen, die du übernimmst |
| Wo es läuft | EU-Bare-Metal; das Portal sieht eine normale Chromium-Session unter deinem eigenen Konto |
| Nachweis | Hash-verkettetes Aktionsprotokoll mit Lauf-Id, exportierbar und offline prüfbar |
Stand: 2026-09-04
Fragen aus der Buchhaltung
Wird die Rechnungs-PDF selbst heruntergeladen?
Der Workflow liest die Rechnungsdaten und den Dokumentlink jeder Zeile. Die Datei holt am besten dein eigenes System über diesen Link, wo sie nach deinen Aufbewahrungsregeln liegt; der Browser-Schritt ist dafür da, an der Anmeldung und der Tabelle vorbeizukommen.
Was passiert, wenn der Lieferant sein Portal umbaut?
Der Extraktions-Block meldet, was er nicht lesen konnte, statt Werte zu erfinden, und der Lauf gilt als gescheitert mit benanntem Block. Ein Heilungsvorschlag wird von einer Person übernommen oder abgelehnt; nichts schreibt deinen Workflow von allein um.
Können sich mehrere Portale einen Workflow teilen?
Besser nicht. Jedes Portal hat eigene Zugangsdaten, eigene URLs und eine eigene Tabelle. Ein Workflow pro Portal hält einen Fehler lokal; den Zeitplan-Trigger zu wiederholen kostet nichts.
Sieht der Lieferant die Automatisierung?
Er sieht eine Chromium-Session, angemeldet mit dem Konto, das du besitzt. Es gibt keine Tarnschicht und keinen Versuch, die Session zu verstecken. Genau deshalb ist das nur für Portale gedacht, in denen du Kunde bist.
Mit einem Lieferantenportal anfangen
Fünf Browserstunden, keine Karte. Der erste Workflow braucht einen Nachmittag, der Zeitplan eine Minute.