
Tóm tắt nhanh:
- Stagehand là framework mã nguồn mở kết hợp AI (LLM) và code để tự động hóa trình duyệt, thay thế các selector (XPath/CSS) dễ lỗi bằng ngôn ngữ tự nhiên.
- Tính năng cốt lõi:
act()(hành động),extract()(trích xuất dữ liệu type-safe),observe()(xem trước & cache), vàagent()(tự động hóa quy trình phức tạp). - Điểm mạnh: Khả năng Self-healing (tự sửa lỗi khi UI thay đổi), tích hợp Schema Validation (Zod), và hỗ trợ đa ngôn ngữ trong phiên bản v3.
- Tối ưu chi phí: Cơ chế caching thông minh giúp giảm thiểu số lần gọi API đến LLM, tiết kiệm token đáng kể.
Stagehand là gì?
Stagehand là một SDK tự động hóa trình duyệt tích hợp trí tuệ nhân tạo (AI), cho phép lập trình viên điều khiển web browser thông qua các câu lệnh ngôn ngữ tự nhiên thay vì các bộ chọn (selectors) cứng nhắc.
Được xây dựng ban đầu trên nền tảng Playwright và sau đó chuyển sang giao tiếp trực tiếp qua Chrome DevTools Protocol (trong bản v3), Stagehand giải quyết bài toán đau đầu nhất của automation: sự thay đổi giao diện (UI churn). Công thức thành công của framework này nằm ở sự kết hợp giữa độ tin cậy của code truyền thống và sự linh hoạt của Large Language Models (LLMs).
Thay vì quy trình thủ công: Mở DevTools -> Tìm DOM -> Viết XPath -> Debug, bạn chỉ cần ra lệnh:
await stagehand.act("Click the login button")AI sẽ tự động phân tích trang, tìm phần tử phù hợp và thực thi hành động. Nếu vị trí nút bấm thay đổi vào ngày mai, Stagehand sẽ tự động thích ứng (self-healing) mà không cần sửa code.
Các tính năng cốt lõi của Stagehand
Stagehand cung cấp 4 phương thức chính để tiếp cận automation, bao gồm thực thi hành động, trích xuất dữ liệu, quan sát và tác vụ agent.
1. act() – Hành động bằng ngôn ngữ tự nhiên
Đây là tính năng cơ bản và mạnh mẽ nhất. act() cho phép bạn mô tả hành động bằng tiếng Anh (hoặc ngôn ngữ khác) mà không cần quan tâm đến cấu trúc DOM bên dưới. AI sẽ hiểu ý định (intent) của bạn ngay cả khi mô tả không chính xác 100% về mặt kỹ thuật.
Ví dụ:
// Thay vì viết:
// await page.click('button[data-testid="login"]')
// Bạn chỉ cần viết:
await stagehand.act("Click the login button");
await stagehand.act("Type '[email protected]' in the email field");
await stagehand.act("Scroll down to see more products");
await stagehand.act("Select the first option from the dropdown");2. extract() – Trích xuất dữ liệu có cấu trúc (Type-Safe)
Việc parse HTML để lấy dữ liệu thường rất phức tạp và dễ lỗi. extract() giải quyết vấn đề này bằng cách cho phép bạn định nghĩa dữ liệu cần lấy kèm theo một Zod schema. Điều này đảm bảo dữ liệu đầu ra luôn đúng định dạng (type-safe) và loại bỏ nhu cầu viết Regex phức tạp.
Ví dụ:
import { z } from "zod";
// Trích xuất một giá trị đơn giản
const productPrice = await stagehand.extract(
"Extract the product price from the page",
z.number()
);
// Trích xuất dữ liệu phức tạp với schema
const productInfo = await stagehand.extract(
"Extract the product details including title, price, rating, and description",
z.object({
title: z.string().describe("The product title"),
price: z.number().describe("The product price in USD"),
rating: z.number().describe("The product rating from 1 to 5"),
description: z.string().describe("The product description"),
inStock: z.boolean().describe("Whether the product is in stock"),
})
);
console.log(productInfo);3. observe() – Quan sát và Cache hành động
Tính năng observe() cho phép bạn xem trước (preview) các hành động mà AI dự định thực hiện trước khi thực thi. Quan trọng hơn, nó là nền tảng cho cơ chế Caching. Khi bạn xác nhận một hành động là đúng, Stagehand sẽ lưu lại selector đó. Trong các lần chạy sau, nó sẽ tái sử dụng selector đã cache mà không cần gọi LLM, giúp tăng tốc độ và giảm chi phí.
Ví dụ:
// Xem trước action trước khi execute
const preview = await stagehand.observe("Click the submit button");
console.log(preview);
// Output sẽ chứa selector cụ thể mà AI tìm được
// Nếu bạn hài lòng, bạn có thể execute nó
// SỬ DỤNG CACHE - KHÔNG CẦN GỌI LLM LẠI
await stagehand.act(preview[0]);4. agent() – Tự động hóa quy trình phức tạp
Đối với các workflow dài hơi bao gồm nhiều bước (như điền form nhiều trang, điều hướng phức tạp), agent() cho phép AI tự động xác định chuỗi hành động cần thiết để đạt được mục tiêu cuối cùng.
Ví dụ:
const agent = stagehand.agent({
model: "google/gemini-2.5-computer-use-preview-10-2025"
});
// Agent tự động: Điều hướng -> Tìm form -> Điền thông tin -> Upload -> Submit
await agent.execute("Apply for the senior developer job");TIPS:
- Tối ưu chi phí Token: Luôn sử dụng quy trình
observe()sau đóact()cho các tác vụ lặp đi lặp lại. Lần chạy đầu tiên sẽ tốn token để AI phân tích, nhưng các lần sau Stagehand sẽ dùng cached selector, giảm chi phí API xuống gần bằng 0 và tăng tốc độ thực thi ngang bằng Playwright thuần.- Xử lý trang Web phức tạp: Với các trang web Heavy JavaScript (React/Vue bị obfuscated), hãy kết hợp code thủ công cho các phần ổn định và dùng Stagehand cho các phần dynamic hoặc khó bắt selector. Đây là mô hình Hybrid hiệu quả nhất.
So sánh Stagehand với các công cụ truyền thống
Stagehand vượt trội hơn Selenium hay Playwright thuần ở khả năng thích ứng và tốc độ phát triển, mặc dù có độ trễ cao hơn do xử lý AI.
| Tiêu Chí | Selenium | Playwright | Stagehand |
|---|---|---|---|
| Viết code | Khó, phức tạp | Trung bình, cần selector | Dễ, ngôn ngữ tự nhiên |
| Bảo trì | Rất tốn công sức | Tốn công khi UI đổi | Tự động (Self-healing) |
| Thích ứng UI | Không | Không | Có (AI-driven) |
| Data Extraction | Manual parsing | Manual parsing | AI + Schema Validation |
| Tốc độ thực thi | Trung bình | Nhanh | Chậm hơn (lần đầu), Nhanh (khi cache) |
5 Lý do nên chọn Stagehand:
- Self-Healing: Code không bị “vỡ” khi website thay đổi giao diện.
- Write Once, Run Everywhere: Một script đăng nhập có thể chạy trên nhiều site khác nhau nhờ hiểu ngữ nghĩa (semantic).
- No DOM Knowledge Needed: Không cần F12 để soi code HTML.
- Type-Safe Extraction: Dữ liệu đầu ra được đảm bảo đúng kiểu nhờ Zod.
- Cost-Efficient: Cơ chế caching giúp tiết kiệm chi phí LLM dài hạn.
Hướng dẫn cài đặt và ví dụ thực tế
Để bắt đầu, bạn cần cài đặt thư viện và cấu hình API Key cho LLM Provider.
Bước 1: Cài đặt và cấu hình
# Cài đặt Stagehand
npm install @browserbase/stagehand
# Cấu hình API Key (Ví dụ dùng OpenAI)
# Tạo file .env và thêm dòng sau:
export OPENAI_API_KEY="sk-..."Bước 2: Ví dụ Web Scraping thực tế
Dưới đây là kịch bản lấy thông tin sản phẩm từ một trang thương mại điện tử. Lưu ý cách code ngắn gọn và tập trung vào dữ liệu cần lấy thay vì cách lấy.
import { Stagehand } from "@browserbase/stagehand";
import { z } from "zod";
async function scrapeEcommerceSite() {
const stagehand = new Stagehand();
await stagehand.init();
try {
const page = stagehand.context.pages()[0];
await page.goto("https://example-ecommerce.com");
// 1. Tìm kiếm sản phẩm bằng ngôn ngữ tự nhiên
await stagehand.act("Type 'laptop' in the search field");
await stagehand.act("Press Enter or click the search button");
// 2. Chờ kết quả
await stagehand.observe("Wait for search results to load");
// 3. Trích xuất danh sách sản phẩm (Type-safe)
const products = await stagehand.extract(
"Extract the first 5 products with their names, prices, and ratings",
z.array(
z.object({
name: z.string(),
price: z.number(),
rating: z.number().min(0).max(5),
})
)
);
console.table(products);
// 4. Tương tác chi tiết
await stagehand.act("Click on the first product");
// Nếu UI thay đổi, AI sẽ tự động điều chỉnh selector mới
} finally {
await stagehand.close();
}
}
scrapeEcommerceSite().catch(console.error);Cải tiến đột phá trong Stagehand v3
Phiên bản v3 (phát hành tháng 10/2025) đánh dấu sự trưởng thành của framework với việc loại bỏ sự phụ thuộc hoàn toàn vào Playwright để tối ưu hiệu suất.
- Direct CDP Integration: Sử dụng Chrome DevTools Protocol trực tiếp giúp giảm overhead và tăng tốc độ điều khiển trình duyệt.
- Hỗ trợ đa ngôn ngữ: Ngoài TypeScript/JavaScript, v3 đã hỗ trợ chính thức Python, Go, Java, Ruby và đang beta cho Rust, C#.
- Parallel Multi-Browser: Hỗ trợ điều khiển hàng chục trình duyệt song song, cực kỳ hữu ích cho việc cào dữ liệu quy mô lớn (scraping at scale).
- AI-Native Architecture: Cải thiện bộ Context Builder giúp giảm lãng phí token lên đến 50% so với phiên bản trước.
TIPS:
Môi trường Production: Khi triển khai thực tế, thay vì chạy local, hãy cân nhắc sử dụng Browserbase. Đây là nền tảng cloud browser được tối ưu cho Stagehand, cung cấp sẵn proxy, captcha solving và khả năng auto-scaling mà bạn không cần tự cấu hình hạ tầng.
Câu hỏi thường gặp
1. Stagehand có miễn phí không?
Stagehand là framework mã nguồn mở (Open Source) và miễn phí. Tuy nhiên, bạn sẽ phải trả phí cho các LLM Provider (như OpenAI, Anthropic, Google) dựa trên số lượng token sử dụng khi chạy lệnh act, extract hoặc observe.
2. Tốc độ của Stagehand so với Playwright như thế nào?
Ở lần chạy đầu tiên (khi chưa có cache), Stagehand sẽ chậm hơn đáng kể (2-5 giây/hành động) do phải gửi dữ liệu lên LLM để phân tích. Tuy nhiên, khi đã có cache, tốc độ sẽ tương đương với Playwright thuần vì nó tái sử dụng selector đã lưu.
3. Tôi có cần biết lập trình để sử dụng không?
Có, nhưng mức độ yêu cầu thấp hơn nhiều so với automation truyền thống. Bạn cần biết cơ bản về JavaScript/TypeScript (hoặc Python/Go với v3) để thiết lập môi trường và luồng chạy, nhưng không cần kiến thức sâu về DOM hay CSS Selectors.
4. Dữ liệu của tôi có an toàn không khi gửi lên AI?
Stagehand gửi cấu trúc HTML (DOM) lên LLM để phân tích. Bạn cần tuân thủ chính sách bảo mật của LLM Provider mà bạn chọn (OpenAI, Anthropic…). Đối với các dữ liệu nhạy cảm, hãy cân nhắc kỹ việc filter thông tin trước khi gửi hoặc sử dụng các mô hình Private/Local nếu Stagehand hỗ trợ trong tương lai.








