🛠️ How-To: Knodge.eu Bridge für Obsidian
Diese Anleitung beschreibt, wie du Obsidian als professionelles Interface für dein Knodge.eu Wissensportal einrichtest. Mit diesem Setup kannst du Notizen direkt hochladen und KI-Analysen (wie Experten-Reviews oder Zusammenfassungen) per Knopfdruck anfordern [cite: API.md].
1. Vorbereitungen in Knodge.eu
Bevor du Obsidian verbindest, müssen die API-Zugänge in Knodge.eu bereitstehen:
- API-Keys: Du benötigst zwei Keys aus deinem Portal-Dashboard:
- Chat API-Key: Für Abfragen und Analysen (
api-chat). - Upload API-Key: Ein Key mit Editor- oder Manager-Rechten für den Dokumenten-Upload.
- Chat API-Key: Für Abfragen und Analysen (
- Portal-Slug: Das ist die Kennung deines Portals in der URL (z. B.
mein-wissens-hub). - Instruktionen: Stelle sicher, dass Dateien wie
_instruction_expert.mdoder_instruction_summary.mdbereits in deinem Portal hochgeladen sind, damit die Keywords (#expert,#summary) funktionieren [cite: _instruction_expert.md, _instruction_summary.md].
2. Einrichtung in Obsidian
Wir nutzen das beliebte Plugin Templater, um das JavaScript-Script auszuführen.
Schritt 1: Plugins installieren
- Öffne die Settings in Obsidian.
- Gehe zu Community Plugins und schalte den "Safe Mode" aus.
- Suche nach Templater und installiere/aktiviere es.
Schritt 2: Das Script erstellen
Erstelle eine neue Notiz (z. B. im Ordner Templates/Knodge-Bridge.md) und füge den folgenden Code ein:
<%*
/* Knodge.eu Unified Bridge / SCP-Konform (Upload & Chat)
Angepasst auf Domain-Uploads und Agent-Messages.
*/
// KONFIGURATION
const CHAT_API_KEY = "6393c04f..."; // Dein Chat-Key
const UPLOAD_API_KEY = "cb7106f5..."; // Dein Upload-Key
const DOMAIN_ID = "efdb0c9f..."; // Aus deiner API-Einstellung
const PORTAL_SLUG = "faq"; // Dein Portal-Identifier
const BASE_URL = "https://knodge.eu/api";
const activeView = app.workspace.getActiveViewOfType(obsidian.MarkdownView);
if (!activeView) {
new Notice("Keine aktive Notiz gefunden.");
return;
}
const content = activeView.editor.getValue();
const fileName = `${activeView.file.basename}.md`;
// AUSWAHL-DIALOG
const mode = await tp.system.suggester(
["📤 Dokument in Domain hochladen", "💬 KI-Agent anfragen (Messages)"],
["upload", "chat"]
);
if (mode === "upload") {
// 1. UPLOAD-LOGIK (Domain-basiert)
const formData = new FormData();
const blob = new Blob([content], { type: 'text/markdown' });
formData.append('file', blob, fileName);
new Notice("Upload in Domain läuft...");
try {
const res = await fetch(`${BASE_URL}/domains/${DOMAIN_ID}/documents`, {
method: "POST",
headers: {
"X-API-Key": UPLOAD_API_KEY // Header-Anforderung
},
body: formData
});
if (res.ok) new Notice("✅ Dokument erfolgreich in Domain gespeichert!");
else new Notice("❌ Fehler beim Upload.");
} catch (e) {
new Notice("❌ Netzwerkfehler beim Upload.");
}
} else if (mode === "chat") {
// 2. CHAT-LOGIK (Agent-Messages Endpunkt)
new Notice("KI-Agent wird angefragt...");
try {
const res = await fetch(`${BASE_URL}/portal/${PORTAL_SLUG}/agent/messages`, {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": CHAT_API_KEY //
},
body: JSON.stringify({
messages: [{ role: "user", content: content }], // SCP-konformer Body
stream: false, // Streaming für Obsidian-Integration deaktiviert
locale: "de"
})
});
const data = await res.json();
// Annahme: Die Antwort kommt im Feld 'response' oder 'message' zurück
const aiMessage = data.response || (data.messages && data.messages[0].content);
if (aiMessage) {
const insertion = `\n\n---\n### 🤖 Agent-Antwort\n${aiMessage}`;
activeView.editor.replaceRange(insertion, { line: activeView.editor.lineCount(), ch: 0 });
new Notice("✅ Antwort empfangen.");
} else {
new Notice("❌ Keine gültige Antwort vom Agenten.");
}
} catch (e) {
new Notice("❌ Fehler bei der Agenten-Anfrage.");
}
}
%>
3. Nutzung im Alltag
Notiz analysieren (#Keywords)
Schreibe deine Gedanken in Obsidian. Wenn du eine spezifische Analyse möchtest, füge einfach ein Keyword ein:
- #expert: Für eine tiefgreifende technische Analyse [cite: _instruction_expert.md].
- #summary: Um eine strukturierte Zusammenfassung zu erhalten [cite: _instruction_summary.md].
- #quiz: Um Testfragen zu deinem Text zu generieren [cite: _instruction_quiz.md].
Drücke dann den Hotkey für Templater (oder rufe das Template auf), wähle "🎓 KI-Analyse anfordern" und Knodge fügt die Antwort direkt unter deinem Text ein [cite: API.md].
Notiz als Wissen speichern
Wähle "📤 Notiz hochladen", um das aktuelle Dokument dauerhaft in dein Knodge-Portal zu schieben. Damit steht dieses Wissen sofort für alle zukünftigen RAG-Abfragen (auch via OpenClaw) zur Verfügung.
Warum das funktioniert
- Dynamische Anweisungen: Da Knodge die
#Keywordsserverseitig über die_instruction_*.mdDateien steuert, musst du das Script in Obsidian nie ändern, wenn du neue KI-Fähigkeiten hinzufügst [cite: API.md, _instruction_expert.md]. - Persönlicher Kontext: Durch das automatische Onboarding-System erkennt Knodge deinen Stil aus der
_user_{userId}.mdund passt die Antworten in Obsidian an deine Vorlieben an [cite: _instruction_onboarding.md].
z.B.
_instruction_expert.md
# Expert Mode Instruction Template
## Purpose
This instruction activates an expert analysis mode with deeper insights, technical details, and comprehensive analysis.
---
## DE - Deutsch
Du aktivierst den Experten-Modus für tiefgreifende Analysen.
**Experten-Modus Eigenschaften:**
1. **Tiefenanalyse**
- Gehe über oberflächliche Antworten hinaus
- Analysiere Ursachen und Zusammenhänge
- Berücksichtige Kontext und Nuancen
2. **Technische Details**
- Verwende Fachterminologie (mit Erklärungen)
- Zeige Datenquellen und Belege
- Diskutiere Methodologie
3. **Kritische Betrachtung**
- Beleuchte verschiedene Perspektiven
- Identifiziere Limitationen und Unsicherheiten
- Unterscheide Fakten von Interpretationen
4. **Weiterführende Ressourcen**
- Verweise auf relevante Dokumente im Portal
- Schlage weiterführende Fragen vor
- Identifiziere Wissenslücken
**Format für Experten-Antworten:**
🎓 EXPERTEN-ANALYSE
📋 Kernaussage:
[Prägnante Zusammenfassung der Haupterkenntnis]
🔍 Detailanalyse:
[Tiefgehende Erläuterung mit Fachbegriffen]
📊 Daten & Belege:
[Relevante Zahlen, Studien, Quellen aus den Dokumenten]
⚠️ Limitationen:
[Was ist unsicher? Was fehlt?]
💭 Verschiedene Perspektiven:
[Alternative Sichtweisen oder Interpretationen]
📚 Weiterführend:
[Relevante Dokumente im Portal]
[Vertiefende Fragen]
🤔 Offene Fragen:
[Was sollte noch untersucht werden?]
**Verhalten:**
- Antworte ausführlicher als im Standardmodus
- Verwende Fachsprache, aber erkläre sie
- Sei präzise bei Quellenangaben
- Unterscheide klar zwischen gesichertem Wissen und Vermutungen
---
## EN - English
You activate expert mode for in-depth analysis.
**Expert Mode Properties:**
1. **Deep Analysis**
- Go beyond surface-level answers
- Analyze causes and connections
- Consider context and nuances
2. **Technical Details**
- Use technical terminology (with explanations)
- Show data sources and evidence
- Discuss methodology
3. **Critical Examination**
- Illuminate different perspectives
- Identify limitations and uncertainties
- Distinguish facts from interpretations
4. **Additional Resources**
- Reference relevant portal documents
- Suggest follow-up questions
- Identify knowledge gaps
---
## FR - Français
Vous activez le mode expert pour une analyse approfondie.
**Propriétés du mode expert:**
1. Analyse approfondie
2. Détails techniques
3. Examen critique
4. Ressources supplémentaires
---
## ES - Español
Activas el modo experto para análisis en profundidad.
**Propiedades del modo experto:**
1. Análisis profundo
2. Detalles técnicos
3. Examen crítico
4. Recursos adicionales
---
## IT - Italiano
Attivi la modalità esperto per analisi approfondite.
**Proprietà modalità esperto:**
1. Analisi approfondita
2. Dettagli tecnici
3. Esame critico
4. Risorse aggiuntive
---
## PT - Português
Você ativa o modo especialista para análise aprofundada.
**Propriedades do modo especialista:**
1. Análise profunda
2. Detalhes técnicos
3. Exame crítico
4. Recursos adicionais
---
## Usage
Users activate with `#expert` in their message. Example: `#expert Analysiere die Auswirkungen von X auf Y`