华为云Flexus+DeepSeek征文|基于Dify构建抓取金融新闻并发送邮箱工作流
- 一、构建抓取金融新闻并发送邮箱工作流前言
- 二、构建抓取金融新闻并发送邮箱工作流环境
- 2.1 基于FlexusX实例的Dify平台
- 2.2 基于MaaS的模型API商用服务
- 三、构建抓取金融新闻并发送邮箱工作流实战
- 3.1 配置Dify环境
- 3.2 配置Dify工具
- 3.3 创建抓取金融新闻并发送邮箱工作流
- 3.4 使用抓取金融新闻并发送邮箱工作流
- 四、总结
一、构建抓取金融新闻并发送邮箱工作流前言
在信息爆炸的金融领域,实时获取精准资讯是投资者和从业者的核心需求。通过Dify工作流搭建自动化新闻抓取系统,可高效聚合The Daily Upside
、Edward Jones
等权威平台的关键信息,结合大语言模型提炼核心要点,还可以翻译为中文,最终通过邮件定时推送,实现从数据采集到智能分发的全链路闭环。
华为Flexus X云服务器
与MaaS平台
的核心优势在于:Flexus X提供100+种CPU/内存柔性配比(如1:3、3:7),结合X-Turbo加速技术使MySQL/Redis等关键应用性能达业界6倍,显著降低新闻处理延迟;MaaS平台集成盘古大模型及30+预置模型,支持金融摘要一键生成与敏感内容拦截(拦截率90%+),并通过智能调度实现资源成本优化30%;双平台协同保障99.995%跨可用区高可用性,为工作流提供安全可靠的全链路支撑。
二、构建抓取金融新闻并发送邮箱工作流环境
2.1 基于FlexusX实例的Dify平台
华为云FlexusX实例
提供高性价比的云服务器,按需选择资源规格、支持自动扩展,减少资源闲置,优化成本投入,并且首创大模型QoS保障,智能全域调度,算力分配长稳态运行,一直加速一直快,用于搭建Dify-LLM应用开发平台。
Dify是一个能力丰富的开源AI应用开发平台
,为大型语言模型(LLM)应用的开发而设计。它巧妙地结合了后端即服务(Backend as Service)和LLMOps的理念,提供了一套易用的界面和API,加速了开发者构建可扩展的生成式AI应用的过程。
参考:华为云Flexus+DeepSeek征文 | 基于FlexusX单机一键部署社区版Dify-LLM应用开发平台教程
2.2 基于MaaS的模型API商用服务
MaaS预置服务的商用服务为企业用户提供高性能、高可用的推理API服务,支持按Token用量计费的模式。该服务适用于需要商用级稳定性、更高调用频次和专业支持的场景。
参考:华为云Flexus+DeepSeek征文 | 基于ModelArts Studio开通和使用DeepSeek-V3/R1商用服务教程
三、构建抓取金融新闻并发送邮箱工作流实战
3.1 配置Dify环境
输入管理员的邮箱和密码,登录基于FlexusX部署好的Dify网站
将MaaS平台的模型服务接入Dify,这里我们选择的是DeepSeek R1商用服务
,需要记住调用说明中的接口信息
和 API Key 管理中API Key
,若没有可以重新创建即可
配置Dify模型供应商:设置 - 模型供应商 - 找到OpenAI-API-compatible
供应商并单击添加模型
,在添加 OpenAI-API-compatible对话框,配置相关参数,然后单击保存
参数 | 说明 |
---|---|
模型类型 | 选择LLM 。 |
模型名称 | 填入模型名称。 |
API Key | 填入创建的API Key。 |
API Endpoint URL | 填入获取的MaaS服务的基础API地址,需要去掉地址尾部的“/chat/completions”后填入 |
3.2 配置Dify工具
1. Firecrawl
Firecrawl 是一个强大的 API 集成,用于网络爬虫和数据抓取。它允许用户提取 URL、抓取网站内容以及从网页中检索结构化数据。凭借其模块化工具,Firecrawl 简化了有效收集 Web 数据的过程。现在,您可以在应用程序工作流中使用它来自动提取和分析 Web 数据。
进入 Firecrawl API 密钥 页面,创建新的 API 密钥,默认是有一个 API Key
的
并确保您的账户余额充足,默认是有500额度的,测试发现可以运行500次爬虫操作,还是很够用的,似乎和爬取的数据量无关
访问 Plugin Marketplace,找到 Firecrawl 工具,然后安装它
授权 Firecrawl:导航到 Plugins > Firecrawl > To Authorize in Dify,然后输入您的 API 密钥以启用该工具
授权成功后,我们就可以将 Firecrawl 节点添加到 Chatflow 或 Workflow 管道用于网页爬取和数据抓取了
2. 163SMTP邮件发送
用于发送邮件的工具,使用 smtp.163.com 的电子邮件服务而不进行任何数据处理,可以使用多个电子邮件收件人。
开启 SMTP 服务并获取授权码,登录 网易邮箱,打开设置 - POP3/SMTP/IMAP,开启 SMTP 服务
,再授权密码管理中新增授权密码即可,注意只能查看一次,需要复制保存
访问 Plugin Marketplace,找到 163SMTP邮件发送
工具,然后安装它
使用此工具,需要输入以下参数,邮箱用户名、授权码、收件人邮箱、主题和内容,稍后就会使用此工具发送爬取的金融新闻
3.3 创建抓取金融新闻并发送邮箱工作流
在 Dify - 工作室,创建空白应用,选择工作流,输入应用名称和图标,点击创建
删除其他默认节点,在开始节点
后添加一个代码执行
节点,用于构建我们需要的时间格式:"tduDate": "tdu-june-23-2025"
,代码参考如下
function main() {const date = new Date(new Date().toLocaleString("en-US", {timeZone: "Asia/Shanghai"}));date.setDate(date.getDate());// Ensuring the month and day are always two digitsconst day = String(date.getDate()).padStart(2, '0');const month = String(date.getMonth() + 1).padStart(2, '0'); // getMonth() returns 0-11, so add 1const year = date.getFullYear();const monthNames = ["january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december"];const tduDate = `tdu-${monthNames[date.getMonth()]}-${day}-${year}`; // Updated lineconst mbDate = `${monthNames[date.getMonth()].toUpperCase().substring(0, 3)} ${date.getDate()}, ${date.getFullYear()}`;const ejDate = `${month}/${day}/${year}`; // Already updated in your codereturn {tduDate: tduDate,mbDate: mbDate,ejDate: ejDate};
}
再添加2个并行的 Firecrawl 节点,选择单页面爬取即可,分别用于爬取 DAILYUPSIDE 网站 和 EDWARD JONES 网站
在 DAILYUPSIDE 节点
中配置抓取的Url为:https://www.thedailyupside.com/newsletter/{{日期获取.tduDate#}}
,这里就用上了代码执行中构建的时间参数,再填入一些其他配置,如仅抓取这些标签、要移除这些标签
在 EDWARD JONES 节点
中配置抓取的Url为:https://www.edwardjones.com/us-en/market-news-insights/stock-market-news/daily-market-recap
,也填入一些要抓取和移除的标签参数
再接入LLM节点,分别解析2个爬虫得到信息,模型
都选用华为Maas通过的DeepSeek R1
模型,上下文
填入上一步 Firecrawl 的输出变量
DAILYUPSIDE REPORTER 系统提示词参考:
<instructions>
根据提供的Markdown英文新闻,你的任务是列出新闻并逐一进行总结。英文行文按照如下格式来提供,其中[Title], [Content], [NewsType]为占位符:
[NewsType(auto, economics, indicators, inflation)]\n
# [Title]
[Content]
以及
## Extra Upside
- **[Title]:** [Content]对于每一条新闻,你需要使用以下模板创建中文总结:标题:xxx
内容:xxx
\n\n---\n\n
标题:xxx
内容:xxx标题与内容应该为中文。并且标题应具有吸引力,并涵盖新闻中的三个要素:谁、何时、发生了什么。内容应是对新闻的概括性陈述。以下是需要遵循的步骤:1. 阅读提供的Markdown英文新闻。
2. 剔除最后有“\*”的“新闻”,因为该“新闻”是广告
2. 识别每条新闻中的关键要素:谁、何时、发生了什么。
3. 为每条新闻创建一个包含这些关键要素的吸引人的标题。
4. 撰写一条概括性陈述,总结每条新闻的内容。
5. 对于内容中提到关键数据、成果、举措或事件以及任何吸引眼的内容,通过markdown bold语法进行重点展示。请确保你的输出不包含任何XML标签。
</instructions>
EDWARD JONES REPORTER 系统提示词参考:
<instructions>
根据提供的Markdown英文新闻,你的任务是列出新闻并逐一进行总结。英文行文按照如下格式来提供,其中[Title], [Content], [NewsType]为占位符:
**[Date(Thursday, 01/30/2025 a.m.)]**\n\n
**[Title] –** [Content] ...对于每一条新闻,你需要使用以下模板创建中文总结:标题:xxx
内容:xxx
\n\n---\n\n
标题:xxx
内容:xxx标题与内容应该为中文。并且标题应具有吸引力,并涵盖新闻中的三个要素:谁、何时、发生了什么。内容应是对新闻的概括性陈述。以下是需要遵循的步骤:1. 请选择日期为{{#1739247876689.ejDate#}}的新闻进行阅读,不要阅读日期为其他事件的新闻内容。
2. 阅读提供的Markdown英文新闻。
3. 识别每条新闻中的关键要素:谁、何时、发生了什么。
4. 为每条新闻创建一个包含这些关键要素的吸引人的标题。
5. 撰写一条概括性陈述,总结每条新闻的内容。
5. 对于内容中提到关键数据、成果、举措或事件以及任何吸引眼的内容,通过markdown bold语法进行重点展示。请确保你的输出不包含任何XML标签。
</instructions>
再将2个并行节点添加到代码执行
节点,用于拼接2个网站的新闻信息,输入变量为2个LLM节点的输出变量,执行的拼接代码参考:
def main(daily_upside: str, edward_jones: str) -> dict:return {"result": daily_upside +"\n\n---\n\n"+ edward_jones,}
再添加节点 - 工具 - 163SMTP邮件发送,输入5个必要的参数,主题为:今日新闻+时间戳
,内容则为输出格式整理节点的输出变量还有三个变量使用环境变量
填入
环境变量是一种存储敏感信息的方法,如 API 密钥、数据库密码等。它们被存储在工作流程中,而不是代码中,以便在不同环境中共享。
邮箱用户名:username,收件人邮箱:receiver,授权码:secret
最后添加结束节点,标志工作流执行完毕,输出发送163邮件通知节点
的结果
编排工作流后点击右上角的运行
,进行测试,查看整个流程可以看到先获取当前日期,再进入2个并行的爬取新闻过程,再分别进行LLM总结爬取内容,最后格式整理并发送邮件
整个流程50秒就完成了
打开我们的收件邮箱查看到如下的内容,标题为 今日新闻06/23/2025
,输出的内容是 markdown 格式的,我们这里是没有进行中文翻译的,因为爬取的网站的英文,这里也就是英文了,可以在 LLM节点
中添加提示词中文输出
测试完成就可以发布更新到探索
页面了,发布后选择运行就可以获得一个在线运行的工作流的网页!
3.4 使用抓取金融新闻并发送邮箱工作流
在探索 - 抓取金融新闻并发送邮箱中开启新对话
在运行一次
Tab页中点击运行
即可执行工作流
为了区别测试的内容,我在LLM节点最后都加上了一个提示词:最后将所有内容翻译成中文输出
,查看接收到的邮件效果,格式还是有点问题的,需要根据爬取的不同新闻网站的样式再优化
四、总结
该工作流革新了传统手动筛选模式,以动态日期生成、并行抓取和AI摘要技术大幅提升效率,降低信息过载风险。通过自动化整合与精准推送,用户可快速掌握市场动态,为投资决策提供实时支持,同时推动金融信息处理向智能化、结构化跃迁。
通过本次Dify工作流实践,深刻体会到其可视化编排与AI无缝集成的核心价值:仅需拖拽HTTP抓取、LLM摘要、邮件推送等节点,即可快速构建从金融新闻采集→智能精炼→定时分发的全自动化链路,将传统手动处理耗时从几小时压缩至5分钟。华为Flexus X
云服务器提供精准弹性的CPU/内存配比,有效支撑多源数据并行抓取;MaaS平台
内置的盘古大模型则实现关键信息的高精度提纯与敏感内容拦截。整体部署过程印证了低代码开发+云原生算力
在落地企业级自动化场景中的高效性与可靠性,真正实现数据流动自动化、信息获取结构化、决策支持实时化
的核心目标,化繁为简,智能提效。