全部集成

AI 开发
在 LangGraph 中使用 AdsCrawl
当 Agent 工作流需要实时网页资料时,将 AdsCrawl 接入 LangGraph 节点。在图状态中保存请求 URL 和渲染后的 Markdown,供后续节点提取、总结或分流。
能做什么
01
具备浏览器能力的节点
在 read_page 节点中调用 Markdown API,URL 从图状态中读取。
02
共享网页资料
将页面文本和 URL 传给后续节点,无需每个步骤都重新读取网页。
03
明确的执行顺序
连接 START、读取节点和 END,再按需要添加自己的处理节点。
准备工作
- 具有 API Key 和可用积分的 AdsCrawl 账号。
- Node.js 22.22 或更高版本,在服务端或本地开发环境中运行。
接入方式 01
添加网页读取节点
定义 StateSchema、添加一个 AdsCrawl 节点,并编译为可执行的图。
安装依赖
在应用目录中运行以下命令。
npm install adscrawl @langchain/core @langchain/langgraph zod配置 API Key
在服务端环境或本地终端设置变量,用自己的密钥替换占位符,不要将其放入前端构建产物或提交到代码仓库。
export ADSCRAWL_API_KEY="your_adscrawl_api_key"保存为 langgraph-web.mjs
图接收 URL,将 Markdown 写入状态。页面内容为空时会抛出错误,避免向下游传递空结果。
import AdsCrawl from "adscrawl"; import { END, START, StateGraph, StateSchema } from "@langchain/langgraph"; import { z } from "zod"; const browser = new AdsCrawl({ apiKey: process.env.ADSCRAWL_API_KEY }); const PageState = new StateSchema({ url: z.string().url(), markdown: z.string().default(""), }); export const graph = new StateGraph(PageState) .addNode("read_page", async ({ url }) => { const markdown = await browser.markdown({ url, waitUntil: "domcontentloaded", }); if (!markdown.trim()) throw new Error("The page returned no text"); return { markdown }; }) .addEdge(START, "read_page") .addEdge("read_page", END) .compile(); const result = await graph.invoke({ url: "https://example.com" }); console.log({ source: result.url, markdown: result.markdown });运行并接入下一步
预期 result.url 保留输入链接,result.markdown 包含 Example Domain。需要提取或总结时,在 read_page 和 END 之间加入处理节点;仅在该节点需要模型时配置模型。
node langgraph-web.mjs
用量与限制
- 此最小示例没有配置检查点、重试策略或跨运行缓存。重放读取节点可能产生新的计费请求,生产环境应按需配置持久化与有次数上限的重试。
- 每次页面请求消耗 AdsCrawl 积分。示例读取单个公开 URL;动态页面可能需要调整 waitUntil,或增加浏览器交互步骤。
- 保留内容的来源 URL。处理长页面时,在传入模型前选择合适的分块方式或上下文长度策略。