今天的核心任務是獲取新聞的完整內容並將其與標題、連結合併。我們將使用 HTTP Request
節點來取得新聞頁面的原始碼,並用 Code
節點來提取乾淨的內文。最後,我們會使用一個關鍵的 Merge
節點,來確保所有必要的資料都能被整合在一起,為最終的篩選做好準備。
在 Code(RSS URL)
節點後新增 RSS Read
節點。
上一個節點會根據訂閱者的訂閱主題輸出相對應的 RSS URL,RSS Read
就會回傳該主題的 RSS URL。
再來就是和之前丟去給 AI 摘要的節點一樣,先取得新聞連結,再提取內文。
可以直接去之前那個工作流複製箭頭處兩個節點:
Http Request (get link)節點的內容是完全一樣的,如下圖所示:
這個節點我們需要做一些更動,Code (html)
節點程式碼輸入:
const html = $json["html"] || "";
const paragraphs = [...html.matchAll(/<p>([\s\S]*?)<\/p>/gs)]
.map(p =>
p[1]
.replace(/<[^>]+>/g, '') // 去掉 HTML 標籤
.trim()
)
.filter(t => !/本網站之文字、圖片及影音/i.test(t));
const cleanedText = paragraphs.join(' ');
return {
json: {
title: $json.title,
link: $json.link,
cleanedContent: cleanedText,
keyword: $json.keyword,
userId: $json.userId
}
};
這個節點的 Mode 要記得選擇 Run Once for Each Item,才能確保程式碼能夠正確且獨立地處理每一則新聞的 HTML 內容。
當初做最小可行的 AI News Bot 用到的 Code (html)
節點和這次節點的差別只有回傳的內容不一樣,功能不一樣,用到的欄位不一樣,輸出的內容當然也有不同。
因為我們的新聞標題和連結都是在前面的 RSS Read
節點輸出的,而中間卡了一個 Http Request (get link)
節點,我們要用一個 Merge
節點來合併輸出欄位。
這個節點會讓在 RSS Read
節點中輸出的「title」、「link」欄位和 Http Request (get link)
節點輸出的「html」內容合併在一起,且用 Combine By Position 的模式能夠確保 title
和 link
,與內文依照原本的順序進行一對一的資料合併。
做到這邊已經是我們關鍵字搜索功能的2/3了,AI News Bot 的功能逐漸多樣,能滿足使用者更多的需求。
明天(Day 20)我們會將「關鍵字搜索」這部分做完,屆時會有成果展示。