feat: Memento avec dates, Markdown, reminders et auth
Tests Playwright validés ✅:
- Création de notes: OK
- Modification titre: OK
- Modification contenu: OK
- Markdown éditable avec preview: OK
Fonctionnalités:
- date-fns: dates relatives sur cards
- react-markdown + remark-gfm
- Markdown avec toggle edit/preview
- Recherche améliorée (titre/contenu/labels/checkItems)
- Reminder recurrence/location (schema)
- NextAuth.js + User/Account/Session
- userId dans Note (optionnel)
- 4 migrations créées
Ready for production + auth integration
This commit is contained in:
307
N8N-TECH-NEWS.md
Normal file
307
N8N-TECH-NEWS.md
Normal file
@@ -0,0 +1,307 @@
|
||||
# 🤖 Workflow N8N - Tech News to Memento
|
||||
|
||||
## 📋 Description
|
||||
|
||||
Ce workflow automatise la veille technologique en :
|
||||
1. **Lisant** un flux RSS TechCrunch (ou autre source tech)
|
||||
2. **Analysant** les articles avec GPT-4o-mini
|
||||
3. **Sélectionnant** les 2 actualités les plus pertinentes
|
||||
4. **Créant** automatiquement 2 notes dans Memento via MCP
|
||||
|
||||
## 🔧 Architecture du Workflow
|
||||
|
||||
### 1. **Schedule Trigger** ⏰
|
||||
- Exécution automatique toutes les **6 heures**
|
||||
- Configurable selon vos besoins
|
||||
|
||||
### 2. **RSS Feed Reader** 📰
|
||||
- Source par défaut : TechCrunch Feed
|
||||
- Alternatives possibles :
|
||||
- Hacker News: `https://news.ycombinator.com/rss`
|
||||
- The Verge: `https://www.theverge.com/rss/index.xml`
|
||||
- Ars Technica: `https://feeds.arstechnica.com/arstechnica/index`
|
||||
- MIT Technology Review: `https://www.technologyreview.com/feed/`
|
||||
|
||||
### 3. **Prepare AI Analysis** 🧮
|
||||
- Formate les articles pour l'analyse IA
|
||||
- Crée un prompt système optimisé
|
||||
- Structure les données pour OpenAI
|
||||
|
||||
### 4. **OpenAI Agent** 🤖
|
||||
**Modèle :** GPT-4o-mini
|
||||
**Temperature :** 0.3 (réponses cohérentes)
|
||||
**Max Tokens :** 500
|
||||
|
||||
**Prompt Système :**
|
||||
```
|
||||
Tu es un expert en analyse d'actualités technologiques.
|
||||
Ta mission est de sélectionner les 2 articles les plus pertinents
|
||||
et importants parmi une liste d'actualités.
|
||||
|
||||
Tu dois être objectif, privilégier l'innovation et l'impact réel.
|
||||
Réponds UNIQUEMENT en JSON valide, sans markdown ni texte supplémentaire.
|
||||
```
|
||||
|
||||
**Critères de sélection :**
|
||||
- ✅ Innovation majeure ou rupture technologique
|
||||
- ✅ Impact significatif sur l'industrie tech
|
||||
- ✅ Actualité récente et importante
|
||||
- ❌ Éviter articles marketing/promotionnels
|
||||
- ✅ Privilégier annonces concrètes
|
||||
|
||||
### 5. **Parse Selection** 🔍
|
||||
- Parse la réponse JSON de l'IA
|
||||
- Gère les formats markdown et JSON brut
|
||||
- Fallback sur les 2 premiers articles en cas d'erreur
|
||||
|
||||
### 6. **Format Note** 📝
|
||||
Crée une note structurée avec :
|
||||
- 📰 Titre de l'article
|
||||
- 🔍 Raison de la sélection (par l'IA)
|
||||
- 📝 Résumé/description
|
||||
- 🔗 Lien vers l'article complet
|
||||
- 📅 Date de publication
|
||||
- 🏷️ Catégories/tags
|
||||
|
||||
**Couleur :** Bleu (tech)
|
||||
**Labels :** `Tech News`, `Auto-Generated`, + catégories de l'article
|
||||
|
||||
### 7. **MCP - Create Note** 💾
|
||||
- Appelle le MCP server sur `http://localhost:3001/sse`
|
||||
- Utilise le tool `create_note`
|
||||
- Format JSON-RPC 2.0
|
||||
|
||||
**Payload exemple :**
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1704380400,
|
||||
"method": "tools/call",
|
||||
"params": {
|
||||
"name": "create_note",
|
||||
"arguments": {
|
||||
"title": "📰 Major AI Breakthrough Announced...",
|
||||
"content": "📰 **Full Title**\n\n🔍 **Pourquoi cet article ?**\n...",
|
||||
"color": "blue",
|
||||
"type": "text",
|
||||
"labels": ["Tech News", "Auto-Generated", "AI"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 8. **Extract Result & Summary** ✅
|
||||
- Extrait l'ID et le titre des notes créées
|
||||
- Crée un résumé d'exécution
|
||||
- Status de succès/échec
|
||||
|
||||
## 🚀 Installation
|
||||
|
||||
### Prérequis
|
||||
1. **N8N** installé et opérationnel
|
||||
2. **MCP Server** tournant sur port 3001
|
||||
3. **Clé API OpenAI** configurée
|
||||
4. **Memento** accessible sur localhost:3000
|
||||
|
||||
### Étapes
|
||||
|
||||
1. **Démarrer le MCP Server**
|
||||
```powershell
|
||||
cd d:\dev_new_pc\Keep\mcp-server
|
||||
node index-sse.js
|
||||
```
|
||||
|
||||
2. **Vérifier que Memento tourne**
|
||||
```powershell
|
||||
cd d:\dev_new_pc\Keep\keep-notes
|
||||
npm run dev
|
||||
```
|
||||
|
||||
3. **Importer le workflow dans N8N**
|
||||
- Ouvrir N8N (http://localhost:5678)
|
||||
- Cliquer "Import from File"
|
||||
- Sélectionner `n8n-tech-news-workflow.json`
|
||||
|
||||
4. **Configurer les credentials OpenAI**
|
||||
- Node "OpenAI - Select Best Articles"
|
||||
- Ajouter votre clé API OpenAI
|
||||
- Tester la connexion
|
||||
|
||||
5. **Activer le workflow**
|
||||
- Cliquer sur "Active" en haut à droite
|
||||
- Le workflow s'exécutera toutes les 6 heures
|
||||
|
||||
## 🧪 Test Manuel
|
||||
|
||||
1. Ouvrir le workflow dans N8N
|
||||
2. Cliquer sur "Execute Workflow" (éclair ⚡)
|
||||
3. Vérifier les résultats :
|
||||
- RSS feed récupéré ✅
|
||||
- IA sélectionné 2 articles ✅
|
||||
- 2 notes créées dans Memento ✅
|
||||
|
||||
## 📊 Monitoring
|
||||
|
||||
### Vérifier les notes créées
|
||||
|
||||
**Via l'interface Memento :**
|
||||
- Ouvrir http://localhost:3000
|
||||
- Chercher les notes avec label "Tech News"
|
||||
- Notes en bleu avec icône 📰
|
||||
|
||||
**Via MCP :**
|
||||
```bash
|
||||
curl -X POST http://localhost:3001/sse \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1,
|
||||
"method": "tools/call",
|
||||
"params": {
|
||||
"name": "get_notes",
|
||||
"arguments": {
|
||||
"search": "Tech News"
|
||||
}
|
||||
}
|
||||
}'
|
||||
```
|
||||
|
||||
## 🎯 Personnalisation
|
||||
|
||||
### Changer la source RSS
|
||||
|
||||
Dans le node "RSS Feed - Tech News" :
|
||||
```javascript
|
||||
// Remplacer l'URL par :
|
||||
"https://feeds.feedburner.com/venturebeat/SZYF" // VentureBeat
|
||||
"https://www.wired.com/feed/rss" // Wired
|
||||
"https://techcrunch.com/feed/" // TechCrunch Alt
|
||||
```
|
||||
|
||||
### Modifier les critères de sélection
|
||||
|
||||
Dans le node "Prepare AI Analysis", modifier le prompt :
|
||||
```javascript
|
||||
Critères de sélection :
|
||||
- Focus sur [IA / Blockchain / Cloud / DevOps / ...]
|
||||
- Articles en français uniquement
|
||||
- Durée de lecture < 10 min
|
||||
- etc.
|
||||
```
|
||||
|
||||
### Changer la fréquence
|
||||
|
||||
Dans le node "Schedule - Every 6 hours" :
|
||||
- **Toutes les 3h** : `hoursInterval: 3`
|
||||
- **Tous les jours à 9h** : `cronExpression: "0 9 * * *"`
|
||||
- **Du lundi au vendredi** : `cronExpression: "0 9 * * 1-5"`
|
||||
|
||||
### Modifier le nombre d'articles
|
||||
|
||||
Dans "Prepare AI Analysis" :
|
||||
```javascript
|
||||
// Passer de 2 à 3 articles
|
||||
"sélectionnez les 3 articles les PLUS PERTINENTS"
|
||||
|
||||
// Adapter la structure JSON
|
||||
{
|
||||
"selected": [
|
||||
{ "index": 1, "reason": "..." },
|
||||
{ "index": 2, "reason": "..." },
|
||||
{ "index": 3, "reason": "..." }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Changer la couleur/labels
|
||||
|
||||
Dans le node "Format Note" :
|
||||
```javascript
|
||||
color: 'orange', // ou red, green, purple, etc.
|
||||
labels: ['AI News', 'Breaking', 'Important']
|
||||
```
|
||||
|
||||
## 🐛 Troubleshooting
|
||||
|
||||
### Erreur "MCP Server not responding"
|
||||
```bash
|
||||
# Vérifier que le MCP server tourne
|
||||
curl http://localhost:3001/sse
|
||||
|
||||
# Redémarrer si nécessaire
|
||||
cd d:\dev_new_pc\Keep\mcp-server
|
||||
node index-sse.js
|
||||
```
|
||||
|
||||
### Erreur OpenAI "Rate limit exceeded"
|
||||
- Attendre quelques minutes
|
||||
- Réduire la fréquence du workflow
|
||||
- Upgrader votre plan OpenAI
|
||||
|
||||
### Pas d'articles sélectionnés
|
||||
- Vérifier le flux RSS (URL valide ?)
|
||||
- Tester le prompt OpenAI manuellement
|
||||
- Vérifier les logs N8N
|
||||
|
||||
### Notes non créées
|
||||
```javascript
|
||||
// Vérifier le payload MCP dans le node "MCP - Create Note"
|
||||
console.log($json);
|
||||
|
||||
// Tester directement avec curl
|
||||
curl -X POST http://localhost:3001/sse \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"create_note","arguments":{"title":"Test","content":"Test"}}}'
|
||||
```
|
||||
|
||||
## 📈 Optimisations Possibles
|
||||
|
||||
1. **Multi-sources RSS**
|
||||
- Ajouter plusieurs nodes RSS
|
||||
- Merger les résultats
|
||||
- Augmenter à 5-10 articles sélectionnés
|
||||
|
||||
2. **Filtering avancé**
|
||||
- Ajouter des keywords à exclure
|
||||
- Filtrer par date (dernières 24h uniquement)
|
||||
- Éliminer les doublons
|
||||
|
||||
3. **Enrichissement**
|
||||
- Scraper le contenu complet de l'article
|
||||
- Générer un résumé avec GPT
|
||||
- Ajouter des images via API
|
||||
|
||||
4. **Notifications**
|
||||
- Envoyer email avec les articles sélectionnés
|
||||
- Notification Slack/Discord
|
||||
- Push notification mobile
|
||||
|
||||
5. **Analytics**
|
||||
- Logger les articles sélectionnés
|
||||
- Stats sur les sources les plus utilisées
|
||||
- Tendances des sujets tech
|
||||
|
||||
## 🔐 Sécurité
|
||||
|
||||
- ⚠️ Ne pas exposer le MCP server sur internet
|
||||
- ⚠️ Sécuriser la clé API OpenAI
|
||||
- ✅ Utiliser variables d'environnement pour secrets
|
||||
- ✅ Limiter rate limiting sur le RSS
|
||||
|
||||
## 📚 Ressources
|
||||
|
||||
- [N8N Documentation](https://docs.n8n.io/)
|
||||
- [MCP Protocol Spec](https://modelcontextprotocol.io/)
|
||||
- [OpenAI API](https://platform.openai.com/docs)
|
||||
- [RSS Feeds Tech](https://github.com/awesome-rss/awesome-rss)
|
||||
|
||||
## 🎉 Résultat Attendu
|
||||
|
||||
Toutes les 6 heures, vous aurez automatiquement :
|
||||
- ✅ **2 notes** dans Memento
|
||||
- 📰 Sur les **actualités tech les plus importantes**
|
||||
- 🤖 **Sélectionnées par IA**
|
||||
- 🏷️ **Labellisées** et organisées
|
||||
- 🔗 Avec **liens** vers articles complets
|
||||
|
||||
**Gain de temps :** ~30 min de veille manuelle par jour = **3.5h par semaine** ! 🚀
|
||||
Reference in New Issue
Block a user