Turns any article into a structured Notion note

Yaay, finalmente construimos un flujo de trabajo funcional que convierte cualquier artículo en una nota estructurada de Notion — aquí está lo que realmente funcionó:

Leemos mucho - y guardamos casi nada.

No porque no queramos — porque la brecha entre “esto es interesante” y “esto está organizado y es fácil de encontrar después” siempre ha sido lo suficientemente grande como para saltárnosla. Los marcadores del navegador se convirtieron en un cementerio. Las aplicaciones de lectura posterior se convirtieron en un cementerio más largo.

Así que construimos algo para cerrar esa brecha.


La idea es simple

Envía una URL. Obtén una nota estructurada de Notion. Nunca vuelvas a pensar en ello.

En la práctica: un webhook recibe la URL, el flujo de trabajo obtiene la página, un nodo Code la reduce a contenido legible, OpenAI la resume en JSON estructurado, y Notion la guarda con título, resumen, insights clave, etiquetas, URL de origen y fecha — todo mapeado a las propiedades correctas automáticamente.

Webhook → HTTP Request → Code Node → OpenAI → Notion


Lo que realmente lo hace funcionar

La versión inicial iba directo de HTTP Request a OpenAI. Los resúmenes eran mediocres y el costo era alto. Tardó un tiempo en descubrir por qué.

Una página web típica no es un artículo. Es un artículo enterrado dentro de 30,000 a 80,000 tokens de HTML de navegación, bundles de scripts, banners de cookies, píxeles de rastreo y nombres de clases CSS. El modelo estaba gastando la mayor parte de su ventana de contexto en ruido.

La solución son tres reemplazos regex y una substring en un nodo 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 } }];

Elimina scripts primero, luego estilos, luego todas las etiquetas restantes, colapsa espacios en blanco, trunca a 8,000 caracteres. Reduce el payload de ~60K tokens a menos de 4K. El modelo solo ve lo que importa. Los resúmenes mejoraron. El costo bajó significativamente.


El prompt

Resume este artículo como una nota de investigación. Devuelve JSON:
{"title":"","summary":"","key_insights":[],"tags":[]}

Text: {{ $json.text }}

El modo de salida JSON está habilitado en la configuración del nodo. El nodo de Notion se mapea directamente a los campos sin necesidad de un paso de análisis.


Lo que llega a Notion

Seis propiedades por nota — Título, Resumen, Insights Clave (formato de viñetas), Etiquetas (selección múltiple), URL, Fecha de Guardado. Lo suficientemente limpio para ser útil después.


Dos cosas que vale la pena saber antes de ejecutarlo

Algunos sitios bloquean solicitudes automatizadas. Añade User-Agent: Mozilla/5.0 como encabezado en el nodo HTTP Request y la mayoría de esos 403 desaparecerán.

Las SPA pesadas en JavaScript devuelven HTML de shell sin contenido — la página se renderiza en el cliente después de cargar. Para esos casos, envío la URL a través de un servicio de lectura posterior primero para obtener el texto renderizado, y luego envío eso al webhook en su lugar.


Se compartirá el JSON, siéntete libre de responder. Lo único que necesitas actualizar es el ID de la base de datos de Notion en el nodo Notion — obtén el ID de la URL de tu base de datos. Comparte la base de datos con tu integración de n8n antes de probar o la escritura fallará silenciosamente.

Estoy feliz de responder preguntas sobre cualquier parte de la construcción.


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

1 me gusta

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.