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