Turns any article into a structured Notion note

Youhou, on a enfin construit un workflow fonctionnel qui transforme n’importe quel article en une note Notion structurée — voici ce qui a vraiment fait la différence :

On lit beaucoup - et on garde presque rien.

Pas parce qu’on ne veut pas — parce que l’écart entre « c’est intéressant » et « c’est organisé et retrouvable plus tard » a toujours été juste assez grand pour qu’on l’ignore. Les signets du navigateur sont devenus un cimetière. Les applications de lecture ultérieure sont devenues un cimetière plus grand.

Donc on a construit quelque chose pour combler cet écart.


L’idée est simple

Envoyer une URL. Obtenir une note Notion structurée. Ne plus y penser.

En pratique : un webhook reçoit l’URL, le workflow récupère la page, un nœud Code la réduit au contenu lisible, OpenAI la résume en JSON structuré, et Notion l’enregistre avec titre, résumé, points clés, tags, URL source et date — tout mappé automatiquement aux bonnes propriétés.

Webhook → HTTP Request → Code Node → OpenAI → Notion


Ce qui fait vraiment marcher le truc

La version initiale allait directement de HTTP Request à OpenAI. Les résumés étaient médiocres et le coût était élevé. Ça a pris du temps de comprendre pourquoi.

Une page web typique n’est pas un article. C’est un article enfoui dans 30 000 à 80 000 tokens de HTML de navigation, de paquets de scripts, de banneau de cookies, de pixels de suivi et de noms de classes CSS. Le modèle dépensait la plupart de sa fenêtre contextuelle sur du bruit.

La solution est trois remplacements regex et une substring dans un nœud Code :

const input = $input.first().json;
const html = input.data || input.body || input.html || input;

const text = String(html)
  .replace(/<script[\s\S]*?<\/script>/gi, ' ')
  .replace(/<style[\s\S]*?<\/style>/gi, ' ')
  .replace(/<[^>]+>/g, ' ')
  .replace(/\s+/g, ' ')
  .trim()
  .substring(0, 8000);

return [{ json: { text, url: $('Webhook').item.json.body.url } }];

Supprime d’abord les scripts, puis les styles, puis toutes les balises restantes, réduit l’espace blanc, tronque à 8 000 caractères. Fait passer la charge utile d’environ 60K tokens à moins de 4K. Le modèle ne voit que ce qui importe. Les résumés se sont améliorés. Le coût a baissé significativement.


Le prompt

Summarize this article as a research note. Return JSON:
{"title":"","summary":"","key_insights":[],"tags":[]}

Text: {{ $json.text }}

Le mode de sortie JSON est activé dans les paramètres du nœud. Le nœud Notion mappe directement aux champs sans étape d’analyse nécessaire.


Ce qui se retrouve dans Notion

Six propriétés par note — Titre, Résumé, Points clés (format à puces), Tags (sélection multiple), URL, Date d’enregistrement. Assez propre pour être réellement utilisable plus tard.


Deux choses à savoir avant de le lancer

Certains sites bloquent les requêtes automatisées. Ajouter User-Agent: Mozilla/5.0 en en-tête sur le nœud HTTP Request et la plupart de ces 403 disparaissent.

Les SPA lourds en JavaScript renvoient du HTML vide sans contenu — la page se rend côté client après le chargement. Pour ceux-là, je passe d’abord l’URL par un service de lecture ultérieure pour obtenir le texte rendu, puis j’envoie ça au webhook à la place.


Le JSON sera partagé, n’hésitez pas à répondre. La seule chose à mettre à jour est l’ID de la base de données Notion dans le nœud Notion — prenez-le de votre URL de base de données. Partagez la base de données avec votre intégration n8n avant de tester ou l’écriture échouera silencieusement.

Content de répondre aux questions sur n’importe quelle partie de la construction.


Tags: show-and-tell knowledge-management notion openai webhook code-node productivity

1 « J'aime »

Welcome @Wireless_Man to our community! I’m Jay and I am a n8n verified creator.

The framing you used here - “bookmarks became a graveyard, read-later apps became a longer graveyard” - nails exactly why most capture tools fail. Solving that at the workflow level instead of relying on another app is the right approach. The combination of Code node for content stripping + OpenAI for structuring before pushing to Notion is a solid pattern that’s easy to extend with tags or custom properties later.