Loading...
Loading...
Browser automation CLI with Nstbrowser integration for AI agents. Use when the user needs advanced browser fingerprinting, profile management, proxy configuration, batch operations on multiple browser profiles, or cursor-based pagination for large datasets. Triggers include requests to "use NST profile", "configure proxy for profile", "manage browser profiles", "batch update profiles", "start multiple browsers", "list profiles with pagination", or any task requiring Nstbrowser's anti-detection features.
npx skill4agent add nstbrowser/nstbrowser-ai-agent nstbrowser-ai-agent# 1. Configure API key (required)
nstbrowser-ai-agent config set key YOUR_API_KEY
# 2. Verify connection
nstbrowser-ai-agent profile list
# 3. Ready to use!nstbrowser-ai-agent config set key YOUR_KEY # Set API key
nstbrowser-ai-agent config show # Show current confignstbrowser-ai-agent diagnose # Run comprehensive environment check
nstbrowser-ai-agent verify [--profile <name-or-id>] # Test browser functionality
nstbrowser-ai-agent repair # Attempt automatic fixesnstbrowser-ai-agent profile list # List all profiles
nstbrowser-ai-agent profile create <name> # Create new profile
nstbrowser-ai-agent profile delete <id> # Delete profile
nstbrowser-ai-agent profile proxy update <id> # Update proxy settings
nstbrowser-ai-agent profile tags create <id> <tag> # Add tags to profile
nstbrowser-ai-agent profile cache clear <id> # Clear profile cachenstbrowser-ai-agent browser start-once # Start temporary browser
nstbrowser-ai-agent browser list # List running browsers
nstbrowser-ai-agent browser stop <id> # Stop browser
nstbrowser-ai-agent browser start <profile-id> # Start browser for profile
nstbrowser-ai-agent browser stop-all # Stop all browsers[--profile <name-or-id>]nstbrowser-ai-agent open <url> [--profile <name-or-id>] # Navigate to URL
nstbrowser-ai-agent snapshot -i [--profile <name-or-id>] # Get interactive elements with refs
nstbrowser-ai-agent click @e1 [--profile <name-or-id>] # Click element by ref
nstbrowser-ai-agent click @e1 --new-tab [--profile <name-or-id>] # Click and open in new tab
nstbrowser-ai-agent fill @e2 "text" [--profile <name-or-id>] # Fill input field
nstbrowser-ai-agent type @e2 "text" [--profile <name-or-id>] # Type into element
nstbrowser-ai-agent hover @e3 [--profile <name-or-id>] # Hover over element
nstbrowser-ai-agent focus @e4 [--profile <name-or-id>] # Focus element
nstbrowser-ai-agent check @e5 [--profile <name-or-id>] # Check checkbox
nstbrowser-ai-agent uncheck @e6 [--profile <name-or-id>] # Uncheck checkbox
nstbrowser-ai-agent select @e7 "value" [--profile <name-or-id>] # Select dropdown option
nstbrowser-ai-agent drag @e8 @e9 [--profile <name-or-id>] # Drag and drop
nstbrowser-ai-agent upload @e10 ./file.pdf [--profile <name-or-id>] # Upload files
nstbrowser-ai-agent download @e11 ./file.pdf [--profile <name-or-id>] # Download filenstbrowser-ai-agent back [--profile <name-or-id>] # Go back
nstbrowser-ai-agent forward [--profile <name-or-id>] # Go forward
nstbrowser-ai-agent reload [--profile <name-or-id>] # Reload page
nstbrowser-ai-agent wait @e1 [--profile <name-or-id>] # Wait for element
nstbrowser-ai-agent wait 2000 [--profile <name-or-id>] # Wait milliseconds
nstbrowser-ai-agent wait --load networkidle [--profile <name-or-id>] # Wait for load state
nstbrowser-ai-agent wait --url "**/dashboard" [--profile <name-or-id>] # Wait for URL pattern
nstbrowser-ai-agent wait --text "Welcome" [--profile <name-or-id>] # Wait for text
nstbrowser-ai-agent wait --download ./file.pdf [--profile <name-or-id>] # Wait for downloadnstbrowser-ai-agent press Enter [--profile <name-or-id>] # Press key
nstbrowser-ai-agent press Control+a [--profile <name-or-id>] # Key combination
nstbrowser-ai-agent keyboard type "Hello" [--profile <name-or-id>] # Type without selector
nstbrowser-ai-agent keyboard inserttext "text" [--profile <name-or-id>] # Insert text
nstbrowser-ai-agent mouse move 100 200 [--profile <name-or-id>] # Move mouse
nstbrowser-ai-agent mouse click [--profile <name-or-id>] # Mouse click
nstbrowser-ai-agent scroll down 500 [--profile <name-or-id>] # Scroll page
nstbrowser-ai-agent scrollintoview @e1 [--profile <name-or-id>] # Scroll element into viewnstbrowser-ai-agent get title [--profile <name-or-id>] # Get page title
nstbrowser-ai-agent get url [--profile <name-or-id>] # Get current URL
nstbrowser-ai-agent get text @e1 [--profile <name-or-id>] # Get element text
nstbrowser-ai-agent get html @e2 [--profile <name-or-id>] # Get element HTML
nstbrowser-ai-agent get value @e3 [--profile <name-or-id>] # Get input value
nstbrowser-ai-agent get attr @e4 href [--profile <name-or-id>] # Get attribute
nstbrowser-ai-agent get count "li.item" [--profile <name-or-id>] # Count elements
nstbrowser-ai-agent get box @e5 [--profile <name-or-id>] # Get bounding box
nstbrowser-ai-agent get styles @e6 [--profile <name-or-id>] # Get computed styles
nstbrowser-ai-agent eval "document.title" [--profile <name-or-id>] # Execute JavaScriptnstbrowser-ai-agent is visible @e1 [--profile <name-or-id>] # Check if visible
nstbrowser-ai-agent is enabled @e2 [--profile <name-or-id>] # Check if enabled
nstbrowser-ai-agent is checked @e3 [--profile <name-or-id>] # Check if checkednstbrowser-ai-agent find role button click --name Submit
nstbrowser-ai-agent find text "Sign In" click
nstbrowser-ai-agent find label "Email" fill "user@example.com"
nstbrowser-ai-agent find placeholder "Search..." type "query"
nstbrowser-ai-agent find testid "login-form" click
nstbrowser-ai-agent find first "li.item" click
nstbrowser-ai-agent find nth 2 ".card" hovernstbrowser-ai-agent screenshot [path] # Take screenshot
nstbrowser-ai-agent screenshot --full # Full page screenshot
nstbrowser-ai-agent screenshot --annotate # Annotated with element refs
nstbrowser-ai-agent pdf ./page.pdf # Save as PDF
nstbrowser-ai-agent record start ./demo.webm # Start video recording
nstbrowser-ai-agent record stop # Stop recording# Start temporary browser and navigate
nstbrowser-ai-agent browser start-once
nstbrowser-ai-agent open https://example.com
nstbrowser-ai-agent snapshot -i
nstbrowser-ai-agent click @e1
nstbrowser-ai-agent close# All browser commands can use --profile parameter
nstbrowser-ai-agent --profile my-profile open https://example.com
nstbrowser-ai-agent --profile my-profile snapshot -i
nstbrowser-ai-agent --profile my-profile fill @e1 "user@example.com"
nstbrowser-ai-agent --profile my-profile fill @e2 "password"
nstbrowser-ai-agent --profile my-profile click @e3
nstbrowser-ai-agent --profile my-profile close
# Or use UUID format (auto-detected)
nstbrowser-ai-agent --profile "527e7b55-ca19-4422-89e4-88af4cf0f543" open https://example.com# Extract information from page using specific profile
nstbrowser-ai-agent --profile data-scraper open https://example.com
nstbrowser-ai-agent --profile data-scraper wait --load networkidle
nstbrowser-ai-agent --profile data-scraper snapshot -i
nstbrowser-ai-agent --profile data-scraper get text @e1
nstbrowser-ai-agent --profile data-scraper eval "document.querySelectorAll('h2').length"
nstbrowser-ai-agent --profile data-scraper screenshot --annotate page.png# Save authentication state for reuse
nstbrowser-ai-agent --profile auth-profile open https://app.example.com/login
nstbrowser-ai-agent --profile auth-profile fill @e1 "user@example.com"
nstbrowser-ai-agent --profile auth-profile fill @e2 "password"
nstbrowser-ai-agent --profile auth-profile click @e3
nstbrowser-ai-agent --profile auth-profile wait --text "Dashboard"
nstbrowser-ai-agent --profile auth-profile state save ./auth-state.json
# Later, restore state and continue
nstbrowser-ai-agent --profile auth-profile state load ./auth-state.json
nstbrowser-ai-agent --profile auth-profile open https://app.example.com/dashboard
nstbrowser-ai-agent --profile auth-profile snapshot -i# Work with multiple tabs using same profile
nstbrowser-ai-agent --profile multi-tab open https://example.com
nstbrowser-ai-agent --profile multi-tab tab new https://another-site.com
nstbrowser-ai-agent --profile multi-tab tab 1 # Switch to second tab
nstbrowser-ai-agent --profile multi-tab click @e1
nstbrowser-ai-agent --profile multi-tab tab 0 # Switch back to first tab
nstbrowser-ai-agent --profile multi-tab screenshotnstbrowser-ai-agent cookies # Get all cookies
nstbrowser-ai-agent cookies set name "value" # Set cookie
nstbrowser-ai-agent cookies set auth "token" --domain example.com --httpOnly --secure
nstbrowser-ai-agent cookies clear # Clear all cookies
nstbrowser-ai-agent storage local # Get localStorage
nstbrowser-ai-agent storage local set key "value" # Set localStorage
nstbrowser-ai-agent storage session get key # Get sessionStorage
nstbrowser-ai-agent storage local clear # Clear localStoragenstbrowser-ai-agent network route "**/api/*" --abort # Block API requests
nstbrowser-ai-agent network route "**/data.json" --body '{"mock": true}'
nstbrowser-ai-agent network requests # List captured requests
nstbrowser-ai-agent network requests --clear # Clear request log
nstbrowser-ai-agent console # View console logs
nstbrowser-ai-agent errors # View page errors
nstbrowser-ai-agent trace start # Start Playwright trace
nstbrowser-ai-agent trace stop ./trace.zip # Stop and save trace
nstbrowser-ai-agent profiler start # Start Chrome DevTools profiling
nstbrowser-ai-agent profiler stop ./profile.json # Stop and save profilenstbrowser-ai-agent tab # List all tabs
nstbrowser-ai-agent tab new https://example.com # Open new tab
nstbrowser-ai-agent tab 2 # Switch to tab 2
nstbrowser-ai-agent tab close # Close current tab
nstbrowser-ai-agent tab close 1 # Close tab 1
nstbrowser-ai-agent window new # Open new window
nstbrowser-ai-agent frame "#iframe" # Switch to iframe
nstbrowser-ai-agent frame main # Switch back to main framenstbrowser-ai-agent set viewport 1920 1080 # Set viewport size
nstbrowser-ai-agent set device "iPhone 12" # Emulate device
nstbrowser-ai-agent set geo 37.7749 -122.4194 # Set geolocation
nstbrowser-ai-agent set offline on # Enable offline mode
nstbrowser-ai-agent set headers '{"X-Custom": "value"}' # Set HTTP headers
nstbrowser-ai-agent set credentials admin pass # Set HTTP auth
nstbrowser-ai-agent set media dark # Set color schemenstbrowser-ai-agent state save ./auth-state.json # Save browser state
nstbrowser-ai-agent state load ./auth-state.json # Load browser state
nstbrowser-ai-agent state list # List saved states
nstbrowser-ai-agent state show filename.json # Show state summary
nstbrowser-ai-agent state clear --all # Clear all statesnstbrowser-ai-agent diff snapshot # Compare current vs last snapshot
nstbrowser-ai-agent diff snapshot --baseline before.txt # Compare vs saved snapshot
nstbrowser-ai-agent diff screenshot --baseline before.png # Visual diff
nstbrowser-ai-agent diff url https://v1.com https://v2.com # Compare two pages
nstbrowser-ai-agent diff url https://staging.com https://prod.com --screenshotnstbrowser-ai-agent dialog accept # Accept alert/confirm
nstbrowser-ai-agent dialog accept "input text" # Accept prompt with text
nstbrowser-ai-agent dialog dismiss # Dismiss/cancel dialog--profile <name-or-id> # Use specific NST profile (name or UUID)
# Examples: --profile "my-profile" or --profile "527e7b55-ca19-4422-89e4-88af4cf0f543"--session <name> # Use isolated session
--session-name <name> # Auto-save/restore state across restarts--json # JSON output for all commands
--content-boundaries # Wrap page content in boundary markers
--max-output <chars> # Truncate output to N characters--headers <json> # HTTP headers (scoped to origin)
--user-agent <ua> # Custom User-Agent
--proxy <server> # Proxy server (http://user:pass@host:port)
--proxy-bypass <hosts> # Bypass proxy for hosts
--color-scheme <scheme> # dark, light, no-preference
--download-path <path> # Default download directory| Problem | Solution |
|---|---|
| "HTTP 400: Bad Request" | Start Nstbrowser desktop client and verify API key |
| "Profile not found" | Use |
| "Element not found" | Run |
| "@e1 not working" | Element refs change after navigation - get fresh snapshot |
| "Browser not running" | Use |
| "Command timeout" | Use appropriate wait strategies: |
| "Stale element reference" | Re-run |
| "Profile ID vs name confusion" | Both work - UUID format auto-detected as ID, others as name |
| "Headers not working" | Headers are scoped to origin - use |
| "Download not saving" | Specify full path: |
| "Screenshot annotation missing" | Use |
| "State not persisting" | Use |
profile proxy update <id> --host proxy.com --port 8080profile delete id1 id2 id3tab new <url>tab 0tab closewait 3000wait --load networkidle--profile <name-or-id>snapshot -i--json--load networkidlewait --textwait @element--session-name--content-boundaries--max-outputsnapshot --compact--annotatetrace start/stop--profile# Navigation commands
nstbrowser-ai-agent --profile my-profile open <url>
nstbrowser-ai-agent --profile my-profile back
nstbrowser-ai-agent --profile my-profile forward
nstbrowser-ai-agent --profile my-profile reload
# Interaction commands
nstbrowser-ai-agent --profile my-profile click @e1
nstbrowser-ai-agent --profile my-profile fill @e2 "text"
nstbrowser-ai-agent --profile my-profile type @e3 "text"
nstbrowser-ai-agent --profile my-profile hover @e4
nstbrowser-ai-agent --profile my-profile drag @e5 @e6
# Data extraction commands
nstbrowser-ai-agent --profile my-profile snapshot -i
nstbrowser-ai-agent --profile my-profile get text @e1
nstbrowser-ai-agent --profile my-profile screenshot
nstbrowser-ai-agent --profile my-profile eval "code"
# State and storage commands
nstbrowser-ai-agent --profile my-profile cookies set name "value"
nstbrowser-ai-agent --profile my-profile storage local set key "value"
nstbrowser-ai-agent --profile my-profile state save ./state.json
# All other browser commands...browser start-oncesnapshot -i