
創作靈感如果你只想了解具體實現步驟可以直接跳過這部分背景介紹直接查看后面的實現環節。最近嘗試使用了 Dify想探索能否自己搭建一個工具流。雖然效果可能不如專業的訂閱工具但可以作為一次實踐和探索。因此我構建了這個使用 Dify 對話獲取新聞的流程歡迎對 Dify 玩法感興趣的朋友一起交流。最初我參考了他人編寫的代碼但在運行過程中發現其中存在一些函數語法錯誤于是決定重新搭建整個流程。環境Dify Docker OllamaOllama 本地模型并非必需可以省略大模型解讀步驟直接輸出結果或者替換為線上模型。最后我會提供原始文件只要 Dify 能夠正常運行流程即可順利執行。效果步驟創建一個新空白應用設置用戶輸入點擊第一步編輯字段選擇下拉用戶下拉選項選擇哪個平臺的新聞新建條件分支點擊用戶輸入的號。根據用戶的選項做不同處理添加rss路由點擊條件分支的加號選擇工具找到rssHub訂閱這個在首頁-集成-工具里面安裝填寫頂級域名到.com再填地址后面的/../..獲取消息條數運行看下能不能請求到數據返回格式基本長這樣如果不長這樣也沒關系先拿數據后面再說同理在條件分類的else第二個添加另一個rss訂閱最好改個名字區分一下點擊編輯框自定義路由填寫新名字聯合早報rss地址#https://plink.anyfeeder.com/zaobao/realtime/china代碼執行目的將請求到的數據通過python或JavaScript解析成markdown格式添加兩個變量代表接收到的兩個rss訂閱數據格式選擇json填寫python代碼輸出變量名字填寫下不填使用默認也可以后面基本能分辨python怎么寫將路由執行后的數據復制出來到Qwen或其他大模型問答里面輸入幫我編寫python函數這是一段rss新聞數據示例要求將這段json數據使用python語法轉化為markdown形式輸出。這是一個變量的情況也就是一個rss數據情況那多個怎么辦需要做判斷再加上有幾個數據例如5個rss數據那就寫幫我編寫python函數有5個變量傳入每個變量是一段rss新聞數據要求判斷這5個變量是否有值將有值的數據使用python語法轉化為markdown形式輸出。我這寫2個rss數據為例多個你就在輸入變量那里添加多個變量arg1,arg2,agr3...并且改下python代碼preimport json from datetime import datetimedef main(arg1None, arg2None): # 判斷參數1是否有效不為None if arg1 is not None: data arg1 # 參數1無效判斷參數2 elif arg2 is not None: data arg2 # 都無效賦值空數組 else: data []# 1. 若傳入字符串嘗試解析為 JSON if isinstance(data, str): try: data json.loads(data) except json.JSONDecodeError: raise ValueError(輸入字符串不是有效的 JSON) # 2. 兼容字典或列表 if isinstance(data, dict): sections data.get(json, []) elif isinstance(data, list): sections data else: raise TypeError(輸入必須是字典、列表或 JSON 字符串) markdown_lines [] markdown_lines.append(# 即時新聞精選\n) markdown_lines.append(gt; 【免責聲明】本平臺 / 程序僅通過公開 RSS 訂閱協議抓取第三方公開資訊標題、摘要、簡介全文版權歸屬原文作者與發布平臺。\n1.所有內容僅用于個人閱覽、信息整理、非商用學習參考\n2.每條內容均標注來源出處與原文直達鏈接不私自篡改、轉載全文\n3.若權利人發現內容不當展示可聯系我方收到通知后 24 小時內下架對應內容。\n我方不享有任何第三方內容著作權不承擔內容侵權連帶責任。\n) markdown_lines.append(---\n) for section in sections: section_title section.get(title, 新聞匯總) markdown_lines.append(f## {section_title}\n) markdown_lines.append(f*數據源{section.get(url, )}*\n) markdown_lines.append(---\n) entries section.get(entries, []) for idx, entry in enumerate(entries, 1): title entry.get(title, 無標題) link entry.get(link, #) published entry.get(published, ) content entry.get(content, ) try: dt datetime.strptime(published, %Y-%m-%d %H:%M:%S) time_str dt.strftime(%Y年%m月%d日 %H:%M) except: time_str published markdown_lines.append(f### {idx}. [{title}]({link})\n) markdown_lines.append(f **發布時間** {time_str}\n) if content: clean_content .join(content.split()) summary clean_content[:200] ... if len(clean_content) gt; 200 else clean_content markdown_lines.append(f {summary}\n) else: markdown_lines.append( *無內容摘要*\n) markdown_lines.append(---\n) markdown_lines.append(\n? *以上信息由聯合早報 RSS 提供僅供參考。* ?) markdown_output \n.join(markdown_lines) # 3. 返回字典根據要求可修改鍵名 return {markdown: markdown_output}/code/pre路由執行的數據格式在這里交給大模型幫你寫python轉化markdown代碼大模型解讀對數據進行分析可以忽略選擇直接回復也可以提示詞如下第3步內容你是結構化新聞信息提取助手 輸入素材為《即時新聞》RSS 新聞合集需要逐條拆解新聞只需對.markdown每項內容進行解讀解讀內容50-80字并將解讀內容添加到每項的鍵:解讀中 輸出時原markdown格式保留不要省略每項的內容不要刪減內容 最后統一輸出markdown格式試運行看下推理效果直接回復最后輸出。預覽效果隨便輸入內容發送如果格式是這樣就基本可以發布了有用的話幫我點個贊謝謝end