KI-Import — Workspace mit KI einrichten
Mit dem KI-Import richtest du komplette Workspaces ein, indem eine KI (z. B. ChatGPT, Gemini, Claude) sie in einem einfachen Textformat beschreibt — dem Pachurros-Markup. Du fügst das Ergebnis ein, prüfst die Vorschau und importierst mit einem Klick.
Der Import findet sich in der linken Seitenleiste unter KI-Import (Route /w/<workspace>/ki-import).
In drei Schritten
Abschnitt betitelt „In drei Schritten“- Prompt kopieren — Auf der KI-Import-Seite den System-Prompt kopieren (Button „Prompt kopieren”) und deiner KI geben.
- KI beschreiben lassen — Der KI sagen, was du brauchst, z. B. „Richte mir einen Workspace für ein Video-Projekt ein: Projekt, Aufgaben-Tabelle mit Status und Verantwortlichen, eine Kanban-Ansicht, eine Dashboard-Seite und ein paar To-dos.” Die KI antwortet mit Pachurros-Markup.
- Einfügen & importieren — Das Markup ins Eingabefeld einfügen → Vorschau (zeigt, was angelegt wird) → Importieren. Danach landest du direkt auf dem ersten erstellten Element.
Referenzen (Relations, Projektzuordnungen, Erwähnungen, eingebettete Ansichten) werden beim Import automatisch aufgelöst.
Zwei Texte für die KI
Abschnitt betitelt „Zwei Texte für die KI“Auf der KI-Import-Seite stehen zwei Textblöcke zum Kopieren — sie tun Verschiedenes:
- System-Prompt — eine Anweisung: „erzeuge Pachurros-Markup, gib nur das Markup aus”. Der kurze Weg: kopieren, der KI geben, sagen was du brauchst.
- Vollständige Format-Referenz — eine Erklärung: das ganze Pachurros-Markdown in einem Text. Fließtext, alle Blöcke, der Rahmen (Tabellen, Seiten, Ansichten, Kennzahlen), das Verknüpfen, ein vollständiges Beispiel und eine Prüfliste. Gedacht für den Fall, dass deine KI das Format wirklich verstehen soll: einmal einfügen, danach ganz normal beschreiben, was entstehen soll. Auch gut für Modelle, die mit knappen Anweisungen schlampen.
Beide gibt es als Kopier-Knopf und als .md-Download. Ändert sich das Format, ändern sich beide mit — kopier sie bei Bedarf neu.
Export & Round-Trip
Abschnitt betitelt „Export & Round-Trip“Umgekehrt exportierst du deinen bestehenden Workspace als Pachurros-Markup — auf der KI-Import-Seite über „Workspace als Markup exportieren”. So gibst du vorhandene Inhalte an eine KI, lässt sie ergänzen oder überarbeiten und importierst das Ergebnis wieder.
Der Export umfasst: Projekte, Tabellen (inkl. Relations, Formeln, Ansichten mit Filter/Sortierung/Gruppierung, Unteraufgaben), Seiten (mit Erwähnungen & eingebetteten Ansichten), Rich-Zeilen, Sessions, Boards und Aufgaben. Berechnete Spalten (Formel/Lookup/Rollup/Anzahl) werden beim Re-Import automatisch neu berechnet und nicht als Werte übertragen.
Was vom Seiteninhalt ankommt
Abschnitt betitelt „Was vom Seiteninhalt ankommt“Der Umlauf ist an einer Seite mit allen Blockarten geprüft: Sie kommen im Zielworkspace vollständig an, Texte wortgleich. Verweise laufen über Namen statt interner Kennungen — im Zielworkspace gibt es die Kennung nicht, den Namen schon; der Import verbindet Seiten-, Tabellen- und Projektnamen wieder.
Zwei Dinge verhalten sich bewusst anders:
- Dateien reisen nicht mit. Bild, Ton, Galerie und Dokument verweisen auf die Mediathek des Ursprungs-Workspaces. Beim Import in einen anderen Workspace bleibt der Name als Text stehen — ein Block ohne Datei wäre ein leeres Versprechen.
- Ein eingebetteter Tabellen-Block kommt als Tabellen-Ansicht an. Beide werden gleich dargestellt; das Markup kennt dafür eine Schreibweise (
@embed).
Ergänzen oder ersetzen?
Abschnitt betitelt „Ergänzen oder ersetzen?“Der Import legt Inhalte immer neu an — importierst du denselben Export erneut in denselben Workspace, entsteht alles doppelt. Um stattdessen den bearbeiteten Stand an Stelle des alten zu setzen, aktiviere vor dem Import die Option „Workspace vor dem Import leeren”: Der Workspace wird geleert (mit Warnung und Bestätigung) und anschließend neu befüllt — ohne Duplikate. Alternativ importierst du in einen frischen, leeren Workspace.
Grundprinzip
Abschnitt betitelt „Grundprinzip“Jeder Inhalt steht in einem Block, der mit ::: beginnt und mit ::: endet:
::: table Aufgaben...:::Blocktypen: table, page, project, session, board, view, tasks, row, template. Ein optionales Emoji darf hinter dem Namen stehen (::: table Aufgaben ✅).
Die deutschen Namen gehen genauso: tabelle/datenbank, seite/notiz, projekt, termin, tafel, ansicht, aufgaben, zeile/eintrag, vorlage. Einrückung vor dem ::: und vier statt drei Doppelpunkte stören ebenfalls nicht.
Wenn die KI schludert
Abschnitt betitelt „Wenn die KI schludert“KI-Ausgaben sind selten formal perfekt. Der Import ist darauf ausgelegt, dass kein Inhalt still verschwindet — er landet notfalls als lesbarer Seitentext. Was auffiel, steht nach der Vorschau unter „Beim Lesen aufgefallen”:
| Fehler der KI | Was passiert |
|---|---|
Abschnitt ohne schließendes ::: | Der Rest wird trotzdem gelesen und dem Abschnitt zugeschlagen — mit Hinweis |
Unbekannter Abschnitt (::: kalender …) | Inhalt landet als Seitentext — mit Hinweis |
Tabelle ohne - Name: typ-Zeilen | Spalten werden aus der Kopfzeile abgeleitet, Typ aus dem Spaltennamen geraten (erste Spalte immer Titel) |
Tabelle ohne Rand-| | Wird gelesen wie mit |
| Zeile mit zu wenigen Zellen | Wird aufgefüllt statt verschoben |
::: in einem Code-Block | Schließt den Abschnitt nicht |
Antwort in ```markdown verpackt | Wird ausgepackt |
| Titel-Überschrift zusätzlich zum Seitentitel | Wird einmal entfernt statt doppelt angezeigt |
Der Seitentext selbst ist Standard-Markdown (CommonMark + GFM) — die vollständige Liste steht unter Alle Block-Typen.
Tabellen
Abschnitt betitelt „Tabellen“Spalten werden mit Typ deklariert, danach folgt nach --- eine Markdown-Tabelle mit den Daten. Die Kopfzeile muss die Spaltennamen enthalten.
::: table Aufgaben ✅- Titel: text- Status: select (Offen, In Arbeit, Erledigt)- Fällig: date- Projekt: relation → Projekte---| Titel | Status | Fällig | Projekt || Konzept | In Arbeit | 2026-07-10 | Website-Relaunch |:::- Die erste
text-Spalte ist der Titel der Zeile — darauf verweisen Relations und Erwähnungen. - Zell-Formate:
date=YYYY-MM-DD,checkbox=true/false,relation/multiselect= mehrere Werte per Komma.
Spaltentypen
Abschnitt betitelt „Spaltentypen“| Typ | Beschreibung / Syntax |
|---|---|
text, longtext | Kurzer / langer Text |
number | Zahl — optional (currency EUR) oder (percent) |
date, time | Datum / Uhrzeit |
checkbox | Ja/Nein |
url, email, phone | Web-Adresse / E-Mail / Telefon |
rating | Sterne-Bewertung |
select (A, B, C) | Einfachauswahl mit Optionen |
multiselect (A, B, C) | Mehrfachauswahl |
relation → Zieltabelle | Verknüpfung zu einer anderen Tabelle |
assignee | Person zuweisen — Zelle = Name oder E-Mail eines Mitglieds |
location | Ort / Adresse |
formula (Ausdruck) | Berechnetes Feld, z. B. formula (Budget - Ausgaben) |
lookup (via <Relation> → <Feld>) | Wert aus verknüpfter Tabelle holen |
rollup (via <Relation> <agg> <Feld>) | Aus verknüpfter Tabelle aggregieren (agg: sum, avg, min, max, count) |
Beispiele für berechnete Spalten:
::: table Aufgaben- Titel: text- Projekt: relation → Projekte- Verantwortlich: assignee- Restbudget: formula (Budget - Ausgaben)- Projekt-Budget: lookup (via Projekt → Budget)- Aufwand gesamt: rollup (via Projekt sum Budget)---| Titel | Projekt | Verantwortlich || Konzept | Website-Relaunch | anna@firma.de |:::lookup und rollup verweisen über eine Relations-Spalte derselben Tabelle (via) auf eine Spalte der Zieltabelle.
Unteraufgaben (verschachtelte Zeilen)
Abschnitt betitelt „Unteraufgaben (verschachtelte Zeilen)“Eine Zeile wird zur Unteraufgabe der vorherigen Top-Level-Zeile, wenn ihr Titel mit ↳ beginnt:
::: table Aufgaben- Titel: text- Status: select (Offen, Erledigt)---| Titel | Status || Hauptaufgabe | Offen || ↳ Teilschritt 1 | Offen || ↳ Teilschritt 2 | Erledigt |:::Ansichten (Views)
Abschnitt betitelt „Ansichten (Views)“Eine eigene Ansicht einer Tabelle — mit Gruppierung, Filter, Sortierung und sichtbaren Spalten:
::: view Nach Status on Aufgabentype: kanbangroup: Statussort: Fällig descfilter: Status is Offencolumns: Titel, Status:::type:table,kanban,calendar,gallery,list,timeline,chartgroup: Spalte für Kanban-Gruppierung ·calendar: Datums-Spalte für Kalenderfilter: <Spalte> <op> <Wert>—op:is,is not,contains,not contains,empty,not empty,gt,lt,gte,lte·sort: <Spalte> <asc | desc>columns:— sichtbare Spalten (kommagetrennt)
Timeline (Gantt): type: timeline + start: <Datums-Spalte> + end: <Datums-Spalte>
Diagramm: type: chart + chart: bar | donut | line + group: <Spalte> (X-Achse) + value: <Zahlen-Spalte> (optional) + agg: count | sum | avg | min | max
Tabelle oder Ansicht auf einer Seite einbetten
Abschnitt betitelt „Tabelle oder Ansicht auf einer Seite einbetten“Eine eigene Zeile im Seitentext bettet eine Tabelle oder eine bestimmte Ansicht ein:
@embed Aufgaben (ganze Tabelle, Standardansicht)@embed Aufgaben / Nach Status (bestimmte Ansicht)@embed Aufgaben / Board | Liste | Kalender (mehrere Ansichten als Tabs)Mehrere @embed-Zeilen jeweils durch eine Leerzeile trennen.
Auf die aktuelle Zeile eingrenzen (@current)
Abschnitt betitelt „Auf die aktuelle Zeile eingrenzen (@current)“In einer Ansicht mit filter: <Relation> is @current löst der Platzhalter beim Rendern auf die Zeile auf, zu deren Datensatz-Seite der Embed gehört. So zeigt eine generische Ansicht auf jeder Zeile automatisch die verknüpften Einträge (z. B. „Aufgaben dieses Meetings”) — und eine dort neu angelegte Zeile bekommt die Relation automatisch gesetzt.
::: view Aufgaben dieses Meetings on Aufgabentype: tablefilter: Meeting is @current:::Auf gewöhnlichen Seiten (ohne Datensatz-Kontext) wird ein solcher Embed ausgegraut.
Eine Rich-Text-Seite mit Überschriften, Listen, Aufgaben, Zitaten und Code:
::: page Projektnotiz 📝# ProjektnotizFließtext mit **fett**, *kursiv*, `Code` und [Links](https://example.com).
- Aufzählung1. Nummerierte Liste- [ ] offene Aufgabe- [x] erledigte Aufgabe> Zitat---:::Spezialblöcke
Abschnitt betitelt „Spezialblöcke“:::collapsible Mehr DetailsAufklappbarer Abschnitt.:::
:::columns2Linke Spalte---col---Rechte Spalte:::
:::callout 💡Farbig hervorgehobener Hinweis.:::
:::toc:::
:::equationE = mc^2::::::columns3 erzeugt drei Spalten (jeweils mit ---col--- getrennt).
Seiten verschachteln & Projekt zuordnen
Abschnitt betitelt „Seiten verschachteln & Projekt zuordnen“Ganz oben im ::: page-Block (vor dem Inhalt):
::: page Detailkonzeptparent: Projektnotiz (hängt die Seite unter „Projektnotiz")project: Website-Relaunch (ordnet sie einem Projekt zu)# Detailkonzept...:::Erwähnungen
Abschnitt betitelt „Erwähnungen“Innerhalb von Seitentext verlinkst du mit [[…]]:
[[Aufgaben/Konzept]] → verlinkt eine Tabellen-Zeile[[Projektnotiz]] → verlinkt eine SeiteRich-Zeilen (Datensatz-Seiten)
Abschnitt betitelt „Rich-Zeilen (Datensatz-Seiten)“Einer Tabellenzeile eine ausführliche Seite geben, die sich beim Klick auf die Zeile öffnet — mit Fließtext, Listen und sogar eingebetteten Ansichten:
::: row Aufgaben / Konzeptproject: Website-Relaunch (optional — ordnet die Datensatz-Seite einem Projekt zu)# Details zum KonzeptAusführliche Beschreibung, Checklisten, eingebettete Ansichten (@embed) …:::::: row <Tabelle> / <Zeilentitel> — die Zeile wird über ihren Titel gefunden.
Zeilen-Vorlagen (Templates)
Abschnitt betitelt „Zeilen-Vorlagen (Templates)“Eine benannte Vorlage pro Tabelle: neue Zeilen starten mit vorgegebener Seiten-Struktur und Feld-Werten. Genau eine Vorlage kann default: true sein — sie greift beim „Neue Zeile”-Button der Tabelle.
::: template Standard on Meetingsdefault: trueStatus: To Do## Entscheidungen-
## Action Items@embed Aufgaben / Aufgaben dieses Meetings
## Diskussion-:::- Führende
key: value-Zeilen sind entwederdefault: trueoder Property-Defaults (z. B.Status: To Dosetzt die Spalte „Status” beim Anlegen vor). - Platzhalter:
{{title}}(Zeilentitel) und{{today}}(heutiges Datum) werden beim Erstellen aufgelöst. - Enthaltene
@current-Embeds lösen bei jeder neuen Zeile automatisch auf die neue Zeile auf.
Dashboard-Steuerelemente
Abschnitt betitelt „Dashboard-Steuerelemente“Auf einer Seite mit mehreren eingebetteten Ansichten (Overview/Dashboard):
@filter Projekte (ein Button je Zeile der Tabelle „Projekte")@filter Aufgaben / Status (ein Button je Auswahl-Option der Spalte „Status")@filter Aufgaben / Status (multi) (Mehrfachauswahl erlauben)@button Aufgaben (Button: neue leere Zeile anlegen + öffnen)@button Aufgaben / Standard (neue Zeile aus der Vorlage „Standard")@filtersetzt einen seitenweiten Filter. Jeder Embed, dessen Tabelle passt, filtert automatisch mit: im Relations-Modus alle Embeds mit einer Relation zur Zieltabelle (z. B. „ein Button pro Projekt filtert alle Ansichten”), im Select-Modus alle Embeds mit einer gleichnamigen Auswahl-Spalte.@buttonlegt per Klick eine neue Zeile an (optional aus einer Zeilen-Vorlage) und öffnet sie.- Jede
@filter/@button-Zeile steht in einer eigenen Zeile (durch Leerzeile getrennt).
Kennzahlen (Dashboards)
Abschnitt betitelt „Kennzahlen (Dashboards)“Eine große Zahl aus einer Tabelle — als eigener Block im Seitentext:
:::metric Offene Aufgabentable: Aufgabenagg: countfilter: Status is Offenform: none:::| Schlüssel | Bedeutung |
|---|---|
table: | Tabelle, aus der gerechnet wird |
agg: | count, sum, avg, min, max — Kurzform agg: sum Betrag |
value: | Zahlen-Spalte (bei allem außer count) |
filter: | <Spalte> <is|is not|contains|not contains|empty|not empty|gt|lt|gte|lte> <Wert>, mehrfach erlaubt |
form: | Bild über der Zahl (siehe unten). Fehlt es, steht nur die Zahl da. |
prefix: / suffix: | Einheit davor bzw. dahinter |
format: | plain, thousands, currency CHF, percent · decimals: auto|0|1|2|3 |
emphasis: | strong (Leitzahl) oder quiet (Nebenzahl) |
Das Bild über der Zahl
Abschnitt betitelt „Das Bild über der Zahl“form: none— nur die Zahl. Das ist auch die Voreinstellung, wennform:fehlt.form: line·area·bars— Verlauf. Dazu gehörtaxis: <Datums-Spalte>; ohne sie zählt das Anlagedatum der Zeilen, und bei eingespielten Daten liegen die alle im selben Monat. Optionalrange: 12m | 6m | 12w | 30dundcumulative: yes(jeder Punkt zeigt alles bis dahin).form: progress·ring— Anteil an einem Ziel. Brauchtgoal: <Zahl>odergoal: metric <Name einer anderen Kennzahl der Seite>.form: delta— Pfeil mit Abstand:compare: previous(Zeitraum davor, brauchtaxis) odercompare: goal.
Mehrere Kacheln (Raster)
Abschnitt betitelt „Mehrere Kacheln (Raster)“Mehrere metric: <Titel>-Gruppen in einem Block; grid: bestimmt die Kacheln pro Zeile:
:::metricgrid: 3
metric: Budget gesamttable: Finanzierungagg: sum Betragform: areaaxis: Datumcumulative: yes
metric: Abgerufentable: Finanzierungagg: sum Betragfilter: Typ is Abrufform: progressgoal: metric Budget gesamtemphasis: strong:::Gerechnete Kennzahl
Abschnitt betitelt „Gerechnete Kennzahl“Benannte Bausteine und eine Formel darüber — so lassen sich Zeilenmengen verrechnen:
:::metric Offenes Budgetterm Budget: table Finanzierung, agg sum Betrag, filter Typ is Budgetterm Abrufe: table Finanzierung, agg sum Betrag, filter Typ is Abrufformula: {Budget} - {Abrufe}:::Ein Baustein darf auch auf eine andere Kennzahl der Seite zeigen: term Plan: metric Budget gesamt.
Projekte
Abschnitt betitelt „Projekte“Ein Projekt klammert Tabellen, Seiten, Sessions und Boards:
::: project Website-Relaunch 🚀status: Aktivcolor: #3b82f6Neugestaltung der Firmenwebsite (optionale Beschreibung, mehrzeilig).:::Zuordnung: project: <ProjektName> als erste Zeile in einem table-, page-, session-, board- oder row-Block.
Die Zuordnung entscheidet, wo das Element landet
Abschnitt betitelt „Die Zuordnung entscheidet, wo das Element landet“In der Seitenleiste hat jedes Element genau einen Platz — es erscheint nie doppelt:
| Wo es erscheint | |
|---|---|
mit project: | nur im Projekt, unter Projekte |
ohne project: | nur unter Workspace, als allgemeines Element |
Ordne deshalb konsequent zu: Alles, was inhaltlich zu einem Vorhaben gehört, bekommt project:. Ohne Zuordnung landet es im allgemeinen Bereich und wirkt dort unsortiert. Nur wirklich projektübergreifende Dinge (Kontakte, Vorlagen, persönliche Notizen) bleiben bewusst ohne.
Unterelemente erben das Projekt vom übergeordneten Element — bei einer Unterseite (parent:) ist project: also nicht nötig.
Sessions
Abschnitt betitelt „Sessions“::: session Kickofftype: Meetingdate: 2026-07-05time: 14:00location: Zürichproject: Website-RelaunchBeschreibung (optional).:::Jede Zeile wird eine Haftnotiz auf dem Board:
::: board Ideenproject: Website-Relaunch- Erste Notiz- Zweite Notiz:::Aufgaben (To-do-Modul)
Abschnitt betitelt „Aufgaben (To-do-Modul)“Erzeugt echte Einträge im Aufgaben-Modul:
::: tasksproject: Website-Relaunch- [ ] Angebot schreiben | due 2026-07-10 | @anna@firma.de- [x] Rechnung senden:::- [ ] offen, - [x] erledigt. Optional pro Zeile: | due JJJJ-MM-TT | @Name/E-Mail.
Vollständiges Beispiel
Abschnitt betitelt „Vollständiges Beispiel“::: project Website-Relaunch 🚀status: AktivNeugestaltung der Firmenwebsite.:::
::: table Aufgaben ✅project: Website-Relaunch- Titel: text- Status: select (Offen, In Arbeit, Erledigt)- Fällig: date- Verantwortlich: assignee---| Titel | Status | Fällig | Verantwortlich || Konzept | In Arbeit | 2026-07-10 | anna@firma.de |:::
::: view Nach Status on Aufgabentype: kanbangroup: Status:::
::: session Kickofftype: Meetingdate: 2026-07-05location: Zürichproject: Website-Relaunch:::
::: page Dashboard 📊project: Website-Relaunch# ÜberblickAktuelle Aufgaben — siehe [[Aufgaben/Konzept]].@embed Aufgaben / Nach Status:::
::: tasksproject: Website-Relaunch- [ ] Kickoff vorbereiten | due 2026-07-04:::Grenzen
Abschnitt betitelt „Grenzen“Manches lässt sich per Text nicht sinnvoll erzeugen und ist bewusst nicht enthalten:
- Bild-, Datei- und Video-Uploads sowie Mediathek-Inhalte
- Board-Elemente über Haftnotizen hinaus (Formen, Rahmen, Verbindungslinien)
- Spalten-Beschreibung / Pflichtfeld
- Vorschau nutzen: Vor dem Import zeigt die Vorschau, wie viele Projekte, Tabellen, Seiten, Sessions, Boards und Aufgaben angelegt werden.
- Namen konsistent halten: Relations, Projekt- und Ansichts-Zuordnungen funktionieren über exakte Namen/Titel — die KI sollte sie einheitlich verwenden.
- In Etappen arbeiten: Große Setups kannst du in mehreren Imports aufbauen; bereits angelegte Elemente lassen sich per Namen weiter referenzieren.
- Prompt aktuell halten: Der auf der KI-Import-Seite hinterlegte System-Prompt enthält immer die vollständige, aktuelle Format-Referenz — bei Bedarf neu kopieren.
- Hinweise lesen: Erscheinen nach der Vorschau Hinweise, sag der KI kurz, was sie falsch gemacht hat (meist ein vergessenes
:::). Der Import selbst läuft trotzdem durch.