跳到內容

系統內建 AtomCraft

FeedCraft 內建了一系列「原子工藝 (AtomCrafts)」,用於對訂閱源進行特定的處理。你可以將這些原子工藝組合成「組合工藝 (FlowCraft)」來構建強大的數據管道。

這些原子主要用於獲取全文或修復常見的訂閱源問題。

從原始網頁提取文章的全文內容。

  • 適用場景: 當 RSS 訂閱源僅提供摘要或片段時。
  • 機制: 使用標準 HTTP 用戶端請求網頁,並使用演算法提取正文。速度快且輕量。

使用無頭瀏覽器 (Puppeteer) 提取全文。

  • 適用場景: 針對透過 JavaScript 動態渲染內容或有較強反爬蟲措施的網站。
  • 機制: 連線到配置的 Browserless/Puppeteer 服務來渲染頁面。速度較慢但相容性更強。
  • 參數:
    • mode (預設: networkidle2): 頁面載入等待模式。
      • load: 等待 load 事件。
      • domcontentloaded: 等待 DOMContentLoaded 事件。
      • networkidle0: 等待直到 500ms 內沒有活躍的網絡連線。
      • networkidle2: 等待直到 500ms 內活躍的網絡連線數不超過 2 個。(推薦用於 SPA 單頁應用)。
    • wait (預設: 0): 顯式等待時間(秒),例如 5

簡單的訂閱源代理。

  • 適用場景: 當你只想轉發原始 Feed 而不做修改,或者將 FeedCraft 作為中心閘道使用時。

使用文章內容的 MD5 哈希值替換 RSS 條目的 GUID。

  • 適用場景: 某些訂閱源在內容未變更的情況下頻繁更改 GUID,導致閱讀器中出現重複的未讀條目。此原子可基於內容穩定 GUID。

將內容中的相對連結(如 <a href="/about">)轉換為絕對連結(如 <a href="https://example.com/about">)。

  • 適用場景: 提取全文後必不可少,否則在 RSS 閱讀器中查看時連結會失效。

清理 HTML 內容以去除雜亂資訊。

  • 適用場景: 透過移除多餘的 class、style 和空標籤來提高可讀性。

控制哪些條目可以進入最終生成的 Feed。

限制 Feed 中的條目數量。

  • 參數:
    • num (預設: 10): 保留的最大條目數。

過濾掉超過指定天數的條目。

  • 參數:
    • days (預設: 7): 文章保留的最大天數。

根據標題或內容中的關鍵詞進行過濾。

  • 參數:
    • keywords: 逗號分隔的關鍵詞列表(子串匹配,區分大小寫)。例如:ad,sell,SALE
    • mode: include (保留匹配項,預設) 或 exclude (移除匹配項)。
    • scope: title (標題), content (內容), 或 all (全部,預設)。

使用大語言模型 (LLM) 來轉換和豐富你的內容。

將文章標題翻譯為你的目標語言。

  • 參數:
    • prompt: 自定義提示詞。預設使用標準翻譯提示詞。支援 {{.TargetLang}} 佔位符。

翻譯整篇文章內容,替換原文。

  • 參數:
    • prompt: 自定義提示詞。支援 {{.TargetLang}}

translate-content-immersive (沉浸式翻譯)

Section titled “translate-content-immersive (沉浸式翻譯)”

雙語翻譯模式。在每一段原文後面追加翻譯後的內容。

  • 參數:
    • prompt: 自定義提示词。

生成文章摘要並將其添加到正文開頭。

  • 參數:
    • prompt: 用於生成摘要的自定義提示詞。

為文章生成簡短的介紹或導語。

  • 參數:
    • prompt: 自定義提示詞。

使用 LLM 重新格式化文章,修復排版錯誤,去除廣告,並標準化 Markdown 格式,最後轉換回乾淨的 HTML。

  • 參數:
    • prompt: 設定「編輯」角色的指令。

利用語義理解進行進階過濾。

使用 LLM 檢測文章是否為軟文或廣告,並將其移除。

  • 參數:
    • prompt-for-exclude: 如果文章是廣告,應返回 true 的提示詞。

通用的 LLM 過濾器。你可以定義排除條件。

  • 参数:
    • filter_condition: 自然語言描述的條件。如果 LLM 回答 “yes” (true),則該條目會被移除
    • 示例: “這篇文章是關於體育的嗎?” (移除體育類文章)。