Aller au contenu

Content Pipeline

Une idee vous vient sous la douche, vous la dictez en vocal sur Telegram. Un article interessant passe dans votre feed, vous envoyez l’URL au bot. Vous prenez une photo d’un tableau blanc apres une reunion. Chaque fois, le Content Pipeline structure le contenu avec Claude et le stocke comme note Obsidian dans un vault GitHub — pret a etre retrouve, enrichi, ou publie.

CommandeTypeEntreeSortie
/noteNoteTexte libreNote structuree avec wikilinks
/blogBlogTexte libreArticle avec intro, corps, conclusion
/researchRechercheSujetAnalyse approfondie avec sources
(URL)URLLien webResume + points cles + citations
(vocal)VoiceAudioTranscription nettoyee et structuree
(photo)PhotoImageTexte OCR corrige et structure

Content Pipeline · ~12 nodes

Sauvegarder

Telegram · /note /blog /research, URL, vocal, photo

Consolidate input · normalize text/URL/audio/photo

Claude Sonnet via cli-ollama · prompt par type

Generate Markdown + frontmatter YAML

Insert pending · n8n_pending_actions TTL 24h

Telegram preview · Sauvegarder / Annuler

GitHub API · obsidian-vault


ProblemeSans pipelineAvec pipeline
Idees perduesNote dans un coin, jamais retrouveeVault Obsidian indexe et versionne
Mise en formeTexte brut sans structureClaude structure avec frontmatter
Contenu eparpilleNotes ici, bookmarks laUn seul vault, un seul workflow
Publication laborieuseCopier-coller entre apps/blog → article pret a publier

Le contenu genere par Claude n’est pas stocke directement. L’utilisateur recoit d’abord un apercu sur Telegram avec le titre, les tags, le chemin cible et les 500 premiers caracteres. Deux boutons permettent de valider ou annuler. C’est un filet de securite contre les erreurs de classification ou les notes mal formees.


1. Reception — L’Orchestrateur Telegram detecte une commande /note, /blog, /research, une URL, un vocal, ou une photo et route vers le Content Pipeline.

2. Consolidation — Un node Code normalise l’entree : le texte est extrait, les URLs sont fetchees (tronquees a 8000 caracteres), les vocaux arrivent deja transcrits, les photos deja OCRisees.

3. Generation Claude — Le LLM (Claude Sonnet via CLI Ollama, timeout 120s) recoit un prompt specifique au type de contenu. Chaque prompt definit la structure attendue, le frontmatter YAML, et les conventions de formatage (wikilinks pour les notes, sections pour les blogs, sources pour les recherches).

4. Stockage temporaire — Le Markdown genere est stocke dans la Data Table n8n_pending_actions avec un identifiant court (8 caracteres hex) et une expiration 24h.

5. Preview — L’utilisateur recoit un message Telegram avec l’apercu du contenu et deux boutons :

📝 Nouvelle note
Titre : Docker Networking Guide
Tags : docker, networking, guide
Chemin : notes/tech/2026-02-19-docker-networking-guide.md
Docker networking in practice involves understanding
bridge networks, overlay networks, and host mode...
[... tronque]
[Sauvegarder] [Annuler]

6. Sauvegarde — Au clic sur [Sauvegarder], l’Orchestrateur cree le fichier dans le depot GitHub guigpap/obsidian-vault via l’API et envoie une confirmation.

Le chemin de stockage est determine par le type et les tags :

ConditionChemin
Type = researchknowledge/
Type = blognotes/projects/
Tag contient “project”notes/projects/
Tag contient “reference”notes/reference/
Defautnotes/tech/

Le fichier est nomme {date}-{slug}.md (ex: 2026-02-19-docker-networking-guide.md).

Chaque note est un fichier Markdown avec frontmatter YAML :

---
title: "Docker Networking Guide"
tags: [docker, networking, guide]
date: 2026-02-19
source: "telegram"
status: "draft"
type: "note"
slug: "docker-networking-guide"
---

Pour les articles de blog, deux champs supplementaires sont generes : description (meta description) et une structure avec Introduction, Corps, Conclusion.

Pour les recherches, le contenu inclut : Vue d’ensemble, Points cles, Details techniques, Sources, Sujets connexes.


LimiteImpactMitigation
Pas de deduplicationEnvoyer 2x la meme URL = 2 notesL’utilisateur peut annuler
OCR imparfaitPhotos de mauvaise qualite = texte brouillonClaude corrige les erreurs evidentes
Pas de recherche dans le vaultRetrouver une note = parcourir les fichiersTags + Obsidian search + Qdrant (prevu)

Si besoin de publication automatique :

  • Le workflow Obsidian Blog Publisher peut prendre le relais
  • Les notes de type blog avec status: ready sont candidates a la publication

Si besoin de recherche semantique :

  • Generer des embeddings pour chaque note
  • Stocker dans Qdrant pour une recherche vectorielle
  • Commande /search dans Telegram pour interroger le vault

Si volume de notes augmente :

  • Ajouter des sous-dossiers par mois ou par projet
  • Creer un index automatique dans Obsidian
  • Digest hebdomadaire des notes recentes