From 9ba3480d4edbfdbd5e08596ce6bf8449372318ee Mon Sep 17 00:00:00 2001 From: Bruno Charest Date: Sat, 5 Sep 2026 21:49:42 -0400 Subject: [PATCH] =?UTF-8?q?feat(agent):=20v4.11.1=20-=20branche=20entr?= =?UTF-8?q?=C3=A9es=20IA=20sur=20le=20FlowDeck=20Agent=20(Ask=20AI,=20AI?= =?UTF-8?q?=20meeting=20note,=20bouton=20flottant)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 23 ++ VERSION | 2 +- app/main.py | 2 +- app/templates/_page_editor_content.html | 4 +- app/templates/_page_editor_scripts.html | 31 ++ app/templates/agent_panel.html | 45 ++- docs/Guide_Complet_Notion_AI.md | 375 ++++++++++++++++++++++++ 7 files changed, 475 insertions(+), 7 deletions(-) create mode 100644 docs/Guide_Complet_Notion_AI.md diff --git a/CHANGELOG.md b/CHANGELOG.md index d3d7b52..142142a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,28 @@ # Changelog — FlowDeck +## v4.11.1 (2026-09-05) — Correction & intégration des points d'entrée IA + +> Aligne les entrées AI de l'interface sur le FlowDeck Agent (alignement Guide Notion AI) et corrige +> les trois boutons qui ne fonctionnaient pas : **Ask AI**, **AI meeting note** (toolbar « Get +> started » de l'éditeur de page) et le **bouton rond flottant FlowDeck Agent** (coin bas-droit). + +### Fix +- **Bouton flottant Agent 🤖 (coin bas-droit)** : le chat restait inerte tant qu'aucune conversation + n'existait (`send()` retournait silencieusement sans `currentConv`). Ajout d'une création de + conversation **lazy** (`ensureConversation()`) effectuée avant chaque envoi — la 1ère saisie crée + la conversation puis l'exécute (mode offline ou LLM réel). +- **« Ask AI » & « AI meeting note »** : ne faisaient qu'insérer du texte placeholder + (« Ask AI to write... » / « AI Meeting Note ») sans aucun appel IA. Ils déclenchent désormais une + **génération inline réelle** via le FlowDeck Agent : + - méthodes `askAI()` / `meetingNote()` / `aiRun()` / `applyAIBlocks()` sur l'éditeur de page ; + - un prompt contextuel est envoyé au panneau agent (exposition d'`window.fdAgent.ask`) ; + - la réponse (`event final` du flux SSE) est **insérée automatiquement dans la page** sous forme + de blocs édités (hook `window.__fdInsertAI`). +- Un état `aiBusy` évite les doubles envois pendant la génération. + +### Infra +- `VERSION` → 4.11.1. + ## v4.11.0 (2026-09-05) — Agent IA : clés API par utilisateur & chargement dynamique des modèles > Suite de v4.10.1 : migre la config LLM d'un **global admin** vers des **credentials par diff --git a/VERSION b/VERSION index 91f3b43..d782fca 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.11.0 \ No newline at end of file +4.11.1 diff --git a/app/main.py b/app/main.py index ef83793..bf9e5f4 100644 --- a/app/main.py +++ b/app/main.py @@ -60,7 +60,7 @@ async def lifespan(_app: FastAPI): app = FastAPI( title="FlowDeck", - version="4.11.0", + version="4.11.1", docs_url="/docs" if settings.log_level == "DEBUG" else None, redoc_url=None, lifespan=lifespan, diff --git a/app/templates/_page_editor_content.html b/app/templates/_page_editor_content.html index 3607b8a..bca1b2f 100644 --- a/app/templates/_page_editor_content.html +++ b/app/templates/_page_editor_content.html @@ -509,13 +509,13 @@ Get started with diff --git a/app/templates/_page_editor_scripts.html b/app/templates/_page_editor_scripts.html index 0524281..d990b29 100644 --- a/app/templates/_page_editor_scripts.html +++ b/app/templates/_page_editor_scripts.html @@ -289,6 +289,7 @@ updatedAt:'{{ page.get("updated_at", "") }}', fmt:{open:false,top:0,left:0,idx:-1}, shareOpen:false,moreOpen:false,gsMoreOpen:false,accessMenuOpen:false,exportOpen:false, + aiBusy:false, moveOpen:false,moveWorkspaces:[],moveLoading:false, activityOpen:false,pageCreated:'{{ page.get("created_at", "") }}', shareTab:'share',favorited:false, @@ -391,6 +392,36 @@ addAfter(idx,type){return this.addAt(idx+1,type);}, removeBlock(idx){this.sync();if(this.blocks.length<=1){this.blocks[0]=this.mkB('paragraph','');}else{this.blocks.splice(idx,1);}const fi=Math.min(idx,this.blocks.length-1);this.render();this.dirty=true;this.autoSave();setTimeout(()=>{const el=this.getEl(this.blocks[fi]?.id);if(el){el.focus();ce(el);}},60);}, + // ── v4.11.1: Inline AI — "Ask AI" & "AI meeting note" (Get started) ── + // Wire the contextual get-started actions into the FlowDeck Agent + // (Notion-style inline generation). The reply is streamed in the agent + // panel and inserted into this page via window.__fdInsertAI. + askAI(){ + const title=(this.pageTitle||'Sans titre').trim(); + this.aiRun('Rédige le contenu de la page FlowDeck intitulée « '+title+' ». Fournis un texte structuré et directement utilisable : paragraphes et, si utile, des listes à puces. Sépare chaque paragraphe par une ligne vide. Ne précède pas le texte de commentaires.'); + }, + meetingNote(){ + this.aiRun('Crée le squelette d\'une « AI meeting note » FlowDeck : une ligne d\'en-tête avec la date et les participants, puis les sections « Résumé », « Décisions » et « Action items » avec des exemples réalistes. Sépare chaque bloc/paragraphe par une ligne vide.'); + }, + aiRun(prompt){ + const self=this; + if(self.aiBusy) return; + if(!(window.fdAgent && window.fdAgent.ask)){ self.showToast('Agent IA indisponible — configurez-le dans Paramètres → Agent & IA'); return; } + self.aiBusy=true; + window.__fdInsertAI = function(content){ window.__fdInsertAI=null; self.aiBusy=false; self.applyAIBlocks(content); }; + self.showToast('FlowDeck Agent : génération en cours…'); + window.fdAgent.ask(prompt); + }, + applyAIBlocks(text){ + const lines=(text||'').split(/\r?\n/).map(function(s){return s.trim();}).filter(Boolean); + if(!lines.length) return; + this.sync(); + const startEmpty=this.blocks.length===1 && this.blocks[0].type==='paragraph' && !(this.blocks[0].content||'').trim(); + const nb=lines.map(l=>this.mkB('paragraph',l)); + this.blocks = startEmpty ? nb : this.blocks.concat(nb); + this.dirty=true; this.autoSave(); this.render(); + }, + toggleFavorite(){ const csrf=document.cookie.match(/csrf_token=([^;]+)/); const m=this.favorited?'DELETE':'POST'; diff --git a/app/templates/agent_panel.html b/app/templates/agent_panel.html index 178698e..03898a9 100644 --- a/app/templates/agent_panel.html +++ b/app/templates/agent_panel.html @@ -135,6 +135,17 @@ }); this.fetchProviders(); this.fetchAgents(); + + // Programmatic entry point used by the page editor ("Ask AI", + // "AI meeting note") and any global UI: open the panel and run a prompt. + window.fdAgent = window.fdAgent || {}; + window.fdAgent.ask = function(text){ + var t = (text || '').trim(); + if(!t) return; + self.openAgent(); + self.input = t; + setTimeout(function(){ self.send(); }, 60); + }; }, fetchProviders(){ @@ -202,6 +213,30 @@ self.messages = []; self.errorMsg=''; self.tab='chat'; }).catch(function(){}); }, + ensureConversation(){ + // Make the chat usable immediately: reuse the open conversation or + // create one lazily so sending never silently no-ops (empty state). + var self = this; + if(self.currentConv && self.currentConv.id) return Promise.resolve(self.currentConv); + if(self._ensuring) return self._ensuring; + var body = {title:'New conversation'}; + if(self.llmProvider) body.provider = self.llmProvider; + if(self.llmModel) body.model = self.llmModel; + self._ensuring = fetch('/api/agent/conversations', { + method:'POST', headers:{'Content-Type':'application/json'}, body: JSON.stringify(body) + }).then(function(r){return r.json()}).then(function(d){ + var conv = {id:d.id, title:d.title, updated_at:new Date().toISOString()}; + self.conversations.unshift(conv); self.currentConv = conv; + self.messages = []; self.errorMsg=''; self.tab='chat'; + self._ensuring = null; + return conv; + }).catch(function(err){ + self._ensuring = null; + self.errorMsg = (err && err.message) ? err.message : 'Impossible de créer la conversation'; + throw err; + }); + return self._ensuring; + }, openAgent(){ this.open=true; this.loadConversations(); }, close(){ this.open=false; }, get commandOpen(){ return /^\s*\//.test(this.input) && !this.streaming; }, @@ -292,12 +327,13 @@ } return false; }, - send(){ + async send(){ var self = this; - if(!self.currentConv || self.streaming) return; - var text = self.input.trim(); + if(self.streaming) return; + var text = (self.input || '').trim(); if(!text) return; if(self.commandOpen && self.handleCommand(text)){ self.input=''; return; } + try { await self.ensureConversation(); } catch(e){ return; } self.input = ''; self.errorMsg = ''; self.streaming = true; @@ -340,6 +376,9 @@ } else if(ev.type==='final'){ self.messages.push({id:'f-'+Date.now(), role:'assistant', content: ev.content}); + // "Ask AI" / "AI meeting note" (page editor) register this hook + // so the generated text is inserted directly into the page. + if(window.__fdInsertAI){ try{ var h=window.__fdInsertAI; window.__fdInsertAI=null; h(ev.content||''); }catch(e){} } } else if(ev.type==='error'){ self.errorMsg = ev.message; } }catch(e){} diff --git a/docs/Guide_Complet_Notion_AI.md b/docs/Guide_Complet_Notion_AI.md new file mode 100644 index 0000000..e7b0ab3 --- /dev/null +++ b/docs/Guide_Complet_Notion_AI.md @@ -0,0 +1,375 @@ +# Guide de Référence : Fonctionnement et Architecture de Notion AI (Web) + +Ce guide détaille l'ensemble des mécanismes, des flux logiques et des fonctionnalités de l'intelligence artificielle intégrée à l'application web de Notion. + +> **Méthodologie :** ce document a été vérifié et mis à jour le **5 septembre 2026** à partir de la documentation officielle de Notion (Help Center, `developers.notion.com`, `notion.com/security`, pages produit). Les URLs sources sont listées en section 7. Les points qui n'ont pas pu être confirmés par la documentation officielle sont explicitement marqués d'un ⚠️. + +--- + +## 1. Diagramme d'Intégration et Architecture des Composantes + +Notion AI fonctionne comme une **couche d'orchestration cognitive** qui relie l'interface utilisateur web, le graphe de blocs internes (*Block Tree*), le moteur relationnel de bases de données et des sources externes via les connecteurs et le protocole MCP (*Model Context Protocol*). + +```mermaid +flowchart TB + subgraph UI ["1. Interface Utilisateur & Points d'Entrée"] + A1["Notion Agent : Chat latéral ou flottant (Shift+Cmd/Ctrl+J)"] + A2["Onglets Home : Agent / Research / Search"] + A3["Génération In-line (Espace sur ligne vide, /AI Block, Edit with AI)"] + A4["AI Meeting Notes (/meet, Notion Calendar)"] + A5["Propriétés IA de Bases de Données (AI Autofill)"] + A6["Custom Agents (triggers, schedules, Slack)"] + end + + subgraph ORCHESTRATOR ["2. Notion AI Core (Orchestrateur & Sécurité)"] + B1["Vérificateur de Droits & Permissions (RBAC)"] + B2["Gouvernance des Crédits & Modèles Premium (Admin)"] + B3["Routeur de Modèles (Auto / Claude Fable 5 / Sonnet 5 / GPT / Gemini / Grok)"] + B4["Personnalisation (Instructions, Skills, Mémoire de l'Agent)"] + end + + subgraph RETRIEVAL ["3. Couche RAG & Contexte (All Sources)"] + C1["Espace de travail Notion (Pages, Blocs, Bases, Commentaires)"] + C2["AI Connectors (Slack, Drive, Jira, GitHub, Gmail, Calendar...)"] + C3["Recherche Web (contrôlée par l'admin)"] + C4["Serveurs MCP Externes (External Agents)"] + C5["Base Vectorielle d'Embeddings (recherche sémantique)"] + end + + subgraph EXECUTION ["4. Moteur d'Exécution & Restitution"] + D1["Moteur d'Édition de Blocs (CRUD Block Engine, pages, bases)"] + D2["Moteur Autofill (Basic + Custom Agent)"] + D3["Module STT Audio (Transcription, Diarisation)"] + D4["Rendu du Chat avec Citations de Sources"] + end + + %% Interactions UI vers Orchestrateur + A1 & A2 & A3 & A4 & A5 & A6 --> B1 + B1 --> B2 + B2 --> B3 + B4 -.-> B3 + + %% Interaction Orchestrateur vers Contexte + B3 <--> RETRIEVAL + + %% Exécution vers Notion + B3 --> D1 + B3 --> D2 + A4 <--> D3 + D3 --> B3 + B3 --> D4 + + %% Rétroaction sur l'UI + D1 -. Mise à jour de la page .-> A3 + D2 -. Mise à jour des colonnes .-> A5 + +``` + +### Explication des Flux d'Interaction + +1. **Isolation des Accès (RBAC) :** Toute requête passe en premier par le filtre de sécurité de Notion. Formulation officielle : *« Notion AI honors existing permissions. The LLMs and AI Models used to generate AI responses for a user cannot see or use any information to which that user does not already have access. »* L'IA n'a accès qu'aux pages, bases de données et blocs pour lesquels l'utilisateur connecté dispose d'une autorisation de lecture explicite — y compris via MCP. +2. **Assemblage Dynamique du Contexte (RAG) :** L'orchestrateur agrège les métadonnées de la page courante, l'historique du fil de discussion, les instructions personnalisées et les *skills* de l'agent, ainsi que les fragments documentaires extraits par recherche sémantique (embeddings vectoriels) dans les sources actives (workspace, connecteurs, web). +3. **Exécution Agentique :** En mode agentique, l'IA ne renvoie pas un simple texte brut : elle peut **créer et modifier de manière autonome des pages et des bases de données** dans l'espace de travail, avec les mêmes permissions que l'utilisateur connecté. Le contenu généré est inséré sous forme de **blocs éditables**. +4. **Traçabilité :** Les réponses issues d'Enterprise Search et du Research Mode **citent systématiquement leurs sources** (liens cliquables vers les pages Notion, les messages Slack, les documents connecteurs ou les pages web utilisées). + +--- + +## 2. Points d'Accès dans l'Interface Web + +L'IA s'adapte au contexte d'utilisation à travers plusieurs interfaces distinctes : + +| Interface | Déclenchement | Comportement principal | +| --- | --- | --- | +| **Notion Agent (chat IA)** | `Shift + Cmd/Ctrl + J` depuis n'importe quelle page, ou onglet **Home > Agent** | Assistant agentique persistant, affichable en **panneau latéral (Sidebar)** ou en **fenêtre flottante (Floating)** (bascule depuis le chat lui-même). Interroge tout l'espace de travail, écrit, et exécute des tâches avec les permissions de l'utilisateur. | +| **Onglets Home** | Page d'accueil **Home** | Trois entrées dédiées : **Agent** (chat agentique), **Research** (recherche approfondie), **Search** (Enterprise Search). | +| **Génération In-Line** | Touche `Espace` sur une **nouvelle ligne vide** | Affiche le champ de prompt de l'IA et génère du contenu directement dans la page, à l'endroit du curseur. | +| **Bloc IA réutilisable** | Commande `/AI Block` | Insère un **bloc de prompt IA** réutilisable dans la page (le bloc rejoue son prompt à la demande). | +| **Edit with AI (menu contextuel)** | Sélection d'un fragment de texte à la souris → **`Edit with AI`** dans la barre d'outils flottante | Transformations locales : corriger la grammaire (*fix grammar*), raccourcir (*make it shorter*), changer le ton (*change the tone*), traduire (*translate*), résumer (*summarize*), brainstormer (*brainstorm*). | +| **AI Meeting Notes** | Commande `/meet` dans une page (app de bureau v4.7.0+), bouton **`Join and transcribe`** dans Notion Calendar, onglet **Meetings** de la barre latérale | Enregistreur audio à capture **locale** (aucun bot ne rejoint l'appel) : transcription en continu, diarisation, puis compte-rendu structuré. | +| **AI Autofill (bases de données)** | Configuration sur une propriété de base de données (`AI Autofill`) | Fonction de calcul dynamique appliquée à chaque entrée : résumé, traduction, extraction d'infos clés, prompt libre ou agent personnalisé. | +| **Custom Agents** | Triggers (événements), plannings (horaires), invocation depuis **Slack** | Agents personnalisés s'exécutant **en arrière-plan**, avec accès limités à certaines pages/bases et délégation à des sous-agents. | + +> ⚠️ **Corrections par rapport aux versions précédentes de ce guide :** le raccourci officiel du chat est `Shift + Cmd/Ctrl + J` (et non `Ctrl + O`) ; les commandes exactes `/ai` et le bouton « Ask AI » sur page vierge n'apparaissent pas dans la documentation actuelle (la doc officielle décrit la touche `Espace` sur ligne vide, `/AI Block` et `Edit with AI`). + +--- + +## 3. Configuration des Modes et Sélecteur de Modèles + +### Les Modes Opératoires + +La documentation officielle actuelle ne décrit plus trois « modes » commutables dans une même fenêtre de chat (Default / Ask / Research via `Shift + Tab`), mais **trois surfaces distinctes** : + +``` + ┌────────────────────────────────┐ + │ Onglet HOME │ + └───────────────┬────────────────┘ + ┌──────────────────────────┼──────────────────────────┐ + ▼ ▼ ▼ + [ Notion Agent ] [ Research Mode ] [ Enterprise Search ] +• Chat agentique par • Investigation profonde • Recherche unifiée sur + défaut multi-étapes toutes les sources +• Lecture, écriture, • Croise workspace, web • Pages Notion + apps + création de pages/bases et connecteurs connectées + web +• Mêmes permissions que • Peut durer ~10 minutes • Citations systématiques + l'utilisateur • Rapports sourcés des sources + partageables • Choix du modèle +``` + +* **Notion Agent (chat par défaut) :** assistant agentique qui répond, écrit et **exécute des tâches dans l'espace de travail** (création/modification autonome de pages et de bases de données), avec les mêmes permissions que l'utilisateur connecté. La documentation produit mentionne la possibilité de **relire et approuver les plans** avant exécution des tâches agentiques (⚠️ partiellement vérifié — article référencé mais non consulté directement). +* **Research Mode :** accessible via **Home > Research**. L'IA mène une recherche approfondie multi-étapes (jusqu'à ~10 minutes) en croisant le contenu de l'espace de travail, le web et les connecteurs, puis produit une **réponse sourcée** et des **rapports partageables** (plans Business et Enterprise). +* **Enterprise Search :** accessible via **Home > Search**. Recherche IA unifiée à travers le workspace **et les applications connectées** (Slack, Microsoft Teams, Google Drive, Jira, GitHub, SharePoint, OneDrive), avec réponses générées par LLM et **citations systématiques des sources** (plans Business et Enterprise). Le modèle est sélectionnable (GPT, Claude, Gemini ou Auto). + +### Le Sélecteur de Modèles (Moteurs LLM) + +Modèles proposés dans le Notion Agent (source : `help/notion-agent`) : + +``` +┌──────────────────────────────────────────────────────────────┐ +│ Auto (Notion choisit automatiquement le modèle le plus │ +│ adapté à la demande) │ +├──────────────────────────────────────────────────────────────┤ +│ Modèles premium : │ +│ • Claude Fable 5 -> Tâches les plus difficiles │ +├──────────────────────────────────────────────────────────────┤ +│ Modèles standards : │ +│ • Claude Sonnet 5 -> Anthropic, polyvalent │ +│ • GPT (derniers) -> OpenAI │ +│ • Gemini -> Google │ +│ • Grok -> xAI │ +└──────────────────────────────────────────────────────────────┘ +``` + +* **Auto (Recommandé) :** Notion sélectionne automatiquement le modèle le plus adapté à la demande. +* **Claude Fable 5 :** modèle premium réservé aux tâches les plus difficiles. +* **Claude Sonnet 5, GPT, Gemini, Grok :** modèles standards des fournisseurs Anthropic, OpenAI, Google et xAI. +* **Gouvernance des modèles premium et des crédits :** les administrateurs gèrent l'accès aux modèles premium et la consommation de crédits Notion des membres (`Settings → Notion AI`). Une **activation manuelle est requise d'ici le 10 septembre 2026** pour continuer à utiliser les modèles premium (source : `help/manage-ai-models-and-member-credit-spend`). + +> ⚠️ **Corrections :** les modèles « Opus 5 », « GPT-5.6 Sol », « Kimi K3 » et le raccourci `Shift + Tab` mentionnés dans les versions précédentes de ce guide **n'apparaissent pas dans la documentation officielle actuelle**. + +--- + +## 4. Gestion des Sources, Connecteurs et Écosystème MCP + +### 1. Sélecteur de Sources et Filtrage du Contexte + +Dans le chat, un sélecteur **« All sources »** permet de contrôler le périmètre de recherche de l'IA : + +``` + [ Sélecteur "All sources" ] + │ + ┌──────────────────────────┼──────────────────────────┐ + ▼ ▼ ▼ +[ Espace Notion ] [ Apps Connectées ] [ Recherche Web ] +• Toutes les pages • Slack, Teams, Drive • Activée/désactivée + accessibles SharePoint, Jira, par l'admin +• Filtres par pages GitHub, Linear, Gmail, • Option "Require + ou teamspaces Outlook, calendriers confirmation for + spécifiques (dont Notion Calendar) web requests" + +``` + +* **Périmètre par défaut :** l'IA interroge tout le contenu auquel l'utilisateur a accès ; il est possible de **filtrer par pages, teamspaces, web et apps connectées**. +* **AI Connectors :** liste officielle incluant **Slack, Microsoft Teams, Google Drive, SharePoint, Jira, GitHub, Linear, Gmail, Outlook, les calendriers (dont Notion Calendar)** et d'autres (source : `help/notion-ai-connectors`). +* **Recherche Web :** contrôlée au niveau du workspace via `Settings → Notion AI` (`Enable web search for workspace`, `Require confirmation for web requests`). +* **Contrôle du périmètre Enterprise Search :** désactivation possible de la recherche web ; limitation à des apps, workspaces ou teamspaces spécifiques. + +### 2. Intégration MCP (Model Context Protocol) + +Notion supporte le standard ouvert **MCP** dans les deux sens : + +#### a) Notion comme **serveur MCP** (piloter Notion depuis l'extérieur) + +* **Endpoints officiels :** `https://mcp.notion.com/mcp` (Streamable HTTP, recommandé) et `https://mcp.notion.com/sse` (fallback SSE si le client ne gère pas Streamable HTTP). Configuration STDIO possible via `npx mcp-remote`. +* **Authentification :** OAuth interactif obligatoire. L'autorisation non interactive (workflows automatisés) n'est **pas encore supportée**. +* **Outils exposés** (liste officielle, source : `developers.notion.com/guides/mcp/mcp-supported-tools`) : + * Recherche : `notion-search`, `notion-ai-search` (recherche sémantique sur Notion + apps connectées : Slack, Mail, Calendar, Google Drive, Jira), `notion-search-skills` + * Lecture : `notion-fetch` (pages, bases, data sources, vues, id spécial `self`), `notion-query-data-sources` (SQL / rows / view — ne retourne que les lignes et propriétés lisibles par l'utilisateur connecté), `notion-query-meeting-notes` + * Écriture : `notion-create-pages`, `notion-update-page`, `notion-move-pages`, `notion-duplicate-page`, `notion-create-database`, `notion-create-folder`, `notion-update-data-source`, `notion-create-view`, `notion-update-view` + * Commentaires : `notion-create-comment`, `notion-get-comments` + * Organisation : `notion-get-users`, `notion-get-teams` + * Fichiers : `notion-create-file-upload` (≤ 20 MiB), `notion-create-attachment`, `notion-download-attachment`, `notion-get-async-task` + * Agents & skills : `notion-list-agents`, `notion-search-agents`, `notion-spawn-session`, `notion-send-message-to-session`, `notion-wait-session`, `notion-convert-page-to-skill` +* **Clients supportés (documentés avec instructions) :** Codex (OpenAI), Claude Code, Cursor, VS Code (GitHub Copilot), fx, Hermes, Devin, Pi, Antigravity ; le Help Center cite aussi Claude Desktop / Claude.ai et ChatGPT Pro. Principe officiel : *« Any AI app that supports the Model Context Protocol can connect to Notion. »* +* **Limites de débit :** ~180 requêtes/min en moyenne par utilisateur (3/s), limite partagée au niveau du workspace ; `notion-search` (mot-clé) plafonné à 30 req/min. +* **Serveur open source `notion-mcp-server` (GitHub) :** existe mais n'est **plus maintenu activement** (bearer token) ; Notion recommande le serveur hébergé. + +#### b) Notion comme **client MCP** (interroger des outils externes depuis Notion) + +* La documentation de sécurité confirme l'existence de la fonctionnalité **« External Agents »** (serveurs MCP externes branchés sur l'IA Notion), dotée de **contrôles et de pratiques de rétention distincts**. Le Notion Agent peut utiliser des serveurs MCP comme sources/outils. +* ⚠️ **Non vérifié :** la procédure utilisateur exacte de connexion d'un serveur MCP tiers dans Notion et la liste des connecteurs partenaires (Linear, Figma, GitHub…) — à confirmer sur `notion.com/product/agents`. + +#### c) Contrôles d'Administration (plan Enterprise) + +* **Liste blanche stricte :** `Settings → Connections → Permissions → AI apps → Restrict AI apps members can connect = Only from approved list`, puis `Manage approved AI apps` / `Add approved AI apps`. +* **Comportements documentés :** blocage de tout appel provenant d'un outil non approuvé (même si un token OAuth existe déjà, les tokens antérieurs ne pouvant pas être révoqués individuellement) ; bouton **`Disconnect All Users`** qui déconnecte tous les clients MCP du workspace (ré-authentification requise) ; pas de déconnexion ciblée par outil ni de visibilité par utilisateur des outils connectés (pas encore disponible) ; connexions gérables via **Okta** ; renommage/logo d'un AI app personnalisé par l'admin, journalisé dans l'audit log. + +#### d) Permissions + +* Formulation officielle : *« After you authorize the connection, the client can read and update content that you can access in the selected Notion workspace »* et *« Notion MCP continues to respect all existing Notion permissions »* — avec l'avertissement : *« MCP tools act with your full Notion permissions — they can access everything you can access. »* + +### 3. Personnalisation Persistante de l'Agent + +Le Notion Agent est personnalisable de façon durable (source : `help/notion-agent`) : + +* **Nom et avatar :** l'agent peut être renommé et doté d'accessoires visuels. +* **Instructions personnalisées :** rédigées dans une page dédiée (ou une page existante) ; l'agent **mémorise les instructions** qui lui sont données et s'y conforme dans les conversations ultérieures (ex. rôle métier, directives de style, règles de mise en page récurrentes). +* **Skills :** compétences réutilisables que l'agent peut invoquer (la doc renvoie vers des articles dédiés « instructions and skills »). + +> ⚠️ **Correction :** la référence à une « icône de canard jaune » des versions précédentes de ce guide n'est pas vérifiée par la documentation officielle. + +--- + +## 5. Fonctionnalités Avancées Spécialisées + +### A. Notion Agents & Custom Agents + +Deux niveaux d'agents coexistent (sources : `help/notion-agent`, `help/custom-agents`, `product/agents`) : + +``` +┌──────────────────────────────┬──────────────────────────────────────┐ +│ Notion Agent (interactif) │ Custom Agents (arrière-plan) │ +├──────────────────────────────┼──────────────────────────────────────┤ +│ • Chat à la demande │ • Déclenchés par des TRIGGERS │ +│ (Shift+Cmd/Ctrl+J) │ (événements) ou des PLANNINGS │ +│ • Agit dans tout le │ (horaires) │ +│ workspace avec vos │ • Accès LIMITÉS à certaines │ +│ permissions │ pages / bases de données │ +│ • Sidebar ou fenêtre │ • Invocables depuis SLACK │ +│ flottante │ • Délèguent à des SOUS-AGENTS │ +│ • Instructions, skills, │ (hand-offs) │ +│ mémoire persistante │ • Modèle configurable │ +│ │ • Dupliquables (servent de base à │ +│ │ de nouveaux agents) │ +│ │ • Consomment des crédits Notion │ +│ │ (10 $ / 1 000 crédits depuis le │ +│ │ 4 mai 2026) │ +└──────────────────────────────┴──────────────────────────────────────┘ +``` + +* **Agents préconstruits :** Notion fournit des agents prêts à l'emploi (réunions, recherches, suivi de projets). +* **Comportement agentique :** l'agent peut créer/modifier pages et bases de données de manière autonome, toujours borné par les permissions de l'utilisateur connecté. + +### B. AI Meeting Notes (Transcription & Synthèse Audio) + +Le module de réunion transforme Notion en preneur de notes autonome (sources : `help/ai-meeting-notes`, `product/ai-meeting-notes`). **Disponibilité : plans Business et Enterprise.** + +``` + [ /meet ou "Join and transcribe" (Notion Calendar) ] + │ + ▼ + [ Capture LOCALE : micro (navigateur) ou audio système + micro (desktop) ] + Aucun bot ne rejoint l'appel — extension navigateur pour les noms (Google Meet) + │ + ▼ + [ Transcription Live (16 langues) + Diarisation (étiquettes locuteurs en anglais) ] + Consentement : notification texte + bouton 🔈 (avertissement vocal) + auto-consent + │ + ▼ + [ Arrêt : ≥ ~300 caractères transcrits (~1 min) requis pour le résumé ] + │ + ▼ + [ Génération du Compte-Rendu ] + • Résumé, décisions, action items + • Citations cliquables vers les horodatages audio/transcription + • Instructions : Auto | types intégrés (sales call, standup, team meeting) + | instructions personnalisées (privées par défaut, partageables) + +``` + +1. **Démarrage et capture :** commande **`/meet`** dans n'importe quelle page via l'**application de bureau (v4.7.0+**, macOS 13+ ou dernière version Windows). La capture est **locale** : aucun bot ne rejoint Zoom/Meet/Teams. Le **navigateur** capte le **microphone uniquement** ; l'**app de bureau** capte **audio système + micro**. Une **extension navigateur** récupère les noms des intervenants sur Google Meet. Intégration **Notion Calendar** : boutons « Join and transcribe » / « View summary » et onglet **Meetings** dans la barre latérale. +2. **Consentement :** notification textuelle aux participants, bouton **🔈** qui diffuse un avertissement vocal dans les haut-parleurs, option de **consentement audio automatique** ; les administrateurs peuvent l'imposer à tout le workspace. +3. **Transcription et diarisation :** transcription en direct dans **16 langues** ; détection des changements de locuteur et étiquetage des intervenants en utilisant le contexte (ex. événement d'agenda) — **étiquetage des locuteurs disponible en anglais uniquement**. +4. **Compte-rendu :** minimum **~300 caractères transcrits (~1 minute)** pour générer un résumé. Le compte-rendu inclut résumé, décisions, action items et **citations cliquables renvoyant aux horodatages** de la transcription/audio. +5. **Instructions / gabarits :** trois niveaux — mode **Auto**, **types intégrés** (sales call, standup, team meeting…) et **instructions personnalisées** (privées par défaut, partageables avec le workspace). +6. **Import de fichiers audio :** formats **AAC, M4A, MP3, WAV** uniquement (pas de MOV/MP4/Loom). Limite : **10 heures d'enregistrement/jour/utilisateur**. +7. **Rétention et confidentialité (détaillée en section 6) :** audio capté stocké temporairement en local puis supprimé après traitement ou sous **24 h** ; en cas d'échec, upload serveur conservé **3 jours max** ; **suppression automatique planifiée des transcriptions** configurable par les owners Enterprise (les résumés et notes sont conservés ; pages en *legal hold* exclues). +8. **Sous-traitants IA :** OpenAI, Anthropic, Fireworks, Baseten Labs, X.AI, AssemblyAI. + +> ⚠️ **Non vérifié par la doc officielle :** le nom exact des onglets de l'interface (Notes / Transcript / Summary) et la prise de notes manuelle pendant l'enregistrement ; l'intégration Notion Mail ↔ AI Meeting Notes. + +### C. Notion AI dans les Bases de Données (AI Autofill) + +Dans les bases de données, l'IA agit comme une **fonction de calcul dynamique** appliquée à chaque entrée. La documentation officielle (`help/autofill`, page « Notion AI for databases ») distingue **deux modes** : + +``` +┌─────────────────────────────┬───────────────────────────────────────┐ +│ Basic Autofill │ Custom Agent Autofill │ +├─────────────────────────────┼───────────────────────────────────────┤ +│ • Actions prédéfinies : │ • Instructions LIBRES (prompt │ +│ Summary | Translate | │ multi-étapes, logique │ +│ Key info | Custom autofill│ conditionnelle) │ +│ • Utilise UNIQUEMENT le │ • Peut activer la recherche dans le │ +│ contenu de la page/ligne │ WORKSPACE et la recherche WEB │ +│ concernée (pas de web, │ (avec fourniture des sources) │ +│ pas d'autres pages) │ • Peut mettre à jour plusieurs │ +│ • Déclencheurs : manuel, │ propriétés en une exécution │ +│ à la création de page, ou │ • Déclencheurs : manuel, création, │ +│ à chaque modification │ modification, ou PLANIFIÉ │ +│ • INCLUS dans Business/ │ (schedule) │ +│ Enterprise, SANS crédits │ • Consomme des CRÉDITS Notion │ +└─────────────────────────────┴───────────────────────────────────────┘ +``` + +* **Configuration (flux officiel) :** survoler la propriété → cliquer sur son nom → **`AI Autofill`** (ou `Set up AI Autofill`) → choisir **`Basic`** (puis l'action : Summary, Translate, Key info, Custom autofill) ou **`Custom Agent`** (puis rédiger les instructions) → choisir **quand l'exécuter** (manuellement, à la création de page, à chaque modification, ou planifié pour Custom Agent) → enregistrer. +* **Cas d'usage Basic cités officiellement :** résumés de contenu de page, extraction d'infos clés (noms, dates, action items), traduction, tag/catégorisation via options select/multi-select. +* **Astuce officielle :** pour ne remplir que les cellules vides, ajouter *« Only fill this property if it is empty »* aux instructions. +* **Exemple Custom Agent :** *« Résume la page en 2 phrases. Si un délai est mentionné, extrais-le dans la propriété Due Date ; sinon laisse vide. »* +* **Build with AI :** l'IA peut **créer** des bases de données (inclus Business/Enterprise avec quota d'usage), mais **pas modifier les bases existantes**, ni créer automatisations, formulaires, graphiques ou templates de pages. + +> ⚠️ **Corrections :** les noms « AI Summary / AI Key Info / AI Custom Autofill » comme types de propriétés distincts, le bouton « Update all » et le type « AI Sentiment » des versions précédentes de ce guide ne correspondent pas à la documentation actuelle (Basic vs Custom Agent). Le coût en crédits précis par exécution Custom Agent n'est pas publié. + +### D. Analyse Multimodale et Création de Contenu + +* **Import audio :** AI Meeting Notes accepte l'import de fichiers audio (AAC, M4A, MP3, WAV) pour transcription et synthèse. +* **Analyse de fichiers et PDF dans le chat, création de diaporamas (`Create a slide deck`), conversion de formats (texte libre → tableaux, to-do lists, toggles) :** ⚠️ ces capacités sont décrites dans les pages produit/marketing mais **n'ont pas pu être vérifiées dans le Help Center officiel** lors de la révision du 5 septembre 2026 — à considérer comme des fonctionnalités évolutives. + +--- + +## 6. Sécurité, Gouvernance et Confidentialité des Données + +Notion applique un cadre de sécurité strict, documenté officiellement (sources : `help/notion-ai-security-practices`, `notion.com/security`, `help/ai-meeting-notes`) : + +1. **Non-entraînement des modèles :** *« By default, Notion and its AI Subprocessors do not use Customer Data to train any models. »* Des accords contractuels interdisent aux sous-traitants IA (OpenAI, Anthropic, etc.) d'utiliser les données clients pour entraîner leurs modèles. Les données de clients différents ne sont **jamais mélangées** durant le traitement IA. +2. **Rétention des données LLM :** **zéro rétention par défaut pour les workspaces Enterprise** ; **≤ 30 jours** pour les plans non-Enterprise. Les LLM à rétention de données restent **désactivés par défaut** et exigent une activation admin via les réglages du workspace. La fonctionnalité *External Agents* relève de contrôles de rétention distincts. +3. **Embeddings (recherche sémantique) :** stockés dans une base vectorielle (**Turbopuffer**, auditée SOC 2 Type 2), **supprimés dans les 60 jours** suivant la suppression de la page ou du workspace. Une page/workspace supprimé est restaurable sous 30 jours, puis suppression définitive (données IA et embeddings inclus). +4. **Chiffrement :** TLS **1.2 ou supérieur** en transit vers les tiers ; chiffrement au repos des données stockées (AES-256 selon le Trust Center Notion ⚠️ non re-vérifié dans cette session). +5. **Respect strict des habilitations (RBAC) :** *« Notion AI honors existing permissions. The LLMs and AI Models used to generate AI responses for a user cannot see or use any information to which that user does not already have access. »* Cela s'applique aussi à MCP : *« MCP does not bypass Notion permissions. »* +6. **Contrôles d'administration :** + * `Settings → Notion AI` (tous plans) : `Enable web search for workspace`, `Require confirmation for web requests` ; sur Business/Enterprise, contrôle du dépassement des crédits Notion AI et gestion des modèles premium. + * **DLP (Enterprise) :** alertes sur contenu sensible (prompts IA et sorties IA) via partenaires d'intégration. + * **Meeting Notes :** opt-out workspace (`Workspace availability`), consentement audio imposable, partage automatique avec les participants internes, base de données par défaut, **suppression automatique planifiée des transcriptions** (résumés et notes conservés, pages en *legal hold* exclues) ; `Store audio locally` désactivé par défaut (les 10 derniers enregistrements conservés sur l'appareil de l'enregistreur, seul habilité à les télécharger). + * **MCP (Enterprise) :** liste blanche des AI apps, `Disconnect All Users`, gestion via Okta, audit log. +7. **Conformité internationale :** **SOC 2 Type 2** (Notion AI inclus dans le périmètre), **ISO 27001, 27701, 27017, 27018**, **HIPAA** (avec BAA et fonctionnalités Enterprise, rendu possible par les API zéro-rétention des fournisseurs LLM), **BSI C5**, alignement **RGPD/CCPA** via MSA + DPA. Rapports disponibles sur demande via le Trust Center. +8. **Sous-traitants (Subprocessors) :** Notion utilise des LLM hébergés par Notion ainsi que par **Anthropic** et **OpenAI** ; embeddings générés via une **API OpenAI zéro-rétention**. AI Meeting Notes nomme explicitement : OpenAI, Anthropic, Fireworks, Baseten Labs, X.AI LLC, AssemblyAI Inc. Tout tiers traitant des données clients est publié sur la Subprocessor Page, avec notification préalable des nouveaux sous-traitants sur abonnement et revue annuelle (attestations, pentests, questionnaires). + +### Synthèse des durées de rétention audio (AI Meeting Notes) + +| Scénario | Rétention | +| --- | --- | +| Audio capté (desktop/navigateur) | Envoi direct aux sous-traitants (qui ne le stockent pas) ; copie locale temporaire supprimée après traitement ou sous **24 h** | +| Échec de traitement (desktop/navigateur) | Upload serveurs Notion conservé **jusqu'à 3 jours** | +| Mobile | Audio uploadé chez Notion puis transmis aux sous-traitants ; suppression immédiate après succès, copie locale sous **1 jour** ; échec : **3 jours** (serveur) / **1 semaine** (local) | +| Fichiers uploadés par l'utilisateur | Conservés jusqu'à suppression manuelle (`Delete audio` / `Delete video`) ou suppression de la page | +| Enterprise | Suppression automatique planifiée des transcriptions (résumés conservés, *legal hold* exclu) | + +--- + +## 7. Sources Officielles + +Documentation consultée le 5 septembre 2026 : + +* Notion Agent : https://www.notion.com/help/notion-agent +* Guides Notion AI for docs : https://www.notion.com/help/guides/notion-ai-for-docs +* Research Mode : https://www.notion.com/help/research-mode +* Enterprise Search : https://www.notion.com/help/enterprise-search — https://www.notion.com/product/enterprise-search +* AI Meeting Notes : https://www.notion.com/help/ai-meeting-notes — https://www.notion.com/product/ai-meeting-notes +* AI Autofill (Notion AI for databases) : https://www.notion.com/help/autofill +* Propriétés de bases de données : https://www.notion.com/help/database-properties +* Custom Agents : https://www.notion.com/help/custom-agents — https://www.notion.com/product/agents +* Connecteurs IA : https://www.notion.com/help/notion-ai-connectors +* FAQ Notion AI : https://www.notion.com/help/notion-ai-faqs +* Modèles premium & crédits : https://www.notion.com/help/manage-ai-models-and-member-credit-spend +* MCP (guide développeur) : https://developers.notion.com/guides/mcp/get-started-with-mcp — https://developers.notion.com/guides/mcp/mcp-supported-tools +* MCP (Help Center) : https://www.notion.com/help/notion-mcp +* Sécurité de Notion AI : https://www.notion.com/help/notion-ai-security-practices +* Sécurité Notion (conformité) : https://www.notion.com/security