Download the PHP package deon-ai/craft-connect without Composer

On this page you can find all versions of the php package deon-ai/craft-connect. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package craft-connect

Deon AI Connect für Craft CMS

Verbindet deine Craft-Site mit dem Deon AI Marketing-OS: SEO-Audit mit 1-Klick-Fixes, KI-Sichtbarkeits-Tracking (ChatGPT, Google AI Overview & Co.), Besucher-Tracking und automatisches Blog-Publishing.

Was das Plugin macht

Voraussetzungen — vor der Installation prüfen

Das Plugin bringt eine eigene Datenbank-Migration mit (neue Tabellen für SEO-Overrides und robots.txt/llms.txt). Damit die Installation nicht die Live-Seite lahmlegt, vorher sicherstellen:

Migrationen sicher ausführen

Nach der Installation (und bei jedem künftigen Update, egal ob Plugin oder Craft-Core) Migrationen immer per Konsole laufen lassen, nicht über den Browser-Updater im Control Panel:

So bleibt die Seite live erreichbar, falls eine Migration fehlschlägt — der Fehler passiert in der SSH-Session, nicht mitten in einem Besucher-Request. Für Produktivumgebungen empfiehlt sich zusätzlich CRAFT_ALLOW_ADMIN_CHANGES=false in der Env, damit der Browser-Updater generell deaktiviert ist und Updates nur noch kontrolliert über die Konsole laufen.

Einrichtung

  1. In Deon AI → Website verknüpfen → Plattform Craft CMS wählen.
  2. Den angezeigten Connection-Key in Craft unter Einstellungen → Plugins → Deon AI Connect eintragen (einziges Pflichtfeld — Tipp: als Env-Variable hinterlegen, das Feld unterstützt Env-Autosuggest) und speichern.
  3. Beim Speichern holt sich das Plugin automatisch Site-ID, SDK-Key und Verifizierungs-UUID von Deon AI ab (Bootstrap-Call, authentifiziert über denselben Key) — die Einstellungsseite zeigt danach "✓ Verbunden — Site-ID: …". Schlägt das fehl (z. B. falscher Key), bleibt eine Meldung im Control Panel stehen; die restlichen Settings gehen dabei nicht verloren.
  4. Zurück im Deon-AI-Wizard auf Verifizieren klicken — fertig.

Für das Blog-Publishing: Section-Handle (Standard blog) und Body-Feld-Handle (Standard body) in den Plugin-Einstellungen an dein Schema anpassen. Für Featured Images zusätzlich Asset-Volume- und Bildfeld-Handle eintragen. Für robots.txt/llms.txt-Verwaltung den entsprechenden Schalter aktivieren (nur wirksam, wenn im Webroot noch keine physische robots.txt-Datei liegt).

Berechtigungen

Unter Einstellungen → Plugins → Deon AI Connect → Berechtigungen legt der Kunde fest, was Deon AI eigenständig ändern darf — pro Kategorie ein Schalter:

Schalter Standard Gatet
Title/Meta-Description/Canonical/Schema (allowSeoMeta) an /deon-ai/seo
Inhalte bestehender Seiten bearbeiten (allowContentEdit) aus /deon-ai/faq
Neue Seiten anlegen (allowPageCreate) aus /deon-ai/entry, /deon-ai/page
robots.txt / llms.txt (allowFiles) aus /deon-ai/files, /deon-ai/hygiene
Bild-Uploads (allowAssets) aus /deon-ai/asset
Plugin automatisch aktualisieren (allowSelfUpdate) an /deon-ai/self-update
Navigation bearbeiten (allowNavEdit) aus /deon-ai/nav
A/B-Tests & Tracking umkonfigurieren (allowAbTest) aus /deon-ai/configure-ab, /deon-ai/configure-tracker

/deon-ai/setup-blog läuft unter derselben Berechtigung wie neue Seiten (allowPageCreate), da es im Kern ebenfalls Content-Struktur anlegt. /deon-ai/publish-winner prüft allowContentEdit als Basis-Berechtigung, für enthaltene seo_meta-Changes zusätzlich allowSeoMeta (sonst wird nur dieser Change-Type übersprungen, der Rest angewendet).

Nur SEO-Overrides und Self-Update sind standardmäßig aktiv — SEO-Overrides, da sie rein serverseitig wirken und keinen Inhalt verändern; Self-Update, da Updates auch Sicherheitsfixes enthalten können. Ein Aufruf gegen einen nicht freigegebenen Endpoint liefert 403 { "ok": false, "error": "consent_required", "permission": "<key>" }. /deon-ai/ping gibt den aktuellen Freigabe-Stand aller Kategorien im Feld permissions zurück, damit Deon AI nicht freigegebene 1-Klick-Fixes im Dashboard ausgrauen kann. Lese-Endpoints (ping, seo-list, entries, hygiene-list, rollback/*) sind bewusst nicht gegated — Rückgängig machen (Rollback) funktioniert unabhängig von diesen Schaltern immer.

Remote-Self-Update

Craft spielt Plugin-Updates nie automatisch ein — jemand muss im Control Panel klicken. Deon AI kann das stattdessen selbst anstoßen:

  1. POST /deon-ai/self-update ({ "version": "0.6.1" }) — hebt ausschließlich deon-ai/craft-connect per Composer auf die angegebene Zielversion an (nie craft update all oder andere Pakete). Ziel bereits installiert → { ok: true, already: true }. Ein Preflight-Check prüft vorher, ob der Server das technisch kann (proc_open verfügbar, memory_limit ≥ 256M, composer.phar vorhanden) — schlägt er fehl, bleibt die Installation unangetastet und die Antwort ist 422 { ok: false, error: "self_update_unavailable", reason: "…" }. Vor dem Swap wird fail-soft ein DB-Backup versucht (Craft::$app->getDb()->backup(), braucht mysqldump/pg_dump). Antwort bei Erfolg: { ok: true, from: "0.4.0", to: "0.6.1", needs_migration: true }.
  2. POST /deon-ai/up — führt danach, in einem neuen Request, die Plugin-Migrationen der frisch installierten Version aus. Zwei getrennte Requests sind nötig, weil direkt nach dem Composer-Swap im selben PHP-Prozess noch der alte Klassen-Code geladen ist. Antwort: { ok: true, migrated: true, version: "0.6.1" }.

/deon-ai/ping meldet zusätzlich ein Fähigkeits-Flag self_update (kann dieser Server technisch selbst updaten, unabhängig vom allowSelfUpdate-Schalter) sowie plugin_version/craft_version/php_version und sections_ok (ob die konfigurierten Section-Handles für Blog und Seiten tatsächlich existieren).

Handle-Resilienz gegen Project-Config-Reverts: Craft speichert Plugin-Settings in der Project Config. Läuft eine Installation mit allowAdminChanges = false (Produktions-Standard), schreibt savePluginSettings() zwar erfolgreich, aber der auf jedes Self-Update folgende php craft up → project-config/apply kann die per /setup-blog geschriebenen Handles (Section-/Feld-/Volume-Handles) wieder auf ihre Defaults zurücksetzen — ein Setting ist damit eher eine Präferenz als ein verlässlicher Fakt. Alle Endpoints, die Handle-Settings brauchen, lösen sie deshalb selbst auf: Request-Parameter → Plugin-Setting (nur wenn es auf ein existierendes Objekt zeigt) → Deon-Bootstrap-Handle (deonBlog/deonPages/deonBody/deonFeaturedImage) → null (sauberer 422 statt einer halbfertigen Seite). sections_ok/fields_ok in /ping prüfen entsprechend die aufgelösten, nicht die rohen Werte; /ping liefert additiv handles (tatsächlich benutzte Werte) und handles_repaired (welche Settings in diesem Request abgedriftet waren und automatisch zurückgeschrieben wurden — ein nicht-leeres Array direkt nach einem Update ist der Beleg für einen Project-Config-Revert, kein Fehler). Capability-Flag: handle_fallback.

Funktioniert Composer im Web-Request nicht (manches Shared-Hosting sperrt proc_open oder begrenzt memory_limit/max_execution_time zu knapp), bleibt als Fallback die Konsole — z. B. per Cron:

Gleicher Code-Pfad wie die REST-Endpoints (Composer-Swap + Migrationen in einem Lauf), nur ohne die Web-Request-Limits.

Blog-/Seiten-Bootstrap

Auf einer frischen Craft-Installation ohne bestehendes Blog-Schema scheitert das Publishing an section_not_found oder fehlenden Feld-Handles. POST /deon-ai/setup-blog behebt das: legt bei Bedarf ein Body-Feld (deonBody — CKEditor, falls craftcms/ckeditor installiert ist, sonst Redactor, sonst ein mehrzeiliges Klartext-Feld), ein Featured-Image-Feld (deonFeaturedImage, auf das erste vorhandene Volume beschränkt) sowie die Blog- und Seiten-Section an. Ziel-Handles sind dabei immer settings.blogSectionHandle/pagesSectionHandle (Standard blog/pages), falls die schon auf eine existierende Section zeigen — nur wenn sie leer oder ungültig sind, legt das Plugin eigene Sections (deonBlog/deonPages) an. Idempotent: bereits vorhandene, gültige Handles werden nie überschrieben, nur leere oder kaputte Plugin-Settings automatisch mit den neuen Handles verdrahtet. Fehlt ein Volume, wird das Bildfeld übersprungen (featured_image: "no_volume") — das Plugin legt nie selbst ein Volume/Filesystem an, das ist hosting-abhängig.

settings.assetVolumeHandle wird dabei automatisch mitgesetzt — ohne dieses Setting hängen /deon-ai/entry und /deon-ai/page trotz vorhandenem featuredImageFieldHandle nie ein Bild an. Für neu angelegte Bildfelder kommt der Handle vom verwendeten Volume; für ein bereits bestehendes deonFeaturedImage-Feld wird er aus dessen restrictedLocationSource abgeleitet (heilt auch Alt-Setups, ohne das Feld selbst anzufassen). /deon-ai/ping prüft in fields_ok.featured_image beide Settings inkl. echter Volume-Existenz — nur so erkennt der Worker-Self-Heal betroffene Sites zuverlässig und ruft setup-blog erneut auf.

Fallback-Templates: Das Plugin bringt zwei eigene, self-contained Templates mit — deon-ai/entry fürs Blog, deon-ai/page für Standort-/Leistungsseiten (beide leben im Plugin, nichts wird in das templates/-Verzeichnis der Site geschrieben). Neu angelegte Sections bekommen ihr passendes Template direkt gesetzt. Bestehende Sections mit leerem Template werden automatisch repariert; bestehende Sections mit einem gesetzten, aber erkennbar leeren/kaputten Custom-Template nur mit explizitem { "fix_template": true } im Request — eine funktionierende Konfiguration wird nie stillschweigend überschrieben. Response meldet template/previous_template fürs Blog sowie additiv template_pages/previous_template_pages für die Seiten-Section ("kept"/"set"/"fixed"), jede Änderung ist über /deon-ai/rollback rückgängig machbar.

Titel-Feld-Check: Craft überschreibt automatisch jeden gesetzten Titel mit leer, wenn der Entry-Type einer Section weder ein Titel-Feld noch ein titleFormat hat (craft\elements\Entry::updateTitle(), läuft unumgehbar bei jedem Speichern) — Ergebnis wäre „Eintrag ohne Titel" im CP. /deon-ai/entry und /deon-ai/page brechen deshalb mit 422 title_field_missing ab, statt eine unsichtbar untitled Seite zu veröffentlichen. setup-blog prüft das für Blog- und Seiten-Section (Response title_field/title_field_pages: "ok"|"missing"|"fixed") und repariert es mit { "fix_template": true }.

Navigation

POST /deon-ai/nav ({ target: "main"|"footer", url, title, entry_id? }) verlinkt eine generierte Seite in Hauptnavigation oder Footer. Craft hat keine Kern-Navigation, daher eine Strategie-Kaskade:

  1. Ist verbb/navigation installiert (der De-facto-Standard für Craft-Navigationen), wählt das Plugin die passende Nav per Handle-/Namens-Heuristik (main/haupt/primary bzw. footer/fuss, sonst die erste vorhandene Nav) und legt einen Node an — dedupliziert über die Ziel-URL bzw. den verlinkten Entry. Antwort: { ok, via: "verbb", nav: { handle } }.
  2. Sonst, falls eine Structure-Section mit Handle nav/menu existiert und deren Entry-Type ein Feld linkUrl oder url hat, wird dort ein Entry angelegt. Ohne ein eindeutiges Link-Feld wird nicht geraten.
  3. Sonst 422 { ok: false, error: "nav_not_automatable", hint: "…" } mit dem Hinweis, den Link manuell im CP/Template zu setzen — und dem Tipp, dass Deon AI die Navigation mit dem kostenlosen verbb-Plugin automatisch pflegen kann.

Seiten-Anbindung

Damit Deon AI Craft-Seiten analysieren, im Original-Design klonen und texturieren kann — Response-Shapes bewusst identisch zum WordPress-Plugin (aideon-connect), damit der Deon-AI-Worker beide Plattformen einheitlich anspricht:

Section-Tests & A/B-Varianten

Craft-natives Pendant zur Test-Engine des WordPress-Plugins. WP manipuliert dort Gutenberg-Blocks/Elementor-JSON — in Craft sind die „Sections" die Top-Level-Elemente des Body-HTML (builder html, Selector = Index oder tag[n], z. B. section[1]):

Änderungsprotokoll & Rollback

Jeder schreibende Endpoint (/deon-ai/seo, /deon-ai/entry, /deon-ai/hygiene) speichert vor jeder Änderung automatisch den bisherigen Zustand und gibt eine rollback_id (Format rb_123) zurück. Das ist keine separate Backup-Aktion, die vergessen oder übersprungen werden könnte — das Protokollieren passiert atomar mit der Änderung selbst, von der allerersten Aktion an.

Die Endpoints folgen derselben /rollback/*-Konvention wie das WordPress-/TYPO3-Plugin, damit sie im bestehenden "Änderungs-Journal"-Tab des Deon-AI-Dashboards erscheinen (der Worker leitet dorthin 1:1 durch):

Optional bei jedem Schreibaufruf ein note-Feld mitgeben (Freitext, z. B. "Grund der Änderung") — erscheint im Protokoll. Für einen kompletten Datenbank-Snapshot außerhalb dessen, was das Plugin selbst anfasst, bleibt zusätzlich Craft's eigenes php craft db/backup empfehlenswert — das braucht allerdings mysqldump/pg_dump per shell_exec, was auf manchen Shared-Hosting-Umgebungen gesperrt ist.

Native Content-Endpoints

/deon-ai/entry und /deon-ai/page legen ohne entry_id immer einen neuen Entry an; mit entry_id aktualisieren sie den bestehenden. Zeigt eine explizit übergebene entry_id auf keinen (mehr) existierenden Entry, liefern beide 404 { "ok": false, "error": "entry_not_found" } statt still ein Duplikat anzulegen.

Alle drei sichern den bisherigen Inhalt fail-soft in einer eigenen Tabelle, bevor sie etwas überschreiben — ein Backup-Fehler blockiert dabei nie den eigentlichen Fix.

Sicherheit

Eingehende Deon-AI-Calls werden über den X-Deon-Key-Header authentifiziert (Konstantzeit-Vergleich). Das Plugin bricht die Seitenauslieferung nie: Jeder Patch-Schritt ist fail-soft.


All versions of craft-connect with dependencies

PHP Build Version
Package Version
Requires php Version >=8.0.2
craftcms/cms Version ^4.0.0|^5.0.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package deon-ai/craft-connect contains the following files

Loading the files please wait ...