ソフトウェア

AIエージェントでPuppeteer・Playwright・Seleniumを制御してブラウザを自動操作しAPI化もできる「Steel」


作業の自動化を進めようとすると障壁となる傾向にあるのがブラウザの自動操作です。「Steel」は多少のコーディング力は要求されるもののAIエージェントによりPuppeteerなどを制御することによりブラウザの自動操作を可能にするツールです。

steel-dev/steel-browser: 🔥 Open Source Browser API for AI Agents & Apps. Steel Browser is a batteries-included browser sandbox that lets you automate the web without worrying about infrastructure.
https://github.com/steel-dev/steel-browser

◆特徴
公式GitHubによるとSteelの特徴は以下の通りです。

ブラウザのフルコントロールPuppeteerChrome DevTools Protocol(CDP)を使用することによりChromeインスタンスを完全に制御
セッション管理:リクエスト間でブラウザ・Cookie・ローカルストレージの状態を維持
プロキシのサポート:IPローテーションのための組み込みプロキシチェーン管理
Chrome拡張機能のサポート:カスタムChrome拡張機能をロード可能
デバッグツール:組み込みリクエストログとUIでセッションの表示・デバッグが可能
検出回避機能:ステルスプラグインとフィンガープリント管理機能を搭載
リソース管理:自動クリーンアップとブラウザライフサイクル管理
クイックアクションAPI:ウェブページをMarkup・readability・スクリーンショット・PDFに素早く変換するためのAPIを提供

◆インストール
Steelをもっとも簡単にインストールするにはDockerを使用します。まずはGitとDockerを利用できる環境にて以下のコマンドを実行し、リポジトリをクローンしてカレントディレクトリを移動します。

git clone https://github.com/steel-dev/steel-browser.git && cd steel-browser

続いて以下のコマンドを実行しDockerコンテナを起動します。

docker run -p 3000:3000 -p 9223:9223 ghcr.io/steel-dev/steel-browser

起動が完了すると「http://localhost:3000/ui」にアクセス可能になります。


◆セッション
SteelとAIエージェントとを連携させる方法の一つが「セッション」を使用する方法です。以下はNode.js環境でセッションを生成するサンプルコードです。

import Steel from 'steel-sdk';

const client = new Steel({
  baseURL: "http://localhost:3000",             // ベースURLの設定
});

(async () => {
  try {
    // 新規セッションの生成
    const session = await client.sessions.create({
      blockAds: true,
      proxyUrl: "user:pass@host:port",          // オプション
      dimensions: { width: 1280, height: 800 }, // オプション
    });
    console.log("Created session with ID:", session.id);
  } catch (error) {
    console.error("Error creating session:", error);
  }
})();

なおSeleniumを使用する場合はセッションを生成する箇所のコードが以下のように変わります。

const session = await client.sessions.create({ isSelenium: true });

生成したセッションをPuppeteerで使用するコードは以下のようになります。なお、このコードを使用する際には公式サイトでAPIキーの発行を受け、環境変数「STEEL_API_KEY」に取得したAKIキーを設定しておく必要があります。

browser = await puppeteer.connect({
  browserWSEndpoint: `${session.websocketUrl}&apiKey=${STEEL_API_KEY}`,
});

const page = await browser.newPage();

SteelのセッションをAIエージェントから利用する具体的な方法については公式が提供している「クックブック」を参考にすることができます。

Cookbook | Steel Docs
https://docs.steel.dev/cookbook


◆クイックアクションAPI
読み取り専用のジョブのためにSteelサーバーには/scrape・/screenshot・/pdfという3つのエンドポイントが用意されており、あらゆるウェブページから目的に応じて適切に整形されたデータを素早く取得できます。例えばHTMLを取得したい場合は以下のcurlコマンドを使用します。

curl -X POST http://0.0.0.0:3000/v1/scrape \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "delay": 1000
  }'

ウェブページのスクリーンショットを取得する場合はエンドポイントを変更するだけです。

curl -X POST http://0.0.0.0:3000/v1/screenshot \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "fullPage": true
  }' --output screenshot.png

PDFを取得する場合も同様です。

curl -X POST http://0.0.0.0:3000/v1/pdf \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com"
  }' --output output.pdf

◆クラウドサービスについて
ソーシャルニュースサイトのHacker NewsにおけるSteelのスレッドにsteel.devの共同創業者であるNas and Hussが降臨し、Steelの展開方針について以下のように述べていました。

・ホスティングサービス込みの高機能版は有料のクラウドサービスで提供する
・高機能版のほぼすべての機能と下位互換性のある軽量なローカル版をオープンソースとしてGitHubリポジトリで提供する

Steelのクラウドサービスについては以下のページにて提供サービス内容とサブスクリプション料金が提示されています。

Steel | Open-source Headless Browser API
https://steel.dev/#pricing

この記事のタイトルとURLをコピーする

・関連記事
無料でウェブサイトの変化を自動チェックし通知で教えてくれるセルフホスト可能な監視ツール「changedetection.io」はどんなツールなのかレビュー - GIGAZINE

AIモデルでブラウザを自動操作できる「Browser-Use」、オープンソースで開発され自然言語で簡単に指示可能 - GIGAZINE

OpenAIのコーディング支援AI「Codex」でChromeを直接操作可能に - GIGAZINE

無料で見ているページを簡単にブラウザ拡張機能で保存しスマホ・Obsidian・SingleFileと連携できる「Readeck」 - GIGAZINE

Ai2がビジュアルウェブAIエージェントの「MolmoWeb」をリリース、HTMLを解析するのではなくブラウザのスクリーンショットで動作 - GIGAZINE

ブラウザのあらゆる操作にショートカットキーを設定できる「Shortkeys」 - GIGAZINE

無料で簡単にAIエージェントでブラウザやファイルの自動操作ができる「Agent Zero」、ChatGPT・Claude・Geminiと連携できローカルAIも使用可能 - GIGAZINE

in AI,   ソフトウェア, Posted by log1c_sh

You can read the machine translated English article 'Steel' is an AI agent that controls Pup….