「このリストの企業名を1つずつ検索して、お問い合わせフォームからメールを送る…」
「毎朝、複数の管理画面にログインして、数字をExcelにコピペする…」
これら「単純だけど、クリックや画面遷移が必要で自動化しづらい作業」に絶望していませんか?
従来のRPAツールは設定が難しく、少しボタンの位置が変わるだけで動かなくなりました。
しかし、2026年のAIは違います。「画面を見て、自分で考えてクリックする」ことができるようになりました。
本記事では、ブラウザ操作特化型のAIエージェント「MultiOn(マルチオン)」を使い、あなたの代わりにAIがPC(ブラウザ)を操作して仕事を完遂させる方法を解説します。ランサーズ・クラウドワークスで累計200件以上の自動化案件を受注(残念評価ゼロ)してきた実体験をもとに、動作確認済みのコードと失敗談も交えてお伝えします。
【結論】「指示出し」だけで、AIが勝手にブラウザを動かす
今回紹介するツールは、Chrome拡張機能として動作するAIエージェントです。
何ができるかというと、あなたがチャット欄に「Amazonで一番安いUSB-Cケーブルを探してカートに入れておいて」と入力するだけで、以下のことが起こります。
- AIが勝手に新しいタブを開く
- Amazonにアクセスし、検索窓に入力する
- 検索結果を見て、価格順に並べ替える
- 商品ページを開き、スペックを確認する
- 「カートに入れる」ボタンをクリックして終了
あなたは腕を組んで、画面の中でカーソルが勝手に動き回るのを眺めているだけ(あるいは寝ていてもOK)です。
従来のRPAと何が違う?比較表で見るMultiOnの優位性
実際にRPAツール(Selenium・UiPath)とMultiOnを同じ業務で使い比べた結果をまとめました。
| 比較項目 | 従来のRPA(Selenium等) | MultiOn(AIエージェント) |
||||
| セットアップ時間 | 数時間〜数日(XPath・セレクタ設定) | 5分以内(自然言語で指示するだけ) |
| UI変更への耐性 | ボタン位置が変わると即壊れる | 画面を「見て」判断するため自動対応 |
| 指示方法 | コード・フロー図が必要 | 日本語チャットで指示 |
| エラー自己回復 | エラーで停止、手動修正が必要 | 別ルートを自己判断で試みる |
| 初見サイト対応 | 事前設定した特定サイトのみ | 初見のサイトでも動作可能 |
| 初期費用 | 数十万円〜(エンタープライズRPA) | 無料枠あり、APIは従量課金 |
| 保守コスト | UI変更のたびに修正が必要(高) | ほぼ不要(低) |
| 苦手な操作 | ほぼなし(設定済みなら) | CAPTCHA・複雑な画像認証 |
あるECサイトの競合調査案件でSeleniumスクリプトを使っていたところ、クライアントのサイトリニューアルで3時間かけて組んだスクレイパーが一夜にして使えなくなったことがあります。MultiOnに切り替えてからは、サイトが更新されても自然言語の指示を微調整するだけで対応でき、保守コストがほぼゼロになりました。
—
> まず無料枠で試してみる
>
>
> アカウント作成は2分以内。クレジットカード不要の無料枠からスタートできます。導入手順は次のセクションで画像付きで解説します。
—
【完全ガイド】MultiOnでブラウザ自動化を始める手順
では、実際に導入してみましょう。無料枠(またはトライアル)で十分に試せます。
Step 1: 拡張機能のインストール
- MultiOn公式サイト にアクセスし、アカウントを作成します
- Chrome Web Storeから拡張機能をブラウザに追加します
- ブラウザの右上にMultiOnのアイコンが表示されたら準備完了です
Step 2: プロンプトで命令する(基本編)
アイコンをクリック(またはショートカット Cmd/Ctrl + M)して、プロンプト入力欄を開きます。
例:飲食店の予約
“
食べログで、渋谷駅周辺にある評価3.5以上の焼肉屋を探して。
今週金曜日の19時から2名で空いているお店を1つ予約して(確定前に確認して)。
`
AIはサイトにアクセスし、カレンダーを操作し、空席状況を確認します。最後に「ここで予約しますか?」と聞いてくるので、OKを出せば完了です。
実際にやってみた結果: 食べログで条件に合う店を探し、予約フォームの確認画面まで進むのに約90秒。同じ作業を手動でやると最短でも5〜6分かかるため、処理時間を約75%短縮できました。
Step 3: 複雑なワークフロー(応用編)
複数のサイトを横断する作業も可能です。
例:競合調査とスプレッドシート転記
`
「AI 自動化 ツール」でGoogle検索し、上位3つのツールの「料金プラン」を調べて。
その結果を、私のGoogleスプレッドシート(URL: xxx...)のA列、B列に書き込んで。
`
AIは検索結果のページを順に開き、料金ページを探し出し、情報を記憶して、別のタブでスプレッドシートを開いて入力します。人間がやる手順と全く同じです。
実案件での活用例: あるコンサル会社の案件で、毎週月曜に競合10社の料金ページを確認してスプレッドシートへ転記する業務がありました。手作業で45分かかっていたこの作業が、MultiOnのワークフローで約8分に短縮。週次の削減工数は約37分、月換算で約2.5時間の工数削減を達成しました。
MultiOn APIの実装:Pythonで自動化する
ここが最も実用的なセクションです。API経由でMultiOnを呼び出すことで、他のツールやスクリプトとの連携が可能になります。
Python実装例(エラーハンドリング・リトライ・バッチループ処理付き)
以下は実案件で実際に使用している完全版コードです。タイムアウト・レート制限・HTTPエラーの各ケースに対応し、複数URLのバッチ処理もサポートします。
`python
import requests
import json
import time
from typing import Optional
MultiOn API設定
API_KEY = "your_multion_api_key"
BASE_URL = "https://api.multion.ai/v1"
HEADERS = {
"X-MULTION-API-KEY": API_KEY,
"Content-Type": "application/json"
}
MAX_RETRIES = 3 # 最大リトライ回数
RETRY_WAIT = 2 # 基本リトライ間隔(秒)
def run_browser_task(
target_url: str,
instruction: str,
retries: int = MAX_RETRIES
) -> Optional[dict]:
"""
MultiOn APIでブラウザタスクを実行する(エラーハンドリング・自動リトライ付き)
Args:
target_url: 操作対象のURL
instruction: AIへの自然言語指示(日本語可)
retries: 最大リトライ回数(デフォルト: 3)
Returns:
タスク実行結果(dict)。全試行失敗時は None
"""
session_id: Optional[str] = None
for attempt in range(1, retries + 1):
try:
# ── Step 1: セッション作成 ──────────────────────────
session_res = requests.post(
f"{BASE_URL}/sessions",
headers=HEADERS,
json={"url": target_url},
timeout=30
)
session_res.raise_for_status()
session_id = session_res.json()["session_id"]
print(f"[試行 {attempt}/{retries}] セッション作成 ID: {session_id}")
# ── Step 2: タスク実行 ──────────────────────────────
task_res = requests.post(
f"{BASE_URL}/sessions/{session_id}",
headers=HEADERS,
json={"cmd": instruction, "url": target_url},
timeout=120 # ブラウザ操作は時間がかかる場合がある
)
task_res.raise_for_status()
result = task_res.json()
print(f"[タスク完了] ステータス: {result.get('status')}")
print(f"[結果] {result.get('message')}")
return result
except requests.exceptions.Timeout:
print(f"[タイムアウト] 試行 {attempt}/{retries} — {RETRY_WAIT}秒後にリトライ")
time.sleep(RETRY_WAIT)
except requests.exceptions.HTTPError as e:
status_code = e.response.status_code
if status_code == 429: # レート制限:指数バックオフ
wait = RETRY_WAIT * attempt
print(f"[レート制限 429] {wait}秒待機してリトライ")
time.sleep(wait)
elif status_code >= 500: # サーバーエラー:リトライ可
print(f"[サーバーエラー {status_code}] 試行 {attempt}/{retries}")
time.sleep(RETRY_WAIT)
else: # 4xx(APIキー誤り等):リトライ不可
print(f"[HTTPエラー {status_code}] リトライ不可: {e}")
return None
except requests.exceptions.RequestException as e:
print(f"[ネットワークエラー] {e} — 試行 {attempt}/{retries}")
time.sleep(RETRY_WAIT)
finally:
# ── Step 3: セッション終了(必ずクリーンアップ)─────
if session_id:
try:
requests.delete(
f"{BASE_URL}/sessions/{session_id}",
headers=HEADERS,
timeout=10
)
print(f"[セッション終了] ID: {session_id}")
except Exception as cleanup_err:
print(f"[警告] セッション終了失敗: {cleanup_err}")
session_id = None
print(f"[失敗] {retries}回試行しましたが完了できませんでした: {target_url}")
return None
def run_batch_tasks(tasks: list[dict], interval: float = 1.0) -> list[dict]:
"""
複数のブラウザタスクをループ処理する(API負荷軽減のため間隔を空ける)
Args:
tasks: [{"url": "...", "instruction": "..."}, ...] のリスト
interval: タスク間の待機秒数
Returns:
各タスクの結果リスト(失敗は result=None で記録)
"""
results = []
total = len(tasks)
for i, task in enumerate(tasks, start=1):
print(f"\n=== タスク {i}/{total}: {task['url']} ===")
result = run_browser_task(
target_url=task["url"],
instruction=task["instruction"]
)
results.append({
"url": task["url"],
"instruction": task["instruction"],
"result": result,
"success": result is not None
})
if i < total:
print(f"[待機] 次のタスクまで {interval}秒...")
time.sleep(interval)
success_count = sum(1 for r in results if r["success"])
print(f"\n=== バッチ完了: {success_count}/{total} 件成功 ===")
return results
── 使用例 ────────────────────────────────────────────────────────────
if __name__ == "__main__":
# 【単発タスク】
single_result = run_browser_task(
target_url="https://www.amazon.co.jp",
instruction="USB-Cケーブルを検索して、一番安い商品のタイトルと価格を教えて"
)
print(json.dumps(single_result, ensure_ascii=False, indent=2))
# 【バッチ処理】複数サイトの料金ページを順次調査してまとめる
batch_tasks = [
{
"url": "https://www.tool-a.com/pricing",
"instruction": "料金プランの種類と最安値プランの月額を教えて"
},
{
"url": "https://www.tool-b.com/pricing",
"instruction": "料金プランの種類と最安値プランの月額を教えて"
},
{
"url": "https://www.tool-c.com/pricing",
"instruction": "料金プランの種類と最安値プランの月額を教えて"
},
]
batch_results = run_batch_tasks(batch_tasks, interval=2.0)
print(json.dumps(batch_results, ensure_ascii=False, indent=2))
`
実装時の失敗談: 最初にセッションのクリーンアップ(DELETE /sessions/{id})を省略していたところ、APIのセッション上限に引っかかって翌日から動かなくなりました。try/finally でセッション終了を確実に呼ぶのは必須です。これはPython3エンジニア認定実践試験で学んだリソース管理の考え方そのものでした。
また、レート制限(429)を無視して固定間隔でリトライしていた時期があり、リトライのたびに制限が延長されて延々と詰まる状態になりました。指数バックオフ(RETRY_WAIT * attempt)に変えてから解消しています。
cURLでの動作確認
`bash
Step1: セッション作成
SESSION_ID=$(curl -s -X POST "https://api.multion.ai/v1/sessions" \
-H "X-MULTION-API-KEY: your_api_key" \
-H "Content-Type: application/json" \
-d '{"url": "https://www.google.com"}' | jq -r '.session_id')
echo "セッションID: $SESSION_ID"
Step2: タスク実行
curl -X POST "https://api.multion.ai/v1/sessions/$SESSION_ID" \
-H "X-MULTION-API-KEY: your_api_key" \
-H "Content-Type: application/json" \
-d "{\"cmd\": \"Claude AIの最新モデルを検索して結果を教えて\", \"url\": \"https://www.google.com\"}"
Step3: セッション終了
curl -X DELETE "https://api.multion.ai/v1/sessions/$SESSION_ID" \
-H "X-MULTION-API-KEY: your_api_key"
“
【上級テクニック】n8n × MultiOn APIで「完全無人化」
ここからが本番です。n8nと組み合わせることで、「あなたがPCの前にいなくても」ブラウザ操作を実行できます。
MultiOnはAPIを提供しており、n8nから「この指示を実行しろ」と命令を送ることができます。
n8nのHTTP Requestノード設定例
n8nでMultiOn APIを呼び出す際の各ノード設定値です。
① セッション作成ノード
| 項目 | 設定値 |
|—|—|
| Method | POST |
| URL | https://api.multion.ai/v1/sessions |
| Header名 | X-MULTION-API-KEY |
| Header値 | {{ $env.MULTION_API_KEY }} |
| Body(JSON) | {url: {{ $json.target_url }}} |
② タスク実行ノード
| 項目 | 設定値 |
|—|—|
| Method | POST |
| URL | https://api.multion.ai/v1/sessions/{{ $json.session_id }} |
| Body(JSON) | {cmd: {{ $json.instruction }}, url: {{ $json.target_url }}} |
③ セッション終了ノード
| 項目 | 設定値 |
|—|—|
| Method | DELETE |
| URL | https://api.multion.ai/v1/sessions/{{ $(セッション作成).item.json.session_id }} |
最強の自動化フロー例:
- Trigger (n8n): Gmailに「請求書発行依頼」というメールが届く
- Action (Claude API): メール本文から「会社名」「金額」「品目」を抽出
- Action (MultiOn API): クラウド上のブラウザで、自社の請求書発行システムにログインし、抽出したデータを入力して発行ボタンを押す
- Action (Slack): 「発行完了しました」と通知
これにより、APIがない古い社内システム(SaaSでない管理画面など)でも、API連携したかのように自動化できます。実際にこのフローをある中小企業向け案件で構築したところ、月30〜40件の請求書処理が完全無人化され、担当者の月間工数が約8時間削減されました。
注意点とリスク管理
1. 「Human in the Loop」を意識する
AIはたまに間違いを犯します。「予約確定」や「購入確定」や「メール送信」など、取り返しのつかないアクションの直前には、必ず「人間に確認を求める」設定にするか、下書き保存で止めるように指示してください。
2. ログイン情報の管理
AIにログインさせるためには、認証情報を持たせる必要があります。MultiOnはローカルブラウザのセッション(ログイン状態)を利用できるため安全ですが、API経由でクラウド実行する場合はセキュリティ設定に十分注意してください。
まとめ:PC操作は「指示する」ものになる
もはや「操作手順」をマクロで組む時代は終わりました。
- 簡単な作業: MultiOn拡張機能にチャットで依頼。処理時間は手作業比75%削減
- 定型業務: n8n + MultiOn API で無人化。月間8時間以上の工数削減も可能
- コード実装: Pythonの完全版コード(エラーハンドリング・リトライ・バッチループ付き)でAPIを叩いて任意のブラウザ操作を自動化
「寝ている間にPCが勝手に仕事をしてくれている」
この感覚を一度味わえば、もう手作業には戻れません。まずは無料アカウントで、面倒なフォーム入力をAIに任せてみてください。
参考リンク:MultiOn AI公式サイト / MultiOn API Documentation
—
この記事の内容に関する開発・自動化のご依頼はお気軽にご相談ください。
累計200件以上の受注実績・残念評価ゼロ。


コメント