
mastra ai agent batch example
Mastra × PlayWright MCP × GoogleスプレッドシートによるAIエージェントのバッチ処理実装例
Repository Info
About This Server
Mastra × PlayWright MCP × GoogleスプレッドシートによるAIエージェントのバッチ処理実装例
Model Context Protocol (MCP) - This server can be integrated with AI applications to provide additional context and capabilities, enabling enhanced AI interactions and functionality.
Documentation
Mastraを用いたAIエージェントのバッチ処理の実装例
多数のWebサイトに対し、AIエージェントによる定型作業を実施するMastraを用いた実装例を示す。
- 調査対象のサイトの管理や調査結果の記録はGoogleスプレッドシートで行う
- Playwright MCPを用いてAIエージェントがブラウザ操作を行う
- BRAVE Search MCPを用いて必要に応じてWeb検索を行う
- Mastraにより、AIエージェントとワークフローの実装、上記ツール群との統合を行う
動作の様子
以下の動画で動作の様子を示す。時間がかかるため8倍速としている。
この例ではAIエージェントがGoogleスプレッドシートに示した3つのニュースサイトに順次アクセスし、「アクセスランキング」のセクションがあるか確認する。もしサイト名とURLに違いがあればWeb検索を用いて訂正し、確認した結果をGoogleスプレッドシートに記入する。
調査の内容はAIへのプロンプトと、Googleスプレッドシートで管理するデータスキーマでカスタマイズできる。
プログラムを動作させるまで
プロジェクトをgit cloneした後、以下の手順で動作を確認できる。
モジュールのインストール
pnpm install
# yarn install
環境変数ファイルの複製
.env.exampleを.env.developmentとして複製する
Googleスプレッドシートとサービスアカウントの用意
タスクおよび結果管理用のスプレッドシートと、プログラムから編集するためのサービスアカウントを用意する。
- 次のスプレッドシートを自身のドライブに複製する https://docs.google.com/spreadsheets/d/18zsKxNYNU7uzq2YD2_YaHB3eVT53hch-MFR2tl-rtiw/edit?usp=sharing
- GCPでサービスアカウントを作成し(権限設定は不要)、JSON形式の鍵を任意のディレクトリに保存する(例
/Users/xxxx/service-account.json) - スプレッドシートをサービスアカウントのメールアドレス(例
spreadsheet-access@ideamans.iam.gserviceaccount.com)に、編集者として共有する .env.developmentに次の変数を設定するGOOGLE_APPLICATION_CREDENTIALS=にJSON鍵のパス(例/Users/xxxx/service-account.json)GOOGLE_SPREADSHEET_ID=に複製したスプレッドシートのID(例18zsKxNYNU7uzq2YD2_YaHB3eVT53hch-MFR2tl-rtiw)
Gemini APIキーの設定
- AI Studio でGeminiのAPIキーを取得する
.env.developmentにGOOGLE_GENERATIVE_AI_API_KEY=としてAPIキーを設定する
Brave Web Search APIキーの設定
- Brave Web Search API)のAPIキーを取得する
.env.developmentにBRAVE_API_KEY=としてAPIキーを設定する。
Mastraサーバーの起動
MastraのPlayground UIを起動する。
pnpm dev
# yarn dev
ワークフローを開く。
http://localhost:4111/workflows/batchWorkflow/graph
Triggerボタンを押すと次の処理が始まる。
- Googleスプレッドシートから未処理のドキュメントを取得する
- PlayWright MCP経由のブラウザで対象URLを開く
- 開いたページが名前と一致するか確認し、一致しない場合はWeb検索を用いて訂正する
- 開いたページにアクセスランキングがあるか判定する
- アクセスランキングの有無とアクセスランキングの名称をGoogleスプレッドシートに書き込む
- 上記の処理を未処理のドキュメントがなくなるまで繰り返す
リトライするには
状態の列が空だと未処理だと判定している。
Googleスプレッドシートで、状態、アクセスランキングの有無、アクセスランキングの名称の列の値を削除してTriggerボタンを押すと、一連の処理を再実行できる。
調査内容をカスタマイズするには
コメントにキーワード「改造ポイント」を記した。以下のファイルを変更することで、異なる調査にも転用できる。
AIエージェントの動作 src/mastra/agents/survey.ts
このファイルにAIエージェントの挙動を示したシステムプロンプトがある。
これをカスタマイズすることで調査内容を変更できる。
ドキュメントのフォーマット src/mastra/tools/documents.ts
dataSchemaがGoogleスプレッドシートのフィールド構造と、プログラム上におけるデータ構造とを揃えている。
AIエージェントのシステムプロンプトの変更はGoogleスプレッドシートのフォーマットにも関係する。
シートの1行目とこのスキーマを揃えて変更することで、記録するドキュメントのスキーマを変更できる。
なお、headersスクリプトでdataSchemaのフィールドをタブ区切りテキストで出力できる。
pnpm headers
# yarn headers
プロンプトと更新データ src/mastra/workflows/batch.ts
それぞれのサイトごとの処理に必要なプロンプトと、調査結果をGoogleスプレッドシートに書き込む際のデータ構造はこのファイルで変更する。
プロンプトの変更は少ないと思われるが、ドキュメントのフォーマット変更は更新データの変更を伴う。
他のモデルを使うには
このプログラムでは安価なgemini-2.0-flash-001を指定しているが、Function Callingと構造化出力に対応したLLMであれば代替できる。
他のモデルを利用するには以下のファイルを更新する。
.env.developmentモデル向けのAPIキーを設定src/mastra/agents/models.ts候補となるモデルの一覧src/mastra/agents/survey.ts調査エージェントのモデルを指定src/mastra/agents/structure.ts調査結果の構造化エージェントのモデルを指定
Quick Start
Clone the repository
git clone https://github.com/ideamans/mastra-ai-agent-batch-exampleInstall dependencies
cd mastra-ai-agent-batch-example
npm installFollow the documentation
Check the repository's README.md file for specific installation and usage instructions.
Repository Details
Recommended MCP Servers
Discord MCP
Enable AI assistants to seamlessly interact with Discord servers, channels, and messages.
Knit MCP
Connect AI agents to 200+ SaaS applications and automate workflows.
Apify MCP Server
Deploy and interact with Apify actors for web scraping and data extraction.
BrowserStack MCP
BrowserStack MCP Server for automated testing across multiple browsers.
Zapier MCP
A Zapier server that provides automation capabilities for various apps.