Tools miteinander verknüpfen
Ein Tool kann einem anderen Daten schicken oder es öffnen, sobald du das erlaubst. So wird aus einzelnen Tools ein kleines System.
Ein Tool kann einem anderen Daten schicken oder es öffnen, sobald du das erlaubst. So wird aus einzelnen Tools ein kleines System: Eine Aufgabe wandert auf die Einkaufsliste, Zutaten aus einem Rezept landen auf der Liste, ein Timer trägt Lernzeiten in ein Protokoll ein. Die mitgelieferte To-do-Liste macht es vor: Ihr 🛒-Knopf schickt eine Aufgabe an die Einkaufsliste. Wenn du es von Anfang an einplanst, klappt es am besten.
Neu: Die Beispiele auf dieser Seite nutzen jetzt das gemeinsame Nachrichtenformat der Galerie (typ, v, id, text). So verstehen deine Tools auch die Galerie-Tools und umgekehrt.
Die drei Bausteine
| Aufruf | Was er tut | Gut zu wissen |
|---|---|---|
| ARTEFAKT.senden(ziel, daten) | Schickt Daten an das Tool mit diesem Namen. Die Daten landen im Eingang des Ziels. | Groß- und Kleinschreibung beim Namen ist egal. Daten müssen als JSON darstellbar sein, höchstens 1 MB je Sendung. |
| ARTEFAKT.eingang() | Liefert alles, was andere Tools geschickt haben, als Liste von { von, zeit, daten }, und leert den Eingang. | Das Ziel muss selbst abholen, zum Beispiel beim Start. Es gibt höchstens 100 Einträge, ältere fallen heraus. |
| ARTEFAKT.oeffnen(ziel) | Öffnet ein anderes Tool. | Es gilt dieselbe Erlaubnis wie beim Senden. |
| window.ARTEFAKT | Existiert nur in der Toolbox. | Prüfe es immer, damit dein Tool auch außerhalb der Toolbox ohne Fehler läuft. |
Beispiel: Aufgabe auf die Einkaufsliste
// Im Aufgaben-Tool: eine Aufgabe an die Einkaufsliste schicken
function anEinkaufslisteSchicken(artikel) {
if (!window.ARTEFAKT) return; // außerhalb der Toolbox gibt es keine Verknüpfung
ARTEFAKT.senden('Einkaufsliste', {
typ: 'einkauf', v: 1, // Art und Version der Nachricht
id: Date.now().toString(36) + Math.random().toString(36).slice(2, 6), // gegen Doppelte
text: artikel, // für jedes Tool lesbar
artikel: [artikel] // immer eine Liste, auch bei einem Artikel
});
}// In der Einkaufsliste: beim Start abholen, was andere Tools geschickt haben
function eingangAbholen() {
if (!window.ARTEFAKT) return;
for (const e of ARTEFAKT.eingang()) { // e = { von: 'To-do', zeit: 1760000000000, daten: { typ: 'einkauf', artikel: ['Milch'], … } }
const d = e.daten;
if (!d || d.typ !== 'einkauf' || !Array.isArray(d.artikel)) continue; // nur, was wir verstehen
for (const a of d.artikel) {
if (typeof a === 'string' && a.length <= 120) artikel.push({ text: a, von: e.von });
}
}
speichern(); // wie gewohnt in localStorage
zeichnen();
}
eingangAbholen();In der App einrichten
Verknüpfungen öffnen
Tool-Menü ⋮ › Einrichten › Verknüpfungen. Die Liste zeigt alle anderen Tools. Bei Tools, die selbst Daten abholen, steht „nimmt Daten entgegen“.
Erlauben
Mit dem Schalter „darf … erreichen“ erlaubst du einem Tool, ein bestimmtes anderes zu erreichen. Ohne Schalter fragt die Toolbox beim ersten Versuch. Deine Antwort gilt für genau dieses Paar, wird gemerkt und lässt sich jederzeit zurücknehmen.
Per KI einbauen lassen
Hat ein Tool noch keinen Knopf dafür, tippe neben dem Ziel auf das Roboter-Symbol. Die Toolbox übergibt der KI einen fertig formulierten Änderungswunsch samt Code (siehe unten) über „Mit KI ändern“. Das Ergebnis legst du als neue Fassung desselben Tools ein.
Beim Ziel abholen lassen
Damit das Ziel die Daten anzeigt, muss es sie mit ARTEFAKT.eingang() abholen. Auch das lässt sich über „Mit KI ändern“ beim Ziel-Tool einbauen.
Verknüpfe dieses Tool mit „Einkaufsliste“: Füge einen gut sichtbaren Knopf hinzu, der die passenden Daten mit ARTEFAKT.senden("Einkaufsliste", daten) an „Einkaufsliste“ schickt.Von Anfang an einplanen
Am saubersten wird es, wenn du beide Tools gleich als Paar beschreibst. Dieser Prompt zeigt, was hineingehört:
Erstelle mir ZWEI getrennte HTML-Dateien (je ein Tool, jeweils eine einzige Datei), die in der Artefakt Toolbox zusammenarbeiten.
Tool 1 „Rezepte“: Ich lege Rezepte mit Zutaten an. Bei jedem Rezept gibt es einen gut sichtbaren Knopf „Zutaten auf die Einkaufsliste“.
Tool 2 „Einkaufsliste“: eine Liste zum Abhaken, die zusätzlich übernimmt, was „Rezepte“ schickt.
Verknüpfung: In der Artefakt Toolbox gibt es window.ARTEFAKT. Tool 1 ruft ARTEFAKT.senden('Einkaufsliste', nachricht) auf, mit nachricht = { typ: 'einkauf', v: 1, id: eindeutige Kennung, text: 'Lasagne: 500 g Hackfleisch, 2 Dosen Tomaten', aktion: 'brauche', anlass: Rezeptname, artikel: [Zutaten als Text] }. Alle Zutaten eines Rezepts gehen in EINE Nachricht.
Tool 2 holt beim Start und beim Zurückkehren (visibilitychange) mit ARTEFAKT.eingang() alles ab (Liste von { von, zeit, daten }). Es übernimmt nur Nachrichten mit typ 'einkauf' und v höchstens 1, prüft, dass artikel eine Liste aus Texten (je höchstens 120 Zeichen) ist, merkt sich die letzten 200 id gegen Doppelte, zeigt die Herkunft („von Rezepte“) an, bietet „Rückgängig“ an und speichert alles in localStorage. Empfangen löst nie selbst ein Senden aus. Prüfe vorher, ob window.ARTEFAKT vorhanden ist, und zeige sonst einen freundlichen Hinweis statt eines Fehlers. Setze die Daten nie mit innerHTML ein, sondern mit textContent.
Technik: je eine einzige HTML-Datei, keine externen Dateien, localStorage, funktioniert offline, mobil zuerst, dunkles Design, Tippflächen mindestens 48 px, Deutsch. Gib beide Dateien in getrennten Code-Blöcken aus.- Lege das Format der Daten fest und halte es klein. Am besten nimmst du die gemeinsame Hülle der Galerie: { typ, v, id, text, … }. typ sagt, was es ist, v ist die Version, id verhindert Doppelte, text ist für jedes Tool lesbar (siehe „Gemeinsame Nachrichten“).
- Der Empfänger nimmt nur an, was er versteht, und ignoriert alles andere. So kann niemand mit einem fremden Format etwas kaputtmachen.
- Verhindere Doppelte, etwa über eine feste Kennung je Eintrag oder durch Vergleichen des Textes.
- Setze empfangene Daten nie mit innerHTML ein, sondern mit textContent. Behandle sie wie jede fremde Eingabe.
- Das Ziel wird über den Namen gefunden. Nenne Tools ruhig und stabil und mach den Ziel-Namen im Tool einstellbar (zum Beispiel KONFIG.ziele). Benennst du das Ziel um, passe den Namen im Sender an.
- Zeige die Herkunft an („von Rezepte“) und biete an, einen Eintrag wieder zu entfernen.
- Teste die Kette zuerst mit Beispieldaten: erst Sender, dann Ziel öffnen, dann prüfen, ob alles angekommen ist.
Was möglich ist
- Aufgaben, Ideen oder Notizen in ein anderes Tool übergeben, etwa aus einer Notiz eine Aufgabe machen.
- Zutaten aus einem Rezept-Tool auf die Einkaufsliste setzen.
- Ein Timer, Zähler oder Messwert schickt seine Ergebnisse an ein Protokoll- oder Statistik-Tool.
- Ein Tool öffnet ein anderes als nächsten Schritt, zum Beispiel vom Plan zur Checkliste.
- Mehrere Quellen speisen ein Ziel, das alles sammelt und sortiert.
Wo die Grenzen liegen
| Grenze | Was das heißt |
|---|---|
| Eine Richtung, keine Antwort | senden gibt nichts zurück. Eine Antwort gibt es nur, wenn das andere Tool seinerseits an das erste sendet. Dafür braucht es eine eigene Erlaubnis. |
| Nicht live | Das Ziel sieht die Daten erst, wenn es sie abholt, zum Beispiel beim Start. Läuft es gerade im Hintergrund, bekommt es sie sofort in seinen Eingang. Es gibt keinen gemeinsamen Speicher und keinen Zugriff auf die Daten des Senders. |
| Nur kleine, einfache Daten | Erlaubt sind Werte, die sich als JSON darstellen lassen (Text, Zahlen, Listen, Objekte). Höchstens 1 MB je Sendung und 100 Einträge im Eingang. Funktionen und Binärdaten gehen nicht. |
| Erlaubnis je Paar | Jede Verbindung musst du einzeln freigeben. Ohne Freigabe passiert nichts. Eine Ablehnung wird gemerkt. |
| Nur sichtbare, andere Tools | Das Ziel muss in deiner Bibliothek vorhanden und nicht ausgeblendet sein. Ein Tool kann sich nicht selbst als Ziel nehmen. Wird kein Ziel gefunden, zeigt die Toolbox einen Hinweis. |
| Namen als Adresse | Das Ziel wird über seinen Namen gefunden. Ändert sich der Name, muss der Aufruf angepasst werden. Die Galerie-Tools haben je Sprache einen eigenen Namen: Die deutsche Fassung sendet an deutsche Namen, die englische an englische. Wer Sprachen mischt, ändert die Ziele im Tool unter „Anpassen“. |
| Nicht in der Vorschau | In der Vorschau im Editor sind Verknüpfungen abgeschaltet. Teste sie im laufenden Tool. |
| Nur in der Toolbox | Außerhalb gibt es window.ARTEFAKT nicht. Prüfe es immer, dann läuft das Tool überall. |
| Lokal | Alles bleibt auf dem Gerät. Es gibt keinen Server dazwischen. |
Mit den Galerie-Tools zusammenarbeiten
Die Tools der Galerie sprechen sechs gemeinsame Nachrichtenarten, zum Beispiel „einkauf“, „erledigt“ oder „betrag“. Wenn deine Tools dieselben Arten senden oder verstehen, arbeiten sie ohne Absprache mit ihnen zusammen. Wie das geht und was eine vorgeschlagene Verbindungsschicht in der App daran ändern würde, steht auf diesen Seiten:
Siehe auch: Gemeinsame Nachrichten · Ausblick: Verbindungsschicht