公众号:dify实验室
基于LLMOps平台-Dify的一站式学习平台。包含不限于:Dify工作流案例、DSL文件分享、模型接入、Dify交流讨论等各类资源分享。
前言
面对海量信息,如何高效获取关键资讯?Dify 作为 LLM 应用开发平台,能帮我们构建自动化工作流。本教程将通过一个获取金融新闻的实例,介绍如何利用 Dify 自动抓取、处理信息,并结合 Windows 定时任务实现每日邮件推送。
第一部分:现有工作流
这个工作流的核心目标是自动抓取两个金融新闻网站(The Daily Upside 和 Edward Jones)前一天的内容,利用 DeepSeek 大语言模型进行总结和格式化,最终输出整合后的中文新闻摘要。
工作流核心节点与功能:
- 开始节点:
触发整个工作流的起点。
- 代码节点 (标题:日期获取):
- 功能:
使用 JavaScript 获取当前上海时区的前一天日期,并将其格式化为三种不同格式 (
tduDate
,mbDate
,ejDate
),以供后续节点使用。这是实现动态内容抓取的关键一步。 - 连接:
连接到开始节点。
- 功能:
- 工具节点 (标题:DAILYUPSIDE):
- 功能:
并行任务之一。使用 Dify 内置的
firecrawl
工具的scrape
功能,根据“日期获取”节点生成的tduDate
动态构建目标网址,抓取 The Daily Upside 网站对应日期的新闻。通过精确的 CSS 选择器 (includeTags
和excludeTags
) 提取正文,排除无关元素,并以 Markdown 格式输出。 - 连接:
输入来自“日期获取”节点。
- 功能:
- 工具节点 (标题:EDWARD JONES):
- 功能:
并行任务之二。同样使用
firecrawl
的scrape
功能,抓取 Edward Jones 网站的每日市场回顾页面(固定网址)。也配置了 CSS 选择器提取特定区域内容,以 Markdown 格式输出。 - 连接:
输入来自“日期获取”节点。
- 功能:
- 大语言模型节点 (标题:DAILYUPSIDE REPORTER):
- 功能:
接收 DAILYUPSIDE 抓取的 Markdown 文本。其系统提示词指导 DeepSeek 模型:阅读英文新闻,剔除广告(结尾带
*
),识别关键信息(谁、何时、何事),生成吸引人的中文标题和概括性内容,用 Markdown 加粗突出重点,并按“标题:xxx\n内容:xxx\n\n---\n\n”的格式输出。 - 连接:
输入来自“DAILYUPSIDE”工具节点。
- 功能:
- 大语言模型节点 (标题:EDWARD JONES REPORTER):
- 功能:
接收 EDWARD JONES 抓取的 Markdown 文本。其系统提示词指导 DeepSeek 模型:首先根据“日期获取”节点生成的
ejDate
筛选出对应日期的新闻条目,然后执行与上一个 LLM 节点类似的总结、格式化任务。 - 连接:
输入来自“EDWARD JONES”工具节点。
- 功能:
- 代码节点 (标题:输出格式整理):
- 功能:
使用 Python 代码将两个大语言模型节点输出的中文新闻摘要合并成一个单一的文本字符串,中间用特定的分隔符(
\n\n---\n\n
)隔开。 - 原终点:
这个节点原本是输出最终文本给结束节点。现在它将成为邮件内容的来源。
- 连接:
输入来自两个大语言模型节点。
- 功能:
- 结束节点:
- 功能:
标志工作流执行完毕。在集成邮件插件后,此节点位于邮件发送之后。
- 连接:
输入来自邮件发送节点。
- 功能:
工作流特点: 该工作流巧妙地运用了并行处理(同时抓取两个网站)、动态数据注入(使用计算出的日期)、工具调用(网页抓取)、代码执行(日期处理、结果合并)以及大语言模型(内容理解、筛选、总结、翻译、格式化),构成了一个完整的自动化信息处理流程。
第二部分:集成163邮件插件与 Windows 定时触发
现在,我们将修改 Dify 工作流,加入 163 邮件发送插件,并简化外部的 PowerShell 脚本,仅用于通过 Webhook 定时触发工作流。
步骤一:修改 Dify 工作流以集成 163 邮件插件
- 安装 163 邮件插件:
-
在 Dify 的“探索 Marketplace”中,搜索并找到 163SMTP邮件发送 插件。
-
点击“安装”。
-
- 在工作流中添加邮件发送节点:
-
将“输出格式整理”节点的输出连接到这个新的“工具”节点的输入。
-
将这个新的“工具”节点的输出连接到“结束”节点。(邮件发送成功后,工作流可以正常结束)。
-
打开你的 "获取金融投资新闻top10" 工作流画布。
-
从节点库中拖拽一个“工具”节点到画布上。
- 连接节点:
-
- 配置 163 邮件发送节点:
邮箱用户名
输入你用于发送邮件的 163 邮箱地址 (例如
your_sender@163.com
)。授权码
极其重要! 在这里输入你在 163 邮箱设置中生成的授权码,而不是你的邮箱登录密码。这是为了账户安全。插件通常会提供安全存储此凭据的方式,请按照插件说明操作。
收件人邮箱
输入你想要接收新闻摘要的邮箱地址 (例如
your_receiver@example.com
)。可以输入多个,具体看插件支持方式。主题
设置邮件标题。为了包含日期,可以利用前面“日期获取”节点生成的变量。例如:
今日新闻摘要 +日期获取节点
内容
这是邮件的核心内容。将其值设置为上一个节点(输出格式整理)输出的新闻摘要结果。
-
-
保存节点配置。
-
- 调整结束节点:
-
现在邮件发送是工作流的一部分。"结束"节点可以不定义具体的输出变量,或者可以接收邮件发送插件返回的成功/失败状态(如果插件提供的话)。
-
- 保存并测试工作流:
确保修改后的工作流能够成功运行,并且你能收到来自 163 邮箱的邮件。
步骤二:配置 网络钩子 插件
- 安装与配置:
安装并配置 网络钩子 插件。
- 创建一个端点如:
DailyNewsTrigger 。
- 选择应用:
仍然选择 "获取金融投资新闻top10" 工作流。
- API 秘钥位置:
这里使用 无。
- API Key:
这里使用 无。
- 自定义中间件:
这里使用 无。
- 创建一个端点如:
- 获取 Webhook URL:
复制生成的 URL,例如
http://host.docker.internal/e/h0zdph2hhw5apiuq/single-workflow
。需要将主域替换为:http://host.docker.internal
步骤三:创建PowerShell 脚本
负责调用 Webhook URL 。
- 打开文本编辑器。
- 粘贴并修改以下代码:
代码见文末附件。# --- 需要修改的参数 --- # Dify Webhook 配置 $difyWebhookUrl = "https://<你的Dify域名>/console/api/plugins/webhook/endpoints/<你设置的端点名称>/single-workflow" # 替换成你的 Webhook URL $difyApiKey = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # 替换成你的 Dify API 密钥 # --- 修改结束 --- # 准备 Webhook 请求头和请求体 # 确保 '=' 前后是标准空格,没有其他不可见字符 $headers = @{ "Content-Type" = "application/json" "X-API-Key" = $difyApiKey } # 确保 '=' 前后是标准空格,没有其他不可见字符 $body = @{ inputs = @{} } | ConvertTo-Json # 初始化错误信息 $errorMessage = $null # 使用 try...catch 处理调用 Webhook 的潜在错误 try { # 确保 Write-Host 中的字符串是正确的中文,并且文件以 UTF-8 with BOM 编码保存 Write-Host "正在触发 Dify 工作流: $difyWebhookUrl" # 发送 POST 请求到 Dify Webhook # TimeoutSec 设置为 300 秒 (5分钟),根据需要调整 $response = Invoke-RestMethod -Uri $difyWebhookUrl -Method Post -Headers $headers -Body $body -ContentType 'application/json' -TimeoutSec 300 # Webhook 插件通常会返回一个执行状态或接受消息 # 确保 Write-Host 中的字符串是正确的中文 Write-Host "Webhook 触发请求已发送。响应预览: $($response | ConvertTo-Json -Depth 1)" } catch { # 捕获触发 Webhook 时的错误 # 确保 Write-Error 中的字符串是正确的中文 $errorMessage = "触发 Dify Webhook 时出错: $($_.Exception.Message)" Write-Error $errorMessage # 这里可以添加其他错误处理,例如写入本地日志文件 # $errorMessage | Out-File -FilePath "C:\Logs\DifyTriggerError.log" -Append -Encoding UTF8 # 如果要写入日志,确保指定UTF8编码 } # 确保 Write-Host 中的字符串是正确的中文 Write-Host "触发脚本执行完毕。"
- 保存脚本:
将文件保存为
.ps1
文件,例如C:\Scripts\TriggerDifyNews.ps1
。 - 测试脚本:
-
打开 PowerShell。
-
(可能需要设置执行策略:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
) -
运行脚本
C:\Scripts\TriggerDifyNews.ps1
。 -
观察 PowerShell 输出,确认没有连接错误。
-
步骤四:设置 Windows 计划任务
- 打开计划任务程序:
运行
taskschd.msc
。 - 创建任务:
- 程序或脚本:
powershell.exe
。 - 添加参数:
-ExecutionPolicy Bypass -File "C:\Scripts\TriggerDifyNews.ps1"
(确保路径是新脚本的路径)。
- 常规:
名称 (如
Trigger Dify Daily News
),安全选项 ("不管用户是否登录都要运行"等)。 - 触发器:
设置每天运行的时间。
- 操作:
- 条件/设置:
根据需要配置网络条件、超时、重试等。
- 程序或脚本:
- 保存任务:
输入密码(如果需要)。
Windows 计划任务每天准时运行一个非常简单的 PowerShell 脚本,该脚本仅负责安全地触发 Dify 上的 Webhook URL。随后,Dify 工作流被激活,自动执行新闻抓取、总结,并通过集成的 163 邮件插件将结果发送到你的指定邮箱。核心的邮件发送逻辑和凭据管理都在 Dify 平台内部完成。
结语
通过将邮件发送功能整合到 Dify 工作流内部,我们不仅简化了外部触发脚本,还使得整个自动化流程更加内聚和易于管理。这种方式充分利用了 Dify 平台及其插件生态系统的能力,是构建复杂自动化任务的推荐实践。
dify实验室
基于LLMOps平台-Dify的一站式学习平台。包含不限于:Dify工作流案例、DSL文件分享、模型接入、Dify交流讨论等各类资源分享。
22篇原创内容
公众号
关注我可领DSL文件及token福利
往期工作流文章
10分钟构建基于 Dify 的智能文章仿写工作流:配置指南,效率飙升300%!
20分钟从零到一构建Dify智能客服工作流教程(附DSL文件下载)
告别手工录票!Dify 工作流分享:打造多票据识别机器人(附DSL文件)
更多工作流案例,请到公众号主页查看
dify相关资源
如果对你有帮助,欢迎点赞收藏备用。
公众号主页回复 DSL 获取公众号DSL文件资源
公众号主页回复 入群 获取二维码,我拉你入群
公众号回复 tk 获取免费token资源
你有什么想法可以留言与我讨论。