DifyにPlaywrightのプラグインが出ましたね!!
早速つかってみたよ!
前提条件
- Playwrightは、Web版Difyにインストールしただけでは動かない。
=> playwrightプラグインをローカルPCで起動させて、ngrokを使って公開し、Web版Difyから使う。(めんどくさ)
- インストールが必要なもの
1 playwrightプラグイン
2 ngrok
3 nodejs(npxコマンド実行に必要)
- 各種事前設定方法
- playwrightプラグインをインストールする
https://cloud.dify.ai/plugins?category=discover
で、検索窓に playwright と入力すると、playwrightが表示されるので、マウスを持っていき、インストールボタンをクリックしてインストールします。
- difyのエージェントから使うので、エージェントもインストールする
https://cloud.dify.ai/plugins?category=discover
で、検索窓に agent と入力すると、Dify Agent Strategies が表示されるので、マウスを持っていき、インストールボタンをクリックしてインストールします。
3)playwrightプラグインをローカルPCで起動する
コマンドプロンプトで以下のように入力します
npx -y playwright@1.51.0 run-server --port 3003 --host 127.0.0.1
こうなればOK
npx -y playwright@1.51.0 run-server --port 3003 --host 127.0.0.1
Listening on ws://127.0.0.1:3003/
4)ngrokで、ローカルPCのplaywrightプラグインを公開する(インストール方法は検索してね)
ngrok http 3003
以下のように表示されたらOK!
ngrok
Route traffic by anything: https://ngrok.com/r/iep Session Status online
Account Shinji Yoshinaga (Plan: Free)
Version 3.22.1
Region Japan (jp)
LLatency 41ms
eb Interface http://127.0.0.1:4040
Forwarding https://76b4-240b-c020-480-5abb-9557-722a-dade-3a22.ngrok-free.app -> http://localhost:3003
Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
まだ終わらないよ(笑笑)
4. Difyでの設定
1. Dify → ツール → playwright → 認証する
とクリックして、Playwright URIに、ngrokで表示された
公開用url https://76b4-240b-c020-480-5abb-9557-722a-dade-3a22.ngrok-free.app
のhttpsをwssに変更した以下を設定します。
wss://76b4-240b-c020-480-5abb-9557-722a-dade-3a22.ngrok-free.app
Playwright URI に wss://76b4-240b-c020-480-5abb-9557-722a-dade-3a22.ngrok-free.app を貼り付ける(これは、私の例なのであなたの場合は自分のURLを書いてね)
この設定でできたこと:DifyのPlaywrightプラグインから、ローカルPCのDifyが実行できるようになった。(多分)
2. エージェントブロックで、Playwrightを使えるように設定する
ワークフローを以下のように設定します。
-
開始ノードの設定は、何もしません。
-
エージェントノードの設定は以下の通り
INSTRUCTIONにロジックを書きます。これをエージェントがPlwyrightにFunctionCallingで投げるようです。
QUERYには、Playwrightが取得したデータをどうしたいのか書きます。
終了!!
お疲れさま~
詳細設定方法は、以下のどこかに記載されてますので、ご確認を。
とにかくめんどくさいので、時間と心に余裕があるときにやってみよう!
どう使うか分からないので、Google AI Studioに質問した結果!
Google AI Studio 質問(playwright詳細ページについて質問)
Difyのplaywrightプラグインの使い方を教えて以下は、詳細ページです。
https://marketplace.dify.ai/plugins/hjlarry/playwright
logo-site
Marketplace
Submit plugin
plugin-hjlarry/playwright-logo
playwright
0.0.1
A tool can be used to automate the browser with playwright script.
hjlarry
/
playwright
1381 installs
Install
playwright
Author: hjlarry
Version: 0.0.1
Type: tool
Repo&Issue: https://github.com/hjlarry/dify-plugin-playwright
A tool can be used to automate the browser with playwright script.
Get Started
- run your playwright server
The default port 3000 is already used by dify, you should change to another port.
Option 1 (Use Docker)
docker run -p 3003:3000 --rm --init -it --workdir /home/pwuser --user pwuser mcr.microsoft.com/playwright:v1.51.0-noble /bin/sh -c "npx -y playwright@1.51.0 run-server --port 3000 --host 0.0.0.0"
Option 2 (Use npx)
npx -y playwright@1.51.0 run-server --port 3003 --host 0.0.0.0
2. Authroize
Use ws://:3003 to authorize.
- Execute script
The script should like this:
page = browser.new_page(); page.goto('http://playwright.dev'); result = page.screenshot();
using ; to separate commands. Assign the final output to the variable result(only support string and bytes). Utilize the browser variable to access the browser object.
- The agent can use this tool well
CATEGORY
Tool
VERSION
0.0.1
hjlarry
·
2025-04-03 17:28:13
Version history
REQUIREMENTS
Maximum memory
256MB
Google AI Studio 回答(playwright詳細ページについて質問)
はい、承知いたしました。DifyのPlaywrightプラグインの使い方について、提供された情報に基づいて解説します。このプラグインは、Difyの中からPlaywrightスクリプトを実行してブラウザ操作を自動化するためのツールです。
使い方(セットアップと実行手順)
-
Playwrightサーバーの起動:
- 重要: Difyはデフォルトでポート3000を使用するため、Playwrightサーバーは別のポート(例: 3003)で起動する必要があります。
-
方法1: Dockerを使用する場合
- 以下のコマンドを実行して、Dockerコンテナ内でPlaywrightサーバーを起動します。ポート
3003
をホスト側でリッスンし、コンテナ内のポート3000
に接続します。
docker run -p 3003:3000 --rm --init -it --workdir /home/pwuser --user pwuser mcr.microsoft.com/playwright:v1.51.0-noble /bin/sh -c "npx -y playwright@1.51.0 run-server --port 3000 --host 0.0.0.0"
- 以下のコマンドを実行して、Dockerコンテナ内でPlaywrightサーバーを起動します。ポート
-
方法2: npxを使用する場合 (Node.jsがインストールされている環境)
- 以下のコマンドを実行して、直接Playwrightサーバーを起動します。ポート
3003
でリッスンします。
npx -y playwright@1.51.0 run-server --port 3003 --host 0.0.0.0
- 以下のコマンドを実行して、直接Playwrightサーバーを起動します。ポート
-
--host 0.0.0.0
は、どのIPアドレスからの接続も受け付ける設定です。
-
Difyでのプラグイン認証:
- DifyのマーケットプレイスからPlaywrightプラグインをインストールします。
- インストール後、プラグインの設定画面(通常は「ツール」や「Agent」の設定内)で認証情報を入力します。
- 認証情報として、
ws://<IPアドレス>:3003
の形式で入力します。-
<IPアドレス>
の部分には、ステップ1でPlaywrightサーバーを実行しているマシンのIPアドレスを入力します。 - もしDifyと同じマシンでPlaywrightサーバーを実行している場合は、
localhost
や127.0.0.1
を試してみてください (例:ws://localhost:3003
)。 - Dockerを使用している場合や、別のマシンでサーバーを実行している場合は、そのマシンの適切なIPアドレスを指定する必要があります。
-
-
スクリプトの実行:
- DifyのAgentやチャットフロー内でこのプラグイン(ツール)を選択し、実行したいPlaywrightスクリプトを入力します。
-
スクリプトの書き方のルール:
- 複数のコマンドはセミコロン
;
で区切ります。 - ブラウザオブジェクトには
browser
という変数名でアクセスできます。 - 最終的にDifyに返したい結果(例: スクリーンショットのデータ、取得したテキストなど)は、
result
という変数に代入する必要があります。 -
result
に代入できるのは、文字列 (string) または バイト列 (bytes) のみです。
- 複数のコマンドはセミコロン
-
スクリプト例:
この例では、ページのスクリーンショット(バイト列)が
# 新しいページを開き、指定したURLにアクセスし、スクリーンショットを取得して result に代入する page = browser.new_page(); page.goto('http://playwright.dev'); result = page.screenshot();
result
に代入され、Difyに返されます。
-
Agentでの利用:
- 説明によると、このプラグインはDifyのAgentとうまく連携できるようです。
- つまり、Agentに対して自然言語で「〇〇のウェブサイトを開いて、特定の情報を取得して」といった指示を出すと、Agentが内部で適切なPlaywrightスクリプトを生成し、このプラグインを使って実行してくれる可能性があります。
補足・注意点:
- IPアドレス: Difyを実行している環境からPlaywrightサーバーを実行しているマシンへネットワーク的に到達可能である必要があります。ファイアウォール設定なども確認してください。
-
Playwrightのバージョン: プラグインが特定のPlaywrightバージョン(この例では
1.51.0
)に依存している可能性があるため、サーバー起動時は指定されたバージョンを使うのが安全です。 - エラー: うまく動作しない場合は、Playwrightサーバーのログや、Dify側のエラーメッセージを確認してください。ポート番号の競合や、IPアドレスの指定ミス、スクリプトの構文エラーなどが考えられます。
これで、DifyでPlaywrightプラグインを使用するための基本的な手順は以上です。特定の操作(要素のクリック、テキスト入力、情報抽出など)を行いたい場合は、Playwrightのドキュメントを参照してスクリプトを作成し、上記のルールに従って記述してください。
Google AI Studio 質問(Web版Difyでは使えない?=>使える!!)
もしかして、difyをwebで使っていると使えない?Google AI Studio 回答(Web版Difyでは使えない?=>使える!!)
はい、その可能性が高いです。理由:
- ネットワーク接続: DifyのWeb版 (dify.ai など) は、Difyが管理するクラウドサーバー上で動作しています。一方、Playwrightプラグインを使用するには、あなたが Playwright サーバーを起動する必要があります (Docker または npx を使用)。
-
アクセス制限: あなたがローカルマシン (自分のPC) や、社内ネットワークなどのプライベートな環境で Playwright サーバーを起動した場合、Difyのクラウドサーバーからそのサーバーへ直接ネットワーク接続することが通常できません。
- 例えば、認証情報として
ws://localhost:3003
やws://192.168.1.10:3003
(プライベートIPアドレス) を指定しても、DifyのWebサーバーからは到達できないため、プラグインは機能しません。
- 例えば、認証情報として
Web版で使うための条件 (技術的に可能ですが、推奨されない場合や追加設定が必要):
-
Playwrightサーバーをインターネットに公開する:
- あなたが起動する Playwright サーバーに、グローバルIPアドレスを割り当て、ファイアウォールでポート (例: 3003) を開放する必要があります。
- これにより、DifyのWebサーバーから
ws://<あなたのグローバルIP>:3003
のようにアクセスできるようになります。 - ただし、これはセキュリティ上のリスクを伴います。 Playwrightサーバーに認証機能がない場合、インターネット上の誰からでもアクセスされてしまう可能性があります。
-
トンネリングサービスを使う (例: ngrok):
- ngrokのようなサービスを使うと、ローカルで実行しているサーバー (例:
localhost:3003
) を一時的にインターネットに公開し、公開URL (例:wss://xxxx.ngrok.io
) を取得できます。 - この公開URLをDifyのプラグイン認証情報として設定すれば、Web版Difyからでも接続できる可能性があります (WebSocket (wss) 対応が必要)。
- ただし、これは一時的な利用やテスト向けであり、安定性やセキュリティ面で本番運用には向かない場合があります。
- ngrokのようなサービスを使うと、ローカルで実行しているサーバー (例:
推奨される方法:
-
Difyをセルフホストする:
- もしブラウザ自動操作を頻繁に利用したいのであれば、Dify自体を自分でサーバーにインストールして運用する(セルフホスト)のが最も確実です。
- セルフホスト環境であれば、Difyサーバーと同じマシンや同じローカルネットワーク内で Playwright サーバーを起動し、
ws://localhost:3003
やws://<ローカルIP>:3003
で容易に接続できます。
結論として、DifyのWeb版を利用している場合、追加のネットワーク設定やツールなしに、ローカルで起動したPlaywrightサーバーを利用するプラグインを使うのは難しいでしょう。
Google AI Studio 質問(ngrok活用でWeb版Difyから使う方法を教えて)
プラグインを自分のローカルパソコンで起動して、ngrokでトンネルを作って、Difyから使ってみたいGoogle AI Studio 回答(ngrok活用でWeb版Difyから使う方法)
はい、承知いたしました。ローカルPCでPlaywrightサーバーを起動し、ngrokを使ってそれをインターネットに公開し、DifyのWeb版から利用する手順を説明します。前提条件:
- Node.jsとnpm (またはDocker): Playwrightサーバーを起動するために必要です。
- ngrokアカウント: ngrokのウェブサイトで無料アカウントを作成してください。
- ngrokクライアント: ローカルPCにngrokクライアントをダウンロードし、PATHを通すか、実行ファイルがあるディレクトリでコマンドを実行できるようにしておいてください。
手順:
-
ngrokの認証設定 (初回のみ):
- ngrokのダッシュボードにログインし、"Your Authtoken" を見つけます。
- ターミナル(コマンドプロンプトやPowerShell)を開き、以下のコマンドを実行してngrokクライアントを認証します。
ngrok config add-authtoken <YOUR_AUTHTOKEN>
<YOUR_AUTHTOKEN>
は実際のあなたのトークンに置き換えてください。
-
Playwrightサーバーのローカル起動:
-
ターミナルを開きます。
-
以下のどちらかのコマンドを実行して、ポート
3003
でPlaywrightサーバーを起動します。(ポート番号は任意ですが、Difyのデフォルトポート3000とは違うものを選んでください)-
npx を使う場合:
(
npx -y playwright@1.51.0 run-server --port 3003 --host 127.0.0.1
--host 127.0.0.1
を指定することで、ローカルマシンからの接続のみを受け付けるようにし、ngrok経由のアクセスのみを許可します。) -
Docker を使う場合:
(Dockerの場合は、コンテナ内では
docker run -p 127.0.0.1:3003:3000 --rm --init -it --workdir /home/pwuser --user pwuser mcr.microsoft.com/playwright:v1.51.0-noble /bin/sh -c "npx -y playwright@1.51.0 run-server --port 3000 --host 0.0.0.0"
0.0.0.0
でリッスンさせ、ホスト側では127.0.0.1:3003
で受けるようにします。)
-
npx を使う場合:
-
サーバーが起動し、
Listening on ws://127.0.0.1:3003
のようなメッセージが表示されたら成功です。このターミナルは開いたままにしておきます。
-
-
ngrokでトンネルを作成:
- 別のターミナルを開きます。(Playwrightサーバーを実行しているターミナルはそのままにしておきます)
- 以下のコマンドを実行して、ローカルのポート
3003
へのトンネルを作成します。(PlaywrightサーバーはWebSocket (ws) を使いますが、ngrokのngrok http 3003
http
コマンドは通常WebSocketのUpgradeリクエストもトンネリングしてくれます。) - ngrokが起動し、以下のような情報が表示されます。
Session Status online Account Your Name (Plan: Free) Version x.x.x Region United States (us) Web Interface http://127.0.0.1:4040 Forwarding http://xxxxxxxx.ngrok.io -> http://localhost:3003 Forwarding https://xxxxxxxx.ngrok.io -> http://localhost:3003
- この中の
Forwarding
に表示されているhttps://xxxxxxxx.ngrok.io
のようなhttpsのURLをコピーまたはメモしておきます。これがDifyからアクセスするための公開URLになります。(xxxxxxx
の部分は毎回ランダムに変わります) - このngrokのターミナルも開いたままにしておきます。
-
DifyでPlaywrightプラグインを設定:
- DifyのWeb版にログインします。
- 「設定」 > 「ツール」 > 「マーケットプレイス」などでPlaywrightプラグインを探し、インストールします。
- インストールしたPlaywrightプラグインの「認証を設定」または「設定」ボタンをクリックします。
- 認証情報の入力欄に、ステップ3でメモしたngrokのhttps URLのホスト部分を使って、
ws://
またはwss://
形式で入力します。-
試すべき形式:
wss://<ngrokのURLホスト部分>
(例:wss://xxxxxxxx.ngrok.io
) -
もし
wss://
でうまくいかない場合:ws://<ngrokのURLホスト部分>
(例:ws://xxxxxxxx.ngrok.io
) も試してください。(ngrokは通常HTTPS(WSS)接続を提供しますが、Difyプラグインがどちらを期待するかによります)
-
試すべき形式:
- ポート番号はURLに含まれているため、別途入力する必要はありません。
- 設定を保存します。
-
Difyでプラグインを使用:
- AgentのツールとしてPlaywrightプラグインを追加するか、チャットフローでプラグインノードを使います。
- プラグインに入力するスクリプト欄に、実行したいPlaywrightスクリプトを入力します。
- 例:
page = browser.new_page(); page.goto('https://www.google.com'); result = page.title()
-
重要: 最終的な結果は必ず
result
変数に代入してください。
- 例:
- Agentに指示を出すか、フローを実行して、プラグインが動作するか確認します。
注意点:
- ngrokのURL: ngrokを一度終了して再起動すると、公開URLが変わります。その場合は、Difyのプラグイン設定も新しいURLに更新する必要があります。
- 接続維持: Difyからプラグインを使用している間は、ローカルPCでPlaywrightサーバーとngrokの両方を起動し続けておく必要があります。どちらか一方でも終了すると接続できなくなります。
- ngrok無料プランの制限: 無料プランには接続時間や帯域幅などの制限があります。長時間の利用や頻繁な利用には向かない場合があります。
- セキュリティ: ngrokで公開している間は、そのURLを知っていれば誰でもあなたのローカルのPlaywrightサーバーにアクセスできる状態になります。テスト目的での一時的な利用にとどめ、機密情報を扱うサイトへのアクセスは避けるなど、注意して利用してください。
- トラブルシューティング: うまくいかない場合は、Playwrightサーバーのログ、ngrokのターミナル出力、ブラウザの開発者ツール(Dify実行時)のエラーメッセージなどを確認してください。
これで、DifyのWeb版からローカルPCのPlaywrightサーバーをngrok経由で利用できるはずです。試してみてください。