Canvora × nanoclaw
On-Brand-Visuals-CLI für nanoclaw
nanoclaw hält den Agent-Loop minimal — Canvora hält die Tool-Oberfläche passend dazu minimal: eine Env-Variable, ein Befehl rein, fertige gebrandete Visuals raus.
Kostenlose Credits, keine Karte nötig. Bitte stelle sicher, dass immer ein Mensch in der Schleife bleibt.
Das komplette Setup
# Skills installieren (oder die CLI pur nutzen - beides geht)
npx skills add canvora/canvora-mcp
# Auth ist eine Env-Variable
export CANVORA_API_KEY=vd_...
# Smoke-Test
canvora credits --jsonDas liefert dein Agent
Eine Generierung, zweimal lokalisiert. Gleiches Design, nativ neu gesetzt auf Spanisch und Arabisch — Rechts-nach-links korrekt umgesetzt, kein gespiegeltes Englisch.

Generiert mit denselben Befehlen, die auf dieser Seite gezeigt werden.
So funktioniert es
1. Abfeuern
Die erste stdout-Zeile ist die reine Generation-Id
ID=$(canvora generate \
--input "Drei Gewohnheiten hochwirksamer Remote-Teams..." \
--format instagram_post --style minimal | head -1)2. Pollen
Günstige Status-Checks bis completed
while true; do
S=$(canvora status "$ID" --json | jq -r .status)
[ "$S" = "completed" ] && break
[ "$S" = "failed" ] && exit 1
sleep 10
done3. Ausliefern
Dateien oder CDN-URLs, was der Loop gerade braucht
canvora download "$ID" --dir out/
canvora status "$ID" --json | jq -r '.outputs[].fileUrl'Was ist nanoclaw?
nanoclaw ist die minimalistische Variante des persönlichen KI-Agenten: ein winziger, auditierbarer Kern-Loop, der auf wohlerzogene externe Tools setzt statt auf eingebaute Komplexität. Canvora passt zu dieser Philosophie — die gesamte Visual-Pipeline besteht aus vier Befehlen.
Winzige Oberfläche
generate, status, download — der essenzielle Loop sind drei Befehle. Alles liefert mit --json JSON; Fortschritt geht nach stderr, Ergebnisse nach stdout.
Kein State zu verwalten
Keine Sessions, kein SDK, keine Config-Dateien. Der API-Key kommt aus der Umgebung; Generation-Ids sind einfache Strings, die dein Loop weiterreicht.
Fällt sicher aus
Das Guthaben wird vor jeder Abbuchung geprüft, Fehler sind typisiertes JSON, und fehlgeschlagene Generierungen werden automatisch erstattet — ein minimaler Loop kann nichts unbemerkt leeren.
Das gesamte Agent-Tool, ein Screen
Das ist die komplette Integration — keine Wrapper-Library
#!/bin/sh
# nanoclaw-Tool: Text -> gebrandeter Instagram-Post -> Datei-URL
ID=$(canvora generate --input "$1" \
--format instagram_post --brand "$BRAND_ID" | head -1)
until [ "$(canvora status "$ID" --json | jq -r .status)" = "completed" ]
do sleep 10; done
canvora status "$ID" --json | jq -r '.outputs[0].fileUrl'Sprachen hinzufügen, ohne Code hinzuzufügen
Derselbe minimale Loop deckt jeden Markt ab
# Ein zusätzlicher Befehl lokalisiert das fertige Visual -
# gleiches Design, nativ neu gesetzter Text:
canvora localize "$ID" --language tr
canvora localize "$ID" --language ar # korrektes RTL, nicht gespiegeltWarum nanoclaw + Canvora
- Kern-Loop aus drei Befehlen: generate, status, download
- stdout ist Daten, stderr ist Fortschritt — Pipes komponieren sauber
- Kein SDK, keine Session, keine Config: eine Env-Variable und einfache Strings
- Typisierte JSON-Fehler und Guthaben-Checks vor der Abbuchung — sicher in unbeaufsichtigten Loops
- localize und variations erweitern den Loop ohne neuen Integrations-Code
Befehlsreferenz
Hänge --json an jeden Befehl für maschinenlesbaren Output. Fortschritt geht nach stderr, Ergebnisse nach stdout.
| Befehl | Beschreibung |
|---|---|
| canvora generate | Visuals erstellen aus --idea, --input Text, --url oder --file-url; Formate, Brand, Stil und Sprache wählen |
| canvora status <id> | Eine Generierung prüfen; --json liefert Status und Output-Datei-URLs |
| canvora download <id> | Output-Dateien in ein Verzeichnis speichern |
| canvora localize <id> | Gleiches Design, nativ neu gesetzt in einer anderen Sprache (RTL inklusive) |
| canvora variations <id> | Alternative Varianten einer fertigen Generierung |
| canvora edit <outputId> | Ein Visual mit einer Anweisung in natürlicher Sprache überarbeiten |
| canvora formats | Alle 100+ Format-Ids auflisten |
| canvora brands | Brand-Kits auflisten (Farben, Fonts, Logo, Tonalität) |
| canvora credits | Credit-Guthaben anzeigen |
Über 100 Formate, eine Engine
Jedes Format hat plattformgerechte Komposition und Safe Zones — dein Agent wählt per Id.
Instagram-Carousel
Bis zu 20 Slides, vom Hook zum CTA
LinkedIn-Carousel
Swipebare Dokument-Posts
Pitch-Deck
Stimmige Multi-Slide-Sets
Instagram-Post & Story
Feed- und Vertikalformate
Stat-Card
Eine Zahl, gestaltet, damit sie sitzt
Infografik
Daten- und Prozess-Visuals
Blog-Header & OG-Image
Alles für den Launch
Ad-Creatives
Display- und Social-Ads
FAQ
Warum ist die Generierung asynchron? +
Visual-Generierung ist echte Arbeit; ein synchroner Aufruf würde den Agent-Loop blockieren und Shells in Timeouts laufen lassen. Job abfeuern, Id aus stdout übernehmen, Status pollen. Das Muster: drei Zeilen sh, oben gezeigt — und es hängt nie.
Was kostet jeder Aufruf? +
Feste Credits: 10 pro einzelnem Visual, 15 pro Carousel- oder Deck-Slide. canvora credits --json liefert das Guthaben; ein Request, der es übersteigt, schlägt vor jeder Abbuchung fehl — mit der exakten Differenz im Fehler.
Was, wenn der Loop mitten in der Generierung stirbt? +
Nichts geht verloren: Die Generierung läuft serverseitig weiter, und die Id bleibt abfragbar. Schlägt sie fehl, werden die Credits automatisch erstattet. Ein Neustart des Skripts startet einen neuen, separaten Job — persistiere die Id, wenn du stattdessen fortsetzen willst.
Muss außer der CLI noch etwas installiert werden? +
Nein. @canvora/cli ist ein einfaches Node-Binary; jq in den Beispielen ist optionaler Zucker. Die Skills-Installation legt fertige Workflows obendrauf, aber die pure CLI kann alles.
Funktioniert auch mit
Der nächste Tool-Call deines Agents ist eine Design-Abteilung.
Erstelle einen kostenlosen Account, setze einen Key, und lass nanoclaw On-Brand-Visuals liefern.