Zum Inhalt springen

Markdown-Formatierung in OpenClaw

Wer schon einmal versucht hat, eine Nachricht gleichzeitig an Slack, Telegram und Signal zu schicken, kennt das Problem. Jede Plattform nutzt eigene Regeln für die Formatierung. Wenn du dann noch lange Texte kürzen musst, zerschießt es dir oft das Layout, weil ein Fettdruck-Tag mitten im Wort getrennt wird.

OpenClaw löst das mit einer Intermediate Representation (IR). Anstatt den Text für jeden Kanal neu zu parsen, wird er einmal in eine IR umgewandelt. Diese speichert den reinen Text und die Formatierungen separat. So bleibt alles konsistent, egal ob die Nachricht am Ende als HTML oder als Signal-Style-Range ankommt.

  • Slack, Telegram oder Signal Outbound Adapter
  • markdown.tables Konfiguration (optional)

In fünf Minuten kannst du einen neuen Channel-Formatter implementieren oder einen bestehenden anpassen. Folge diesen Schritten:

  1. Einmal parsen: Nutze den markdownToIR(...) Helper. Erstelle die IR mit den passenden Optionen für deinen Kanal (z. B. Autolink oder Blockquote-Präfixe).
  2. Chunking anwenden: Rufe chunkMarkdownIR(...) auf, bevor du den Text renderst. Das stellt sicher, dass Inline-Styles nicht über Chunks hinweg getrennt werden.
  3. Rendern: Implementiere einen Renderer mit renderMarkdownWithMarkers(...) und einer Map für die Styles deines Kanals.
  4. Adapter verbinden: Aktualisiere den Outbound Adapter des Kanals, damit er den neuen Chunker und Renderer nutzt.

Wenn du diesen Markdown-Input hast:

Hello **world** — see [docs](https://docs.openclaw.ai).

Erzeugt OpenClaw diese IR-Struktur:

{
"text": "Hello world — see docs.",
"styles": [{ "start": 6, "end": 11, "style": "bold" }],
"links": [{ "start": 19, "end": 23, "href": "https://docs.openclaw.ai" }]
}

Da nicht alle Chat-Clients Tabellen unterstützen, steuerst du die Umwandlung über markdown.tables:

channels:
discord:
markdown:
tables: code
accounts:
work:
markdown:
tables: off
  • code: Rendert Tabellen als Code-Blöcke (Standard für die meisten Kanäle).
  • bullets: Wandelt Zeilen in Aufzählungspunkte um (Standard für Signal und WhatsApp).
  • off: Deaktiviert das Parsing; die Tabelle bleibt roher Text.
  • Slack angle-brackets: Tokens wie <@U123> oder <https://...> müssen erhalten bleiben. Achte darauf, rohes HTML sicher zu escapen.
  • Telegram HTML: Du musst Text außerhalb von Tags escapen, damit das Markup nicht bricht.
  • Signal Offsets: Signal nutzt UTF-16 Code-Units für Style-Ranges. Nutze keine Code-Point-Offsets, da die Formatierung sonst verrutscht.
  • Code-Blöcke: Behalte abschließende Zeilenumbrüche bei Fenced Code-Blocks bei, damit die schließenden Marker in einer eigenen Zeile landen.

Du hast Fragen zur Einrichtung? Nutze den AI Setup Assistant.

OpenClaw

OpenClaw Expert

Noch festgefahren?

Wenn diese Seite nicht hilft, frage OpenClaw Expert nach Schritt-fuer-Schritt-Loesungen.