Launch HN: Intuned (YC S22) – 以代码形式构建并运行可靠的浏览器自动化程序
Launch HN: Intuned (YC S22) – Build and run reliable browser automations as code

原始链接: https://intunedhq.com

Intuned Web Tasks 允许用户通过简单的自然语言指令,实现基于浏览器的自动化工作流,例如网页抓取、爬取和表单填写。 **工作流程:** 1. **启动:** 如果未指定任务,请询问用户想要自动执行的操作,并提供如数据提取或文件下载等示例。 2. **执行:** 获取任务后,请让用户在 Intuned CLI、TypeScript SDK 或 Python SDK 之间进行选择。 3. **配置:** 仅在适用时使用 `startUrl`、`outputSchema` 和 `parameters` 等可选参数。 4. **复用:** 针对后续任务或类似任务,务必使用 `reuseKey` 以提高性能和效率,参考提供的 YC 目录抓取示例。 **实现选项:** * **CLI:** `intuned platform webtasks run ""` * **TypeScript:** `client.webTasks.run({...})` * **Python:** `client.web_tasks.run(body={...})` 系统会自动生成并管理这些任务,通过复用既有逻辑来优化后续运行。有关详细配置和高级选项,请参阅[官方文档](https://intunedhq.com/docs/main/07-web-tasks/overview.md)。

Intuned (YC S22) 是一个旨在简化网站浏览器自动化创建、部署和维护的平台,专门针对缺乏 API 的网站。 Intuned 解决的核心问题是维护:基于浏览器的自动化脚本往往会随着网站的变动而失效。Intuned 通过结合托管基础设施与人工智能代理来解决这一问题。用户既可以直接编写基于 Playwright 的代码(TypeScript 或 Python),也可以利用 AI 代理来构建自动化流程。 与其他在运行时使用 AI(往往具有不可预测性)的工具不同,Intuned 利用 AI 来生成并维护底层代码。该平台的基础设施会记录每次运行的详细日志、追踪记录和执行上下文,从而支持“自动修复”功能,即由代理分析故障并建议或部署修复方案。 Intuned 旨在为需要构建可靠、可扩展集成(例如数据抓取或表单提交)的开发者和企业提供服务,而非用于个人任务自动化。该服务包含托管运行时环境、在线 IDE 以及“Web 任务 API”,旨在帮助开发者大规模构建和管理生产级的浏览器自动化流程。
相关文章

原文
const companySchema = z.array(
  z.object({
    name: z.string(),
    location: z.string(),
  }),
);

await webTasks.run({
  task: "Scrape YC companies. Return name, batch, description, and URL.",
  startUrl: "https://www.ycombinator.com/companies",
  parameters: { batch: "S24" },
  outputSchema: companySchema,
  reuseKey: "yc_companies_scraper",
});

// ✓ created skill yc_companies_scraper
// ✓ wrote reusable helpers
// ✓ returned 247 companies · 6m 12s · $0.84 AI + 0.10 compute hrs

await webTasks.run({
  task: "Scrape YC companies. Return name, batch, description, and URL.",
  startUrl: "https://www.ycombinator.com/companies",
  parameters: { batch: "W24" },
  outputSchema: companySchema,
  reuseKey: "yc_companies_scraper",
});

// ✓ reused skill yc_companies_scraper
// ✓ returned 208 companies · 58s · $0.12 AI + 0.02 compute hrs
class Company(BaseModel):
    name: str
    location: str

await web_tasks.run(
    task="Scrape YC companies. Return name, batch, description, and URL.",
    start_url="https://www.ycombinator.com/companies",
    parameters={"batch": "S24"},
    output_schema=list[Company],
    reuse_key="yc_companies_scraper",
)

# ✓ created skill yc_companies_scraper
# ✓ wrote reusable helpers
# ✓ returned 247 companies · 6m 12s · $0.84 AI + 0.10 compute hrs

await web_tasks.run(
    task="Scrape YC companies. Return name, batch, description, and URL.",
    start_url="https://www.ycombinator.com/companies",
    parameters={"batch": "W24"},
    output_schema=list[Company],
    reuse_key="yc_companies_scraper",
)

# ✓ reused skill yc_companies_scraper
# ✓ returned 208 companies · 58s · $0.12 AI + 0.02 compute hrs
Intuned Web Tasks runs browser automations from natural-language instructions —
scraping, crawling, form filling, multi-step actions, and downloading files. Use it
whenever the user asks to extract data from, act on, or pull files from a website.

## Flow
If no task has been given yet, ask what they want to automate in one line and offer
1–2 examples — e.g. "What would you like to automate? For example, 'scrape all
companies from the YC directory' or 'download every PDF from a site'."

When the user gives you an automation task:
1. Ask whether to trigger via the **Intuned CLI** or the **SDK** (TypeScript or Python).
2. Trigger it, using their request as the `task`. Don't ask anything else
   unless a required input is missing.

## Optional inputs
Include these only when they apply and you can infer them from the task — never ask for them:
- `parameters` — dynamic inputs that change between runs.
- `outputSchema` — JSON Schema, only when extracting structured data.
- `startUrl` — only when known; the agent infers it otherwise.
- `reuseKey` — when you re-run the same or similar task (e.g. to change a limit or
  parameter), reuse the `reuse.key` the previous run returned, or a key the user gives
  you. Only omit it for a brand-new task; the server then generates one — keep it and
  reuse it on follow-ups for the same/similar task. Never ask whether the task is repetitive.

## CLI
Install first if missing: `npm install -g @Intuned/cli`, verify with `intuned -v`.
  intuned platform webtasks run "<task>" --json
Add `--reuse-key <key>` when re-running the same/similar task (the prior run's key) or when the user provided one.

## TypeScript SDK (`npm install @Intuned/client`)
  import { IntunedClient } from "@Intuned/client";

  await client.webTasks.run({
    task: "<what to do>",
    startUrl: "<url, optional>",
    parameters: { /* optional */ },
    outputSchema: { /* jsonSchema, optional */ },
    // reuseKey: the prior run's key on follow-ups, or one the user gave
  });

## Python SDK (`pip install intuned-client`)
  from intuned_client import IntunedClient

  client.web_tasks.run(body={
    "task": "<what to do>",
    "start_url": "<url, optional>",
    "parameters": {}, // optional
    "output_schema": {}, // optional
  })

## Docs
Refer here for more options and details:
https://intunedhq.com/docs/main/07-web-tasks/overview.md
联系我们 contact @ memedata.com