đŸ› ïž How-To : Knodge.eu Bridge pour Obsidian

đŸ› ïž How-To : Knodge.eu Bridge pour Obsidian

Ce guide décrit comment configurer Obsidian comme interface professionnelle pour ton portail de connaissances Knodge.eu. Grùce à cette configuration, tu peux télécharger directement des notes et demander des analyses IA (comme des revues d'experts ou des résumés) en appuyant sur un bouton [cite : API.md].


1. préparation dans Knodge.eu

Avant de connecter Obsidian, les accĂšs Ă  l'API doivent ĂȘtre prĂȘts dans Knodge.eu :

  • ClĂ©s API: Tu as besoin de deux clĂ©s de ton tableau de bord du portail :
    1. ClĂ© API Chat: pour les requĂȘtes et les analyses (api-chat).
    2. Upload API-Key: Une clé avec des droits d'éditeur ou de manager pour l'upload de documents.
      Portal-Slug: C'est l'identification de ton portail dans l'URL (par ex. mon-savoir-hub).
  • Instructions: Assure-toi que des fichiers comme _instruction_expert.md ou _instruction_summary.md sont dĂ©jĂ  tĂ©lĂ©chargĂ©s sur ton portail, afin que les mots-clĂ©s (#expert, #summary) fonctionnent [cite : _instruction_expert.md, _instruction_summary.md].

2. installation dans Obsidian

Nous utilisons le plugin populaire Templater pour exécuter le script JavaScript.

Étape 1 : installer les plugins

  1. ouvrez les Settings dans Obsidian.
  2. allez dans Community Plugins et désactivez le "Safe Mode".
  3. cherche Templater et installe/active-le.

Étape 2 : crĂ©er le script

Crée une nouvelle note (par exemple dans le dossier Templates/Knodge-Bridge.md) et insÚre le code suivant :

<%*
/* Knodge.eu Unified Bridge / Conforme au SCP (upload & chat)
   Adapté aux téléchargements de domaines et aux messages des agents.
*/

// CONFIGURATION
const CHAT_API_KEY = "6393c04f..." ; // ta clé de chat
const UPLOAD_API_KEY = "cb7106f5..." ; // ta clé de téléchargement
const DOMAIN_ID = "efdb0c9f..." ; // De ton réglage API
const PORTAL_SLUG = "faq" ; // Ton identifiant de portail
const BASE_URL = "https://knodge.eu/api" ;

const activeView = app.workspace.getActiveViewOfType(obsidian.MarkdownView) ;
if (!activeView) {
    new Notice("Aucune note active n'a été trouvée") ;
    return ;
}

const content = activeView.editor.getValue() ;
const fileName = `${activeView.file.basename}.md` ;

// DIALOGUE DE SÉLECTION
const mode = await tp.system.suggester(
    ["đŸ“€ TĂ©lĂ©charger un document dans le domaine", "💬 Demander Ă  l'agent IA (messages)"],
    ["upload", "chat"]
) ;

if (mode === "upload") {
    // 1. LOGIQUE DE CHARGEMENT (basée sur le domaine)
    const formData = new FormData() ;
    const blob = new Blob([content], { type : 'text/markdown' }) ;
    formData.append('file', blob, fileName) ;

    new Notice("Téléchargement en cours dans le domaine...") ;
    try {
        const res = await fetch(`${BASE_URL}/domaines/${DOMAIN_ID}/documents`, {
            méthode : "POST",
            en-tĂȘtes : {
                "X-API-Key" : UPLOAD_API_KEY // Demande d'en-tĂȘte
            },
            body : formData
        }) ;

        if (res.ok) new Notice("✅ Document enregistrĂ© avec succĂšs dans le domaine !)
        else new Notice("❌ erreur lors du tĂ©lĂ©chargement.") ;
    } catch (e) {
        new Notice("❌ Erreur rĂ©seau lors du tĂ©lĂ©chargement.") ;
    }

} else if (mode === "chat") {
    // 2. LOGIQUE DE CHAT (Point final des messages de l'agent)
    new Notice("L'agent IA est sollicité...") ;
    
    try {
        const res = await fetch(`${BASE_URL}/portal/${PORTAL_SLUG}/agent/messages`, {
            méthode : "POST",
            headers : {
                "Content-Type" : "application/json",
                "Clé X-API" : CHAT_API_KEY //
            },
            body : JSON.stringify({
                messages : [{ role : "user", content : content }], // corps conforme au SCP
                stream : false, // streaming désactivé pour l'intégration d'Obsidian
                locale : "fr"
            })
        }) ;

        const data = await res.json() ;
        
        // HypothÚse : La réponse est renvoyée dans le champ 'response' ou 'message'.
        const aiMessage = data.response || (data.messages && data.messages[0].content) ;

        if (aiMessage) {
            const insertion = `\n\n---\n## đŸ€– Agent-rĂ©ponse\n${aiMessage}` ;
            activeView.editor.replaceRange(insertion, { line : activeView.editor.lineCount(), ch : 0 }) ;
            new Notice("✅ RĂ©ponse reçue.") ;
        } else {
            new Notice("❌ Pas de rĂ©ponse valide de l'agent.") ;
        }
    } catch (e) {
        new Notice("❌ Erreur dans la requĂȘte de l'agent.") ;
    }
}
%>

3. utilisation au quotidien

Analyser la note (#Keywords)

Écris tes pensĂ©es dans Obsidian. Si tu veux une analyse spĂ©cifique, insĂšre simplement un mot-clĂ© :
#expert : Pour une analyse technique approfondie [cite : _instruction_expert.md].

  • #summary : Pour obtenir un rĂ©sumĂ© structurĂ© [cite : _instruction_summary.md].
  • #quiz : Pour gĂ©nĂ©rer des questions de test sur ton texte [cite : _instruction_quiz.md].

Appuie ensuite sur la touche de raccourci pour Templater (ou appelle le modĂšle), sĂ©lectionne "🎓 Demander une analyse de l'IA" et Knodge insĂšre la rĂ©ponse directement sous ton texte [cite : API.md].

Enregistrer la note en tant que connaissance

Choisis "đŸ“€ TĂ©lĂ©charger la note" pour pousser le document actuel de maniĂšre permanente dans ton portail Knodge. Ainsi, ce savoir sera immĂ©diatement disponible pour toutes les futures requĂȘtes RAG (Ă©galement via OpenClaw).


Pourquoi cela fonctionne-t-il ?

  • Instructions dynamiques: Comme Knodge contrĂŽle les #Keywords cĂŽtĂ© serveur via les fichiers _instruction_*.md, tu n'as jamais besoin de modifier le script dans Obsidian lorsque tu ajoutes de nouvelles capacitĂ©s d'IA [cite : API.md, _instruction_expert.md].
  • Contexte personnel: GrĂące au systĂšme d'onboarding automatique, Knodge reconnaĂźt ton style Ă  partir du fichier _user_{userId}.md et adapte les rĂ©ponses dans Obsidian Ă  tes prĂ©fĂ©rences [cite : _instruction_onboarding.md].

par exemple.
_instruction_expert.md

# ModĂšle d'instruction en mode expert

## Purpose
Cette instruction active un mode d'analyse expert avec des aperçus plus profonds, des détails techniques et une analyse complÚte.

---

## DE - Français

Tu actives le mode expert pour des analyses approfondies.

**Caractéristiques du mode expert:**

1. **Analyse en profondeur**
   - Va au-delà des réponses superficielles
   - Analyse les causes et les relations
   - Prend en compte le contexte et les nuances

2 **Détails techniques**.
   - Utilise une terminologie technique (avec explications)
   - Présente les sources de données et les preuves
   - Discutez de la méthodologie

3. **Revue critique**.
   - Éclaire les diffĂ©rentes perspectives
   - Identifie les limites et les incertitudes
   - Distingue les faits des interprétations

4 **Ressources complémentaires**.
   - Renvoie Ă  des documents pertinents sur le portail
   - SuggÚre des questions complémentaires
   - Identifie les lacunes de connaissances

**Format des réponses d'experts :**

🎓 ANALYSE D'EXPERT

📋 Message clĂ© :
[Résumé concis de la principale conclusion]

🔍 Analyse dĂ©taillĂ©e :
[Explication en profondeur avec des termes techniques]

📊 DonnĂ©es & preuves :
[Chiffres pertinents, études, sources des documents].

⚠ Limitations :
[Qu'est-ce qui n'est pas sûr ? Qu'est-ce qui manque ?]

💭 DiffĂ©rentes perspectives :
[Autres points de vue ou interprétations]

📚 Pour aller plus loin :
[Documents pertinents sur le portail]
[Questions Ă  approfondir]

đŸ€” Questions ouvertes :
[Qu'est-ce qui devrait encore ĂȘtre Ă©tudiĂ© ?]


**Comportement:**
- Réponds de maniÚre plus détaillée qu'en mode standard
- Utilise un langage technique, mais explique-le
- Sois précis dans la citation des sources
- Fais clairement la différence entre les connaissances sûres et les suppositions

---

## EN - English

You activate expert mode for in-depth analysis.

**Expert Mode Properties:**

1. **Analyse approfondie**.
   - Aller au-delà des réponses au niveau de la surface
   - Analyser les causes et les liens
   - Considérer le contexte et les nuances

2 **Détails techniques**
   - Utiliser la terminologie technique (avec explications)
   - Présenter les sources de données et les preuves
   - Discuter de la méthodologie

3. **Examen critique**.
   - Illuminer les différentes perspectives
   - Identifier les limites et les incertitudes
   - Distinguer les faits des interprétations

4 **Additional Resources** (ressources complémentaires)
   - Référencer les documents pertinents du portail
   - Suggérer des questions de suivi
   - Identifier les lacunes de connaissances

---

## 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 en profondeur
2. détails técniques
3. examen crĂ­tico
4. Recursos adicionales

---

## IT - Italiano

Attivi la modalitĂ  esperto per analisi approfondidite.

**ProprietĂ  modalitĂ  esperto:**
1. analisi approfondita
2. détails techniques
3. examen critique
4. risques aggiuntive

---

## PT - PortuguĂȘs

VocĂȘ ativa o modo especialista para anĂĄlise aprofundada.

**Propriedades do modo especialista:**
1. anĂĄlise profunda
2. détails técniques
3. exame crĂ­tico
4. Recursos adicionais

---

## Usage

Les utilisateurs activent avec `#expert` dans leur message. Exemple : `#expert Analyser les effets de X sur Y``.