actionbook

star 1

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.

longzhi By longzhi schedule Updated 3/14/2026

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:

# Open Twitter with anti-detection
actionbook --stealth browser open "https://x.com/username/status/123456789"

# Extract tweet text
actionbook browser eval 'document.body.innerText'

# Screenshot the tweet
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:

# Navigate and wait for content
actionbook browser goto "https://example.com/dashboard"
actionbook browser wait '[data-loaded="true"]'

# Extract after JS execution
actionbook browser eval 'JSON.stringify(window.appState)'

3. Interactive Automation

Automate form filling, clicking, and multi-step workflows:

# Fill a search form
actionbook browser type 'input[name="q"]' "OpenClaw"
actionbook browser click 'button[type="submit"]'
actionbook browser wait '.results'

# Extract results
actionbook browser eval 'document.querySelector(".results").innerText'

4. Session & Cookie Management

Maintain login state across requests using profiles:

# Create a dedicated profile for a site
actionbook profile create twitter-session

# Use it (manual login once, cookies persist)
actionbook --profile twitter-session browser open "https://x.com"

# Reuse in future sessions
actionbook --profile twitter-session browser goto "https://x.com/home"

Quick Reference

Essential Commands

# Browser control
actionbook browser open <URL>        # Open URL in new browser
actionbook browser goto <URL>        # Navigate current page
actionbook browser close             # Close browser

# Content extraction
actionbook browser eval <JS>         # Execute JavaScript
actionbook browser snapshot          # Get accessibility tree (structured HTML)
actionbook browser screenshot [PATH] # Take screenshot

# Interaction
actionbook browser click <SELECTOR>          # Click element
actionbook browser type <SELECTOR> <TEXT>    # Type into input
actionbook browser wait <SELECTOR>           # Wait for element

# Cookies & state
actionbook browser cookies list              # List all cookies
actionbook browser cookies get <NAME>        # Get specific cookie
actionbook browser cookies set <NAME> <VAL>  # Set cookie

Global Flags

--stealth                    # Enable anti-detection (recommended for Twitter/X)
--stealth-os <OS>            # Spoof OS (macos-arm, windows, linux)
--stealth-gpu <GPU>          # Spoof GPU (apple-m4-max, rtx4080, etc.)
--profile <NAME>             # Use isolated browser session
--headless                   # Run browser invisibly

Workflow Patterns

Pattern 1: Twitter Content Extraction

# Step 1: Open with stealth
actionbook --stealth browser open "https://x.com/elonmusk"

# Step 2: Wait for timeline to load (optional, but safer)
actionbook browser wait '[data-testid="primaryColumn"]'

# Step 3: Extract content
actionbook browser eval '
  Array.from(document.querySelectorAll("[data-testid=\"tweetText\"]"))
    .map(el => el.innerText)
    .join("\n\n---\n\n")
'

# Step 4: Screenshot for reference
actionbook browser screenshot timeline.png

# Step 5: Close when done
actionbook browser close

Pattern 2: Form Submission with Retry

# Fill form
actionbook browser type '#email' "user@example.com"
actionbook browser type '#password' "secret"
actionbook browser click 'button[type="submit"]'

# Wait for success indicator
actionbook browser wait '.dashboard'

# Extract result
actionbook browser eval 'document.querySelector(".welcome-message").innerText'

Pattern 3: Persistent Session (Login Once, Reuse)

# First time: Create profile and login manually
actionbook profile create my-service
actionbook --profile my-service browser open "https://service.com/login"
# (Interact with browser to log in manually)

# Future sessions: Cookies preserved
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:

# Spoof as Windows + RTX 4080
actionbook --stealth --stealth-os windows --stealth-gpu rtx4080 browser open "https://bot-check.com"

Troubleshooting

"Element not found"

Wait for page to fully load:

# Add explicit wait before extraction
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:

# Option 1: Stealth mode (no login)
actionbook --stealth browser open "https://x.com/..."

# Option 2: Manual login once, reuse cookies
actionbook profile create twitter-main
actionbook --profile twitter-main browser open "https://x.com"
# (Complete login in browser)

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

Install via CLI
npx skills add https://github.com/longzhi/actionbook-skill --skill actionbook
Repository Details
star Stars 1
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator