---
seo_title: ClawHub Skill für OpenClaw: Scrapen und Konvertieren | EnConvert
meta_desc: Installiere den EnConvert Skill von ClawHub: Ein OpenClaw-Agent liest Seiten als Markdown, durchsucht das Web, extrahiert Felder und konvertiert Dateien per curl.
keywords: openclaw agent web scraping, clawhub skill installieren, openclaw skills install, agent seite als markdown lesen, openclaw websuche skill, clawhub enconvert skill, openclaw api key env, strukturierte daten aus webseiten extrahieren, openclaw datei konvertieren, openclaw skill wird nicht geladen
---

# ClawHub Skill für OpenClaw-Agenten

Der EnConvert Skill ist auf [ClawHub](https://clawhub.ai) veröffentlicht, der Skill-Registry für [OpenClaw](https://openclaw.ai)-Agenten. Nach der Installation stehen einem Agenten sechs Operationen zur Verfügung: eine URL als Markdown lesen, das Web durchsuchen, die URLs einer Site auflisten, typisierte Felder aus Seiten extrahieren und eine Datei nach Markdown oder nach PDF konvertieren. Jede gelesene Seite trägt einen `render_quality`-Wert von 0.0 bis 1.0, sodass eine Bot-Sperre oder die leere Hülle einer Single-Page-App markiert ankommt, statt weitergereicht zu werden, als wäre sie die Seite.

<div class="alert alert-info">
<strong>Installation:</strong> <code>openclaw skills install @enconvert/enconvert</code> · <strong>Listing:</strong> <a href="https://clawhub.ai/enconvert/skills/enconvert">clawhub.ai/enconvert/skills/enconvert</a> · <strong>Version:</strong> 0.0.1 · <strong>Quellcode:</strong> <a href="https://github.com/enconvert/clawhub-enconvert">enconvert/clawhub-enconvert</a>
</div>

---

## Was ein ClawHub Skill ist

Ein ClawHub Skill ist eine einzige Markdown-Datei mit Anweisungen. Der Agent liest sie und führt die Aufrufe selbst mit `curl` aus. Das ist der gesamte Mechanismus.

Das ist wichtiger, als es klingt. Die sechs Operationen unten sind **keine** registrierten Tool-Schemas. Nichts taucht in einer Tool-Liste auf, kein Argument-Objekt wird geprüft, bevor ein Aufruf rausgeht, und zwischen Agent und API sitzt kein SDK. Der Skill sagt dem Agenten, welchen Endpunkt er ansprechen soll, welchen Header er mitschickt und wie die Antwort aussieht; die HTTP-Anfrage baut der Agent selbst. Nenne sie Operationen, nicht Tools, dann ergibt das beobachtete Verhalten Sinn: Ein Agent, der die Datei nicht gelesen hat, ruft nichts auf, und ein Agent, der sie gelesen hat, kann davon abweichen.

Der praktische Vorteil: Außer `curl` muss nichts installiert werden, und dieselben Anweisungen funktionieren auf jeder Plattform, die einen Shell-Befehl ausführen kann.

---

## Die sechs Operationen

| Operation | Endpunkt | Was zurückkommt |
|-----------|----------|-----------------|
| **Perceive URL** | `POST /v2/perceive` | `render_quality`, dazu ein `outputs`-Objekt aus signierten URLs mit 15 Minuten Laufzeit |
| **Web Search** | `POST /v2/lookup` | `results[]` mit `title`, `url`, `snippet`, `position` |
| **Discover URLs** | `POST /v2/discover` | `urls[]` und `total`, ohne dass eine Seite gerendert wird |
| **Extract Structured** | `POST /v2/distill` | `results[]`, ein Eintrag pro URL, jeder mit `data` und `extraction_tier` |
| **Convert File to Markdown** | `POST /v1/convert/anything-to-markdown` | JSON mit `presigned_url` |
| **Convert File to PDF** | `POST /v1/convert/anything-to-pdf` | JSON mit `presigned_url` |

Jeder Aufruf schickt den Header `X-API-Key`, nie `Authorization: Bearer`. Alle sechs laufen gegen dieselbe REST-API, die auf dieser Site dokumentiert ist, dein Tarif-Kontingent und deine Rate-Limits gelten also genau wie überall sonst.

<div class="alert alert-warning">
<strong>Websuche ist <code>POST /v2/lookup</code>.</strong> Der V2-Namespace hat keinen Endpunkt, der nach dem Wort „search“ benannt ist; eine Anfrage dorthin liefert 404. Greift ein Agent zu diesem Pfad, war die Skill-Datei, die er gelesen hat, veraltet.
</div>

---

## Installation

Installiere ihn mit der OpenClaw CLI:

```bash
openclaw skills install @enconvert/enconvert
```

Das ist die Form, die das ClawHub-Listing anzeigt. Mit `--global` installierst du ihn für jedes Projekt statt nur für das aktuelle, und mit `openclaw skills update --all` holst du dir später neue Versionen.

Die ClawHub CLI installiert denselben Skill, falls du dieses Werkzeug ohnehin schon hast:

```bash
npm i -g clawhub
clawhub install @enconvert/enconvert
```

Das npm-Paket `clawhub` ist die CLI. Auf PyPI gibt es ein unverwandtes Paket gleichen Namens, dessen Releases alle zurückgezogen sind; `pip install clawhub` führt also nicht zu dieser CLI.

---

## Dem Skill deinen API-Key geben

Der Skill liest genau ein Secret: **`ENCONVERT_API_KEY`**.

1. Erzeuge im [Dashboard](/de/dashboard/api-keys) einen **privaten** API-Key. Private Keys beginnen mit `sk_`.
2. Mach ihn dem Agenten zugänglich, entweder als `ENCONVERT_API_KEY` in der Umgebung, in der der Agent läuft, oder über deine OpenClaw-Konfiguration gezielt für diesen Skill injiziert. Die [Referenz zur Skill-Konfiguration](https://docs.openclaw.ai/tools/skills) beschreibt den `env`-Block pro Skill.
3. Prüfe, ob der Key funktioniert, bevor du den Agenten um irgendetwas bittest:

```bash
curl -sS https://api.enconvert.com/v1/whoami -H "X-API-Key: $ENCONVERT_API_KEY"
# {"project_id":"2","plan_slug":"free"}
```

Ein öffentlicher `pk_`-Key wird hier mit einem 403 abgelehnt. Öffentliche Keys sind für Browser-Widgets gedacht, und keine Operation in diesem Skill akzeptiert einen. Siehe [Private Keys](/de/docs/authentication.md#private-keys).

<div class="alert alert-warning">
<strong>Ohne den Key lädt der Skill stillschweigend nie.</strong> OpenClaw filtert Skills zur Ladezeit anhand der in der Datei deklarierten Voraussetzungen: Dieser hier braucht die Umgebungsvariable <code>ENCONVERT_API_KEY</code> und die Binary <code>curl</code> im <code>PATH</code>. Fehlt eines von beidem, ist der Skill schlicht nicht verfügbar, und es gibt keine Fehlermeldung zu lesen. Das Symptom ist ein Agent, der antwortet, als hätte er nie von EnConvert gehört. Prüfe <code>curl --version</code> und den <code>whoami</code>-Aufruf oben, bevor du irgendetwas anderes debuggst.
</div>

---

## Was von einem Seitenabruf zurückkommt

Die Antwortform von `POST /v2/perceive` ist das eine, was du unbedingt verstanden haben solltest, bevor ein Agent sie aufruft:

```bash
curl -sS -X POST https://api.enconvert.com/v2/perceive \
  -H "X-API-Key: $ENCONVERT_API_KEY" -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","outputs":["markdown"],"only_main_content":true}'
```

Für die Antwort gelten drei Regeln:

- **`render_quality` kommt zuerst.** Es ist eine Zahl von 0.0 bis 1.0 in einer `200`-Antwort, kein HTTP-Fehler. Ein niedriger Wert heißt, das Rendering ist beeinträchtigt; behandle den Inhalt dann als fragwürdig statt als verbindlich.
- **Jedes Artefakt unter `outputs` ist eine signierte URL mit 15 Minuten Laufzeit, Markdown eingeschlossen.** `outputs.markdown.url` ist ein Link, nicht der Text der Seite. Dasselbe gilt für `html_cleaned`, `html_raw`, `screenshot`, `screenshot_full_page`, `pdf`, `links` und `images`. Hol jedes davon mit einem einfachen `GET` und **ohne** `X-API-Key`-Header: Die Signatur in der URL ist die Authentifizierung, und deinen Key mitzuschicken würde ihn dem Storage-Host umsonst aushändigen. Mehr dazu unter [Signierte URLs](/de/docs/concepts/signed-urls.md).
- **`structured` ist die Ausnahme.** Es kommt inline auf oberster Ebene der Antwort zurück, nicht unter `outputs`.

Ein Agent, der inline Markdown erwartet, liest ein Objekt, wo er Text wollte, und meldet die Seite als leer. Zwei Schritte, nicht einer:

```bash
MD=$(curl -sS -X POST https://api.enconvert.com/v2/perceive \
  -H "X-API-Key: $ENCONVERT_API_KEY" -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","outputs":["markdown"]}' \
  | grep -o '"url":"[^"]*"' | head -n1 | cut -d'"' -f4)
curl -sS "$MD"   # no key here
```

Die Dateikonvertierung endet nach demselben Muster: Das JSON trägt `presigned_url`, und die holst du mit einem einfachen `GET` ohne Key.

---

## Eine Datei konvertieren

Beide Konvertierungs-Endpunkte nehmen `multipart/form-data` mit einem einzigen Feld namens `file`. Setze `Content-Type` nicht von Hand; die Multipart-Boundary erledigt das.

```bash
curl -sS -X POST https://api.enconvert.com/v1/convert/anything-to-markdown \
  -H "X-API-Key: $ENCONVERT_API_KEY" -F "file=@report.docx"
```

Die **Dateiendung im Namen entscheidet über das Eingabeformat**. Das ist die schärfste Kante dieses Ablaufs auf einer Agent-Plattform, wo die Eingabe meist eine URL statt eines lokalen Pfads ist: Lade die Quelle zuerst ohne `X-API-Key`-Header herunter (es ist ein fremder Host), behalte den ursprünglichen Dateinamen und schicke dann die Bytes. Einen Namen, den die API nicht lesen kann, repariert sie aus den Bytes, sofern das Format eine Signatur trägt (ein PDF, ein Bild oder ein DOCX übersteht das), ein Textformat hat aber keine: Markdown unter dem Namen `notes.lJzoMq6Akq` kommt als `400 Invalid file format '.ljzomq6akq' for anything-to-markdown` zurück. Das mit dem Skill ausgelieferte Helferskript `scripts/convert.sh` erledigt die ganze Abfolge aus Herunterladen, Posten und Abholen korrekt.

---

## Fehlerbehebung

**Der Agent erwähnt EnConvert nie.**
Der Skill wurde nicht geladen. Entweder ist `ENCONVERT_API_KEY` für den Agent-Prozess nicht sichtbar, oder `curl` liegt nicht im `PATH`. Die Filterung zur Ladezeit ist bewusst stumm, in den Logs ist also nichts zu finden.

**`401` oder `403` bei jedem Aufruf.**
Der Key fehlt, ist falsch oder ist ein öffentlicher `pk_`-Key. Führe den `whoami`-Aufruf oben aus; er scheitert exakt genauso und sagt es dir in einer Zeile.

**Ein `404` von der Websuche.**
Der Agent hat einen Endpunkt geraten, der nach dem Wort „search“ benannt ist. Diesen Pfad gibt es nicht. Websuche ist `POST /v2/lookup`.

**`400 Invalid file format`.**
Die hochgeladene Datei hatte keine brauchbare Endung und in ihren Bytes keine Signatur, aus der sich eine ableiten ließe, und das trifft auf jedes Textformat zu: CSV, HTML, Markdown, reiner Text. Behalte den Dateinamen der Quelle, oder benenne den Download in einen mit der richtigen Endung um.

**Die Seite kommt leer zurück oder als `[object Object]`.**
`outputs.markdown` ist eine signierte URL. Hol sie ab. Nur `structured` kommt inline an.

**Ein Download-Link funktioniert nicht mehr.**
Signierte URLs leben 15 Minuten. Führe die Operation erneut aus, statt zu versuchen, den Link aufzufrischen.

---

## Quellen und Links

- **ClawHub-Listing**: [clawhub.ai/enconvert/skills/enconvert](https://clawhub.ai/enconvert/skills/enconvert)
- **Publisher**: [@enconvert](https://clawhub.ai/@enconvert)
- **OpenClaw Skills**: [docs.openclaw.ai/tools/skills](https://docs.openclaw.ai/tools/skills)
- **ClawHub Skill-Format**: [docs.openclaw.ai/clawhub/skill-format](https://docs.openclaw.ai/clawhub/skill-format)
- **Zugrunde liegende API**: [Einführung](/de/docs/introduction.md), [Perceive](/de/docs/endpoints/perceive.md), [Anything to Markdown](/de/docs/endpoints/convert/documents/anything-to-markdown.md)
- **Quellcode**: [enconvert/clawhub-enconvert](https://github.com/enconvert/clawhub-enconvert)

Für einen Coding-Agenten, der stattdessen das Model Context Protocol unterstützt, stellt [MCP Setup](/de/docs/guides/integrations/mcp-setup.md) dieselben Operationen als echte registrierte Tools bereit.

---

## Häufig gestellte Fragen

### Wie installiere ich den EnConvert Skill in OpenClaw?

Führe `openclaw skills install @enconvert/enconvert` aus. Das ist der Befehl, den das ClawHub-Listing zeigt. Die ClawHub CLI installiert denselben Skill mit `clawhub install @enconvert/enconvert`, nachdem du `npm i -g clawhub` ausgeführt hast. Setze danach `ENCONVERT_API_KEY` auf einen privaten `sk_`-Key aus deinem Dashboard, denn ohne ihn lädt der Skill nicht.

### Wie bringe ich einen OpenClaw-Agenten dazu, eine Webseite als Markdown zu lesen?

Frag ihn nach der Seite, sobald der Skill installiert ist. Er ruft `POST /v2/perceive` mit `outputs: ["markdown"]` auf und holt danach `outputs.markdown.url` mit einem einfachen `GET` ohne Key. Markdown ist rund sechsmal kleiner als das rohe HTML derselben Seite, was die Token-Kosten von allem senkt, was der Agent anschließend damit macht.

### Warum macht der Skill überhaupt nichts?

OpenClaw filtert Skills zur Ladezeit anhand ihrer deklarierten Voraussetzungen. Dieser deklariert die Umgebungsvariable `ENCONVERT_API_KEY` und die Binary `curl`. Fehlt eines von beidem, wird der Skill ausgeschlossen, bevor der Agent ihn überhaupt zu sehen bekommt, ohne Fehlermeldung. Das ist fast immer die Ursache.

### Ist der Skill ein registriertes Tool, das der Agent aufrufen kann?

Nein. Es ist eine Markdown-Datei mit Anweisungen, die der Agent liest und mit `curl` umsetzt. Es gibt kein Tool-Schema und keine Argumentprüfung, deshalb schreibt die Skill-Datei jeden Endpunkt, jeden Header und jede Antwortform aus. Sonst muss nichts installiert werden.

### Kann ich einen öffentlichen `pk_`-Key verwenden?

Nein. Öffentliche Keys sind für Browser-Widgets gedacht, und jede Operation hier lehnt sie mit einem 403 ab. Nutze einen privaten Key, der mit `sk_` beginnt und im Dashboard unter API-Keys erzeugt wird.

### Woher weiß der Agent, dass eine Seite nicht sauber gerendert wurde?

Jede perceive-Antwort trägt `render_quality`, eine Zahl von 0.0 bis 1.0 innerhalb einer normalen `200`. Eine Challenge-Seite, eine Cookie-Wand oder ein Skript, das nie zur Ruhe kam, bekommt einen niedrigen Wert. Der Skill weist den Agenten an, diesen Wert zuerst zu lesen und einen beeinträchtigten Abruf als solchen auszuweisen, statt ihn als zuverlässig zu präsentieren.
