Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
20 KiB
Divi-Designsystem
lit-divi-design-system liest das Designsystem der Website live aus Divi:
- Globale Farben (
colors): ID (gcid-…), Name, Wert und der Platzhalter für neue Inhalte, z. B.{{color:primary}}für die Primärfarbe oder{{color:Nachtblau}}für eine eigene globale Farbe. Die fünf Theme-Farben heißenprimary,secondary,heading,bodyundlink. - Globale Variablen (
variables): Zahlen, Texte, Bilder, Links (gvid-…), Platzhalter{{var:<Name>}}. - Theme-Schriften (
fonts): Überschrift und Fließtext, Platzhalter{{font:heading}}/{{font:body}}. - Größen (
sizes): Schriftgrößen, Inhaltsbreite und Spaltenabstand aus den Theme-Optionen. Alle 20 Theme-Optionen mit Standardwerten liefertlit/divi-theme-options-get(siehe „Theme-Optionen“). - Presets (
presets): Modul-Presets je Modul (kind: module, z. B. alle Button-Presets) und Gruppen-Presets (kind: group);default: truemarkiert das Standard-Preset eines Moduls.
Auf großen Websites eingrenzen: only (Liste aus colors, variables, presets) liefert nur diese Teile
(Schriften und Größen sind immer dabei), module (z. B. "button") nur die Presets dieses Moduls; höchstens
200 Presets je Antwort (notes sagt, wenn es mehr gibt).
Regeln:
- Vor dem Gestalten einer Seite das Designsystem lesen.
- Globale Farben, Variablen und Presets vor festen Werten verwenden; feste Farben oder Schriften nur, wenn der Nutzer es ausdrücklich möchte.
- Gibt es für einen Zweck noch keine Farbe, Variable oder kein Preset, dem Nutzer vorschlagen, es anzulegen
(
lit/divi-colors-set,lit/divi-variables-set,lit/divi-presets-set), statt feste Werte zu verteilen – zuerst Probelauf, nach Rückfrageconfirm: true. - Das Designsystem wirkt auf alle Seiten der Website. Werte, Schriften und Abstände nennt der Nutzer; nichts erfinden und nie ohne seine Rückfrage bestätigen.
- Alle Schritte eines Designwechsels (Schriften, Farben, Variablen, Theme-Optionen, Presets) beschreibt
workflows, Abschnitt „Corporate Design übernehmen“.
Ablauf jeder Änderung
Presets, Farben, Variablen und Theme-Optionen (lit/divi-presets-set, lit/divi-presets-delete,
lit/divi-colors-set, lit/divi-variables-set, lit/divi-theme-options-update) sowie
lit/divi-design-restore und lit/divi-design-detach laufen gleich, alle über mcp-adapter-execute-ability:
- Aufruf ohne
confirm= Probelauf. Er schreibt nichts und antwortet mitconfirm_required:diff(was sich ändert), je nach Werkzeug die betroffenen Seiten undwarnings, dazu diedesign_rev. - Dem Nutzer die Änderung zeigen und erst nach seiner Antwort denselben Aufruf mit
confirm: trueund derdesign_revsenden (wo der Probelauf eine nennt). - Vor dem Schreiben legt LIT MCP einen Snapshot an; die Antwort nennt seine
snapshot_id(siehe „Snapshots und Wiederherstellen“). - Hat sich der Bestand inzwischen geändert (z. B. im Divi-Builder), kommt
rev_mismatch– neu prüfen.confirm: trueohnedesign_revergibtvalidation_failed; läuft gerade eine andere Änderung am selben Bereich, kommtconflict– kurz warten und den Probelauf wiederholen.
Eigene Schriften hochladen (lit/divi-fonts-upload) hat einen eigenen Probelauf und keinen Snapshot, siehe
„Eigene Schriften hochladen“.
Presets anlegen, ändern, löschen
Über mcp-adapter-execute-ability:
lit/divi-preset-get– ein Preset mit Einstellungen (attrsals Pfad → Wert wie beilit-divi-node-get), verschachtelten Gruppen-Presets und den Seiten, die es verwenden (usage).lit/divi-presets-set–itemsmitmodule(z. B."button") odergroup(z. B."font-body"):- neu:
name+ Einstellungen (namenur für neue Presets); ändern:preset(Name oder ID), optionalrename(nur zusammen mitpreset); Namen 1–100 Zeichen ohne HTML, innerhalb des Moduls bzw. der Gruppe eindeutig; - Einstellungen in
attrs(Vollform, Platzhalter{{color:…}},{{var:…}},{{font:…}}) oder aus einem gestalteten Modul:from_node={"post_id": 12, "id": "s0.r0.c1.m2"}(Pfad-ID auslit-divi-outline); - Presets tragen nur Gestaltung – Texte, Links und Bilder gehören ins Modul (sonst
validation_failed); group_presets(nur Modul-Presets), z. B.{"font": "Button-Schrift"};make_default: truemacht das Preset zum Standard seines Moduls bzw. seiner Gruppe;- neue Gruppen-Presets brauchen das Modul, aus dem die Gruppe stammt:
source_moduleoderfrom_node.
- neu:
lit/divi-presets-delete– nur Presets, die nirgends ausdrücklich verwendet werden (Seiten, Bibliothek, Theme Builder, verschachtelt in anderen Presets); sonstin_usemit den Fundstellen und dem Hinweis auflit/divi-design-detach. Ein Standard-Preset darf gelöscht werden, auch wenn Module es ohne eigenes Preset nutzen: der Probelauf listet diese Seiten, danach zeigen sie das Divi-Standardaussehen. Das gilt auch für Standard-Gruppen-Presets: gelistet werden die Seiten mit Modulen, die diese Gruppe haben, aber kein eigenes Gruppen-Preset dafür.lit/divi-design-snapshots/lit/divi-design-restore– Snapshots listen und wiederherstellen (siehe „Snapshots und Wiederherstellen“).
Der Ablauf (Probelauf, confirm: true, design_rev) steht oben unter „Ablauf jeder Änderung“.
Rechte: Presets ändern verlangt das Recht, das Design anzupassen, und in Divis Rollen-Editor den Visual Builder.
Konten ohne das Recht unfiltered_html (z. B. Redakteure) werden abgewiesen (forbidden), wenn vorhandene
Presets HTML oder CSS enthalten – Divi würde es beim Speichern entfernen; dann einen Administrator bitten. Das gilt
auch für das Löschen und für lit/divi-design-restore.
Presets auf Seiten zuweisen und Verweise entfernen
Einzelne Module bekommen Presets mit lit-divi-insert, lit-divi-update und lit-content-create (Stapel,
group_presets, clear_overrides: siehe divi-shortform). Für viele Seiten gibt es zwei Werkzeuge (über
mcp-adapter-execute-ability); beide ändern Seiteninhalt, nicht den Preset-Bestand.
lit/divi-presets-assign – ein Preset oder einen Stapel (preset) und/oder Gruppen-Presets
(group_presets) allen Modulen eines Typs (module, z. B. "button") zuweisen:
- Filter:
post_ids(1–50 Einträge; ohne die Angabe alle Fundstellen mit diesem Modultyp),only_without_preset: true(nur Module ohne Preset) oderonly_with_preset: "<Name>"(nur Module, die dieses Preset schon tragen; nicht zusammen),clear_overrides: true(lokale Werte entfernen, die das Preset überdecken). preset: null, ein leerer Text undnulloder ein leerer Text als Wert ingroup_presetswerden abgewiesen (validation_failed): site-weit entferntlit/divi-design-detachVerweise.- Ablauf: erst ohne
confirmaufrufen (Probelauf:confirm_requiredmitpages– je Seitepost_id,title,status, die betroffenen Knoten mit Pfad-ID, Modul und Label sowiewarningszu überdeckten Werten –, dazupages_count,nodes_count,skippedund gegebenenfallsblocked_ids). Dem Nutzer Seiten, Anzahl der Module und Überdeckungen zeigen und erst nach seiner Antwort denselben Aufruf mitconfirm: truesenden. Ohneconfirmwird nie etwas geschrieben. Ist nichts zu ändern, antwortet der Probelauf normal mit „nichts zu tun“ (keinconfirm_required). - Je Aufruf werden höchstens 50 Seiten geschrieben. Die Antwort nennt
saved(je Seitepost_id,revision_id, Anzahl Module) undremaining: Istremaininggrößer als 0, denselben Aufruf wiederholen – bereits umgestellte Module ändern sich nicht noch einmal. Jede Seite bekommt ihre eigene WordPress-Revision; einen Snapshot gibt es für Seiteninhalte nicht. - Blockaden: Ohne
post_idsverweigert der Aufruf alles und schreibt nichts: mitforbidden(undblocked_ids), wenn das Konto eine veröffentlichte, private oder geplante Fundstelle nicht bearbeiten darf, mitunsupported, wenn es mehr als 2000 solcher Fundstellen gibt. - Mit
post_idsblockieren nur die genannten Seiten, die Obergrenze von 2000 gilt nicht. Eine genannte veröffentlichte, private oder geplante Seite ohne Bearbeitungsrecht verweigert den ganzen Aufruf (forbiddenmitblocked_ids, nichts wird geschrieben; der Probelauf listet sie unterblocked_ids). Eine genannte Seite, die nicht live ist (Entwurf usw.) und nicht bearbeitet werden darf, steht unterskipped. Gibt es mehr als 2000 Live-Fundstellen, entfällt die Vorabprüfung der Bearbeitungsrechte; dann steht auch eine genannte Live-Seite ohne Bearbeitungsrecht unterskippedstatt inforbidden. - Die Sperre für Live-Seiten ergibt sich allein aus der Fundstellensuche: Eine Live-Seite, die das Konto nicht
bearbeiten darf, blockiert den ganzen Aufruf, auch wenn die Filter (
only_with_preset,only_without_preset) auf dieser Seite nichts ändern würden. - Scheitert das Speichern mitten im Lauf, meldet
partial_writedie bis dahin gespeicherten Seiten (saved): zuerst die genannte fehlgeschlagene Seite prüfen (lit-divi-outline), dann denselben Aufruf mitconfirm: truewiederholen; bereits geänderte Module trifft er nicht noch einmal. - Globale Module und die Bibliothek: Eine globale Instanz (
[global <ID>]inlit-divi-outline) wird auf der Seite nicht umgeschrieben, sondern unterskippedgemeldet – „globales Modul – im Bibliothekseintrag ändern“, wenn das Konto Bibliotheks-IDs sehen darf, sonst „globales Modul – im Divi-Builder ändern“. Der Bibliothekseintrag selbst ist eine eigene Fundstelle und wird wie eine Seite umgeschrieben (wirkt dann überall, siehedivi-library). Seiten, die sich nicht ändern lassen (Divi 4, beschädigtes Markup), stehen mit dem Grund unterskipped. - Rechte wie bei den Presets (Recht, das Design anzupassen, und Visual Builder) plus
edit_postfür jede Fundstelle; Theme-Builder-Layouts nach den Regeln des Theme Builders.
lit/divi-design-detach – Verweise auf ein Preset überall entfernen, damit es sich löschen lässt:
- Eingabe:
presetist ein Objekt{"module": "button", "preset": "<Name oder ID>"}bzw.{"group": "font", "preset": "<Name oder ID>"}, optionalpost_ids(Filter wie oben, 1–50). - Ablauf wie bei jeder Änderung des Bestands: Probelauf (
confirm_requiredmit Seiten und, wenn andere Presets das Gruppen-Preset verschachteln,diffunddesign_rev), dem Nutzer zeigen, dannconfirm: true(mitdesign_rev, wenn der Probelauf eine nannte; veraltet:rev_mismatch, dann wird weder am Bestand noch an Seiten etwas geschrieben). Gibt es keine Verweise mehr, ist der Probelauf ein normales „nichts zu tun“. - Ohne
post_idswerden zuerst verschachtelte Verweise in anderen Presets entfernt (mit Snapshot, wielit/divi-presets-set), danach die Seiten (höchstens 50 je Aufruf,remainingwie oben; ein weiterer Aufruf findet keine verschachtelten Verweise mehr und macht mit den Seiten weiter). Scheitert das Speichern der ersten Seite nach diesem Presets-Schritt, nennt die Fehlermeldung Snapshot unddiff: die Verweise in den Presets sind dann schon entfernt. Mitpost_idswerden nur diese Seiten geändert, Verweise in Presets bleiben. - Die Module fallen auf das nächste Preset ihres Stapels zurück, sonst auf das Standard-Preset bzw. Divis
Standardaussehen. Ein Standard-Preset wird nicht „entkoppelt“, weil Divi es ohne Verweis anwendet; detach
entfernt dort nur ausdrückliche Verweise und sagt das in
warnings. Zum Beenden der Standardwirkung das Preset löschen (lit/divi-presets-delete) oder mitmake_default: falseden Standard aufheben. - Variablen:
variable(Name oder ID) ersetzt jeden ganzen Verweis auf die Variable durch ihren aktuellen Wert, auch in Presets; danach lässt sie sich mitlit/divi-variables-setarchivieren (löschen kann Divi sie nicht). - Meldet die Antwort
hidden_countgrößer als 0, können Seiten, die dieses Konto nicht lesen darf, noch Verweise enthalten; dann nennt sie den Hinweis auflit/divi-presets-deletenicht. - Danach
lit/divi-presets-deleteaufrufen (Probelauf,confirm,design_rev); es meldet keinin_usemehr, solange niemand das Preset neu zugewiesen hat.
Farben und Variablen anlegen und ändern
Über mcp-adapter-execute-ability, Ablauf wie oben, bis zu 50 Einträge je Aufruf in items. Farben und
Variablen werden nie gelöscht, nur deaktiviert bzw. archiviert. Angelegte Farben und Variablen lassen sich sofort
als {{color:<Name>}} und {{var:<Name>}} verwenden (divi-placeholders). Fehlerhafte Angaben (unbekannte ID,
vergebener oder mehrdeutiger Name – die Meldung nennt dann die IDs –, ungültiger Wert) sammelt das Werkzeug unter
fields als validation_failed; nichts wird gespeichert.
lit/divi-colors-set – je Eintrag:
idnennt eine vorhandene Farbe (IDgcid-…, Name, Aliasprimary,secondary,heading,body,linkoder Optionsname wieaccent_color); ohneidentsteht auslabel(Name) undcoloreine neue Farbe.color: Hex (#rgb,#rrggbb, auch mit Alpha),rgb()/rgba()/hsl()/hsla(), ein Farbname (z. B.red) oder der Platzhalter{{color:<Name>}}zusammen mitrelative. So entstehen abgeleitete Farben, z. B.{"label": "Primär abgestuft", "color": "{{color:primary}}", "relative": {"lightness": 20}};relativenimmthue(−360 bis 360),saturation,lightnessundopacity(je −100 bis 100).labelbenennt um,status: inactivedeaktiviert die Farbe,activeholt sie zurück.- Die fünf Hauptfarben (
primary,secondary,heading,body,link) ändern nurcolor, und nur mit einem festen Wert (kein Platzhalter, keinlabel,folderoderstatus).
lit/divi-variables-set – je Eintrag:
idnennt eine vorhandene Variable (IDgvid-…oder Name); ohneidentsteht austype(numbers,strings,images,linksoderfonts),labelundvalueeine neue. Der Typ einer Variable bleibt.valuewird je Typ geprüft (Zahl, Text, Bild- oder Link-Adresse; Schrift-Variablen nur mit einem Schriftnamen, den Divi kennt). Aktive Variablen brauchen einen Wert.labelbenennt um,status: archivedarchiviert,activeholt die Variable zurück.- Vor dem Archivieren die Verweise ersetzen:
lit/divi-design-detachmitvariablesetzt auf Seiten und in Presets den aktuellen Wert ein.
Der Probelauf beider Werkzeuge nennt die betroffenen Seiten und warnings. Die Rechte stehen unter „Rechte im
Überblick“.
Theme-Optionen: Schriften, Größen und Layout
lit/divi-theme-options-get liefert je Theme-Option den gespeicherten Wert (null = nicht gesetzt), den
wirksamen Wert, den Divi-Standard, Typ und Bereich bzw. Auswahl und die design_rev; keys grenzt auf einzelne
Optionen ein. lit/divi-theme-options-update ändert sie mit set ({"Schlüssel": Wert}, Probelauf und
confirm wie oben); null setzt eine Option auf den Divi-Standard zurück. Die 20 Schlüssel:
- Schriften:
heading_font,body_font,primary_nav_font,secondary_nav_font– der exakte Name einer Schrift, die Divi kennt (Google-Schrift, Web-Safe-Schrift oder hochgeladene Schrift); bei unbekannten Namen antwortet das Werkzeug mitvalidation_failedund bis zu fünf Vorschlägen. Stärken:heading_font_weight,body_font_weight(100–900). - Größen:
body_font_size(10–32),body_header_size(22–72) und je eine Tablet- und Smartphone-Größe (tablet_body_font_size,phone_body_font_size,tablet_header_font_size,phone_header_font_size); sie erben vom nächstgrößeren Wert, solange sie nicht gesetzt sind. - Text:
body_font_height,body_header_height(Zeilenhöhe, 0,8–3),body_header_spacing(Buchstabenabstand, −2 bis 10),body_header_style(italic,uppercaseoderunderline; Divi kennt hier nur einen Wert). - Layout:
content_width(960–1920),gutter_width(1–4),section_padding,row_padding(je 0–10).
Die Hauptfarben gehören nicht hierher, sondern in lit/divi-colors-set. Theme-Optionen wirken auf die gesamte
Website: den Nutzer ausdrücklich fragen. Jede Änderung legt einen Snapshot an.
Eigene Schriften hochladen
lit/divi-fonts-upload lädt eine Schrift von öffentlichen Adressen in Divis hochgeladene Schriften:
files: je Format eine Datei (woff2,woff,ttf,otf) als öffentliche http(s)-Adresse, höchstens 5 MB je Datei;name: 1–100 Zeichen aus A–Z, a–z, 0–9, Leerzeichen,_und-(keine Umlaute), kein Name einer Google-, Web-Safe- oder schon hochgeladenen Schrift (auch nicht in anderer Schreibweise);weights:"all"oder eine Liste aus 100 bis 900;generic_family:serif,sans-serif(Standard),monospace,cursiveoderfantasy.- Ablauf: Der Probelauf (ohne
confirm) lädt die Dateien wirklich, prüft Inhalt und Format und nennt je Datei Format, Größe und SHA-256 – installiert aber nichts. Dem Nutzer zeigen, nach seiner Antwort denselben Aufruf mitconfirm: true; er lädt die Dateien erneut. - Fehler:
font_fetch_failed(eine Adresse ist nicht erreichbar),font_invalid(die Datei passt nicht zum Format, etwa ein Bild alswoff2),conflict(der Name ist vergeben),validation_failed(Name oder Angaben ungültig). Nichts wird gespeichert. - Es gibt keinen Snapshot und keine Rücknahme per Werkzeug: Eine hochgeladene Schrift entfernt nur der Nutzer im Divi-Builder.
- Datenschutz: Hochgeladene Schriften liefert der eigene Server aus, nicht Google. Die Lizenz der Schrift klärt der Nutzer.
- Danach ist die Schrift ein gültiger Name für
lit/divi-theme-options-update(z. B.body_font) und für Schrift-Variablen (lit/divi-variables-setmittype: fonts).
Snapshots und Wiederherstellen
Vor jeder Änderung an Presets, Farben, Variablen und Theme-Optionen sichert LIT MCP den Bereich (je Bereich bleiben
die letzten 20 Snapshots; eine Gesamtgrenze von 8 MB entfernt ältere früher); die Antwort nennt die snapshot_id. Wäre der Bereich zu groß für eine Sicherung (über
2 MB), antwortet das Werkzeug mit snapshot_too_large und schreibt nichts.
lit/divi-design-snapshotsmitarea(presets,colors,variablesodertheme_options; Standardpresets) listet die Snapshots eines Bereichs, neueste zuerst, mit Zeitpunkt, Werkzeug und Protokolleintrag.lit/divi-design-restoremitsnapshot_id: Der Probelauf zeigt den Unterschied zum aktuellen Stand (diff,design_rev); nach Rückfrageconfirm: true. Vorher sichert LIT MCP den aktuellen Stand selbst – auch eine Wiederherstellung lässt sich zurücknehmen. Ist die ID unbekannt oder verdrängt, kommtnot_found.- Was ein Restore macht, hängt vom Bereich ab: Farben, die es im Snapshot nicht gibt, entfallen. Variablen,
die erst nach dem Snapshot entstanden, bleiben archiviert erhalten (Divi löscht keine). Theme-Optionen, die
im Snapshot nicht gesetzt waren, kehren zum Divi-Standard zurück. Presets: Rechte-Regel
unfiltered_htmlwie oben. - Nicht gesichert und nicht wiederherstellbar: Seiteninhalt (dort gibt es die WordPress-Revision, die
revision_idder Antwort) und hochgeladene Schriften.
Rechte im Überblick
Fehlt ein Recht, antwortet das Werkzeug mit forbidden; die Meldung nennt das Recht, den fehlenden Divi-Rollenwert
bitte ein Administrator unter Divi → Rollen-Editor freigeben.
- Presets und Farben:
edit_theme_optionsund in Divis Rollen-Editor „Visual Builder verwenden“. - Variablen: dasselbe und der Variablen-Manager.
- Theme-Optionen:
edit_theme_optionsund die Theme-Anpassung (Divis Customizer, kein Visual Builder nötig). - Schriften hochladen:
upload_files,edit_theme_optionsund „Eigene Schriften verwalten“. - Snapshots listen:
edit_theme_options; wiederherstellen: die Rechte des jeweiligen Bereichs. - Seiten umschreiben (
lit/divi-presets-assign,lit/divi-design-detach): zusätzlichedit_postje Seite.