> ## Documentation Index
> Fetch the complete documentation index at: https://www.octoparse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Ausgabe und Exit-Codes

> Erfahren Sie, wie JSON-Ausgabe, JSONL-Ereignisströme, stdout, stderr, Exit-Codes und JSONL-Ereignistypen der Octoparse CLI in Automatisierungen funktionieren.

Die Octoparse CLI unterstützt menschenlesbare Ausgaben für das Terminal und maschinenlesbare Ausgaben für Automatisierungen.

Verwenden Sie diese Seite, wenn Sie die Octoparse CLI aus Skripten, Agenten, CI-Jobs oder anderen Automatisierungsumgebungen aufrufen.

## JSON-Ausgabe

Verwenden Sie `--json`, wenn Sie eine einzelne stabile JSON-Antwort benötigen.

```bash theme={null}
octoparse task list --json
octoparse auth status --json
octoparse local status <taskId> --json
```

Erfolgreiche Befehle geben einen JSON-Umschlag mit `ok: true` und einem `data`-Feld zurück:

```json theme={null}
{
  "ok": true,
  "data": {
    "items": [
      { "taskId": "abc123", "taskName": "Example task", "status": "Idle" }
    ],
    "page": 1,
    "pageSize": 20,
    "total": 1
  }
}
```

Fehlgeschlagene Befehle geben `ok: false` mit einem `error`-Feld zurück, das einen Code und eine Meldung enthält:

```json theme={null}
{
  "ok": false,
  "error": {
    "code": "AUTH_REQUIRED",
    "message": "API key is required for this command."
  }
}
```

Die genaue `data`-Struktur hängt vom Befehl ab. Zu den häufigen Fehlercodes gehören `AUTH_REQUIRED`, `AUTH_INVALID`, `TASK_INVALID`, `LINUX_ARM64_UNSUPPORTED`, `ENGINE_RUN_FAILED` und `UNSUPPORTED_EXPORT_FORMAT`. Führen Sie `octoparse capabilities --json` aus, um die vollständige Liste anzuzeigen.

## JSONL-Ereignisströme

Verwenden Sie `--jsonl` für lang laufende lokale Extraktionen. Die Ausgabe enthält pro Zeile ein JSON-Objekt:

```bash theme={null}
octoparse run <taskId> --jsonl
```

Ein typischer Ereignisstrom:

```jsonl theme={null}
{"event":"run.started","taskId":"abc123","timestamp":"2026-01-01T10:00:00.000Z"}
{"event":"row","taskId":"abc123","count":1}
{"event":"captcha","taskId":"abc123","service":"..."}
{"event":"proxy","taskId":"abc123","status":"..."}
{"event":"run.completed","taskId":"abc123","savedRows":42}
```

Stabile Ereignistypen:

| Ereignis             | Auslösezeitpunkt                     |
| -------------------- | ------------------------------------ |
| `warning`            | Nicht schwerwiegende Laufzeitwarnung |
| `billing.warning`    | Warnung bei niedrigem Guthaben       |
| `billing.error`      | Guthaben aufgebraucht                |
| `run.started`        | Lokaler Lauf gestartet               |
| `row`                | Eine Zeile wurde gespeichert         |
| `log`                | Protokollzeile der Engine            |
| `captcha`            | CAPTCHA-Anforderung der Laufzeit     |
| `proxy`              | Proxy-Anforderung oder -Status       |
| `download.started`   | Dateidownload gestartet              |
| `download.succeeded` | Dateidownload abgeschlossen          |
| `download.failed`    | Dateidownload fehlgeschlagen         |
| `run.paused`         | Lauf pausiert                        |
| `run.resumed`        | Lauf fortgesetzt                     |
| `run.stopping`       | Stopp angefordert, Lauf wird beendet |
| `run.stopped`        | Lauf vom Benutzer gestoppt           |
| `run.failed`         | Lauf mit einem Fehler fehlgeschlagen |

<Note>
  Ereignisnamen und Felder können sich zwischen Versionen ändern. Behandeln Sie jede Zeile als eigenständiges JSON-Objekt und verarbeiten Sie unbekannte Felder sicher.
</Note>

## Artefakte losgelöster Läufe

Wenn Sie einen Lauf mit `--detach` starten, schreibt die CLI Startdateien in das Ausgabeverzeichnis:

| Datei            | Inhalt                           |
| ---------------- | -------------------------------- |
| `bootstrap.json` | Laufmetadaten und Anfangszustand |
| `stdout.log`     | Standardausgabe des Laufs        |
| `stderr.log`     | Standardfehlerausgabe des Laufs  |

Artefaktdateien eines lokalen Laufs im Laufverzeichnis:

| Datei             | Inhalt                      |
| ----------------- | --------------------------- |
| `meta.json`       | Laufmetadaten               |
| `control.json`    | Steuerungszustand des Laufs |
| `events.jsonl`    | Alle JSONL-Ereignisse       |
| `logs.jsonl`      | Protokollzeilen der Engine  |
| `rows.jsonl`      | Gespeicherte Zeilen         |
| `downloads.jsonl` | Download-Ereignisse         |

## stdout und stderr

| Datenstrom | Menschlicher Modus          | Modus `--json` / `--jsonl`        |
| ---------- | --------------------------- | --------------------------------- |
| stdout     | Befehlsausgabe              | Strukturiertes JSON oder JSONL    |
| stderr     | Diagnose, Warnungen, Fehler | Klartext oder JSON-Fehlerumschlag |

Durch diese Trennung können Automatisierungstools angeforderte Ausgaben weiterleiten, ohne Diagnoseprotokolle beizumischen.

## Exit-Codes

| Exit-Code | Bedeutung                             | Typische Auslöser                                                                                          |
| --------- | ------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| 0         | Erfolg                                | Befehl wie angefordert abgeschlossen                                                                       |
| 1         | Vorgang fehlgeschlagen                | Authentifizierungsfehler, Aufgabe nicht gefunden, Exportfehler                                             |
| 2         | Laufzeit- oder Umgebungsfehler        | Nicht passende Node.js-Version, Chrome nicht verfügbar, Engine-Initialisierung fehlgeschlagen, Linux arm64 |
| 3         | Nicht unterstützte Aufgabendefinition | Aufgabe verwendet Kernel-Browser oder älteren Workflow, der von CLI v1 nicht unterstützt wird              |

Ein Exit-Code ungleich null bedeutet, dass der Befehl nicht wie erwartet abgeschlossen wurde.

## Empfehlungen für die Automatisierung

* Verwenden Sie `--json` für Skripte, die eine einzelne strukturierte Antwort benötigen.
* Verwenden Sie `--jsonl` für lang laufende Aufgabenausführungen.
* Behandeln Sie Exit-Codes ungleich null als fehlgeschlagene Automatisierungsschritte.
* Erfassen Sie stderr bei der Fehlerbehebung separat.
* Geben Sie API-Schlüssel oder Token nicht in Protokollen oder CI-Ausgaben preis.
* Führen Sie zu Beginn eines Agenten-Workflows `octoparse capabilities --json` aus, um die aktuelle Befehlsoberfläche und den Maschinenvertrag zu ermitteln.

<Note>
  Bevorzugen Sie für KI-Agenten und Automatisierungsumgebungen `--json` oder `--jsonl` gegenüber menschenlesbaren Ausgaben. Beginnen Sie mit `octoparse capabilities --json`, um den vollständigen Maschinenvertrag abzurufen.
</Note>
