当前位置: 首页 > news >正文

dify实现rss新闻订阅

创作灵感

如果你只想了解具体实现步骤,可以直接跳过这部分背景介绍,直接查看后面的实现环节。

最近尝试使用了 Dify,想探索能否自己搭建一个工具流。虽然效果可能不如专业的订阅工具,但可以作为一次实践和探索。因此,我构建了这个使用 Dify 对话获取新闻的流程,欢迎对 Dify 玩法感兴趣的朋友一起交流。

最初我参考了他人编写的代码,但在运行过程中发现其中存在一些函数语法错误,于是决定重新搭建整个流程。

环境

Dify + Docker + Ollama

Ollama 本地模型并非必需,可以省略大模型解读步骤,直接输出结果,或者替换为线上模型。最后我会提供原始文件,只要 Dify 能够正常运行,流程即可顺利执行。

效果

步骤

  1. 创建一个新空白应用
  2. 设置用户输入
    点击第一步,编辑字段,选择下拉,用户下拉选项选择哪个平台的新闻
  3. 新建条件分支
    点击用户输入的+号。根据用户的选项做不同处理
  4. 添加rss路由
    点击条件分支的加号,选择工具,找到rssHub订阅(这个在首页-集成-工具里面安装)


    填写顶级域名(到.com),再填地址后面的(/../..),获取消息条数

    运行看下能不能请求到数据,返回格式基本长这样(如果不长这样也没关系,先拿数据后面再说)

    同理在条件分类的else第二个+添加另一个rss订阅,最好改个名字区分一下,点击编辑框自定义路由,填写新名字
    联合早报rss地址#https://plink.anyfeeder.com
    /zaobao/realtime/china

  5. 代码执行
    目的将请求到的数据通过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代码
    <pre>

    import json from datetime import datetime

    def main(arg1=None, arg2=None): # 判断参数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代码

  6. 大模型解读
    对数据进行分析,(可以忽略,选择直接回复也可以)


    提示词如下(第3步内容):
    你是结构化新闻信息提取助手 输入素材为《即时新闻》RSS 新闻合集,需要逐条拆解新闻,只需对.markdown每项内容进行解读,解读内容50-80字,并将解读内容添加到每项的键:"解读"中 输出时原markdown格式保留,不要省略每项的内容,不要删减内容 最后统一输出markdown格式;

    试运行看下推理效果

  7. 直接回复
    最后输出。
  8. 预览效果
    随便输入内容,发送

    如果格式是这样就基本可以发布了

    有用的话帮我点个赞谢谢

    end
http://www.cnnetsun.cn/news/3884680.html

相关文章:

  • 数据集格式转化 xml转换txt xml转换txt 转换代码示例参考 VOC(xml)格式如何转换yolo(txt )格式 (1)
  • 面试Leetcode - Graph
  • 2026最新视频重点整理工具口碑推荐 | 经过筛选的实用选择建议
  • 寻找靠谱的阜南网站建设公司指南:如何避免踩坑并打造高转化官网
  • 分式函数值域求解全攻略:四大核心方法与实战避坑指南
  • 母线槽绝缘与外壳系统解析:阻燃绝缘层、铝合金外壳、防护等级工程选型
  • Socket网络编程核心:TCP与UDP协议原理、Go实战与生产环境指南
  • 基于Phi-4架构的多模态推理模型训练实战:从视觉对齐到逻辑推理
  • Spring Boot多模块项目Bean类型冲突:非ASCII模块名引发的类加载器问题解析
  • 基于AI Agent的智能问卷系统:架构设计与高校调研实践
  • 戴尔iDRAC邮箱告警配置全攻略:从SMTP设置到故障排查
  • SIMPACK 2021x在Ubuntu系统上的完整安装与配置指南
  • NAND与NOR Flash坏块管理全解析:从物理原理到工程实践
  • Unity光照原理:从CPU到GPU的数据传递链
  • 第 13 篇 高频SQL优化:深分页、count(*)、filesort 与 join 算法
  • 第 14 篇 主从复制与读写分离:binlog 格式、主从延迟的成因与应对
  • 深入解析Broadcom交换芯片:架构、编程与数据中心应用实践
  • Windows终极卸载指南:彻底移除Microsoft Edge的完整解决方案
  • 阿里云域名注册与解析全流程指南:从查询到配置实战
  • 黄岛网站建设多少钱?揭秘2024年青岛黄岛区企业官网定制的真实价格内幕与避坑指南
  • Ventoy与云固件深度解析:从多系统启动到云端固件架构
  • 如何实现TEMU自动化上架自动化?20核并发不抢焦,单机跑通百店零报错
  • AI Agent性能优化实战:从15秒到2.6秒的响应速度提升
  • 基于改进BOXINST的数字识别算法研究
  • JMeter分布式压测实战:从原理到部署,突破单机瓶颈
  • 哈尔滨网站建设制作哪家好:揭秘本地优质服务商的选择逻辑与避坑指南
  • 以智能为翼,解锁高效生活新范式
  • 揭秘专业网站建设最便宜的真正逻辑与避坑指南,中小企业如何利用低成本实现高回报数字化转型
  • STM32寄存器编程入门:从GPIO原理到底层点灯实战
  • VS Code GitHub Copilot 插件中接入DeepSeek API key