| name | actionbook |
| description | Browser automation and web scraping with anti-detection stealth mode. Use when you need to: (1) Scrape Twitter/X content without login, (2) Extract data from websites with anti-bot protection, (3) Automate browser interactions (clicking, typing, screenshots), (4) Bypass JavaScript-rendered content that web_fetch cannot handle, (5) Access pages requiring cookies or sessions. Built on Chrome DevTools Protocol with fingerprint spoofing. |
Actionbook - Stealth Browser Automation
High-performance browser automation using your existing Chrome/Brave/Edge browser via Chrome DevTools Protocol (CDP). Zero downloads, anti-detection built-in.
Core Capabilities
1. Twitter/X Scraping (No Login Required)
Extract tweets, profiles, and timelines using stealth mode to bypass anti-bot detection:
actionbook --stealth browser open "https://x.com/username/status/123456789"
actionbook browser eval 'document.body.innerText'
actionbook browser screenshot tweet.png
When to use: Twitter blocks web_fetch and requires JavaScript rendering. Actionbook's stealth mode bypasses detection.
2. JavaScript-Heavy Websites
Handle single-page apps (SPAs) and dynamic content that web_fetch cannot parse:
actionbook browser goto "https://example.com/dashboard"
actionbook browser wait '[data-loaded="true"]'
actionbook browser eval 'JSON.stringify(window.appState)'
3. Interactive Automation
Automate form filling, clicking, and multi-step workflows:
actionbook browser type 'input[name="q"]' "OpenClaw"
actionbook browser click 'button[type="submit"]'
actionbook browser wait '.results'
actionbook browser eval 'document.querySelector(".results").innerText'
4. Session & Cookie Management
Maintain login state across requests using profiles:
actionbook profile create twitter-session
actionbook --profile twitter-session browser open "https://x.com"
actionbook --profile twitter-session browser goto "https://x.com/home"
Quick Reference
Essential Commands
actionbook browser open <URL>
actionbook browser goto <URL>
actionbook browser close
actionbook browser eval <JS>
actionbook browser snapshot
actionbook browser screenshot [PATH]
actionbook browser click <SELECTOR>
actionbook browser type <SELECTOR> <TEXT>
actionbook browser wait <SELECTOR>
actionbook browser cookies list
actionbook browser cookies get <NAME>
actionbook browser cookies set <NAME> <VAL>
Global Flags
--stealth
--stealth-os <OS>
--stealth-gpu <GPU>
--profile <NAME>
--headless
Workflow Patterns
Pattern 1: Twitter Content Extraction
actionbook --stealth browser open "https://x.com/elonmusk"
actionbook browser wait '[data-testid="primaryColumn"]'
actionbook browser eval '
Array.from(document.querySelectorAll("[data-testid=\"tweetText\"]"))
.map(el => el.innerText)
.join("\n\n---\n\n")
'
actionbook browser screenshot timeline.png
actionbook browser close
Pattern 2: Form Submission with Retry
actionbook browser type '#email' "user@example.com"
actionbook browser type '#password' "secret"
actionbook browser click 'button[type="submit"]'
actionbook browser wait '.dashboard'
actionbook browser eval 'document.querySelector(".welcome-message").innerText'
Pattern 3: Persistent Session (Login Once, Reuse)
actionbook profile create my-service
actionbook --profile my-service browser open "https://service.com/login"
actionbook --profile my-service browser goto "https://service.com/dashboard"
actionbook --profile my-service browser eval 'getUserData()'
Stealth Mode Details
Stealth mode applies anti-detection measures:
- Navigator overrides (
navigator.webdriver → undefined)
- WebGL fingerprint spoofing (matches selected GPU)
- Plugin injection (fake PDF viewer, Native Client)
- Chrome flags (
--disable-blink-features=AutomationControlled)
Available OS profiles: macos-arm, macos-intel, windows, linux
Available GPU profiles: apple-m4-max, rtx4080, gtx1660, intel-uhd630
Example:
actionbook --stealth --stealth-os windows --stealth-gpu rtx4080 browser open "https://bot-check.com"
Troubleshooting
"Element not found"
Wait for page to fully load:
actionbook browser wait '[data-testid="tweet"]'
actionbook browser eval 'document.querySelector("[data-testid=\"tweet\"]").innerText'
"Connection refused" or "CDP not ready"
Browser didn't start cleanly. Restart:
actionbook browser close
actionbook browser open "https://example.com"
Twitter shows "Log in to see more"
Use --stealth flag and consider creating a logged-in profile:
actionbook --stealth browser open "https://x.com/..."
actionbook profile create twitter-main
actionbook --profile twitter-main browser open "https://x.com"
Extracting data from deeply nested elements
Use browser eval with JavaScript:
actionbook browser eval '
const tweets = document.querySelectorAll("[data-testid=\"tweetText\"]");
Array.from(tweets).map(t => ({
text: t.innerText,
author: t.closest("article")?.querySelector("[data-testid=\"User-Name\"]")?.innerText
}))
'
Installation
Ensure actionbook is in your PATH. The skill declares requires.bins: [actionbook] and will not activate if the binary is missing.
Resources
scripts/
fetch_tweet.sh - Simplified wrapper for extracting Twitter content
references/
commands.md - Complete command reference
selectors.md - Common CSS selectors for popular sites