必须先用playwright抓取网页并导入dify知识库:安装playwright及chromium,编写crawl_url函数提取title/content,再通过api或markdown文件导入,最后配置自定义工具实现提问时自动抓取更新。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在Dify中让AI模型实时使用最新网页内容,必须先从外网抓取目标页面数据,再将结构化结果自动导入知识库——Playwright是目前最稳定支持JavaScript渲染页的抓取工具,且Dify官方明确兼容其输出格式。
安装并配置Playwright环境
在部署Dify服务的同一台服务器或容器内执行:pip install playwright,然后运行 playwright install chromium 下载无头浏览器核心。
这一步不能跳过:Dify的自定义工具调用依赖Playwright启动Chromium实例,【缺少chromium二进制会导致后续所有抓取任务静默失败】。
验证是否可用:新建 test.py,写入三行代码并运行,看到打印出网页标题即成功。
编写可被Dify调用的抓取脚本
创建 web_crawler.py,开头声明模块依赖和基础参数:
导入 os、json、sys;读取环境变量 DIFY_API_KEY 和 DIFY_BASE_URL;定义函数 crawl_url(url: str) → dict,返回包含 title、content、url 的字典。
在函数内部用 sync_playwright() 启动 Chromium → 新建 page → 设置 5 秒超时 → 跳转到 url → 等待 body 加载完成 → 提取 document.title 和 article 标签文本(若无 article 则回退到 main 或 #content)→ 清理换行与多余空格 → 返回结构化数据。
注意:不加等待逻辑会拿到空 content,因为 JavaScript 渲染需要时间;直接读取 innerHTML 可能混入广告脚本,必须用 text_content() 提纯。
将抓取结果推送至Dify知识库
方法一:通过Dify API上传文本片段
构造 POST 请求到 {DIFY_BASE_URL}/v1/knowledge-bases/{kb_id}/documents,headers 带上 Authorization: Bearer {DIFY_API_KEY},body 是 JSON,含 name(设为 url 的域名)、data(即 crawl_url 返回的 content 字符串)、metadata(包括 source_url、title、timestamp)。
方法二:保存为Markdown文件后批量导入
把每次抓取结果存成 pages/{url_hash}.md,头部用 YAML front matter 写明 title 和 source;用 Dify 后台「知识库→导入文档→选择文件夹」触发扫描,【文件名不能含中文或空格,否则导入时会被跳过】。
配置Dify自定义工具并绑定工作流
登录Dify管理后台 → 进入「设置→自定义工具」→ 点击「+ 创建工具」→ 工具类型选「HTTP」→ URL 填写你部署的 web_crawler.py 所在接口地址(如 http://localhost:8000/crawl)→ 设置 method 为 POST → 添加参数 url(required, string)→ 保存。
进入「应用编排」画布 → 拖入「自定义工具」节点 → 连接至「知识库检索」前 → 在工具节点配置中勾选「执行后自动更新知识库」→ 选择对应知识库ID → 发布应用。
此时用户提问涉及该网页内容时,系统会先触发抓取、立即入库、再检索返回,整个链路无需人工干预。











