notte
Notte 是一款专为构建可靠网页自动化智能体(Web Agents)而设计的开源框架。它旨在解决传统网页爬虫和自动化工具在面对复杂动态网站时稳定性差、维护成本高以及难以处理验证码等痛点。通过结合确定性脚本与 AI 大模型的推理能力,Notte 让用户既能用代码精准控制流程,又能在需要灵活决策时调用 AI,从而在提升任务成功率的同时大幅降低运行成本。
这款工具特别适合开发者、数据工程师以及需要大规模网页交互的研究人员使用。无论是抓取动态数据、执行复杂的业务流程,还是模拟真实用户行为进行测试,Notte 都能提供高效支持。其核心技术亮点包括“混合工作流”架构,允许按需切换脚本与 AI 模式;内置的隐身浏览器会话,原生集成验证码识别、代理池及反检测功能;以及企业级的数字身份管理,可自动生成包含邮箱、手机号及自动二次验证的完整数字 persona。Notte 提供了简洁的 Python SDK,支持本地快速部署或通过云端 API 无缝扩展,帮助团队以更低门槛实现高可用的网页自动化方案。
使用场景
某电商运营团队需要每日从数十个竞品网站自动抓取最新价格、库存状态及促销信息,并整理成结构化报表。
没有 notte 时
- 维护成本极高:传统爬虫脚本依赖固定的 HTML 选择器,一旦目标网站改版或调整布局,脚本立即失效,需人工频繁修复代码。
- 反爬对抗困难:面对验证码、IP 封锁及指纹检测,团队需自行搭建复杂的代理池和绕过方案,开发周期长且稳定性差。
- 数据清洗繁琐:抓取到的非结构化文本需要额外编写逻辑进行清洗和格式化,容易出错且难以统一输出标准。
- 混合流程割裂:无法灵活结合确定性操作(如登录)与智能决策(如识别动态促销规则),导致自动化链条断裂。
使用 notte 后
- 智能适应变化:利用 AI 代理理解自然语言指令,即使网页结构微调,notte 也能自主定位元素,大幅减少因网站改版导致的维护工作。
- 开箱即用的隐身能力:直接调用 notte 提供的隐形浏览器会话,内置验证码解决、代理轮换及反检测功能,无需重复造轮子。
- 原生结构化输出:通过 Pydantic 模型定义需求,notte 直接返回标准的 JSON 数据,省去了后续清洗步骤,确保数据格式精准一致。
- 混合工作流降本增效:将固定的登录步骤写成脚本,复杂的促销判断交给 AI,这种“脚本+AI"的混合模式在提升可靠性的同时降低了 50% 以上的 Token 成本。
notte 让团队从繁琐的爬虫维护中解放出来,以更低成本和更高可靠性实现了大规模、自适应的网页自动化数据采集。
运行环境要求
- 未说明
未说明
未说明

快速开始
快速构建可靠的网页自动化代理
这是一个为速度、成本效益、可扩展性和可靠性而打造的网页代理框架
→ 更多信息请访问: open-operator-evals • X • LinkedIn • 官网 • 控制台
Notte 是什么?
Notte 提供了构建和部署能够与网页无缝交互的 AI 代理所需的所有核心工具。我们的全栈框架将 AI 代理与传统脚本相结合,以实现最高效率——允许您对确定性部分进行脚本化,并仅在必要时使用 AI,从而将成本降低 50% 以上,同时提高可靠性。我们让您只需通过一个 API 即可开发、部署和扩展自己的代理及网页自动化任务。更多内容请参阅我们的文档 这里 🔥
开源核心功能:
- 运行网页代理 → 向 AI 代理赋予自然语言任务,在网站上完成操作
- 结构化输出 → 使用 Pydantic 模型获取您所需的精确格式数据
- 站点交互 → 使用 Playwright 兼容原语和自然语言命令观察网站状态、抓取数据并执行操作
API 服务(推荐)
- 隐身浏览器会话 → 内置 CAPTCHA 解决、代理和反检测功能的浏览器实例
- 混合工作流 → 结合脚本和 AI 代理,降低成本并提高可靠性
- 密钥保险库 → 企业级凭据管理,用于存储电子邮件、密码、MFA 令牌、SSO 等
- 数字身份 → 创建具有唯一邮箱、电话和自动 2FA 的数字身份,适用于账户创建流程
快速入门
pip install notte
patchright install --with-deps chromium
在本地模式下运行
使用以下脚本启动一个基于开源功能的代理(您需要自己的 LLM API 密钥):
import notte
from dotenv import load_dotenv
load_dotenv()
with notte.Session(headless=False) as session:
agent = notte.Agent(session=session, reasoning_model='gemini/gemini-2.5-flash', max_steps=30)
response = agent.run(task="在 Google 图片上疯狂刷猫 meme")
使用 Python SDK(推荐)
我们还提供了一个便捷的 API,为您托管浏览器会话,并提供丰富的高级功能。要运行代理,您需要先在 Notte 控制台 上注册,并创建一个免费的 Notte API 密钥 🔑
from notte_sdk import NotteClient
import os
client = NotteClient(api_key=os.getenv("NOTTE_API_KEY"))
with client.Session(open_viewer=True) as session:
agent = client.Agent(session=session, reasoning_model='gemini/gemini-2.5-flash', max_steps=30)
response = agent.run(task="在 Google 图片上疯狂刷猫 meme")
我们的设置允许您先在本地进行实验,然后只需替换导入语句并将 notte 对象前缀改为 cli,即可切换到 SDK,获得托管浏览器会话以及高级功能!
基准测试
| 排名 | 提供者 | 代理自评 | LLM 评估 | 每任务耗时 | 任务可靠性 |
|---|---|---|---|---|---|
| 🏆 | Notte | 86.2% | 79.0% | 47s | 96.6% |
| 2️⃣ | Browser-Use | 77.3% | 60.2% | 113s | 83.3% |
| 3️⃣ | Convergence | 38.4% | 31.4% | 83s | 50% |
完整报告请见: https://github.com/nottelabs/open-operator-evals
代理功能
结构化输出
结构化输出是代理运行函数中的一项功能,允许您通过 response_format 参数指定一个 Pydantic 模型。代理将按照指定的结构返回数据。
from notte_sdk import NotteClient
from pydantic import BaseModel
class HackerNewsPost(BaseModel):
title: str
url: str
points: int
author: str
comments_count: int
class TopPosts(BaseModel):
posts: list[HackerNewsPost]
client = NotteClient()
with client.Session(open_viewer=True, browser_type="chrome") as session:
agent = client.Agent(session=session, reasoning_model='gemini/gemini-2.5-flash', max_steps=15)
response = agent.run(
task="前往 Hacker News (news.ycombinator.com),提取前 5 篇帖子的标题、URL、积分、作者和评论数。",
response_format=TopPosts,
)
print(response.answer)
代理保险库
保险库是可以附加到您的代理实例上的工具,用于安全地存储和管理凭据。代理会在需要时自动使用这些凭据。
from notte_sdk import NotteClient
client = NotteClient()
with client.Vault() as vault, client.Session(open_viewer=True) as session:
vault.add_credentials(
url="https://x.com",
username="your-email",
password="your-password",
)
agent = client.Agent(session=session, vault=vault, max_steps=10)
response = agent.run(
task="前往 Twitter;登录并进入我的消息",
)
print(response.answer)
代理角色
角色是您可以附加到代理实例的工具,用于提供具有唯一电子邮件地址、电话号码以及自动处理双因素认证(2FA)功能的数字身份。
from notte_sdk import NotteClient
client = NotteClient()
with client.Persona(create_phone_number=False) as persona:
with client.Session(browser_type="chrome", open_viewer=True) as session:
agent = client.Agent(session=session, persona=persona, max_steps=15)
response = agent.run(
task="打开 Google 表单并用您的姓名确认参加",
url="https://forms.google.com/your-form-url",
)
print(response.answer)
会话功能
隐蔽模式
隐蔽模式功能包括自动解决验证码和代理配置,以提高自动化可靠性和匿名性。
from notte_sdk import NotteClient
client = NotteClient()
# 内置代理与验证码解决功能
with client.Session(
solve_captchas=True,
proxies=True, # 基于美国的代理
browser_type="chrome",
open_viewer=True
) as session:
agent = client.Agent(session=session, max_steps=5)
response = agent.run(
task="尝试使用内部工具解决验证码",
url="https://www.google.com/recaptcha/api2/demo"
)
# 自定义代理配置
proxy_settings = ExternalProxy(
server="http://your-proxy-server:port",
username="your-username",
password="your-password",
)
with client.Session(proxies=[proxy_settings]) as session:
agent = client.Agent(session=session, max_steps=5)
response = agent.run(task="访问某个网站")
文件下载/上传
文件存储允许您将文件上传到会话中,并下载代理在工作过程中获取的文件。这些文件仅限于当前会话范围,并且会在会话生命周期结束后继续保留。
from notte_sdk import NotteClient
client = NotteClient()
storage = client.FileStorage()
# 在代理执行前上传文件
storage.upload("/path/to/document.pdf")
# 创建附带存储的会话
with client.Session(storage=storage) as session:
agent = client.Agent(session=session, max_steps=5)
response = agent.run(
task="将 PDF 文档上传到网站并下载猫的图片",
url="https://example.com/upload"
)
# 下载代理下载的文件
downloaded_files = storage.list(type="downloads")
for file_name in downloaded_files:
storage.download(file_name=file_name, local_dir="./results")
Cookies / 认证会话
Cookies 提供了一种灵活的方式来认证您的会话。虽然我们建议使用安全保险库来管理凭据,但在某些情况下,Cookies 也是一种替代方案。
from notte_sdk import NotteClient
import json
client = NotteClient()
# 上传用于认证的 cookies
cookies = [
{
"name": "sb-db-auth-token",
"value": "base64-cookie-value",
"domain": "github.com",
"path": "/",
"expires": 9778363203.913704,
"httpOnly": False,
"secure": False,
"sameSite": "Lax"
}
]
with client.Session() as session:
session.set_cookies(cookies=cookies) # 或者使用 cookie_file="path/to/cookies.json"
agent = client.Agent(session=session, max_steps=5)
response = agent.run(
task="前往 nottelabs/notte 获取仓库信息",
)
# 从会话中获取 cookies
cookies_resp = session.get_cookies()
with open("cookies.json", "w") as f:
json.dump(cookies_resp, f)
CDP 浏览器兼容性
您可以插入任何您想要的浏览器会话提供商,并在其上使用我们的代理。通过 CDP 使用外部无头浏览器提供商,您可以在任何兼容 CDP 的浏览器上受益于 Notte 的代理能力。
from notte_sdk import NotteClient
client = NotteClient()
cdp_url = "wss://your-external-cdp-url"
with client.Session(cdp_url=cdp_url) as session:
agent = client.Agent(session=session)
response = agent.run(task="从 https://www.notte.cc/ 提取定价计划")
混合工作流
Notte 与 Playwright 的高度兼容性使您能够将 Web 自动化原语与代理相结合,针对需要推理和适应性的特定部分进行操作。这种混合方法可以降低 LLM 成本,并且由于对确定性部分使用脚本而仅在必要时使用代理,因此速度更快。
from notte_sdk import NotteClient
client = NotteClient()
with client.Session(open_viewer=True) as session:
# 首先进行确定性导航
session.execute(type="goto", url="https://duckduckgo.com/")
session.execute(type="fill", selector="internal:role=combobox[name=\"Search with DuckDuckGo\"i]", value="nottelabs")
agent = client.Agent(session=session, max_steps=3)
# 使用代理来推理下一步
agent.run(task="打开 nottelabs 的 GitHub 仓库")
# 使用抓取端点提取数据
data = session.scrape(instructions="提取星标数量")
代理回退
工作流是一种强大的方式,可以结合脚本和代理来降低成本并提高可靠性。然而,工作流中的确定性部分仍然可能失败。为了优雅地处理这些失败情况,您可以使用 AgentFallback 类:
import notte
with notte.Session() as session:
_ = session.execute(type="goto", url="https://shop.notte.cc/")
_ = session.observe()
with notte.AgentFallback(session, "前往购物车"):
# 强制执行失败 -> 触发代理回退以优雅地解决问题
res = session.execute(type="click", id="INVALID_ACTION_ID")
数据抓取
为了快速提取数据,我们提供了一个专门的抓取端点,该端点会自动创建并管理会话。您可以传递自定义指令以生成结构化输出,并启用隐蔽模式。
from notte_sdk import NotteClient
from pydantic import BaseModel
client = NotteClient()
# 简单抓取
response = client.scrape(
url="https://notte.cc",
scrape_links=True,
only_main_content=True
)
# 带有自定义指令的结构化抓取
class Article(BaseModel):
title: str
content: str
date: str
response = client.scrape(
url="https://example.com/blog",
response_format=Article,
instructions="仅提取文章的标题、日期和内容"
)
或者直接使用 cURL:
curl -X POST 'https://api.notte.cc/scrape' \
-H 'Authorization: Bearer <NOTTE-API-KEY>' \
-H 'Content-Type: application/json' \
-d '{
"url": "https://notte.cc",
"only_main_content": false,
}'
搜索: 我们构建了一个酷炫的演示,利用 MCP 服务器中的抓取端点,让 LLM 实现 LLM 聊天机器人中的实时搜索——效果非常好!可在以下网址查看:https://search.notte.cc/
许可证
该项目采用服务器端公共许可证 v1 许可。有关详细信息,请参阅 LICENSE 文件。
引用
如果您在研究或项目中使用 Notte,请引用:
@software{notte2025,
author = {Pinto, Andrea 和 Giordano, Lucas 和 {nottelabs-team}},
title = {Notte:面向互联网原生智能体系统的软件套件},
url = {https://github.com/nottelabs/notte},
year = {2025},
publisher = {GitHub},
license = {SSPL-1.0},
version = {1.4.4},
}
版权所有 © 2025 Notte Labs, Inc.
版本历史
v1.8.122026/04/11v1.8.112026/03/30v1.8.102026/03/30v1.8.92026/03/20v1.8.82026/03/16v1.7.182026/01/07v1.7.172025/12/24v1.7.162025/12/24v1.7.152025/12/15v1.7.142025/12/12v1.7.132025/11/20v1.7.122025/11/20v1.8.72026/03/11v1.8.62026/02/23v1.8.52026/02/11v1.8.42026/02/09v1.8.32026/01/30v1.8.12026/01/27v1.8.02026/01/26v1.7.192026/01/08常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
n8n
n8n 是一款面向技术团队的公平代码(fair-code)工作流自动化平台,旨在让用户在享受低代码快速构建便利的同时,保留编写自定义代码的灵活性。它主要解决了传统自动化工具要么过于封闭难以扩展、要么完全依赖手写代码效率低下的痛点,帮助用户轻松连接 400 多种应用与服务,实现复杂业务流程的自动化。 n8n 特别适合开发者、工程师以及具备一定技术背景的业务人员使用。其核心亮点在于“按需编码”:既可以通过直观的可视化界面拖拽节点搭建流程,也能随时插入 JavaScript 或 Python 代码、调用 npm 包来处理复杂逻辑。此外,n8n 原生集成了基于 LangChain 的 AI 能力,支持用户利用自有数据和模型构建智能体工作流。在部署方面,n8n 提供极高的自由度,支持完全自托管以保障数据隐私和控制权,也提供云端服务选项。凭借活跃的社区生态和数百个现成模板,n8n 让构建强大且可控的自动化系统变得简单高效。
AutoGPT
AutoGPT 是一个旨在让每个人都能轻松使用和构建 AI 的强大平台,核心功能是帮助用户创建、部署和管理能够自动执行复杂任务的连续型 AI 智能体。它解决了传统 AI 应用中需要频繁人工干预、难以自动化长流程工作的痛点,让用户只需设定目标,AI 即可自主规划步骤、调用工具并持续运行直至完成任务。 无论是开发者、研究人员,还是希望提升工作效率的普通用户,都能从 AutoGPT 中受益。开发者可利用其低代码界面快速定制专属智能体;研究人员能基于开源架构探索多智能体协作机制;而非技术背景用户也可直接选用预置的智能体模板,立即投入实际工作场景。 AutoGPT 的技术亮点在于其模块化“积木式”工作流设计——用户通过连接功能块即可构建复杂逻辑,每个块负责单一动作,灵活且易于调试。同时,平台支持本地自托管与云端部署两种模式,兼顾数据隐私与使用便捷性。配合完善的文档和一键安装脚本,即使是初次接触的用户也能在几分钟内启动自己的第一个 AI 智能体。AutoGPT 正致力于降低 AI 应用门槛,让人人都能成为 AI 的创造者与受益者。
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
opencode
OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信
