Der Editor möchte eine neue Seite in Storyblok erstellen und beschreibt den gewünschten Inhalt in natürlicher Sprache – z.B. „Erstelle eine Landing Page für unser neues Produkt mit Hero, Features und FAQ".
- Der Editor hat eine grobe Vorstellung vom Seiteninhalt (Thema, Zweck, Zielgruppe)
- Optional: Texte, Bilder oder URLs als Ausgangsmaterial
- Tool:
analyze_content_patterns - Zweck: Die etablierten Content-Muster dieser Website lernen — welche Komponenten werden häufig verwendet, welche Sektionsabfolgen sind typisch, wie viele Sub-Elemente haben Komponenten normalerweise?
- Antwort kommt sofort aus dem Startup-Cache (kein API-Call). Bei frisch publiziertem Content
refresh: trueübergeben. - Alternativ: Die
recipes://section-recipesRessource lesen für allgemeine Best Practices zu Komponentenkombinationen und Seitenvorlagen - Das Ergebnis als Leitfaden für die Planung nutzen — neue Seiten sollten zum bestehenden Stil der Website passen
- Tool:
list_components - Zweck: Herausfinden, welche Sektionstypen (Hero, FAQ, Testimonials, Features, …) im Design System zur Verfügung stehen
- Wichtig: Die Komponentenliste bestimmt, welche
componentType-Werte in Schritt 2 verwendet werden können. Keine Sektionstypen erfinden, die es nicht gibt! - Dem Editor die verfügbaren Optionen kurz zusammenfassen und fragen, welche Sektionen die Seite haben soll
- Tool:
list_icons - Wann: Wenn die Seite Komponenten mit Icon-Feldern enthalten wird (z.B. Hero mit CTA-Icon, Features mit Icons, Kontaktdaten)
- Zweck: Sicherstellen, dass nur gültige Icon-Bezeichner im generierten Inhalt verwendet werden
- Wichtig: Icon-Bezeichner nicht erfinden! Nur Werte aus
list_iconsverwenden (z.B.arrow-right,star,email,phone)
- Tool:
plan_page - Parameter:
intent: Kurzbeschreibung der Seite (z.B. „Landing Page für KI-gestützte Content-Generierung")contentType:"page"(oder"blog-post","event-detail"etc.)startsWith(optional): Slug-Präfix, wenn die neue Seite zu einem bestimmten Seitenbereich passen soll
- Ergebnis: Empfohlene Sektionsfolge (z.B. hero → features → testimonials → cta)
- Plan dem Editor vorstellen und bestätigen lassen — Reihenfolge, fehlende Sektionen oder ungewünschte Sektionen besprechen
Für JEDE geplante Sektion generate_section separat aufrufen:
- Tool:
generate_section - Parameter:
componentType: Der Sektionstyp aus dem Plan (z.B."hero")prompt: Spezifische Beschreibung für NUR diese Sektion — was soll sie kommunizieren?previousSection/nextSection: Typ der Nachbar-Sektionen für fließende Übergänge
- Vorteil: Jede Sektion wird einzeln angezeigt — der Editor kann sie direkt prüfen, genehmigen, ablehnen oder Änderungen anfordern, bevor die nächste generiert wird
- Vorteil: Site-Kontext (Komponentenfrequenz, Sub-Item-Counts, Feldwert-Verteilungen, Rezept-Best-Practices) wird automatisch injiziert
⚠️ Jede Sektion braucht einen spezifischen Prompt — nicht alle mit derselben generischen Beschreibung generieren
💡 Warum nicht
generate_content?generate_sectiongibt dem Editor maximale Kontrolle: jede Sektion wird isoliert angezeigt und kann einzeln genehmigt/abgelehnt/modifiziert werden.generate_contenterzeugt alles auf einmal ohne Feedback-Möglichkeit und ist nur für vollautomatisierte Workflows (z.B. n8n) sinnvoll.
- Tool:
generate_seo - Zweck: Optimierte SEO-Metadaten (Titel, Beschreibung, Keywords, OG-Image) für die Seite erzeugen
- Parameter:
prompt: Zusammenfassung des Seiteninhalts — Thema, Zielgruppe, wichtige Keywords einbeziehencontentType: Den Content-Typ angeben (z.B."page","blog-post")
- Wann: Immer als letzten Generierungsschritt aufrufen, NACHDEM alle Sektionen generiert wurden — so kann der Prompt den tatsächlichen Seiteninhalt widerspiegeln
- Ergebnis: Wird als
rootFields.seoancreate_page_with_contentübergeben
- Tool:
create_page_with_content - Parameter:
name: Seitenname (vom Editor erfragen oder aus Kontext ableiten)slug: URL-Slug vorschlagen (z.B. aus dem Seitennamen, Kleinbuchstaben, Bindestriche)sections: Die generierten Sektionen aus Schritt 3rootFields:{ seo: <Ergebnis von generate_seo()> }— SEO-Metadaten aus Schritt 4uploadAssets: true← immer setzen, damit KI-generierte Bilder nach Storyblok hochgeladen werdenassetFolderName: Sinnvollen Ordnernamen vorschlagen (z.B. „Landing Page - [Thema]")publish: false← immer als Draft, der Editor soll im Visual Editor prüfen
⚠️ parentIdnur setzen, wenn der Editor explizit einen Ordner nennt- 💡 Alternativ:
pathverwenden (z.B."en/services"), um Ordner automatisch anlegen zu lassen (wiemkdir -p).pathundparentIdsind gegenseitig exklusiv.
- Dem Editor den Slug / Link zur neuen Seite nennen
- Darauf hinweisen, dass die Seite als Draft vorliegt und im Storyblok Visual Editor geprüft werden sollte
- Fragen, ob weitere Anpassungen gewünscht sind
| Fehler | Auswirkung | Vermeidung |
|---|---|---|
uploadAssets: true vergessen |
Bilder bleiben als externe URLs, brechen evtl. später | Immer setzen |
publish: true ohne Review |
Ungeprüfter Content geht live | Immer false, Editor entscheidet |
list_components übersprungen |
Claude generiert Sektionstypen, die es nicht gibt → Import schlägt fehl | Immer zuerst Komponenten prüfen |
| Icon-Bezeichner erfunden | Ungültige Icons werden nicht gerendert | Immer list_icons aufrufen vor Icon-Nutzung |
| Slug nicht abgestimmt | Doppelte Slugs → Storyblok-Fehler | Slug mit Editor besprechen |
| Alle Sektionen auf einmal generiert | Editor kann einzelne Sektionen nicht prüfen/ablehnen | generate_section pro Sektion verwenden — ermöglicht einzelnes Review und Feedback |
| Bestehende Muster ignoriert | Neuer Content passt nicht zum Rest der Website | Immer zuerst analyze_content_patterns oder Rezepte prüfen |
generate_seo übersprungen |
Fehlende SEO-Metadaten (Titel, Beschreibung, Keywords, OG-Image) | Immer als letzten Generierungsschritt vor Seitenerstellung aufrufen (Schritt 4) |
- Nur eine einzelne Sektion generieren:
generate_sectionmitcomponentTypeaufrufen — Ergebnis wird isoliert angezeigt und kann direkt genehmigt/abgelehnt werden - Seite in einem Unterordner:
pathverwenden (z.B."en/services/consulting") — Ordner werden automatisch erstellt. AlternativparentIddes Zielordners angeben (überlist_storiesmitstartsWithermitteln). - Blogpost statt Seite:
contentType: "blog-post"bei allen Tools übergeben. Blog-Posts sind Hybrid-Typen mit Sektionen UND Root-Feldern (head,aside,cta,seo). Wichtig: Blog-Sektionen sollten überwiegend austextundsplit-evenbestehen — niemalsherooderctaals Sektionen verwenden (diese werden über die Root-Felderheadundctaabgedeckt). Andere Komponenten wiefaqnur ausnahmsweise. Nach den Sektionengenerate_root_fieldfür jedes Root-Feld (head,aside,cta) aufrufen.generate_seowird wie bei regulären Seiten in Schritt 4 aufgerufen (mitcontentType: "blog-post"). Danncreate_page_with_content(sections: [...], rootFields: { head, aside, cta, seo }). Siehe Skill „Seite Sektion für Sektion planen und erstellen" → Abschnitt Hybrid-Typen. - Events:
contentType: "event-detail"verwenden. Bei Tier-2-Typen (event-detail, event-list)rootFieldsfür die Wurzel-Felder setzen, da keine Sektionen vorhanden sind.