# Wissensspeicher einrichten — Schritt für Schritt

Anleitung zum Nachbauen des Setups aus dem Beitrag
„Ein Wissensspeicher, den auch die KI lesen kann" (bartel-media.de).

Ergebnis: ein Ordner voller Markdown-Dateien, der auf allen deinen Rechnern
synchron liegt, den du in Obsidian bearbeiten kannst und in den deine KI-Werkzeuge
gefahrlos schreiben dürfen — auch wenn keine App geöffnet ist.

**Diese Datei ist so geschrieben, dass du sie einer KI geben kannst.** Sag ihr:
„Führe mich durch diese Anleitung, Schritt für Schritt, und prüfe nach jedem Schritt,
ob es geklappt hat."

---

## Was du brauchst

| | |
|---|---|
| Ein Rechner | macOS, Linux oder Windows |
| Obsidian | kostenlos, <https://obsidian.md> |
| Obsidian Sync | kostenpflichtiges Abo — nur nötig, wenn mehrere Rechner synchron sein sollen |
| Node.js | nur für den Sync ohne laufende App, ab Schritt 4 |

Für einen einzelnen Rechner reichen Schritt 1 bis 3. Alles ab Schritt 4 lohnt sich,
sobald ein zweites Gerät dazukommt oder Skripte in den Ordner schreiben sollen.

---

## Schritt 1 — Den Ordner anlegen

```sh
mkdir -p ~/Wissensspeicher
```

Mehr ist es nicht. Ein Vault ist ein ganz normaler Ordner. Öffne ihn in Obsidian
über „Open folder as vault".

**Merke dir den Pfad an einer festen Stelle**, damit Skripte ihn finden, ohne dass du
ihn überall einträgst:

```sh
mkdir -p ~/.config/wissensspeicher
echo -n "$HOME/Wissensspeicher" > ~/.config/wissensspeicher/path.txt
```

Jedes spätere Werkzeug liest diese eine Datei. Zieht der Ordner um, änderst du eine
Zeile statt zwanzig.

---

## Schritt 2 — Struktur festlegen

Lege oben im Vault die Bereiche an, die zu deiner Arbeit passen. Unsere Aufteilung:

```
kunden/          je Kunde ein Ordner, darin projekte/
projekte-intern/ eigene Vorhaben
wiki/            Technikwissen, Anleitungen, Toolwissen
agentur/         Betrieb: Entwürfe, Telefonate, Aufgaben
privat/          alles Persönliche
inbox/           was noch nicht einsortiert ist
```

Zwei Regeln, die den Unterschied machen:

1. **Jeder Ordner bekommt eine `index.md`** mit Links auf seine Notizen. Das ist das
   Inhaltsverzeichnis, an dem sich Mensch und Maschine orientieren.
2. **Eine `log.md` im Wurzelverzeichnis**, in die nach jeder Arbeitssitzung zwei bis
   drei Zeilen kommen: was passiert ist. Klingt lästig, ist Gold wert, wenn in vier
   Monaten jemand fragt, warum etwas so gebaut wurde.

---

## Schritt 3 — Format der Notizen

Jede Notiz beginnt mit einem kleinen Kopf. Das ist die gesamte Formatvorschrift:

```markdown
---
title: Serverzugang Hetzner
type: wissen
status: aktiv
date: 2026-08-22
aktualisiert: 2026-08-22
tags: [server, ssh, hetzner]
bewertung: verifiziert
---

# Serverzugang Hetzner

Fließtext, Tabellen, Codeblöcke — ganz normales Markdown.
```

- `type`: `wissen` · `projekt` · `kontakt` · `index` · `log`
- `bewertung`: `verifiziert` (jemand hat es geprüft), `ungeprueft`, `veraltet`.
  Dieses eine Feld verhindert, dass eine KI später Halbwissen als Tatsache verkauft.

**Dateinamen** in Kleinbuchstaben, Bindestriche statt Leerzeichen, keine Umlaute:
`serverzugang-hetzner.md`. Umlaute in Dateinamen führen zwischen macOS, Linux und
Windows zu Sync-Konflikten, die schwer zu finden sind.

**Verlinken** untereinander mit `[[bereich/datei|Anzeigetext]]` — immer mit vollem
Pfad ab der Wurzel, sonst landet der Link bei gleichnamigen Dateien im falschen
Ordner.

---

## Schritt 4 — Sync ohne laufende App

Ab hier wird es interessant. Obsidian Sync läuft normalerweise **nur, solange die App
offen ist**. Für Automatisierung ist das ein Problem: Schreibt ein Skript in den
Ordner, während die App zu ist, kann der Server diese Änderung beim nächsten Start
überschreiben.

Obsidian bietet dafür einen Kommandozeilen-Client an.

```sh
# Node installieren (macOS mit Homebrew; sonst nodejs.org)
brew install node

# Client installieren
npm install -g obsidian-headless
ob -V
```

Anmelden und Vault verbinden. **Beides fragt Passwörter interaktiv ab und muss von
Hand getippt werden** — die Optionen `--password`/`--mfa` gibt es zwar, sie schreiben
das Passwort aber in Prozessliste und Shell-Historie.

```sh
# Obsidian vorher beenden
ob login
ob sync-list-remote                       # zeigt Name und ID deiner Remote-Vaults
ob sync-setup --vault "<Remote-Name>" --path ~/Wissensspeicher --device-name "<Rechner>"
ob sync --path ~/Wissensspeicher          # erster Durchlauf, Ausgabe lesen
```

> **Der häufigste und teuerste Fehler: ein falscher `--path`.**
> Zeigt er eine Ebene zu hoch, lädt der Client deinen gesamten Vault als
> **verschachtelten Unterordner** hoch — und verteilt ihn so auf alle anderen Geräte.
> Prüfe vorher, wo der Ordner `.obsidian` liegt. **Genau dort** ist der Vault.
> Der Ordnername sagt nichts.

Danach den App-eigenen Sync abschalten, sonst laufen zwei Mechanismen gegeneinander:
in `<Vault>/.obsidian/core-plugins.json` den Schlüssel `"sync"` auf `false` setzen —
nur bei **geschlossener** App, sonst überschreibt Obsidian die Datei beim Beenden.

---

## Schritt 5 — Als Hintergrunddienst starten (macOS)

Damit der Sync nach jedem Neustart von allein läuft.
Datei `~/Library/LaunchAgents/md.obsidian.headless-sync.plist` anlegen und `<user>`
sowie den Pfad ersetzen:

```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key><string>md.obsidian.headless-sync</string>
  <key>ProgramArguments</key>
  <array>
    <string>/opt/homebrew/bin/ob</string>
    <string>sync</string>
    <string>--continuous</string>
    <string>--path</string>
    <string>/Users/<user>/Wissensspeicher</string>
  </array>
  <key>EnvironmentVariables</key>
  <dict><key>PATH</key><string>/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin</string></dict>
  <key>RunAtLoad</key><true/>
  <key>KeepAlive</key><true/>
  <key>ThrottleInterval</key><integer>30</integer>
  <key>ProcessType</key><string>Background</string>
  <key>StandardOutPath</key><string>/Users/<user>/Library/Logs/obsidian-headless-sync.log</string>
  <key>StandardErrorPath</key><string>/Users/<user>/Library/Logs/obsidian-headless-sync.err</string>
</dict>
</plist>
```

Laden und prüfen:

```sh
plutil -lint ~/Library/LaunchAgents/md.obsidian.headless-sync.plist
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/md.obsidian.headless-sync.plist
launchctl print gui/$(id -u)/md.obsidian.headless-sync | grep -E 'state|pid'
tail -f ~/Library/Logs/obsidian-headless-sync.log
```

Im Log steht pro Vorgang eine Zeile, am Ende jedes Abgleichs `Fully synced`.

**Funktionstest:** Auf einem Rechner eine Datei anlegen, auf den anderen nachsehen,
wieder löschen, erneut nachsehen. Bei uns dauert das unter 25 Sekunden.

**Auf Linux** entspricht dem ein systemd-User-Service mit demselben Befehl.
**Auf Windows** eine geplante Aufgabe „bei Anmeldung".

---

## Schritt 6 — Die KI anschließen

Lade dir die Datei `okf-vault-skill.md` herunter (Link im Beitrag) und übergib sie
deinem KI-Werkzeug:

- **Claude Code / Claude Desktop:** als Skill unter `~/.claude/skills/okf-vault/SKILL.md`
  ablegen. Claude lädt ihn selbstständig, sobald es um den Vault geht.
- **ChatGPT oder ein anderes Werkzeug:** die Datei zu Beginn eines Gesprächs anhängen
  oder in die eigenen Anweisungen kopieren.

Passe darin den Pfad an deinen Vault an. Danach kannst du Dinge sagen wie
„speichere das im Wissensspeicher" oder „was wissen wir über Kunde X" — die KI hält
sich an deine Struktur, statt Dateien irgendwohin zu legen.

---

## Grenzen, die du kennen solltest

- **Hintergrunddienste laufen nur bei angemeldetem Benutzer** und pausieren im
  Ruhezustand. Ein Dauerläufer synchronisiert durch, ein zugeklapptes Notebook nicht.
- **Keine Plugins im Hintergrundbetrieb.** Was Obsidian-Plugins sonst automatisch
  erledigen, passiert ohne laufende App nicht.
- **Große Dateien gehören nicht hinein.** Videos und Rohmaterial auf einen
  Netzwerkspeicher legen und aus der Notiz nur verlinken.
- **Jeder Nutzer braucht ein eigenes Sync-Abo.** Ein Konto lässt sich nicht teilen.

---

*Erstellt von Bartel Media — <https://bartel-media.de>. Nutzung frei, ohne Gewähr.*
