Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
High-performance browser automation with Fast Playwright MCP. Features token-optimized batch execution, intelligent element selection with fallback, diff det...
High-performance browser automation with Fast Playwright MCP. Features token-optimized batch execution, intelligent element selection with fallback, diff det...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
High-performance browser automation skill using the Fast Playwright MCP server (@tontoko/fast-playwright-mcp). This fork of the Microsoft Playwright MCP provides significant token optimization, batch execution, and enhanced element discovery.
FeatureBenefitToken Optimization70-80% reduction via expectation parameterBatch Execution90% token savings for multi-step workflowsDiff DetectionTrack only changes, not full snapshotsEnhanced SelectorsMultiple selector types with automatic fallbackDiagnostic ToolsAdvanced debugging and element discoveryImage CompressionJPEG format, quality control, resizing
{ "mcpServers": { "playwright": { "command": "npx", "args": ["@tontoko/fast-playwright-mcp@latest"] } } }
Follow these steps in order for optimal results:
Use browser_navigate to load the target page before any other operations.
For 2+ operations, ALWAYS use browser_batch_execute instead of individual tool calls.
Apply expectation parameters to reduce response size.
Enable diffOptions when tracking changes without navigation.
All browser tools support an expectation parameter to control response content: { "includeSnapshot": false, // 70-80% token reduction "includeConsole": false, // Exclude console messages "includeTabs": false, // Hide tab information "includeCode": false, // Suppress code generation "includeDownloads": false // Exclude download info }
Limit snapshot content for focused analysis: { "snapshotOptions": { "selector": ".main-content", // Capture specific section only "maxLength": 2000, // Limit character count "format": "aria" // Use accessibility tree format } }
Track only changes between operations: { "diffOptions": { "enabled": true, "format": "minimal", // Options: unified, split, minimal "threshold": 0.1, "maxDiffLines": 50, "context": 3 } }
ref - System-generated element ID from previous results (highest priority) css - Standard CSS selectors (#id, .class, tag) role - ARIA roles with optional text (button, textbox, etc.) text - Text content search with optional tag filter
All element-based tools accept multiple selectors with automatic fallback: { "selectors": [ { "css": "#submit-btn" }, { "role": "button", "text": "Submit" }, { "text": "Submit", "tag": "button" } ] } Selectors are tried in order until one succeeds. If multiple elements match, returns a candidate list for selection.
Execute multiple operations in a single request: { "tool": "browser_batch_execute", "arguments": { "steps": [ { "tool": "browser_navigate", "arguments": { "url": "https://example.com/login" } }, { "tool": "browser_type", "arguments": { "selectors": [{ "css": "#username" }], "text": "user@example.com" } }, { "tool": "browser_type", "arguments": { "selectors": [{ "css": "#password" }], "text": "password123" } }, { "tool": "browser_click", "arguments": { "selectors": [{ "role": "button", "text": "Login" }] } } ] } }
{ "tool": "browser_batch_execute", "arguments": { "steps": [ { "tool": "browser_navigate", "arguments": { "url": "https://example.com" }, "expectation": { "includeSnapshot": false }, "continueOnError": true }, { "tool": "browser_click", "arguments": { "selectors": [{ "css": "#submit" }] }, "expectation": { "includeSnapshot": true, "snapshotOptions": { "selector": ".result-area" }, "diffOptions": { "enabled": true, "format": "minimal" } } } ], "stopOnFirstError": false, "globalExpectation": { "includeConsole": false, "includeTabs": false } } }
continueOnError (per-step): Continue even if this step fails stopOnFirstError (global): Stop entire batch on first error
{ "tool": "browser_batch_execute", "arguments": { "steps": [ { "tool": "browser_navigate", "arguments": { "url": "https://example.com" } }, { "tool": "browser_take_screenshot", "arguments": { "filename": "homepage.png", "fullPage": true, "expectation": { "includeSnapshot": false } } } ] } }
{ "tool": "browser_batch_execute", "arguments": { "steps": [ { "tool": "browser_navigate", "arguments": { "url": "https://example.com/contact" } }, { "tool": "browser_type", "arguments": { "selectors": [{ "css": "#name" }], "text": "John Doe" } }, { "tool": "browser_type", "arguments": { "selectors": [{ "css": "#email" }], "text": "john@example.com" } }, { "tool": "browser_type", "arguments": { "selectors": [{ "css": "#message" }], "text": "Hello World" } }, { "tool": "browser_click", "arguments": { "selectors": [{ "role": "button", "text": "Send" }] } } ], "globalExpectation": { "includeSnapshot": false } } }
{ "tool": "browser_batch_execute", "arguments": { "steps": [ { "tool": "browser_navigate", "arguments": { "url": "https://example.com" } }, { "tool": "browser_resize", "arguments": { "width": 1920, "height": 1080 } }, { "tool": "browser_take_screenshot", "arguments": { "filename": "desktop.png" } }, { "tool": "browser_resize", "arguments": { "width": 768, "height": 1024 } }, { "tool": "browser_take_screenshot", "arguments": { "filename": "tablet.png" } }, { "tool": "browser_resize", "arguments": { "width": 375, "height": 667 } }, { "tool": "browser_take_screenshot", "arguments": { "filename": "mobile.png" } } ] } }
{ "tool": "browser_batch_execute", "arguments": { "steps": [ { "tool": "browser_navigate", "arguments": { "url": "https://example.com/login" } }, { "tool": "browser_type", "arguments": { "selectors": [{ "css": "#email" }], "text": "user@example.com" } }, { "tool": "browser_type", "arguments": { "selectors": [{ "css": "#password" }], "text": "secret", "submit": true } }, { "tool": "browser_wait_for", "arguments": { "text": "Dashboard" } } ], "globalExpectation": { "diffOptions": { "enabled": true } } } }
Search for elements using multiple criteria: { "tool": "browser_find_elements", "arguments": { "searchCriteria": { "text": "Submit", "role": "button" }, "maxResults": 5, "enableEnhancedDiscovery": true } }
Comprehensive page analysis: { "tool": "browser_diagnose", "arguments": { "diagnosticLevel": "detailed", "includePerformanceMetrics": true, "includeAccessibilityInfo": true, "includeTroubleshootingSuggestions": true } } Diagnostic levels: none, basic, standard, detailed, full
Extract and analyze HTML content: { "tool": "browser_inspect_html", "arguments": { "selectors": [{ "css": ".content" }], "depth": 3, "maxSize": 50000, "format": "html", "optimizeForLLM": true } }
{ "tool": "browser_take_screenshot", "arguments": { "filename": "screenshot.jpg", "type": "jpeg", "expectation": { "imageOptions": { "format": "jpeg", "quality": 50, "maxWidth": 1280 } } } }
Monitor specific network activity: { "tool": "browser_network_requests", "arguments": { "urlPatterns": ["/api/"], "excludeUrlPatterns": ["analytics", "tracking"], "methods": ["GET", "POST"], "statusRanges": [{ "min": 200, "max": 299 }], "maxRequests": 10, "newestFirst": true } }
{ "tool": "browser_batch_execute", "arguments": { "steps": [ { "tool": "browser_tab_new", "arguments": { "url": "https://example.com" } }, { "tool": "browser_tab_list", "arguments": {} }, { "tool": "browser_tab_select", "arguments": { "index": 0 } }, { "tool": "browser_tab_close", "arguments": { "index": 1 } } ] } }
{ "tool": "browser_wait_for", "arguments": { "text": "Loading complete" } }
{ "tool": "browser_wait_for", "arguments": { "textGone": "Loading..." } }
{ "tool": "browser_wait_for", "arguments": { "time": 2 } }
{ "tool": "browser_console_messages", "arguments": { "consoleOptions": { "levels": ["error", "warn"], "maxMessages": 10, "patterns": ["^Error:"], "removeDuplicates": true } } }
{ "tool": "browser_evaluate", "arguments": { "function": "() => document.title" } }
{ "tool": "browser_evaluate", "arguments": { "selectors": [{ "css": "#counter" }], "function": "(element) => element.textContent" } }
{ "tool": "browser_handle_dialog", "arguments": { "accept": true, "promptText": "Optional prompt response" } }
{ "tool": "browser_file_upload", "arguments": { "paths": ["/absolute/path/to/file.pdf"] } }
{ "tool": "browser_drag", "arguments": { "startSelectors": [{ "css": "#draggable" }], "endSelectors": [{ "css": "#dropzone" }] } }
{ "tool": "browser_select_option", "arguments": { "selectors": [{ "css": "#country" }], "values": ["us", "de"] } }
{ "tool": "browser_press_key", "arguments": { "key": "Enter" } } Special keys: Enter, Tab, Escape, ArrowUp, ArrowDown, ArrowLeft, ArrowRight, Backspace, Delete, Home, End
Use batch execution for 2+ operations Disable snapshots for intermediate steps Enable diff detection for state tracking Filter console messages to relevant levels Use selective snapshots with CSS selectors Compress images when quality is not critical
Use ref from previous results when available Provide fallback selectors for robustness Prefer role-based selectors for accessibility Use CSS selectors for specific targeting Text selectors as last resort
Use continueOnError for non-critical steps Set stopOnFirstError: false for best-effort execution Use diagnostic tools when automation fails Check console messages for JavaScript errors
Minimize snapshot size with selectors Use minimal diff format for change tracking Filter network requests to relevant patterns Batch related operations together
Use browser_find_elements to discover alternatives Run browser_diagnose for page analysis Check for iframes or shadow DOM Verify page has finished loading
Use browser_wait_for with specific conditions Increase wait time for slow pages Check network requests for blocked resources
Enable includeSnapshot: false Use snapshotOptions.selector to limit scope Enable diffOptions.enabled: true Reduce maxRequests in network filtering
browser_navigate - Navigate to URL browser_click - Click element browser_type - Type text browser_hover - Hover over element browser_drag - Drag and drop browser_select_option - Select dropdown option browser_press_key - Press keyboard key browser_file_upload - Upload files browser_evaluate - Execute JavaScript browser_wait_for - Wait for condition
browser_batch_execute - Execute multiple actions
browser_snapshot - Capture accessibility snapshot browser_take_screenshot - Take screenshot browser_console_messages - Get console output browser_network_requests - List network requests browser_find_elements - Find elements by criteria browser_diagnose - Page diagnostics browser_inspect_html - HTML content extraction
browser_tab_list - List all tabs browser_tab_new - Open new tab browser_tab_select - Switch to tab browser_tab_close - Close tab
browser_navigate_back - Go back browser_navigate_forward - Go forward
browser_resize - Resize window browser_close - Close browser browser_install - Install browser browser_handle_dialog - Handle alerts/confirms
browser_mouse_click_xy - Click at coordinates browser_mouse_move_xy - Move mouse to coordinates browser_mouse_drag_xy - Drag between coordinates
browser_pdf_save - Save page as PDF
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.