<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Senpeng</title>
    <description>The latest articles on DEV Community by Senpeng (@senke0x).</description>
    <link>https://dev.to/senke0x</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3856563%2F7fcae966-ff20-485e-9449-28cbcaa7586e.jpeg</url>
      <title>DEV Community: Senpeng</title>
      <link>https://dev.to/senke0x</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/senke0x"/>
    <language>en</language>
    <item>
      <title>Scaling Our Daily Twitter Scraping Workflow with actionbook's Cloud Browser Providers</title>
      <dc:creator>Senpeng</dc:creator>
      <pubDate>Sat, 18 Apr 2026 18:11:28 +0000</pubDate>
      <link>https://dev.to/senke0x/scaling-our-daily-twitter-scraping-workflow-with-actionbooks-cloud-browser-providers-1hlh</link>
      <guid>https://dev.to/senke0x/scaling-our-daily-twitter-scraping-workflow-with-actionbooks-cloud-browser-providers-1hlh</guid>
      <description>&lt;h2&gt;
  
  
  What We Were Trying to Do Every Morning
&lt;/h2&gt;

&lt;p&gt;Every morning, our inbox looks like a battlefield. Around a thousand emails pour in overnight, each one an IFTTT-generated notification carrying a single Twitter link. Keyword subscriptions, competitor alerts, KOL tracking, industry signals, all jammed together in an unreadable pile.&lt;/p&gt;

&lt;p&gt;Out of those thousand, roughly fifty are actually worth reading. The other 950 are noise.&lt;/p&gt;

&lt;p&gt;But here is the catch. You cannot tell which is which by looking at the email subject. The IFTTT notification gives you a link and not much else. To filter properly, you have to open each tweet and pull three pieces of information: the actual content, the view count, and the like count. Only then can you decide whether a post deserves a closer look or a follow-up.&lt;/p&gt;

&lt;p&gt;So we did what every engineering team does when faced with a thousand repetitive clicks. We automated it.&lt;/p&gt;

&lt;p&gt;And for a long time, our automation was fine. Not great. Just fine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the First Version Broke
&lt;/h2&gt;

&lt;p&gt;Our first crawler was a straightforward Actionbook script running in local mode. Open a batch of tabs, visit each IFTTT-provided link, extract the content and metrics, move on. On paper, we could push it to 30 concurrent tabs on a single machine. In practice, it hit Twitter's rate limit almost immediately.&lt;/p&gt;

&lt;p&gt;Anything above a handful of concurrent requests started coming back with empty pages, challenge screens, or outright blocks. Dropping concurrency to keep the crawler stable meant a full run took around thirty minutes. By the time the data landed, standup was halfway over.&lt;/p&gt;

&lt;p&gt;We tried the usual bag of tricks. Jittered delays. Rotating user agents. Residential proxies. Each one added maintenance cost and the payoff kept shrinking.&lt;/p&gt;

&lt;p&gt;Eventually we stopped and asked the obvious question. What is actually limiting us here?&lt;/p&gt;

&lt;p&gt;It was not CPU. It was not bandwidth. It was not even the script.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It was the single exit IP.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every request we made went out through the same door. Twitter was not rate-limiting our machine. It was rate-limiting anyone knocking from that address. No amount of local optimization could fix a problem that existed at the network edge.&lt;/p&gt;

&lt;p&gt;The only real way forward was to move to cloud browsers, so that every request could go out from a different IP.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enter &lt;code&gt;--provider&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Around this time, Actionbook shipped exactly what we needed. A &lt;code&gt;--provider&lt;/code&gt; flag that lets you delegate browser sessions to different cloud browser services. Today it supports three backends: Driver, HyperBrowser, and BrowserUse.&lt;/p&gt;

&lt;p&gt;What matters is not which three providers. What matters is that you can switch between them by changing a single flag, without touching the script. That means we can run the same crawler across multiple providers in parallel, and each provider brings its own pool of IPs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The New SOP: Spreading the Load Across Three Providers
&lt;/h2&gt;

&lt;p&gt;Here is where the economics get interesting. Each of these cloud browser providers offers a free tier. Individually, none of them is generous enough to handle our full daily volume. Together, running in parallel, they comfortably are.&lt;/p&gt;

&lt;p&gt;So we designed the pipeline around that observation.&lt;/p&gt;

&lt;p&gt;At 7 AM, a cron job ingests every IFTTT email from the overnight inbox and extracts the Twitter link embedded in each one. Today that yields around a thousand URLs. The list gets split into three roughly equal slices, one for each provider.&lt;/p&gt;

&lt;p&gt;For each slice, we open a single cloud browser session on the corresponding provider. Inside that session, we drive 10 tabs concurrently, each one visiting its assigned tweet URL and pulling the content, view count, and like count.&lt;/p&gt;

&lt;p&gt;Three providers running in parallel. One session each. Ten tabs per session. Thirty real requests in flight at any moment, but split across three completely independent IP pools. If Twitter throttles one provider's egress, the other two keep going without even noticing.&lt;/p&gt;

&lt;p&gt;From the crawler's point of view, none of this complexity exists. Actionbook abstracts away the differences between Driver, HyperBrowser, and BrowserUse. We wrote one scraper. The orchestrator decides which provider gets which slice, spins up the sessions, and collects the results.&lt;/p&gt;

&lt;p&gt;Once everything lands, the pipeline runs a summarization pass over the collected content and applies our relevance filters. The thousand raw URLs collapse into about fifty tweets that genuinely deserve attention, and those show up in the morning briefing channel before anyone walks into standup. The runtime dropped from around thirty minutes to about five, and rate limit errors effectively went to zero.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing Thought
&lt;/h2&gt;

&lt;p&gt;This Twitter pipeline is just one example. Once you have Actionbook's &lt;code&gt;--provider&lt;/code&gt; flag combined with isolated sessions across different cloud browsers, a lot of workflows that used to feel impractical suddenly become straightforward. &lt;/p&gt;

&lt;p&gt;Anything that needs high-volume access to the same domain, anything that needs a clean session per task, anything that needs to sidestep the limits of a single local machine, all of it fits naturally into this pattern.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>Hermes Searched 4 Platforms at Once. I Just Told It What I Wanted.</title>
      <dc:creator>Senpeng</dc:creator>
      <pubDate>Thu, 16 Apr 2026 07:08:07 +0000</pubDate>
      <link>https://dev.to/senke0x/hermes-searched-4-platforms-at-once-i-just-told-it-what-i-wanted-b9g</link>
      <guid>https://dev.to/senke0x/hermes-searched-4-platforms-at-once-i-just-told-it-what-i-wanted-b9g</guid>
      <description>&lt;p&gt;Hermes Agent is one of the hottest open-source agents right now. Runs local, reasons well, handles multi-step tasks without hand-holding. But its built-in browser tools have a bottleneck: one tab at a time. Want to search multiple platforms? Your agent queues them up and waits through each one sequentially.&lt;/p&gt;

&lt;p&gt;I integrated Actionbook with Hermes and asked it to fetch today's trending topics from Twitter, Reddit, Google, and Hacker News. It spun up four browser tabs in parallel and returned the aggregated results in under a minute.&lt;/p&gt;

&lt;p&gt;One instruction. Four platforms. All at once.&lt;/p&gt;


&lt;div&gt;
  &lt;iframe src="https://loom.com/embed/110663b556014b9bad0757a6c601cc1b"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Integrate Actionbook with Hermes
&lt;/h2&gt;

&lt;p&gt;One line to get Actionbook running in Hermes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx skills add actionbook/actionbook &amp;amp;&amp;amp; hermes skills install skills-sh/actionbook/actionbook/actionbook -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Done.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I told Hermes
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use Actionbook to operate the browser with chrome remote debugging, launching parallel tasks across the following platforms simultaneously to research [your topic], then synthesize a consolidated trend report.
## Tab Management Rule (Apply to ALL tasks)

&amp;gt; After extracting the required information from any detail page (post, article, thread, comment page), immediately close that tab before opening the next one. Never accumulate more than 1–2 open tabs per platform task at any time.

## Execution

Run all 4 platforms in parallel via Actionbook. Each browser task is independent.

HackerNews
1. Open HackerNews and search for [your topic], filter by this week sorted by popularity.
2. For each high-scored post: open the detail/comments page → extract supporting and opposing viewpoints → close the tab.

Reddit
1. Open Reddit and search for [your topic], filter by Top this week.
2. For each relevant post: open the post → switch comment sorting to Controversial → extract pain points, product comparisons, and real user experiences → close the tab.

Twitter/X
1. Open Twitter/X and search for [your topic], filter for high-engagement original posts (no retweets).
2. For each post: open the reply thread → capture sentiment and key opinions from notable voices → close the tab.

Google
1. Open Google and search for [your topic].
2. For each result (news, blog, announcement): open the page → collect key information → close the tab.
3. Cover 1~2 results.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hermes reads the instruction, builds the URL list, opens all 4 tabs through actionbook, then snapshots and extracts text from each one in parallel. No waiting for one to finish before starting the next.&lt;/p&gt;

&lt;p&gt;You just watch four tabs light up.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why trending data breaks with one tab at a time
&lt;/h2&gt;

&lt;p&gt;Trending content shifts by the minute. If your agent checks Twitter first, then Reddit, then Google, then HN, by the time it finishes the fourth search, the first result is already stale. You end up with a patchwork of different moments instead of one coherent snapshot.&lt;/p&gt;

&lt;p&gt;Parallel tabs fix this. All four searches happen at the same instant. The data you get back is a synchronized time slice across every platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  How actionbook handles parallel tabs
&lt;/h2&gt;

&lt;p&gt;Actionbook's daemon manages multiple CDP connections concurrently. Each tab is an independent target. No "active tab" concept, no switching overhead.&lt;/p&gt;

&lt;p&gt;Behind the scenes, here's what Hermes runs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Open 4 tabs at once&lt;/span&gt;
actionbook browser new-tab &lt;span class="s2"&gt;"https://twitter.com/search?q=AI+agents"&lt;/span&gt; &lt;span class="nt"&gt;--session&lt;/span&gt; s1
actionbook browser new-tab &lt;span class="s2"&gt;"https://www.reddit.com/search/?q=AI+agents"&lt;/span&gt; &lt;span class="nt"&gt;--session&lt;/span&gt; s1
actionbook browser new-tab &lt;span class="s2"&gt;"https://www.google.com/search?q=AI+agents+trending+today"&lt;/span&gt; &lt;span class="nt"&gt;--session&lt;/span&gt; s1
actionbook browser new-tab &lt;span class="s2"&gt;"https://news.ycombinator.com"&lt;/span&gt; &lt;span class="nt"&gt;--session&lt;/span&gt; s1

&lt;span class="c"&gt;# Wait for all 4 to load, then extract&lt;/span&gt;
actionbook browser wait-idle &lt;span class="nt"&gt;--session&lt;/span&gt; s1 &lt;span class="nt"&gt;--tab&lt;/span&gt; t1
actionbook browser text &lt;span class="nt"&gt;--session&lt;/span&gt; s1 &lt;span class="nt"&gt;--tab&lt;/span&gt; t1
actionbook browser wait-idle &lt;span class="nt"&gt;--session&lt;/span&gt; s1 &lt;span class="nt"&gt;--tab&lt;/span&gt; t2
actionbook browser text &lt;span class="nt"&gt;--session&lt;/span&gt; s1 &lt;span class="nt"&gt;--tab&lt;/span&gt; t2
&lt;span class="c"&gt;# ... same for t3, t4&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Four pages loaded, four pages extracted. Hermes reads all the results and writes a single summary.&lt;/p&gt;

&lt;h2&gt;
  
  
  What else you can do with parallel tabs
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Morning briefing for newsletter writers.&lt;/strong&gt; A dev I know runs this every morning before coffee. Hermes pulls trending from multiple sources, cross-references the overlapping topics, and outputs a structured briefing. What used to be 30 minutes of tab-switching is now a single instruction the night before.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Competitive monitoring.&lt;/strong&gt; An indie hacker pointed multiple tabs at competitor blogs and changelogs simultaneously. Every Monday, Hermes opens them all, extracts what shipped that week, and drops a comparison into a markdown file. No RSS, no manual checking.&lt;/p&gt;

&lt;p&gt;Multiple tabs, one instruction. This is how agents should be searching the web.&lt;/p&gt;

</description>
      <category>hermes</category>
      <category>actionbook</category>
      <category>browserautomation</category>
      <category>aiagents</category>
    </item>
    <item>
      <title>I Asked Claude Code to Scrape First Round. It Opened 30 Tabs at Once.</title>
      <dc:creator>Senpeng</dc:creator>
      <pubDate>Fri, 10 Apr 2026 11:53:19 +0000</pubDate>
      <link>https://dev.to/senke0x/i-asked-claude-code-to-scrape-first-round-it-opened-30-tabs-at-once-1pf</link>
      <guid>https://dev.to/senke0x/i-asked-claude-code-to-scrape-first-round-it-opened-30-tabs-at-once-1pf</guid>
      <description>&lt;p&gt;I wanted to study how successful startups on First Round Capital craft their taglines. So I gave Claude Code one instruction: use actionbook go to ervery website and extract tagline.&lt;/p&gt;

&lt;p&gt;Then Claude Code instead of clicking through each page one by one like a traditional browser agent would, it opened 30 tabs simultaneously and returned everything in under a minute.&lt;/p&gt;

&lt;p&gt;This is how agents should be using browsers all along.&lt;/p&gt;


&lt;div&gt;
  &lt;iframe src="https://loom.com/embed/e8dce4a3f70f4787bcfce5b7b5ed958a"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Setup your agent in one sentence
&lt;/h2&gt;

&lt;p&gt;Tell Claude Code one sentence:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Find actionbook on GitHub and install it.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the entire setup.&lt;/p&gt;

&lt;p&gt;After setup, give it one instruction:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Collect all companies URL from firstround.com/companies.
Open 30 tabs at once. Take snapshot of each page and extract the company name and tagline and save as CSV (company name, URL, tagline).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude Code builds the URL list from the index page, batches them into groups of 30, and manages tab rotation on its own. You just watch 30 tabs open, scrape, close, and repeat.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why agents need Actionbook for parallel tabs
&lt;/h2&gt;

&lt;p&gt;Browser agents today work one tab at a time. That's fine for 5 pages but not for triaging hundreds of emails, parsing a thousand tweets, or scanning Reddit threads. One tab at a time, your agent spends most of its time waiting instead of working.&lt;/p&gt;

&lt;p&gt;Actionbook gives agents parallel browser access. 30 tabs open, 30 tabs working, all at once.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Actionbook isolates each tab
&lt;/h2&gt;

&lt;p&gt;Every Actionbook browser command carries an explicit address: &lt;code&gt;--session&lt;/code&gt; and &lt;code&gt;--tab&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;actionbook browser text &lt;span class="nt"&gt;--session&lt;/span&gt; s1 &lt;span class="nt"&gt;--tab&lt;/span&gt; t1
actionbook browser text &lt;span class="nt"&gt;--session&lt;/span&gt; s1 &lt;span class="nt"&gt;--tab&lt;/span&gt; t17
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These two execute at the same time. There's no "active tab" concept. Each tab is an independent target. The daemon behind the CLI manages 30 CDP connections in parallel, one per tab, with its own page state and lifecycle.&lt;/p&gt;

&lt;p&gt;That's what makes the batch cycle possible:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Open 30 tabs&lt;/span&gt;
actionbook browser new-tab &lt;span class="s2"&gt;"https://firstround.com/review/post-1"&lt;/span&gt; &lt;span class="nt"&gt;--session&lt;/span&gt; s1
actionbook browser new-tab &lt;span class="s2"&gt;"https://firstround.com/review/post-2"&lt;/span&gt; &lt;span class="nt"&gt;--session&lt;/span&gt; s1
&lt;span class="c"&gt;# ... 28 more&lt;/span&gt;

&lt;span class="c"&gt;# Wait + scrape all 30 in parallel&lt;/span&gt;
actionbook browser wait-idle &lt;span class="nt"&gt;--session&lt;/span&gt; s1 &lt;span class="nt"&gt;--tab&lt;/span&gt; t1
actionbook browser text &lt;span class="nt"&gt;--session&lt;/span&gt; s1 &lt;span class="nt"&gt;--tab&lt;/span&gt; t1
&lt;span class="c"&gt;# ... same for t2 through t30&lt;/span&gt;

&lt;span class="c"&gt;# Close the batch, open next 30&lt;/span&gt;
actionbook browser close-tab &lt;span class="nt"&gt;--session&lt;/span&gt; s1 &lt;span class="nt"&gt;--tab&lt;/span&gt; t1
actionbook browser new-tab &lt;span class="s2"&gt;"https://firstround.com/review/post-31"&lt;/span&gt; &lt;span class="nt"&gt;--session&lt;/span&gt; s1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;End result: 192 websites visited, each one snapshotted and parsed. Company name, URL, and tagline extracted into a single CSV. 7 batches, 1 minute.&lt;/p&gt;

&lt;h2&gt;
  
  
  Beyond scraping: real workflows across tabs
&lt;/h2&gt;

&lt;p&gt;Extracting text is the simplest case. The interesting part is what happens when the agent clicks, fills forms, and navigates across 30 tabs at the same time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Product growth workflows.&lt;/strong&gt; One team uses Actionbook to open dozens of Gmail threads, Twitter mentions, and Reddit posts in parallel. Their agent reads everything at once, cross-references the feedback, and updates their growth funnel doc. What used to be a morning of manual triage now takes minutes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flight deal hunting.&lt;/strong&gt; Another user built a flight booking agent that opens 5 airline sites simultaneously, searches the same route on all of them, compares prices, and returns the cheapest option. The agent fills in departure, destination, and dates on each site at the same time.&lt;/p&gt;

&lt;p&gt;Actionbook lets your agent control the browser in parallel. This is what agents should have been doing from the start.&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>actionbook</category>
      <category>browserautomation</category>
      <category>aiagents</category>
    </item>
    <item>
      <title>Let OpenClaw Use Your ChatGPT GPT-5.4 Pro Model</title>
      <dc:creator>Senpeng</dc:creator>
      <pubDate>Fri, 03 Apr 2026 06:47:11 +0000</pubDate>
      <link>https://dev.to/senke0x/let-openclaw-use-your-chatgpt-gpt-54-pro-model-3l2l</link>
      <guid>https://dev.to/senke0x/let-openclaw-use-your-chatgpt-gpt-54-pro-model-3l2l</guid>
      <description>&lt;p&gt;I run OpenClaw on my Mac Mini as a personal assistant for daily automation. Recently I wanted to give it one more ability: talk to ChatGPT through my actual browser, not the API.&lt;/p&gt;

&lt;p&gt;Here's what it looks like. I send a message in Telegram, OpenClaw opens ChatGPT in Chrome, sends the prompt, reads the response, and brings it back:&lt;/p&gt;


&lt;div&gt;
  &lt;iframe src="https://loom.com/embed/2a519f9ea0a046c1875a82bd16d1e0d2"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Why Operate ChatGPT This Way
&lt;/h2&gt;

&lt;p&gt;Some ChatGPT models like GPT-5.4 Pro are only available through the web interface with a Plus or Pro subscription. The API has its own model list  and own pricing. Going through the browser means OpenClaw gets access to every model I can use, including the ones the API doesn't offer.&lt;/p&gt;

&lt;p&gt;When I chat with OpenClaw through Telegram and need research on something, I just ask. OpenClaw opens ChatGPT in the browser, sends my question, reads the response, and replies back to me in Telegram. I don't switch apps or copy-paste anything, and the conversation stays in my ChatGPT history so I can pick it up later.&lt;/p&gt;

&lt;p&gt;Because it uses my real browser session, OpenClaw can select any model I have access to. If OpenAI drops a new model next week, OpenClaw just picks it from the dropdown the same way I would.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Set It Up: actionbook CLI + Chrome Extension
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://actionbook.dev?utm_source=devto" rel="noopener noreferrer"&gt;actionbook&lt;/a&gt; is a Browser Action Engine I've been building. It gives AI agents pre-computed "action manuals" for websites, semantic descriptions of what's interactive, so agents don't need to parse raw HTML or guess at selectors.&lt;/p&gt;

&lt;p&gt;The key for OpenClaw: actionbook CLI connects to your &lt;em&gt;existing&lt;/em&gt; Chrome through a Chrome extension. Not a new browser instance. Your running browser with active session.&lt;/p&gt;

&lt;p&gt;There's only one manual step: install the &lt;a href="https://chromewebstore.google.com/detail/actionbook/bebchpafpemheedhcdabookaifcijmfo?utm_source=devto" rel="noopener noreferrer"&gt;actionbook Chrome extension&lt;/a&gt; from the Web Store. Everything else, I just told OpenClaw to do it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Install actionbook CLI from https://github.com/actionbook/actionbook
run `actionbook setup`, and pick extension mode for browser connection.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;During setup, the wizard detects your environment: OS, shell, installed browsers. The important step is &lt;strong&gt;Browser Mode&lt;/strong&gt;, where it picks between:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;isolated&lt;/strong&gt;: Launch a dedicated browser (clean environment, no setup needed)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;extension&lt;/strong&gt;: Control your existing Chrome&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;OpenClaw picked &lt;strong&gt;extension&lt;/strong&gt; as instructed. That's the whole point. I want to control the Chrome that's already logged into ChatGPT, not spin up a fresh one.&lt;/p&gt;

&lt;h2&gt;
  
  
  How OpenClaw Operates ChatGPT
&lt;/h2&gt;

&lt;p&gt;Once actionbook is set up, I just tell OpenClaw what I need:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use actionbook to open ChatGPT and ask: 
what are the latest trends in AI agents for 2026? Bring me the answer.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I don't tell OpenClaw which button to click or where the input box is. OpenClaw reads the action manual for ChatGPT, takes a snapshot of the page to understand the current layout, and figures out how to operate it on its own. It fills in the prompt, clicks send, waits for the response to finish streaming, and reads the result back to me.&lt;/p&gt;

&lt;p&gt;Here's what it runs behind the scenes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;actionbook search &lt;span class="s2"&gt;"chatgpt"&lt;/span&gt;
actionbook get chatgpt.com:/:default
actionbook browser snapshot
actionbook browser fill &lt;span class="s2"&gt;"your question here"&lt;/span&gt; &lt;span class="nt"&gt;--ref-id&lt;/span&gt; e3
actionbook browser click &lt;span class="nt"&gt;--ref-id&lt;/span&gt; e4
actionbook browser wait-idle
actionbook browser text
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What Else I Use It For
&lt;/h2&gt;

&lt;p&gt;I also use it for parallel GEO testing. When I need to compare how ChatGPT responds to the same prompt under different contexts, I tell OpenClaw to open multiple tabs and send them all at once.&lt;/p&gt;

&lt;p&gt;And this isn't limited to ChatGPT. OpenClaw can operate any page I'm already logged into. That's what makes it a real agent.&lt;/p&gt;




</description>
      <category>openclaw</category>
      <category>chatgpt</category>
      <category>browser</category>
      <category>agents</category>
    </item>
  </channel>
</rss>
