Turns any article into a structured Notion note

Uau, finalmente construímos um fluxo funcional que transforma qualquer artigo em uma nota estruturada no Notion — aqui está o que realmente fez funcionar:

Lemos muito - e salvamos quase nada.

Não porque não queiramos — porque o gap entre “isso é interessante” e “isso está organizado e é encontrável depois” sempre foi grande o suficiente para pularmos. Bookmarks do navegador viraram um cemitério. Apps de read-later viraram um cemitério ainda maior.

Então construímos algo para fechar esse gap.


A ideia é simples

Envie uma URL. Receba uma nota estruturada no Notion. Nunca mais pense nisso.

Na prática: um webhook recebe a URL, o fluxo busca a página, um nó Code reduz isso a conteúdo legível, OpenAI resume em JSON estruturado, e Notion salva com título, resumo, principais insights, tags, URL da fonte e data — tudo mapeado automaticamente para as propriedades corretas.

Webhook → HTTP Request → Code Node → OpenAI → Notion


A coisa que realmente faz funcionar

A versão inicial ia direto de HTTP Request para OpenAI. Os resumos eram mediocres e o custo era alto. Demorou um pouco para descobrir o porquê.

Uma página web típica não é um artigo. É um artigo enterrado dentro de 30.000–80.000 tokens de HTML de navegação, pacotes de script, banners de cookie, pixels de rastreamento e nomes de classe CSS. O modelo estava gastando a maior parte da sua janela de contexto em ruído.

A solução é três substituições regex e um substring em um nó 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 } }];

Remove scripts primeiro, depois estilos, depois todas as tags restantes, colapsa espaços em branco, trunca para 8.000 caracteres. Reduz o payload de ~60K tokens para menos de 4K. O modelo só vê o que importa. Os resumos melhoraram. O custo caiu significativamente.


O prompt

Resuma este artigo como uma nota de pesquisa. Retorne JSON:
{"title":"","summary":"","key_insights":[],"tags":[]}

Texto: {{ $json.text }}

O modo de saída JSON está ativado nas configurações do nó. O nó Notion mapeia diretamente para os campos sem necessidade de uma etapa de parsing.


O que cai no Notion

Seis propriedades por nota — Título, Resumo, Principais Insights (formatado em bullets), Tags (multi-seleção), URL, Data Salva. Limpo o suficiente para realmente usar depois.


Duas coisas que vale saber antes de rodar isso

Alguns sites bloqueiam requisições automatizadas. Adicione User-Agent: Mozilla/5.0 como header no nó HTTP Request e a maioria desses 403s desaparece.

SPAs pesadas em JavaScript retornam HTML de shell sem conteúdo — a página renderiza no lado do cliente após o carregamento. Para essas, eu envio a URL através de um serviço de read-later primeiro para obter o texto renderizado, depois envio isso para o webhook em vez disso.


JSON será compartilhado, fique livre para responder. A única coisa a atualizar é o ID do banco de dados Notion no nó Notion — pegue da URL do seu banco de dados. Compartilhe o banco de dados com sua integração n8n antes de testar ou a escrita falhará silenciosamente.

Feliz em responder perguntas sobre qualquer parte da construção.


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

1 curtida

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.