Entwickler YAML-API

Inline Text-Generierung beim Erstellen des Inhaltselements

Als Entwickler kannst du dir unzählige Anwendungsfälle für automatisch generierte Texte in inline-editable Text-Properties überlegen.

Beginnen wir mit einem Inhalts-Element "Seitenfazit", das sich automatisch mit einer Zusammenfassung der aktuellen Seite füllt – mit NEOSidekick, direkt in die Benutzeroberfläche gestreamt.

Video in voller Größe

Die NEOSidekick YAML API

Dafür brauchst du nur ein paar Zeilen zusätzlicher Code:

'Vendor.Site:Content.PageSummary':
superTypes:
'Neos.Neos:Content': true
ui:
label: Seitenfazit
icon: align-left
properties:
text:
type: string
ui:
inlineEditable: true
options:
sidekick:
onCreate: true
module: 'page_conclusion_writer'

 

In den Property-Optionen kannst du mit sidekick.onCreate ein Modul definieren, welches genutzt werden soll. Hier nehmen wir page_conclusion_writer. Das Modul bekommt automatisch den aktuellen Inhalt der Seite mitgeschickt. Bei anderen Module hast du noch diverse Konfigurationsmöglichkeiten, hier ein paar weitere Beispiele.

 

Creation Dialog

Lass uns Inhalte aus dem Creation Dialog nutzen, um automatisch Texte zu generieren. Dafür definieren wir wir einen Titel, und eine weitere Text-Property die basierend auf dem Titel mit Text vorbefüllt wird.

Video in voller Größe

Die NEOSidekick YAML API

Dies kannst du mit einem YAML NodeType so realisieren:

'Vendor.Site:Content.Text':
superTypes:
'Neos.Neos:Content': true
ui:
label: Magic Text
icon: align-left
properties:
title:
type: string
ui:
label: Title
showInCreationDialog: true
inlineEditable: true
text:
type: string
ui:
inlineEditable: true
options:
sidekick:
onCreate: true
module: paragraph_generation
arguments:
topic: 'SidekickClientEval: node.properties.title'

 

Für die Argumente kannst du auf ClientEval nutzen um immer den aktuellen Title-Property-Wert zu nutzen. Du kannst auch SidekickClientEval nutzen, dieser erweitert ClientEval und unterstützen zusätzlich documentTitle, documentContent und einen Funktion AssetUri. Der paragraph_generation hat ein Argument topic, und hier nutzen wir den title des Inhaltselement.

 

Deine eignen Prompts

Du bist nicht auf unsere vorgefertigten Module eingeschränkt. Erstellen wir nun ein Inhaltselement TLDR mit einem eigenen Prompt.

Video in voller Größe

Die NEOSidekick YAML API

Mit diesen paar Zeilen kannst du deinen eigenen Prompt zum Erstellen von beliebigem Text umsetzen:

'NEOSidekick.Site:Content.TLDR':
superTypes:
'Neos.Neos:Content': true
ui:
label: TLDR
icon: list
properties:
text:
type: string
ui:
inlineEditable: true
options:
sidekick:
onCreate: true
module: free_conversation
arguments:
content: 'Generate a TDLR with 5 bulletpoint for this page, in HTML without a code block. Keep the sentences short. Make it engaging, so that visitors want to read the whole page.'
writingStyle: 'tech_advocate'

 

Hier passiert in wenigen Zeilen eine Menge. Das NEOSidekick-Modul free_conversation wird aufgerufen und bekommt den Inhalt der aktuellen Seite und einen eigenen Prompt. In diesem Prompt beschreiben wir was wir wollen "Generate a TDLR with 5 bulletpoint for this page", in welchem Format "in HTML without a code block" und mit welchem Schreib-Stil "Keep the sentences short. Make it engaging, so that visitors want to read the whole page."

Zusätzlich können wir auch noch einen der vorgefertigten Schreibstile mitgeben.

Die NEOSidekick YAML API

Und hier noch ein Beispiel, wo wir eine Node-Property nutzen:

'NEOSidekick.Site:Document.BlogPost':
superTypes:
'Neos.Neos:Document': true
ui:
label: BlogPost
properties:
transcript:
type: string
ui:
label: 'YouTube Transcript'
showInCreationDialog: true
text:
type: string
ui:
inlineEditable: true
options:
sidekick:
onCreate: true
module: free_conversation
arguments:
content: >-
SidekickClientEval: `
You are the worlds best journalist. You write in an informal style aimed at engaging and educating the reader. The tone is friendly and approachable, using direct address ("I") to create a sense of dialogue. The article breaks down complex topics into understandable segments, using relatable examples and personal anecdotes to clarify points. You often include rhetorical questions to provoke thought and keep the reader engaged. The structure is well-organized, with clear headings and bullet points that make the content easy to follow.

YouTube transcript:
"""
${node.properties.transcript}
"""

Please re-write the transcript as a blog post in Markdown. Skip the title, start with a introduction and then start with the headline level 2.
`
 

 

In diesem Beispiel nutzen wir SidekickClientEval um auf Node-Properties zugreifen zu können. Und wir nutzen JavaScript Template Strings um den langen Prompt schön in YAML schreiben zu können.

Die NEOSidekick YAML API

Brauchst du einen API-Key?

Da GPT-4 mit doch erheblichen Kosten verbunden ist, können wir die Schnittstelle nicht ungeschützt im Internet veröffentlichen. Du kannst eine 14-tägige Testversion über unseren Shop kaufen, oder uns über support@neosidekick.com, dann können wir die einen API-Key zum Testen und für Demos erstellen.

Was steckt noch in der API?

Module für die Inspector-Property-Text-Generierung:

  • free_conversation
    Argumente: content (string, required)
    Beschreibe in einem eigenen Prompt, welcher Inhalt erstellt werden soll.
  • page_conclusion_writer
    Argumente: call_to_action (string, optional)
    Generiere ein Seitenfazit, und definiere einen optionalen Call-to-Action welcher im Fazit vorkommen soll.
  • paragraph_generation
    Argumente: content (string, required)
    Generiere einen Absatz über das Thema aus content.

Verfügbare Schreibstile:

  • academically_complex
  • concise_descriptions
  • extreme_motivation
  • literary_masterpiece
  • marketing_genius
  • storytelling_genius
  • tech_advocate
  • visionary_marketing

 

Du kannst ebenso im Neos Inspector Generieren-Buttons erstellen.

Lass deiner Kreativität freien Lauf! Gestaltet und konfiguriert eure eigenen Buttons, wir sind gespannt welche Anwendungsfälle ihr findet.

 

Bitte gib uns Feedback!

Ist die Namensgebung konsistent und klar? Sind die Anwendungsfälle für dich verständlich? Was würdest du gerne damit entwickeln?

Oder auf Slack #neos-general und erwähne @rolandschuetz