Zum Inhalt springen
Tool

JSON-Schema erstellen für die Daten, die du von einer Seite willst

Füge das JSON ein, das du gern hättest, und bekomme das Schema dazu: Typen, Pflichtfelder und Platz für die Beschreibungen, die ein Modell tatsächlich liest. Daneben steht der Extraktionsaufruf, der es benutzt.

Ein Beispielobjekt einfügen, etwa eine Bestellposition, oder mit einem leeren Schema anfangen und Felder benennen. Alles läuft im Browser.

Dieses Tool läuft im Browser und braucht JavaScript.

Beobachtungen, keine Urteile. Deine Eingabe wird für dieses Ergebnis verarbeitet und in ein Nutzungsjournal geschrieben, das die Datenschutzerklärung beschreibt; sonst wird nichts gespeichert.

Vom Beispiel zum Schema

  1. Ein typisches Objekt einfügen

    Ein Datensatz mit allen Feldern, die dich interessieren. Arrays gehen auch; der Generator vereinigt die Typen, die er in den Elementen sieht.

  2. Typen kontrollieren

    Ganze Zahlen werden integer, Dezimalzahlen number, null macht ein Feld nullable. Was das Beispiel falsch nahegelegt hat, änderst du direkt im Schema.

  3. Beschreibungen ergänzen

    Die description eines Feldes ist die Anweisung, die das Modell dafür liest. Schreib hin, wo der Wert auf der Seite steht und in welcher Einheit. Ein bloßer Typ ist ein Ratespiel.

  4. Anfrage kopieren

    Der extract-Aufruf rechts wird beim Bearbeiten aktualisiert. Probleme im Schema stehen darüber und sperren den Kopieren-Knopf, bis sie behoben sind.

Wo das Schema hingehört

Eine Extraktion nimmt das Schema als einziges Pflichtargument und liefert data in genau dieser Form.

import { Browserberg } from '@browserberg/sdk';

const bb = new Browserberg({ apiKey: process.env.BROWSERBERG_API_KEY });

await using session = await bb.sessions.create();
await session.act({ steps: [{ action: 'navigate', value: 'https://portal.example/bestellungen/4711' }] });

const { data } = await session.extract({
  schema: {
    type: 'object',
    properties: {
      bestellnummer: { type: 'string', description: 'Die Nummer in der Kopfzeile' },
      bruttobetrag: { type: 'number', description: 'Gesamtbetrag in EUR inklusive MwSt' },
      lieferdatum: { type: ['string', 'null'], description: 'ISO-8601-Datum, null wenn nicht angegeben' },
    },
    required: ['bestellnummer', 'bruttobetrag'],
  },
});

console.log(data);

Wie die Ableitung arbeitet und was ein Schema kann

Der Generator geht durch das eingefügte JSON und baut ein Schema, das es akzeptieren würde. Ein Objekt wird zu type: object mit einer Eigenschaft je Schlüssel, ein Array zu items mit der Vereinigung der Elementtypen, eine ganze Zahl zu integer, ein Bruch zu number, und null erweitert die Eigenschaft um den Typ null. Jeder Schlüssel aus dem Beispiel landet zunächst in required. Das solltest du ausdünnen: Ein optionales Feld, das die Seite nicht hat, wird sauber verworfen; ein Pflichtfeld wird behalten und als verdächtig markiert, und eine Markierung übersieht man leichter als eine Lücke. Alles passiert im Browser; das Beispiel wird nicht hochgeladen.

Was das Schema in der Extraktion tut

Ein extract-Aufruf nimmt das Schema und die Seite, auf der die Session gerade steht. Die Seite wird von derselben Wahrnehmungsschicht aufbereitet, die der Agent nutzt, als nicht vertrauenswürdiger Inhalt eingezäunt und zusammen mit dem Schema an ein Modell in der EU gegeben. Die Antwort wird dann geerdet, bevor sie als data zurückkommt: Jeder String, den das Modell liefert, muss im gezeigten Seitentext vorkommen, sonst wird das Feld mit einer Warnung verworfen. Zahlen und Booleans werden nicht geprüft, weil eine Anzahl oder ein Ja/Nein abgeleitet ist und nicht zitiert. Das Schema hat also drei Aufgaben zugleich: Es sagt dem Modell, wonach es suchen soll, es begrenzt die Form der Antwort, und es ist der Vertrag, den dein Code parst. Die description einer Eigenschaft ist der Teil, den das Modell am genauesten liest. "Bruttobetrag in EUR inklusive MwSt" bekommt eine andere Antwort als "Summe".

Was validiert wird

Das Schema selbst: unbekannte Schlüsselwörter, ein required-Eintrag ohne passende Eigenschaft, ein items an etwas, das kein Array ist, ein Typname, den es nicht gibt. Das sind die Fehler, die als 400 von der API zurückkämen, und sie stehen beim Tippen über der Vorschau.

Was der Generator nicht beurteilt

Ein Schema erzeugt keine Werte. Steht kein Lieferdatum auf der Seite, zaubert keine Beschreibung eins herbei, und ein Pflichtfeld, das die Seite nicht hat, kommt in warnings als vom Schema verlangt, aber auf der Seite nicht vorhanden zurück, nicht als Wert, dem man trauen soll. Modelliere die Unsicherheit im Schema: Feld nullable machen oder den Ersatzwert beschreiben. Der Generator prüft auch keine Daten gegen das Schema, nur das Schema gegen die Spezifikation. Ein Beispiel, das selbst falsch ist, ergibt ein treu falsches Schema. Und er weiß nichts über die Seite. Ob das Feld ohne Scrollen sichtbar ist, hinter einem Reiter liegt oder in einem verlinkten PDF steckt, beantworten die Agenten-Sicht und die Extraktion selbst.

Halte Schemas klein. Eine Seite enthält selten vierzig Fakten, die du brauchst, und jede Eigenschaft ist eine mehr, die das Modell leise falsch machen kann. Zehn gut beschriebene Felder schlagen vierzig nackte.

Fragen zu JSON-Schema für Extraktion

Wie erzeuge ich ein JSON-Schema aus einem JSON-Beispiel?

Beispiel hier einfügen. Objekte, Arrays, Zahlen, Strings, Booleans und null werden auf ihre Schematypen abgebildet, alle Schlüssel als Pflicht markiert, und das Ergebnis ist vor dem Kopieren editierbar.

Welche Schlüsselwörter versteht der extract-Aufruf?

Den strukturellen Kern: type, properties, required, items, enum, description und nullable Typen. Exotische Schlüsselwörter meldet der Validator des Tools, statt sie stumm weiterzureichen.

Bringen Beschreibungen wirklich etwas?

Ja. Die description ist das, was das Modell liest, um den Wert auf der Seite zu finden. Einheit, Position auf der Seite oder ein Beispielformat sind die günstigste Verbesserung, die es gibt.

Was passiert, wenn ein Pflichtfeld nicht auf der Seite steht?

Das Feld wird behalten, aber in warnings als vom Schema verlangt und auf der Seite nicht vorhanden gemeldet, damit dein Code entscheiden kann. Ein optionales Feld ohne Fundstelle wird stattdessen mit Warnung verworfen. Mach ein Feld optional, wenn eine Seite es legitim nicht haben kann.

Wird mein Beispiel-JSON hochgeladen?

Nein. Der Generator läuft im Browser. Erst der extract-Aufruf, den du kopierst und selbst ausführst, schickt das Schema an die API.

Das Schema an einer echten Seite ausprobieren

Fünf Browserstunden, keine Karte. Session öffnen, navigieren, extrahieren, und Daten genau in der beschriebenen Form bekommen.