Nova Act Browser Automation

基于Amazon Nova Act的AI浏览器自动化技能,支持航班搜索、数据提取与表单填写。

已扫描
适合谁
需要自动化网页操作的技术人员、从事数据分析或信息采集的用户
不适合谁
无网络环境的离线用户、不熟悉Python或命令行操作的初学者
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @zouchaoqun/nova-act

Skill 说明

命令、参数、文件名以原文为准

Nova Act 浏览器自动化

使用 Amazon Nova Act 实现 AI 驱动的浏览器自动化。内置脚本可处理常见任务;复杂工作流请编写自定义脚本。获取免费 API 密钥,请访问 https://nova.amazon.com/dev/api

数据与隐私说明

此技能访问的内容:

  • 读取: NOVA_ACT_API_KEY 环境变量或 ~/.openclaw/openclaw.json 文件(您的 API 密钥)
  • 写入: 当前工作目录中的 Nova Act 跟踪文件(截图、会话记录)

跟踪文件可能包含的内容:

  • 访问过的每个页面的截图
  • 完整页面内容(HTML、文本)
  • 浏览器操作和 AI 决策

建议:

  • 请注意,跟踪文件可能包含个人身份信息(PII)或敏感数据,这些数据在访问的页面上可见
  • 若跟踪文件包含敏感内容,请在使用后审查并删除

安全防护机制

对 AI 代理的指令

在执行可能导致资金影响、外部通信、账户创建或数据修改的操作前,必须停止。

当任务涉及实质性影响操作时(参见 scripts/nova_act_runner.py 中的 MATERIAL_IMPACT_KEYWORDS),您必须:

  1. 导航至最终步骤(结账页、提交按钮、发布界面)
  2. 验证最终操作是否可访问(按钮存在且可用)
  3. 使用 act_get() 进行观察而不执行操作 —— 不要点击最终操作按钮
  4. 向用户报告发现结果,但不完成该操作

需要安全停止的操作类别:

  • 资金类: 购买、下单、结账、付款、订阅、捐赠、订购
  • 通信类: 发布、分享、发送、邮件、消息、推文
  • 账户创建类: 注册、创建账户、加入
  • 提交类: 提交、申请、报名、预订、预约
  • 破坏性操作类: 删除、移除、取消

安全保证

在执行浏览器自动化时,此技能将从不:

  • 完成实际购买或金融交易
  • 创建真实账户或注册服务
  • 在任何平台公开发布内容
  • 发送电子邮件、消息或其他通信
  • 提交导致不可逆现实后果的表单

此技能将始终:

  • 在可能产生实质性现实影响的操作前停止
  • 在执行不可逆操作前请求用户明确确认
  • 报告发现结果,而非完成破坏性操作
  • 在检测到实质性影响操作时,在输出中记录安全停止情况

有关详细的安全工作流模式,请参阅 references/nova-act-cookbook.md

快速开始(使用内置脚本)

当被要求执行浏览器自动化任务时,调用内置脚本:

import subprocess, os, sys

skill_dir = os.path.expanduser("~/.openclaw/skills/nova-act")
script = os.path.join(skill_dir, "scripts", "nova_act_runner.py")

result = subprocess.run(
    ["uv", "run", script, "--url", url, "--task", task],
    capture_output=True, text=True, env={**os.environ}
)
print(result.stdout)
if result.returncode != 0:
    print(result.stderr, file=sys.stderr)

其中 urltask 是从用户请求中设置的 Python 字符串变量。

该脚本使用通用结构(摘要 + 详细列表)来捕获输出。

编写自定义脚本

对于复杂的多步骤工作流或特定的数据提取模式,请编写符合 PEP 723 的自定义 Python 脚本:

#!/usr/bin/env python3
# /// script
# requires-python = ">=3.10"
# dependencies = ["nova-act"]
# ///

from nova_act import NovaAct

with NovaAct(starting_page="https://example.com") as nova:
    # 使用自然语言执行操作
    # 将相关步骤合并为单个 `act()` 调用以保持上下文
    nova.act("点击搜索框,输入 'automation',然后按回车键")

    # 使用模式提取数据
    results = nova.act_get(
        "获取前 5 个搜索结果标题",
        schema=list[str]
    )
    print(results)

    # 截图
    nova.page.screenshot(path="search_results.png")
    print(f"MEDIA: {Path('search_results.png').resolve()}")

运行方式:uv run script.py

核心 API 模式

nova.act(prompt) - 执行操作

用于点击、输入、滚动、导航等操作。注意: 最佳上下文维护方式是将相关步骤合并到一个 act() 调用中。

nova.act("""
    点击搜索框。
    输入 'automation tools' 并按回车键。
    向下滚动至结果区域。
    从排序下拉菜单中选择 '相关性'。
""")

nova.act_get(prompt, schema) - 提取数据

使用 Pydantic 模型或 Python 类型进行结构化提取:

from pydantic import BaseModel

class Flight(BaseModel):
    airline: str
    price: float
    departure: str
    arrival: str

# 提取单个项目
flight = nova.act_get("获取最便宜航班的详细信息", schema=Flight)

# 提取列表
flights = nova.act_get("获取所有可用航班", schema=list[Flight])

# 简单类型
price = nova.act_get("总价格是多少?", schema=float)
items = nova.act_get("列出所有产品名称", schema=list[str])

常见应用场景

航班搜索

with NovaAct(starting_page="https://google.com/flights") as nova:
    # 将步骤合并以确保代理在整个流程中保持上下文
    nova.act("""
        搜索从 SFO 到 JFK 的往返航班。
        设置出发日期为 2025 年 3 月 15 日。
        设置返回日期为 2025 年 3 月 22 日。
        点击搜索。
        按价格从低到高排序。
    """)

    flights = nova.act_get(
        "获取前 3 个最便宜的航班信息,包括航空公司、价格和时间",
        schema=list[Flight]
    )
    # 安全停止:仅提取数据。未选择航班或进入预订流程。

表单填写

with NovaAct(starting_page="https://example.com/contact") as nova:
    nova.act("""
        填写表单:姓名为 'Test User',邮箱为 'test@example.com'。
        选择国家为 'United States'。
    """)

    # 安全停止:验证提交按钮是否存在但不点击
    submit_ready = nova.act_get(
        "是否存在可见且可用的提交按钮?",
        schema=bool
    )
    print(f"表单已准备就绪:{submit_ready}")

数据提取

with NovaAct(starting_page="https://news.ycombinator.com") as nova:
    stories = nova.act_get(
        "获取前 10 条新闻标题及其得分",
        schema=list[dict]  # 或使用 Pydantic 模型
    )

最佳实践

  1. 合并操作步骤:Nova Act 在单个 act() 调用内保持上下文效果最佳。将相关操作合并为多行提示。
  2. 使用具体日期:浏览器代理可能无法处理相对日期(如“下周一”)。在任务提示中始终提供具体日期(例如“2025年3月15日”)。
  3. 提示要具体明确:“点击底部的蓝色‘提交’按钮”比“点击提交”更有效。
  4. 提取数据时使用模式定义:对 act_get() 始终提供 schema 以获取结构化数据。
  5. 处理页面加载:Nova Act 会等待页面稳定,但若需处理动态内容,可添加显式等待。
  6. 截图用于验证:使用 nova.page.screenshot() 捕获结果以供检查。

资源

  • **references/nova-act-cookbook.md** — Nova Act 的最佳实践与安全模式,包含 MATERIAL_IMPACT_KEYWORDS 文档及安全工作流示例。AI 代理在执行复杂自动化任务时应参考此文件。
  • **README.md** — 面向用户的安装说明与安全概览。

API 密钥

  • NOVA_ACT_API_KEY 环境变量(必需)
  • 或在 ~/.openclaw/openclaw.json 中设置 skills."nova-act".apiKey / skills."nova-act".env.NOVA_ACT_API_KEY

注意事项

  • Nova Act 启动的是真实的 Chrome 浏览器;请确保显示环境可用,或使用无头模式。
  • 脚本会输出 MEDIA: 行,供 OpenClaw 在支持的平台上自动附加截图。
  • 无头模式运行时:NovaAct(starting_page="...", headless=True)
  • 可通过 nova.page 访问底层 Playwright 页面对象,用于高级操作
Z
@zouchaoqun

已收录 1 个 Skill

相关推荐