[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71AQENGWMWMSPNHWH095VDA":3,"skill-same:01M71AQENGWMWMSPNHWH095VDA":69},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":14,"repositoryHtmlUrl":52,"repositoryHomepageUrl":6,"ownerHtmlUrl":53,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":54,"install":55,"resources":68},"01M71AQENGWMWMSPNHWH095VDA","agent-browser",null,"A headless browser automation CLI that lets AI agents control web pages through structured commands. Enables navigation, interaction, and data capture across pages. Use when the agent needs to automate web tasks, scrape data, fill forms, click elements, take screenshots, or interact with dynamic web applications. Trigger on phrases like 'browse to', 'click the', 'fill form', 'scrape data', 'take screenshot', or 'automate web task'.","sapsapshen\u002Fai-memory-router","sapsapshen","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F20347959?v=4","01M6XDQEF1DP50DKF37H81J3J5","shenmian","01M6XDQEJPE41Y3DT2763X8ZJN",0,"MIT","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fagent-browser\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"browser","agent browser","ai agents","tasks","when","headless","click","navigation","use","applications","browse","form","screenshots","screenshot","take screenshot","take","forms","interaction","scrape","browser automation","2026-11-10 10:12:30",false,"---\nname: agent-browser\ndescription: \"A headless browser automation CLI that lets AI agents control web pages through structured commands. Enables navigation, interaction, and data capture across pages. Use when the agent needs to automate web tasks, scrape data, fill forms, click elements, take screenshots, or interact with dynamic web applications. Trigger on phrases like 'browse to', 'click the', 'fill form', 'scrape data', 'take screenshot', or 'automate web task'.\"\n---\n\n# Agent Browser — Headless Web Automation\n\n## Overview\n\nAgent Browser transforms AI agents into **web automation experts** capable of controlling real browsers to navigate, interact with, and extract data from web pages. It provides a structured CLI interface for headless (or headed) browser automation without requiring manual scripting.\n\n## Core Capabilities\n\n### 1. Browser Control\n```bash\n# Launch browser session\nagent-browser start --headless  # Run without visible window\nagent-browser start --headed    # Show browser for debugging\n\n# Navigate to URLs\nagent-browser goto \"https:\u002F\u002Fexample.com\"\nagent-browser goto \"https:\u002F\u002Fgithub.com\" --wait 5000  # Wait 5 seconds\n\n# Navigate history\nagent-browser back\nagent-browser forward\nagent-browser reload\n```\n\n### 2. Page Interaction\n```bash\n# Click elements\nagent-browser click \"button#submit\"\nagent-browser click \"text=Login\"\nagent-browser click \"xpath=\u002F\u002Fbutton[@type='submit']\"\n\n# Fill forms\nagent-browser fill \"input#username\" \"myusername\"\nagent-browser fill \"input[name='password']\" \"mypassword\"\nagent-browser fill \"textarea\" \"Long text content...\"\n\n# Type text (character by character)\nagent-browser type \"input.search\" \"search query\"\n\n# Select dropdowns\nagent-browser select \"select#country\" \"United States\"\nagent-browser select \"select[name='category']\" \"value=tech\"\n```\n\n### 3. Data Extraction\n```bash\n# Extract text content\nagent-browser text \"div.content\" --output content.txt\nagent-browser text \"h1, h2, h3\" --format json\n\n# Extract HTML\nagent-browser html \"table.data\" --output table.html\nagent-browser html \"div.article\" --clean\n\n# Extract attributes\nagent-browser attr \"a.link\" \"href\" --output links.txt\nagent-browser attr \"img\" \"src,alt\" --format csv\n\n# Screenshots\nagent-browser screenshot --full-page --output page.png\nagent-browser screenshot \"div.widget\" --output widget.png\n```\n\n### 4. Advanced Operations\n```bash\n# Execute JavaScript\nagent-browser js \"window.scrollTo(0, document.body.scrollHeight)\"\nagent-browser js \"return document.title\" --output title.txt\n\n# Wait for conditions\nagent-browser wait \"div.loaded\" --timeout 10000\nagent-browser wait \"text=Success\" --visible\n\n# Handle alerts and dialogs\nagent-browser alert accept  # Click OK\nagent-browser alert dismiss # Click Cancel\nagent-browser alert text \"Enter value\" --input \"test\"\n\n# Manage cookies\nagent-browser cookies get --output cookies.json\nagent-browser cookies set \"session_id\" \"abc123\" --domain \".example.com\"\n```\n\n## When to Use This Skill\n\n### Scenario 1: Web Scraping & Data Collection\n```\nTask: \"Collect product prices from e-commerce site\"\nAgent Browser Usage:\n1. Navigate to product category page\n2. Extract product names and prices\n3. Paginate through results\n4. Export to structured format\n```\n\n### Scenario 2: Form Automation\n```\nTask: \"Automate login and form submission\"\nAgent Browser Usage:\n1. Navigate to login page\n2. Fill username and password\n3. Click login button\n4. Wait for dashboard to load\n5. Fill complex multi-step form\n6. Submit and verify success\n```\n\n### Scenario 3: Web Application Testing\n```\nTask: \"Test user registration flow\"\nAgent Browser Usage:\n1. Navigate to registration page\n2. Fill all required fields\n3. Submit form\n4. Verify confirmation message\n5. Check email inbox (if accessible)\n6. Take screenshots for documentation\n```\n\n### Scenario 4: Content Monitoring\n```\nTask: \"Monitor news website for updates\"\nAgent Browser Usage:\n1. Navigate to news site\n2. Extract latest headlines\n3. Compare with previous snapshot\n4. Send alert if new content found\n5. Archive screenshots of changes\n```\n\n## Installation & Setup\n\n### Quick Install\n```bash\n# Install via npm (recommended)\nnpm install -g @thesethrose\u002Fagent-browser-cli\n\n# Or via package manager\npip install agent-browser\n\n# Verify installation\nagent-browser --version\n```\n\n### Browser Requirements\n```bash\n# Install required browsers\n# Chrome\u002FChromium (recommended)\nagent-browser setup chrome\n\n# Firefox\nagent-browser setup firefox\n\n# Check browser availability\nagent-browser browsers list\n```\n\n### OpenClaw Integration\n```bash\n# Copy skill to workspace\nmkdir -p ~\u002F.openclaw\u002Fworkspace\u002Fskills\u002Fagent-browser\ncp agent-browser-skill.md ~\u002F.openclaw\u002Fworkspace\u002Fskills\u002Fagent-browser\u002FSKILL.md\n\n# Test integration\necho \"Browse to example.com and take screenshot\" | openclaw\n```\n\n## Command Reference\n\n### Navigation Commands\n```bash\n# Basic navigation\ngoto \u003Curl>                    # Navigate to URL\nback                         # Go back\nforward                      # Go forward  \nreload                       # Reload page\nwait \u003Cms>                    # Wait milliseconds\nwait \u003Cselector>              # Wait for element\n\n# Frame management\nframe \u003Cselector>             # Switch to frame\nframe top                    # Switch to top frame\nframes list                  # List all frames\n```\n\n### Interaction Commands\n```bash\n# Mouse actions\nclick \u003Cselector>             # Click element\ndblclick \u003Cselector>          # Double click\nrightclick \u003Cselector>        # Right click\nhover \u003Cselector>             # Hover over element\n\n# Keyboard actions\ntype \u003Cselector> \u003Ctext>       # Type text\npress \u003Ckey>                  # Press key (Enter, Tab, etc.)\nhotkey \u003Cmodifier+key>        # Press hotkey (Ctrl+C, etc.)\n\n# Form actions\nfill \u003Cselector> \u003Cvalue>      # Fill input field\nselect \u003Cselector> \u003Coption>   # Select dropdown option\ncheck \u003Cselector>             # Check checkbox\nuncheck \u003Cselector>           # Uncheck checkbox\n```\n\n### Extraction Commands\n```bash\n# Content extraction\ntext \u003Cselector>              # Get text content\nhtml \u003Cselector>              # Get HTML content\nattr \u003Cselector> \u003Cattribute>  # Get attribute value\n\n# Screenshots\nscreenshot                   # Capture viewport\nscreenshot --full-page       # Capture entire page\nscreenshot \u003Cselector>        # Capture element\n\n# Page info\ntitle                        # Get page title\nurl                          # Get current URL\ncookies                      # Get cookies\nlocalstorage                 # Get local storage\n```\n\n### JavaScript Execution\n```bash\n# Execute JS\njs \u003Ccode>                    # Execute JavaScript\njs \u003Ccode> --return           # Execute and return value\n\n# Common JS operations\njs \"window.scrollTo(0, 1000)\"           # Scroll down\njs \"document.querySelector('button').click()\"  # Click via JS\njs \"return document.body.innerText\"     # Return page text\n```\n\n## Best Practices\n\n### 1. Element Selection\n```bash\n# Prefer stable selectors\nagent-browser click \"button[data-testid='submit']\"  # Good: data attribute\nagent-browser click \"button#login-button\"           # Good: ID selector\nagent-browser click \"text=Submit\"                   # Good: text content\n\n# Avoid fragile selectors  \nagent-browser click \"div:nth-child(3) > button\"     # Bad: positional\nagent-browser click \"button.btn-primary\"            # Caution: may change\n```\n\n### 2. Waiting Strategies\n```bash\n# Always wait after navigation\nagent-browser goto \"https:\u002F\u002Fexample.com\" --wait 2000\n\n# Wait for specific elements\nagent-browser wait \"div.loaded\" --timeout 10000\n\n# Combine waits with interactions\nagent-browser goto \"login.page\"\nagent-browser wait \"input#username\"\nagent-browser fill \"input#username\" \"user\"\n```\n\n### 3. Error Handling\n```bash\n# Use try-catch for robustness\nagent-browser try \"click button.submit\" --catch \"click button[type='submit']\"\n\n# Set reasonable timeouts\nagent-browser config set default_timeout 30000\n\n# Enable logging for debugging\nagent-browser --log-level debug click \"button.submit\"\n```\n\n### 4. Performance Optimization\n```bash\n# Use headless mode for automation\nagent-browser start --headless\n\n# Disable images for faster loading\nagent-browser config set disable_images true\n\n# Use caching when appropriate\nagent-browser cache enable\n```\n\n## Integration Examples\n\n### With Agent Reach\n```bash\n# Combine browser automation with content reading\n# 1. Use Agent Browser to navigate and interact\nagent-browser goto \"https:\u002F\u002Ftwitter.com\u002Fsearch?q=OpenClaw\"\nagent-browser wait \"article[data-testid='tweet']\"\nagent-browser screenshot --full-page --output tweets.png\n\n# 2. Use Agent Reach to extract and process content\nagent-reach extract tweets.png --format markdown --output tweets.md\n```\n\n### With Multi-Search Engine\n```bash\n# Automated search and data collection\n# 1. Search using multiple engines\nmulti-search \"OpenClaw skills\" --engines google,github --limit 20\n\n# 2. Automate browser to visit top results\nfor url in search_results:\n    agent-browser goto url\n    agent-browser text \"body\" --output \"${url_slug}.txt\"\n    agent-browser screenshot --output \"${url_slug}.png\"\n```\n\n### With ClawTeam\n```python\n# Distributed web automation team\ndef create_browser_team():\n    \"\"\"Create team for web automation tasks\"\"\"\n    \n    team = {\n        \"navigator\": {\n            \"role\": \"Navigate to URLs and handle page loading\",\n            \"commands\": [\"goto\", \"wait\", \"back\", \"forward\"]\n        },\n        \"interactor\": {\n            \"role\": \"Interact with page elements\",\n            \"commands\": [\"click\", \"fill\", \"type\", \"select\"]\n        },\n        \"extractor\": {\n            \"role\": \"Extract data and take screenshots\",\n            \"commands\": [\"text\", \"html\", \"screenshot\", \"attr\"]\n        },\n        \"validator\": {\n            \"role\": \"Validate results and handle errors\",\n            \"commands\": [\"validate\", \"retry\", \"fallback\"]\n        }\n    }\n    \n    return team\n```\n\n### With Self-Improving Agent\n```python\n# Learn from browser automation patterns\ndef learn_browser_patterns():\n    \"\"\"Record successful browser interaction patterns\"\"\"\n    \n    patterns = {\n        \"login_flow\": {\n            \"steps\": [\n                \"goto login_url\",\n                \"wait input#username\",\n                \"fill input#username {username}\",\n                \"fill input#password {password}\",\n                \"click button[type='submit']\",\n                \"wait div.dashboard\"\n            ],\n            \"success_rate\": 0.95,\n            \"average_time\": 8.2\n        },\n        \"form_submission\": {\n            \"steps\": [\n                \"wait form\",\n                \"fill all inputs\",\n                \"validate required fields\",\n                \"click button.submit\",\n                \"wait .success-message\"\n            ],\n            \"success_rate\": 0.88,\n            \"average_time\": 12.5\n        }\n    }\n    \n    return patterns\n```\n\n## Use Case Examples\n\n### Use Case 1: E-commerce Price Monitoring\n```bash\n#!\u002Fbin\u002Fbash\n# Monitor prices on Amazon\n\n# Navigate to product page\nagent-browser goto \"https:\u002F\u002Fwww.amazon.com\u002Fdp\u002FB08N5WRWNW\"\n\n# Extract product information\nagent-browser text \"#productTitle\" --output product_title.txt\nagent-browser text \".a-price-whole\" --output price.txt\nagent-browser attr \"img#landingImage\" \"src\" --output image_url.txt\n\n# Check availability\nagent-browser text \"#availability\" --output availability.txt\n\n# Take screenshot for record\nagent-browser screenshot --full-page --output \"product_$(date +%Y%m%d).png\"\n\n# Compare with previous price\ncurrent_price=$(cat price.txt)\nprevious_price=$(cat previous_price.txt 2>\u002Fdev\u002Fnull || echo \"0\")\n\nif [ \"$current_price\" != \"$previous_price\" ]; then\n    echo \"Price changed: $previous_price -> $current_price\"\n    # Send notification\nfi\n\necho \"$current_price\" > previous_price.txt\n```\n\n### Use Case 2: Social Media Automation\n```bash\n#!\u002Fbin\u002Fbash\n# Automated Twitter posting\n\n# Login to Twitter\nagent-browser goto \"https:\u002F\u002Ftwitter.com\u002Flogin\"\nagent-browser wait \"input[name='text']\"\nagent-browser fill \"input[name='text']\" \"$TWITTER_USERNAME\"\nagent-browser click \"text=Next\"\n\nagent-browser wait \"input[name='password']\"\nagent-browser fill \"input[name='password']\" \"$TWITTER_PASSWORD\"\nagent-browser click \"text=Log in\"\n\n# Wait for login to complete\nagent-browser wait \"a[href='\u002Fcompose\u002Ftweet']\"\n\n# Compose tweet\nagent-browser click \"a[href='\u002Fcompose\u002Ftweet']\"\nagent-browser wait \"div[data-testid='tweetTextarea_0']\"\nagent-browser click \"div[data-testid='tweetTextarea_0']\"\nagent-browser type \"div[data-testid='tweetTextarea_0']\" \"Check out this amazing OpenClaw skill: Agent Browser! #OpenClaw #Automation\"\n\n# Add image if provided\nif [ -f \"$IMAGE_PATH\" ]; then\n    agent-browser click \"input[data-testid='fileInput']\"\n    # File upload would require additional handling\nfi\n\n# Post tweet\nagent-browser click \"div[data-testid='tweetButton']\"\n\n# Verify post\nagent-browser wait \"text=Your Tweet was sent\"\nagent-browser screenshot --output \"tweet_$(date +%Y%m%d_%H%M%S).png\"\n```\n\n### Use Case 3: Web Application Testing\n```bash\n#!\u002Fbin\u002Fbash\n# Automated user registration test\n\nTEST_EMAIL=\"test_$(date +%s)@example.com\"\nTEST_PASSWORD=\"TestPass123!\"\n\n# Navigate to registration page\nagent-browser goto \"https:\u002F\u002Fapp.example.com\u002Fregister\"\n\n# Fill registration form\nagent-browser fill \"input[name='email']\" \"$TEST_EMAIL\"\nagent-browser fill \"input[name='password']\" \"$TEST_PASSWORD\"\nagent-browser fill \"input[name='password_confirm']\" \"$TEST_PASSWORD\"\nagent-browser fill \"input[name='full_name']\" \"Test User\"\nagent-browser select \"select[name='country']\" \"United States\"\n\n# Accept terms\nagent-browser click \"input[name='terms']\"\n\n# Submit form\nagent-browser click \"button[type='submit']\"\n\n# Wait for confirmation\nagent-browser wait \"text=Registration successful\" --timeout 15000\n\nif [ $? -eq 0 ]; then\n    echo \"✓ Registration test passed\"\n    agent-browser screenshot --output \"registration_success_$(date +%Y%m%d).png\"\nelse\n    echo \"✗ Registration test failed\"\n    agent-browser screenshot --output \"registration_failure_$(date +%Y%m%d).png\"\n    \n    # Check for error messages\n    agent-browser text \".error-message\" --output error.txt\n    echo \"Error: $(cat error.txt)\"\nfi\n```\n\n## Configuration\n\n```yaml\n# ~\u002F.agent-browser\u002Fconfig.yaml\nagent_browser:\n  # Browser settings\n  browser:\n    default: \"chrome\"  # or: firefox, edge, safari\n    headless: true\n    window_size: \"1920x1080\"\n    user_agent: \"Mozilla\u002F5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\u002F537.36\"\n    \n  # Performance\n  performance:\n    timeout: 30000  # milliseconds\n    wait_time: 2000  # default wait after actions\n    retry_attempts: 3\n    delay_between_retries: 1000\n    \n  # Stealth & evasion\n  stealth:\n    disable_images: false\n    block_third_party: false\n    random_delays: true\n    min_delay: 100\n    max_delay: 3000\n    \n  # Screenshots\n  screenshots:\n    default_format: \"png\"\n    default_quality: 90\n    directory: \".\u002Fscreenshots\"\n    auto_timestamp: true\n    \n  # Logging\n  logging:\n    level: \"info\"  # debug, info, warn, error\n    file: \".\u002Fagent-browser.log\"\n    console: true\n    \n  # Integration\n  integration:\n    openclaw:\n      enabled: true\n      auto_load: true\n      \n    memos_sync:\n      enabled: false  # Screenshots to MemOS\n      \n    proactive_agent:\n      enabled: true\n      monitor_browser_sessions: true\n```\n\n## Troubleshooting\n\n### Common Issues\n\n1. **Browser not launching**\n   ```bash\n   # Check browser installation\n   agent-browser browsers list\n   \n   # Install missing browser\n   agent-browser setup chrome\n   \n   # Check permissions\n   chmod +x $(which agent-browser)\n   ```\n\n2. **Element not found**\n   ```bash\n   # Take screenshot to see current page\n   agent-browser screenshot --output debug.png\n   \n   # List all elements matching selector\n   agent-browser query \"button\" --all\n   \n   # Use more specific selector\n   agent-browser click \"button[data-testid='submit']\" --instead-of \"button.submit\"\n   ```\n\n3. **Timeout errors**\n   ```bash\n   # Increase timeout\n   agent-browser config set default_timeout 60000\n   \n   # Add explicit waits\n   agent-browser wait \"div.loaded\" --before \"click button\"\n   \n   # Check network conditions\n","# Agent Browser — Headless Web Automation\n\n## Overview\n\nAgent Browser transforms AI agents into **web automation experts** capable of controlling real browsers to navigate, interact with, and extract data from web pages. It provides a structured CLI interface for headless (or headed) browser automation without requiring manual scripting.\n\n## Core Capabilities\n\n### 1. Browser Control\n```bash\n# Launch browser session\nagent-browser start --headless  # Run without visible window\nagent-browser start --headed    # Show browser for debugging\n\n# Navigate to URLs\nagent-browser goto \"https:\u002F\u002Fexample.com\"\nagent-browser goto \"https:\u002F\u002Fgithub.com\" --wait 5000  # Wait 5 seconds\n\n# Navigate history\nagent-browser back\nagent-browser forward\nagent-browser reload\n```\n\n### 2. Page Interaction\n```bash\n# Click elements\nagent-browser click \"button#submit\"\nagent-browser click \"text=Login\"\nagent-browser click \"xpath=\u002F\u002Fbutton[@type='submit']\"\n\n# Fill forms\nagent-browser fill \"input#username\" \"myusername\"\nagent-browser fill \"input[name='password']\" \"mypassword\"\nagent-browser fill \"textarea\" \"Long text content...\"\n\n# Type text (character by character)\nagent-browser type \"input.search\" \"search query\"\n\n# Select dropdowns\nagent-browser select \"select#country\" \"United States\"\nagent-browser select \"select[name='category']\" \"value=tech\"\n```\n\n### 3. Data Extraction\n```bash\n# Extract text content\nagent-browser text \"div.content\" --output content.txt\nagent-browser text \"h1, h2, h3\" --format json\n\n# Extract HTML\nagent-browser html \"table.data\" --output table.html\nagent-browser html \"div.article\" --clean\n\n# Extract attributes\nagent-browser attr \"a.link\" \"href\" --output links.txt\nagent-browser attr \"img\" \"src,alt\" --format csv\n\n# Screenshots\nagent-browser screenshot --full-page --output page.png\nagent-browser screenshot \"div.widget\" --output widget.png\n```\n\n### 4. Advanced Operations\n```bash\n# Execute JavaScript\nagent-browser js \"window.scrollTo(0, document.body.scrollHeight)\"\nagent-browser js \"return document.title\" --output title.txt\n\n# Wait for conditions\nagent-browser wait \"div.loaded\" --timeout 10000\nagent-browser wait \"text=Success\" --visible\n\n# Handle alerts and dialogs\nagent-browser alert accept  # Click OK\nagent-browser alert dismiss # Click Cancel\nagent-browser alert text \"Enter value\" --input \"test\"\n\n# Manage cookies\nagent-browser cookies get --output cookies.json\nagent-browser cookies set \"session_id\" \"abc123\" --domain \".example.com\"\n```\n\n## When to Use This Skill\n\n### Scenario 1: Web Scraping & Data Collection\n```\nTask: \"Collect product prices from e-commerce site\"\nAgent Browser Usage:\n1. Navigate to product category page\n2. Extract product names and prices\n3. Paginate through results\n4. Export to structured format\n```\n\n### Scenario 2: Form Automation\n```\nTask: \"Automate login and form submission\"\nAgent Browser Usage:\n1. Navigate to login page\n2. Fill username and password\n3. Click login button\n4. Wait for dashboard to load\n5. Fill complex multi-step form\n6. Submit and verify success\n```\n\n### Scenario 3: Web Application Testing\n```\nTask: \"Test user registration flow\"\nAgent Browser Usage:\n1. Navigate to registration page\n2. Fill all required fields\n3. Submit form\n4. Verify confirmation message\n5. Check email inbox (if accessible)\n6. Take screenshots for documentation\n```\n\n### Scenario 4: Content Monitoring\n```\nTask: \"Monitor news website for updates\"\nAgent Browser Usage:\n1. Navigate to news site\n2. Extract latest headlines\n3. Compare with previous snapshot\n4. Send alert if new content found\n5. Archive screenshots of changes\n```\n\n## Installation & Setup\n\n### Quick Install\n```bash\n# Install via npm (recommended)\nnpm install -g @thesethrose\u002Fagent-browser-cli\n\n# Or via package manager\npip install agent-browser\n\n# Verify installation\nagent-browser --version\n```\n\n### Browser Requirements\n```bash\n# Install required browsers\n# Chrome\u002FChromium (recommended)\nagent-browser setup chrome\n\n# Firefox\nagent-browser setup firefox\n\n# Check browser availability\nagent-browser browsers list\n```\n\n### OpenClaw Integration\n```bash\n# Copy skill to workspace\nmkdir -p ~\u002F.openclaw\u002Fworkspace\u002Fskills\u002Fagent-browser\ncp agent-browser-skill.md ~\u002F.openclaw\u002Fworkspace\u002Fskills\u002Fagent-browser\u002FSKILL.md\n\n# Test integration\necho \"Browse to example.com and take screenshot\" | openclaw\n```\n\n## Command Reference\n\n### Navigation Commands\n```bash\n# Basic navigation\ngoto \u003Curl>                    # Navigate to URL\nback                         # Go back\nforward                      # Go forward  \nreload                       # Reload page\nwait \u003Cms>                    # Wait milliseconds\nwait \u003Cselector>              # Wait for element\n\n# Frame management\nframe \u003Cselector>             # Switch to frame\nframe top                    # Switch to top frame\nframes list                  # List all frames\n```\n\n### Interaction Commands\n```bash\n# Mouse actions\nclick \u003Cselector>             # Click element\ndblclick \u003Cselector>          # Double click\nrightclick \u003Cselector>        # Right click\nhover \u003Cselector>             # Hover over element\n\n# Keyboard actions\ntype \u003Cselector> \u003Ctext>       # Type text\npress \u003Ckey>                  # Press key (Enter, Tab, etc.)\nhotkey \u003Cmodifier+key>        # Press hotkey (Ctrl+C, etc.)\n\n# Form actions\nfill \u003Cselector> \u003Cvalue>      # Fill input field\nselect \u003Cselector> \u003Coption>   # Select dropdown option\ncheck \u003Cselector>             # Check checkbox\nuncheck \u003Cselector>           # Uncheck checkbox\n```\n\n### Extraction Commands\n```bash\n# Content extraction\ntext \u003Cselector>              # Get text content\nhtml \u003Cselector>              # Get HTML content\nattr \u003Cselector> \u003Cattribute>  # Get attribute value\n\n# Screenshots\nscreenshot                   # Capture viewport\nscreenshot --full-page       # Capture entire page\nscreenshot \u003Cselector>        # Capture element\n\n# Page info\ntitle                        # Get page title\nurl                          # Get current URL\ncookies                      # Get cookies\nlocalstorage                 # Get local storage\n```\n\n### JavaScript Execution\n```bash\n# Execute JS\njs \u003Ccode>                    # Execute JavaScript\njs \u003Ccode> --return           # Execute and return value\n\n# Common JS operations\njs \"window.scrollTo(0, 1000)\"           # Scroll down\njs \"document.querySelector('button').click()\"  # Click via JS\njs \"return document.body.innerText\"     # Return page text\n```\n\n## Best Practices\n\n### 1. Element Selection\n```bash\n# Prefer stable selectors\nagent-browser click \"button[data-testid='submit']\"  # Good: data attribute\nagent-browser click \"button#login-button\"           # Good: ID selector\nagent-browser click \"text=Submit\"                   # Good: text content\n\n# Avoid fragile selectors  \nagent-browser click \"div:nth-child(3) > button\"     # Bad: positional\nagent-browser click \"button.btn-primary\"            # Caution: may change\n```\n\n### 2. Waiting Strategies\n```bash\n# Always wait after navigation\nagent-browser goto \"https:\u002F\u002Fexample.com\" --wait 2000\n\n# Wait for specific elements\nagent-browser wait \"div.loaded\" --timeout 10000\n\n# Combine waits with interactions\nagent-browser goto \"login.page\"\nagent-browser wait \"input#username\"\nagent-browser fill \"input#username\" \"user\"\n```\n\n### 3. Error Handling\n```bash\n# Use try-catch for robustness\nagent-browser try \"click button.submit\" --catch \"click button[type='submit']\"\n\n# Set reasonable timeouts\nagent-browser config set default_timeout 30000\n\n# Enable logging for debugging\nagent-browser --log-level debug click \"button.submit\"\n```\n\n### 4. Performance Optimization\n```bash\n# Use headless mode for automation\nagent-browser start --headless\n\n# Disable images for faster loading\nagent-browser config set disable_images true\n\n# Use caching when appropriate\nagent-browser cache enable\n```\n\n## Integration Examples\n\n### With Agent Reach\n```bash\n# Combine browser automation with content reading\n# 1. Use Agent Browser to navigate and interact\nagent-browser goto \"https:\u002F\u002Ftwitter.com\u002Fsearch?q=OpenClaw\"\nagent-browser wait \"article[data-testid='tweet']\"\nagent-browser screenshot --full-page --output tweets.png\n\n# 2. Use Agent Reach to extract and process content\nagent-reach extract tweets.png --format markdown --output tweets.md\n```\n\n### With Multi-Search Engine\n```bash\n# Automated search and data collection\n# 1. Search using multiple engines\nmulti-search \"OpenClaw skills\" --engines google,github --limit 20\n\n# 2. Automate browser to visit top results\nfor url in search_results:\n    agent-browser goto url\n    agent-browser text \"body\" --output \"${url_slug}.txt\"\n    agent-browser screenshot --output \"${url_slug}.png\"\n```\n\n### With ClawTeam\n```python\n# Distributed web automation team\ndef create_browser_team():\n    \"\"\"Create team for web automation tasks\"\"\"\n    \n    team = {\n        \"navigator\": {\n            \"role\": \"Navigate to URLs and handle page loading\",\n            \"commands\": [\"goto\", \"wait\", \"back\", \"forward\"]\n        },\n        \"interactor\": {\n            \"role\": \"Interact with page elements\",\n            \"commands\": [\"click\", \"fill\", \"type\", \"select\"]\n        },\n        \"extractor\": {\n            \"role\": \"Extract data and take screenshots\",\n            \"commands\": [\"text\", \"html\", \"screenshot\", \"attr\"]\n        },\n        \"validator\": {\n            \"role\": \"Validate results and handle errors\",\n            \"commands\": [\"validate\", \"retry\", \"fallback\"]\n        }\n    }\n    \n    return team\n```\n\n### With Self-Improving Agent\n```python\n# Learn from browser automation patterns\ndef learn_browser_patterns():\n    \"\"\"Record successful browser interaction patterns\"\"\"\n    \n    patterns = {\n        \"login_flow\": {\n            \"steps\": [\n                \"goto login_url\",\n                \"wait input#username\",\n                \"fill input#username {username}\",\n                \"fill input#password {password}\",\n                \"click button[type='submit']\",\n                \"wait div.dashboard\"\n            ],\n            \"success_rate\": 0.95,\n            \"average_time\": 8.2\n        },\n        \"form_submission\": {\n            \"steps\": [\n                \"wait form\",\n                \"fill all inputs\",\n                \"validate required fields\",\n                \"click button.submit\",\n                \"wait .success-message\"\n            ],\n            \"success_rate\": 0.88,\n            \"average_time\": 12.5\n        }\n    }\n    \n    return patterns\n```\n\n## Use Case Examples\n\n### Use Case 1: E-commerce Price Monitoring\n```bash\n#!\u002Fbin\u002Fbash\n# Monitor prices on Amazon\n\n# Navigate to product page\nagent-browser goto \"https:\u002F\u002Fwww.amazon.com\u002Fdp\u002FB08N5WRWNW\"\n\n# Extract product information\nagent-browser text \"#productTitle\" --output product_title.txt\nagent-browser text \".a-price-whole\" --output price.txt\nagent-browser attr \"img#landingImage\" \"src\" --output image_url.txt\n\n# Check availability\nagent-browser text \"#availability\" --output availability.txt\n\n# Take screenshot for record\nagent-browser screenshot --full-page --output \"product_$(date +%Y%m%d).png\"\n\n# Compare with previous price\ncurrent_price=$(cat price.txt)\nprevious_price=$(cat previous_price.txt 2>\u002Fdev\u002Fnull || echo \"0\")\n\nif [ \"$current_price\" != \"$previous_price\" ]; then\n    echo \"Price changed: $previous_price -> $current_price\"\n    # Send notification\nfi\n\necho \"$current_price\" > previous_price.txt\n```\n\n### Use Case 2: Social Media Automation\n```bash\n#!\u002Fbin\u002Fbash\n# Automated Twitter posting\n\n# Login to Twitter\nagent-browser goto \"https:\u002F\u002Ftwitter.com\u002Flogin\"\nagent-browser wait \"input[name='text']\"\nagent-browser fill \"input[name='text']\" \"$TWITTER_USERNAME\"\nagent-browser click \"text=Next\"\n\nagent-browser wait \"input[name='password']\"\nagent-browser fill \"input[name='password']\" \"$TWITTER_PASSWORD\"\nagent-browser click \"text=Log in\"\n\n# Wait for login to complete\nagent-browser wait \"a[href='\u002Fcompose\u002Ftweet']\"\n\n# Compose tweet\nagent-browser click \"a[href='\u002Fcompose\u002Ftweet']\"\nagent-browser wait \"div[data-testid='tweetTextarea_0']\"\nagent-browser click \"div[data-testid='tweetTextarea_0']\"\nagent-browser type \"div[data-testid='tweetTextarea_0']\" \"Check out this amazing OpenClaw skill: Agent Browser! #OpenClaw #Automation\"\n\n# Add image if provided\nif [ -f \"$IMAGE_PATH\" ]; then\n    agent-browser click \"input[data-testid='fileInput']\"\n    # File upload would require additional handling\nfi\n\n# Post tweet\nagent-browser click \"div[data-testid='tweetButton']\"\n\n# Verify post\nagent-browser wait \"text=Your Tweet was sent\"\nagent-browser screenshot --output \"tweet_$(date +%Y%m%d_%H%M%S).png\"\n```\n\n### Use Case 3: Web Application Testing\n```bash\n#!\u002Fbin\u002Fbash\n# Automated user registration test\n\nTEST_EMAIL=\"test_$(date +%s)@example.com\"\nTEST_PASSWORD=\"TestPass123!\"\n\n# Navigate to registration page\nagent-browser goto \"https:\u002F\u002Fapp.example.com\u002Fregister\"\n\n# Fill registration form\nagent-browser fill \"input[name='email']\" \"$TEST_EMAIL\"\nagent-browser fill \"input[name='password']\" \"$TEST_PASSWORD\"\nagent-browser fill \"input[name='password_confirm']\" \"$TEST_PASSWORD\"\nagent-browser fill \"input[name='full_name']\" \"Test User\"\nagent-browser select \"select[name='country']\" \"United States\"\n\n# Accept terms\nagent-browser click \"input[name='terms']\"\n\n# Submit form\nagent-browser click \"button[type='submit']\"\n\n# Wait for confirmation\nagent-browser wait \"text=Registration successful\" --timeout 15000\n\nif [ $? -eq 0 ]; then\n    echo \"✓ Registration test passed\"\n    agent-browser screenshot --output \"registration_success_$(date +%Y%m%d).png\"\nelse\n    echo \"✗ Registration test failed\"\n    agent-browser screenshot --output \"registration_failure_$(date +%Y%m%d).png\"\n    \n    # Check for error messages\n    agent-browser text \".error-message\" --output error.txt\n    echo \"Error: $(cat error.txt)\"\nfi\n```\n\n## Configuration\n\n```yaml\n# ~\u002F.agent-browser\u002Fconfig.yaml\nagent_browser:\n  # Browser settings\n  browser:\n    default: \"chrome\"  # or: firefox, edge, safari\n    headless: true\n    window_size: \"1920x1080\"\n    user_agent: \"Mozilla\u002F5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\u002F537.36\"\n    \n  # Performance\n  performance:\n    timeout: 30000  # milliseconds\n    wait_time: 2000  # default wait after actions\n    retry_attempts: 3\n    delay_between_retries: 1000\n    \n  # Stealth & evasion\n  stealth:\n    disable_images: false\n    block_third_party: false\n    random_delays: true\n    min_delay: 100\n    max_delay: 3000\n    \n  # Screenshots\n  screenshots:\n    default_format: \"png\"\n    default_quality: 90\n    directory: \".\u002Fscreenshots\"\n    auto_timestamp: true\n    \n  # Logging\n  logging:\n    level: \"info\"  # debug, info, warn, error\n    file: \".\u002Fagent-browser.log\"\n    console: true\n    \n  # Integration\n  integration:\n    openclaw:\n      enabled: true\n      auto_load: true\n      \n    memos_sync:\n      enabled: false  # Screenshots to MemOS\n      \n    proactive_agent:\n      enabled: true\n      monitor_browser_sessions: true\n```\n\n## Troubleshooting\n\n### Common Issues\n\n1. **Browser not launching**\n   ```bash\n   # Check browser installation\n   agent-browser browsers list\n   \n   # Install missing browser\n   agent-browser setup chrome\n   \n   # Check permissions\n   chmod +x $(which agent-browser)\n   ```\n\n2. **Element not found**\n   ```bash\n   # Take screenshot to see current page\n   agent-browser screenshot --output debug.png\n   \n   # List all elements matching selector\n   agent-browser query \"button\" --all\n   \n   # Use more specific selector\n   agent-browser click \"button[data-testid='submit']\" --instead-of \"button.submit\"\n   ```\n\n3. **Timeout errors**\n   ```bash\n   # Increase timeout\n   agent-browser config set default_timeout 60000\n   \n   # Add explicit waits\n   agent-browser wait \"div.loaded\" --before \"click button\"\n   \n   # Check network conditions\n",{"name":5,"description":7},"main","7a38d8e7073e61c16eda85681cb32fb68a8657a5","skills-store\u002Fopenclaw\u002Fagent-browser","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router","https:\u002F\u002Fgithub.com\u002Fsapsapshen","2026-04-14 21:12:12",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add sapsapshen\u002Fai-memory-router --skill agent-browser",{"tool":61,"command":62},"bunx","bunx skills add sapsapshen\u002Fai-memory-router --skill agent-browser",{"tool":64,"command":65},"pnpm","pnpm dlx skills add sapsapshen\u002Fai-memory-router --skill agent-browser","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fagent-browser\u002FSKILL.md",true,[],[70,94,119,129,142,159],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":81,"publishedAt":44},"01M71ATQRKG48SH06FQ697T5G9","wechat-search","Search WeChat Official Account articles using OpenClaw's web search and fetch capabilities with compliance-focused design.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fwechat-search-release\u002FSKILL.md",[76],{"categoryNo":77,"categoryName":78,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[82,83,84,85,86,87,88,89,90,91,92,93],"wechat search","wechat","search","capabilities","openclaw","design","web search","compliance","web","official","fetch","with",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":44},"01M71ATNAVGZB35PFYM2GC5N00","trend-tap","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend tap', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-tap\u002FSKILL.md",[],[101,102,103,104,105,106,84,107,108,109,110,28,111,112,113,114,115,116,117,118],"trend","trend tap","tap","api keys","Bash","time","trending","hacker","aggregator","do","brew","live","data","google","install","read","across","api",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":125,"publishedAt":44},"01M71ATJ9AM5KM15AA8PS302EB","trend-radar","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend pulse', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-radar\u002FSKILL.md",[],[126,127,101,111,112,113,114,105,84,116,128,117,118,28,109,108,107,115,106,104],"trend radar","radar","pulse",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":135,"publishedAt":44},"01M71ATGF095N3EJM9G8SD0BB5","tech-news-daily","每日科技新闻汇——从全球多个 RSS 源抓取最新科技新闻，翻译（英→中）、去重、排版成每日简报。当用户询问科技新闻、科技新鲜事、每日科技、技术动态、Daily Tech News 或类似表达时触发此技能。","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftech-news-daily\u002FSKILL.md",[],[136,137,138,139,140,141],"news","tech","tech news daily","daily","rss","翻译",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":151,"publishedAt":44},"01M71ATFAEAMQ17M70NQNY7SR8","summarize","Summarize URLs or files with the summarize CLI (web, PDFs, images, audio, YouTube).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsummarize\u002FSKILL.md",[148],{"categoryNo":149,"categoryName":150,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[144,90,152,153,154,93,111,155,156,157,103,158,115],"Audio","cli","youtube","images","https","files","pdfs",{"skillNo":160,"name":161,"nameZh":6,"description":162,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":163,"categories":164,"keywords":165,"publishedAt":44},"01M71ATDNS3R0M4H936PACQAWZ","sonoscli","Control Sonos speakers (discover\u002Fstatus\u002Fplay\u002Fvolume\u002Fgroup).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsonoscli\u002FSKILL.md",[],[161,166,167,168,115,169,156,170,171,172,173,174],"status","play","go","latest","github","discover","control","cmd","volume"]