在日常工作中,我们经常需要生成格式统一的报告,例如周报、项目复盘和客户交付文档。每次都手动调整Word格式既繁琐又容易出错。其实,借助Dify工作流,你可以将Markdown模板轻松转化为可复用的报告生成器:只需上传一个包含占位符的模板,并输入变量值,即可自动输出格式完整的.docx文件。接下来,我们将一步步拆解具体的实现方法。

准备Markdown模板并上传至Dify
首先,在本地创建一个Markdown模板文件,命名为report_template.md。文件中必须包含至少一对由双大括号包裹的变量占位符,例如{{project_name}}、{{date_range}}或{{summary}}。变量命名规则统一使用小写字母和下划线,避免使用空格或特殊符号,以确保Dify能正确识别。
接下来,打开Dify工作流编辑器,点击起始节点,添加一个输入变量。设置类型为“文件列表”,变量名称填写template_file,在支持的文件类型中勾选“文档”,然后保存即可。
这里有个关键技巧:模板能够复用的核心在于{{xxx}}变量占位符。如果直接写入固定文字而忽略占位符,填充逻辑将失去作用,生成的文档始终是静态内容,无法动态变更信息。
提取模板文本并动态注入变量值
在起始节点之后,添加一个“文档提取器”节点,将输入变量设为template_file/result,并启用“提取纯文本”模式。
然后再加一个“代码执行”节点,粘贴下面的Python脚本:
import re
def main(text: str, variables: dict) -> str:
for key, value in variables.items():
text = re.sub(r'{{'+re.escape(key)+r'}}', str(value), text)
return text
在“代码执行”节点的右侧,配置“变量映射”:左侧输入variables,右侧点击“+”添加字段,例如project_name(用户输入,段落)、date_range(用户输入,段落)、summary(用户输入,段落)。务必为每个字段设置必填项,以确保变量完整传递。
重要提醒:variables字段的名称必须与模板中{{xxx}}完全一致,大小写和下划线都不能有任何偏差,否则变量将无法正确匹配。
调用Markdown转Word服务生成可下载文件
根据实际情况,你可以选择以下两种方法之一来实现转换。
方法一:借助广场插件
在代码执行节点后添加一个“HTTP请求”节点,并选择已安装的“Markdown to DOCX”插件。URL留空(插件会自动处理),Body填写{"markdown": "{{code_result}}"},在响应体中选择files字段。
方法二:自建API对接
如果你的团队已有现成的转换服务,可直接搭建HTTP请求节点:Method选择POST,URL填写你的转换服务地址(例如https://your-api.com/convert),Headers添加Content-Type: application/json,Body填写{"content": "{{code_result}}"},勾选“返回文件”选项,响应体选择files。
需要注意的是:若采用自建API方式,服务端必须返回Content-Disposition: attachment; filename="report.docx"的响应头,否则Dify无法将其识别为可下载文件。
配置结束节点并发布工作流
添加一个“结束”节点,点击“输出字段”,选择files,然后勾选“启用文件下载”,显示名称可设为“下载格式化报告”。最后点击右上角的“发布”按钮,工作流即生效并可投入使用。
现在进行测试:上传report_template.md文件,依次填写project_name、date_range、summary三个字段的值,点击运行。几秒钟后,你将看到一个带格式的Word下载按钮,点击即可获取格式完整的报告。
