Turns any article into a structured Notion note

太好了,我們終於建立了一個功能完整的工作流程,能將任何文章轉換成結構化的 Notion 筆記 — 以下是真正奏效的原因:

我們閱讀很多 — 但幾乎沒有保存任何東西。

不是因為我們不想 — 而是因為「這很有趣」和「這已整理好並在之後能找到」之間的差距始終大到足以讓人跳過。瀏覽器書籤變成了墓地。稍後閱讀應用程式變成了更大的墓地。

所以我們建立了一些東西來縮小這個差距。


想法很簡單

傳送一個 URL。獲得一個結構化的 Notion 筆記。之後就不用再想它了。

實際上:webhook 接收 URL,工作流程擷取頁面,Code 節點將其簡化為可讀內容,OpenAI 將其總結為結構化 JSON,Notion 將其保存為標題、摘要、關鍵見解、標籤、來源 URL 和日期 — 所有內容都自動映射到正確的屬性。

Webhook → HTTP Request → Code Node → OpenAI → Notion


真正讓它奏效的東西

早期版本直接從 HTTP Request 進入 OpenAI。摘要平庸,成本高昂。花了一段時間才弄清楚為什麼。

典型的網頁不是文章。它是一篇文章埋在 30,000~80,000 個標記的導航 HTML、指令碼組合、Cookie 橫幅、追蹤像素和 CSS 類別名稱中。該模型把大部分語境視窗花在了噪音上。

修復方法是 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 } }];

先刪除指令碼,然後是樣式,然後是所有剩餘標籤,摺疊空白區域,截斷到 8,000 個字元。將承載量從 ~60K 標記降低到 4K 以下。該模型只會看到重要的內容。摘要變得更好。成本大幅下降。


提示

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

Text: {{ $json.text }}

JSON 輸出模式在節點設定中啟用。Notion 節點直接映射到欄位,無需解析步驟。


進入 Notion 的內容

每個筆記六個屬性 — 標題、摘要、關鍵見解(項目符號格式)、標籤(多選)、URL、保存日期。足夠乾淨,之後實際上可以使用。


在執行之前值得了解的兩件事

有些網站會封鎖自動化請求。在 HTTP Request 節點上新增 User-Agent: Mozilla/5.0 作為標頭,大多數 403 就會消失。

以 JavaScript 為主的 SPA 返回不含內容的殼層 HTML — 頁面在載入後以用戶端方式呈現。對於這些,我先將 URL 推送到稍後閱讀服務以獲取呈現的文字,然後改為將其傳送到 webhook。


JSON 將被分享,歡迎回復。唯一需要更新的是 Notion 節點中的 Notion 資料庫 ID — 從您的資料庫 URL 中擷取。在測試前與您的 n8n 整合分享資料庫,否則寫入將失敗並無聲息地失敗。

很樂意回答關於此建置任何部分的問題。


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

1個讚

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.