ClawHub Skill für OpenClaw-Agenten#

Der EnConvert Skill ist auf ClawHub veröffentlicht, der Skill-Registry für OpenClaw-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.

Installation: openclaw skills install @enconvert/enconvert · Listing: clawhub.ai/enconvert/skills/enconvert · Version: 0.0.1 · Quellcode: enconvert/clawhub-enconvert

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.

Websuche ist POST /v2/lookup. 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.

Installation#

Installiere ihn mit der OpenClaw CLI:

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:

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 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 beschreibt den env-Block pro Skill.
  3. Prüfe, ob der Key funktioniert, bevor du den Agenten um irgendetwas bittest:
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.

Ohne den Key lädt der Skill stillschweigend nie. OpenClaw filtert Skills zur Ladezeit anhand der in der Datei deklarierten Voraussetzungen: Dieser hier braucht die Umgebungsvariable ENCONVERT_API_KEY und die Binary curl im PATH. 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 curl --version und den whoami-Aufruf oben, bevor du irgendetwas anderes debuggst.

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:

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.
  • 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:

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.

curl -sS -X POST https://api.enconvert.com/v1/convert/anything-to-markdown \
  -H "X-API-Key: $ENCONVERT_API_KEY" -F "[email protected]"

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.


Für einen Coding-Agenten, der stattdessen das Model Context Protocol unterstützt, stellt MCP Setup 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.