
创作灵感如果你只想了解具体实现步骤可以直接跳过这部分背景介绍直接查看后面的实现环节。最近尝试使用了 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