このガイドでは、AIGNE フレームワークを Puppeteer MCP サーバーと組み合わせて自動化された Web スクレイピングを行う方法を、ステップバイステップで解説します。この例を通じて、Web サイトにアクセスしてそのコンテンツを抽出できる AI Agent を構築し、実行する方法を学びます。
概要
この例では、AIAgent と Puppeteer インスタンスを制御する MCPAgent との統合を紹介します。AIAgent は、URL からコンテンツを抽出するための自然言語コマンドを受け取ります。その後、Web 自動化タスクを Puppeteer Agent に委任します。Puppeteer Agent は、指定されたページに移動し、JavaScript を実行してコンテンツをスクレイピングします。
一般的なワークフローは以下の通りです。
flowchart LR
in(In)
out(Out)
agent(AI Agent)
puppeteer(Puppeteer MCP Agent)
navigate(URL に移動)
evaluate(JS を評価)
in --> agent <--> puppeteer
subgraph MCP Agent
puppeteer <--> navigate
puppeteer <--> evaluate
end
agent --> out
classDef inputOutput fill:#f9f0ed,stroke:#debbae,stroke-width:2px,color:#b35b39,font-weight:bolder;
classDef processing fill:#F0F4EB,stroke:#C2D7A7,stroke-width:2px,color:#6B8F3C,font-weight:bolder;
class in inputOutput
class out inputOutput
class agent processing
class puppeteer processing
class navigate processing
class evaluate processingWeb サイトのコンテンツを要約するための操作シーケンスを以下に示します。
shape: sequence_diagram
User: {
shape: c4-person
}
AI: {
label: "AI Agent"
}
P: {
label: "Puppeteer MCP Agent"
}
N: {
label: "URL に移動"
}
E: {
label: "JS を評価"
}
User -> AI: "https://www.arcblock.io のコンテンツを要約して"
AI -> P: "https://www.arcblock.io からコンテンツを抽出して"
P -> N: "https://www.arcblock.io に移動して"
N -> P: "移動完了"
P -> E: "document.body.innerText を評価して"
E -> P: "コンテンツ抽出済み"
E -> AI: "コンテキストとして抽出されたコンテンツ"
AI -> User: "コンテンツは以下の通りです: ..."前提条件
この例を実行する前に、以下の要件が満たされていることを確認してください。
- Node.js バージョン 20.0 以降。
- 有効な OpenAI API キー。
クイックスタート
npx を使用して、リポジトリをクローンせずにこの例を直接実行できます。
例の実行
ターミナルで以下のコマンドを実行してください。この例は、ワンショットモード、対話型チャットモードをサポートしており、パイプライン経由での入力も受け取ることができます。
ワンショットモードで実行
# ワンショットモードで実行 (デフォルト)
npx -y @aigne/example-mcp-puppeteer対話型チャットモードで実行
# 対話型チャットモードで実行
npx -y @aigne/example-mcp-puppeteer --interactiveパイプライン入力を使用
# パイプライン入力を使用
echo "extract content from https://www.arcblock.io" | npx -y @aigne/example-mcp-puppeteerAI モデルへの接続
初回実行時にモデルプロバイダーが設定されていない場合、アプリケーションは接続を促すプロンプトを表示します。

続行するにはいくつかのオプションがあります。
- 公式 AIGNE Hub 経由で接続: これが推奨オプションです。これを選択すると、Web ブラウザで AIGNE Hub が開き、接続を承認できます。新規ユーザーは、試用目的で無料のトークン残高を受け取れます。

- セルフホストの AIGNE Hub 経由で接続: 独自の AIGNE Hub をホストしている場合は、このオプションを選択し、インスタンスの URL を入力して接続を完了します。Blocklet Store から独自の AIGNE Hub をデプロイできます。

- サードパーティのモデルプロバイダー経由で接続: 環境変数を使用して、OpenAI などのプロバイダーから直接 API キーを設定できます。 OpenAI API キーを設定
sh export OPENAI_API_KEY="YOUR_API_KEY"サポートされているプロバイダーと変数の完全なリストについては、プロジェクト内の.env.local.exampleファイルを参照してください。環境変数を設定した後、コマンドを再度実行してください。
ソースからのインストール
コードを調べたり、変更を加えたりするには、リポジトリをクローンしてローカルで例を実行できます。
1. リポジトリのクローン
aigne-framework リポジトリをクローン
git clone https://github.com/AIGNE-io/aigne-framework2. 依存関係のインストール
例のディレクトリに移動し、pnpm を使用して必要なパッケージをインストールします。
依存関係をインストール
cd aigne-framework/examples/mcp-puppeteer
pnpm install3. 例の実行
スタートスクリプトを実行してアプリケーションを起動します。
ソースから例を実行
pnpm startコマンドライン引数をスクリプトに渡すには、-- で区切ります。
ソースからチャットモードで実行
pnpm start -- --interactiveコード例
以下の TypeScript コードは、AIGNE インスタンスのセットアップ、Puppeteer MCP Agent の設定、および AI Agent を呼び出して Web コンテンツを抽出するためのコアロジックを示しています。
agent.ts
import { AIAgent, AIGNE, MCPAgent } from "@aigne/core";
import { OpenAIChatModel } from "@aigne/core/models/openai-chat-model.js";
const { OPENAI_API_KEY } = process.env;
// API キーで OpenAI モデルを初期化
const model = new OpenAIChatModel({
apiKey: OPENAI_API_KEY,
});
// Puppeteer サーバーを実行する MCPAgent を作成
const puppeteerMCPAgent = await MCPAgent.from({
command: "npx",
args: ["-y", "@modelcontextprotocol/server-puppeteer"],
});
// モデルと Puppeteer Agent をスキルとして AIGNE インスタンスを初期化
const aigne = new AIGNE({
model,
skills: [puppeteerMCPAgent],
});
// Web コンテンツ抽出のための指示を持つ AI Agent を定義
const agent = AIAgent.from({
instructions: `\
## Steps to extract content from a website
1. navigate to the url
2. evaluate document.body.innerText to get the content
`,
});
// プロンプトで Agent を呼び出す
const result = await aigne.invoke(
agent,
"extract content from https://www.arcblock.io",
);
console.log(result);
// 期待される出力:
// {
// $message: "The content extracted from the website [ArcBlock](https://www.arcblock.io) is as follows:\n\n---\n\n**Redefining Software Architect and Ecosystems**\n\nA total solution for building decentralized applications ...",
// }
// AIGNE インスタンスとその Agent をシャットダウン
await aigne.shutdown();コマンドラインオプション
このアプリケーションは、その動作をカスタマイズするためのいくつかのコマンドライン引数をサポートしています。
| パラメーター | 説明 | デフォルト |
|---|---|---|
--interactive | 対話型チャットモードで実行します。 | 無効 |
--model <provider[:model]> | AI モデルを指定します。例: openai、openai:gpt-4o-mini。 | openai |
--temperature <value> | モデル生成の temperature を設定します。 | プロバイダーのデフォルト |
--top-p <value> | top-p サンプリング値を設定します。 | プロバイダーのデフォルト |
--presence-penalty <value> | presence penalty の値を設定します。 | プロバイダーのデフォルト |
--frequency-penalty <value> | frequency penalty の値を設定します。 | プロバイダーのデフォルト |
--log-level <level> | ログレベルを設定します (ERROR、WARN、INFO、DEBUG、TRACE)。 | INFO |
--input, -i <input> | 引数として直接入力を提供します。 | なし |
デバッグ
AIGNE フレームワークには、Agent の実行を監視およびデバッグするのに役立つ可観測性ツールが含まれています。
観測サーバーを起動するには、以下を実行します。
可観測性サーバーを起動
aigne observe
実行後、ブラウザで Web インターフェースを開くと、実行トレースの詳細なリストを表示し、各 Agent の入力、出力、およびツール呼び出しを検査できます。

このツールは、Agent の動作を理解し、問題を診断し、パフォーマンスを最適化するために不可欠です。