Agent skill

Chatgpt Search

by SeifBenayed in SeifBenayed/cloclo

Search ChatGPT and extract the full response + hydration JSON that powers the UI.

MITAuto-check: notesData & Analytics

Install Chatgpt Search

skills CLI
$ npx skills add SeifBenayed/cloclo --skill chatgpt-search -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install SeifBenayed/cloclo chatgpt-search --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/SeifBenayed/cloclo.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/chatgpt-search .claude/skills/chatgpt-search && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
chatgpt-search
GitHub stars
114
Token cost
~1.7k tokens
SKILL.md length
286 words
Files
2
Skills in repo
6
Repo updated
First seen
Licence
MIT

At a glance

Search ChatGPT and extract the full response + hydration JSON that powers the UI.

  • Works in 8 steps: Verify Chrome is running with debug port → Attach + enable network log + open ChatGPT → Inject fetch/SSE interceptor → …
  • Asked to search chatgpt
  • SKILL.md covers Prerequisites, Workflow, Output format and Important notes
  • Runs JavaScript scripts from its folder; calls curl; reaches chatgpt.com

What it does

Chatgpt Search is an agent skill from SeifBenayed/cloclo. Search ChatGPT and extract the full response + hydration JSON that powers the UI. Attaches to a running Chrome instance (port 9222 by default), opens ChatGPT, submits a query, waits for the streamed response, and returns structured data: messages, product cards, hydration JSON, and API calls. Use when asked to "search chatgpt", "ask chatgpt", "chatgpt search", "get chatgpt response", or "scrape chatgpt".

Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file.

It sits in Data & Analytics, covering Web scraping and Schema markup. It works with OpenAI. The repository describes itself as: Open-source Claude Code SDK — single-file CLIs in Node.js, Python, Go, Rust that use directly. The licence is MIT.

When your agent uses it

  • Asked to search chatgpt
  • Get chatgpt response

Example prompts

  • “search chatgpt”
  • “ask chatgpt”
  • “chatgpt search”
  • “/chatgpt-search”

Requirements

  • Node.js
  • Pre-approved tools (allowed-tools): Browser, Bash, Read, Write, Glob, Grep

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Verify Chrome is running with debug port
  2. Attach + enable network log + open ChatGPT
  3. Inject fetch/SSE interceptor
  4. Type query + submit
  5. Wait for response
  6. Extract results
  7. Save to /tmp
  8. Report

What it can do on your machine

Read from SKILL.md and the folder at commit 00f5195. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Browser
    • Bash
    • Read
    • Write
    • Glob
    • Grep

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (JavaScript), which the agent can run.

    Shell commands in SKILL.md call:

    • curl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • chatgpt.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Chatgpt Search loads about 1.7k tokens when it runs. Until then it costs about 106 tokens; SKILL.md has 286 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~106
When it runs · the whole SKILL.md, loaded when a task matches
~1.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Browser, Bash, Read, Write, Glob, Grep

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from SeifBenayed/cloclo at commit 00f5195, republished under its MIT licence (© SeifBenayed). 286 words, ~1,748 tokens.

Download SKILL.mdSave it as .claude/skills/chatgpt-search/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
chatgpt-search
description
Search ChatGPT and extract the full response + hydration JSON that powers the UI. Attaches to a running Chrome instance (port 9222 by default), opens ChatGPT, submits a query, waits for the streamed response, and returns structured data: messages, product cards, hydration JSON, and API calls. Use when asked to "search chatgpt", "ask chatgpt", "chatgpt search", "get chatgpt response", or "scrape chatgpt".
allowed-tools
Browser, Bash, Read, Write, Glob, Grep

ChatGPT Search — Extract structured response + hydration JSON

Prerequisites

A Chrome instance must be running with --remote-debugging-port=9222. If not running, launch it:

bash
# Kill existing Chrome first
pkill -9 -f "Google Chrome" 2>/dev/null; sleep 2

# Launch with debug port + user's real profile copy
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
  --remote-debugging-port=9222 \
  --user-data-dir="$HOME/.claude/browser-profiles/chrome-debug-full" \
  --no-first-run &>/dev/null &

If the profile doesn't exist yet, create it by copying the user's real Chrome profile:

bash
REAL="$HOME/Library/Application Support/Google/Chrome"
COPY="$HOME/.claude/browser-profiles/chrome-debug-full"
mkdir -p "$COPY"
cp "$REAL/Local State" "$COPY/" 2>/dev/null
cp -R "$REAL/Default" "$COPY/Default" 2>/dev/null
rm -rf "$COPY/Default/Cache" "$COPY/Default/Code Cache" 2>/dev/null

Workflow

The user provides a search query. Execute these steps:

Step 1: Verify Chrome is running with debug port
bash
curl -s http://127.0.0.1:9222/json/version | head -1

If it fails, launch Chrome as described in Prerequisites.

Step 2: Attach + enable network log + open ChatGPT
Browser { action: "new_session", session_id: "chatgpt", cdp_url: "http://127.0.0.1:9222" }
Browser { action: "enable_network_log", session_id: "chatgpt" }
Browser { action: "new_tab", url: "https://chatgpt.com", session_id: "chatgpt" }

Wait 5 seconds for page load.

Step 3: Inject fetch/SSE interceptor
Browser { action: "evaluate", session_id: "chatgpt", value: "window.__sse=[];window.__api=[];const _f=window.fetch;window.fetch=async function(...a){const url=typeof a[0]==='string'?a[0]:a[0]?.url||'?';const m=a[1]?.method||'GET';const rb=a[1]?.body;const resp=await _f.apply(this,a);const ct=resp.headers.get('content-type')||'';const cl=resp.clone();if(ct.includes('event-stream')){const rd=cl.body.getReader();const dc=new TextDecoder();let full='';(async()=>{try{while(true){const{done,value:v}=await rd.read();if(done)break;full+=dc.decode(v,{stream:true});}}catch{}window.__sse.push({url,m,s:resp.status,sz:full.length,body:full,ts:Date.now()});})();}else{cl.text().then(t=>{if(t.length>30)window.__api.push({url,m,s:resp.status,sz:t.length,body:t,ts:Date.now()});}).catch(()=>{});}return resp;};'ok'" }
Step 4: Type query + submit

Use real CDP key events for React compatibility:

Browser { action: "click", selector: "#prompt-textarea, textarea", session_id: "chatgpt" }

Then type each character of the query using send_keys — but for long queries, use evaluate with the native setter:

Browser { action: "evaluate", session_id: "chatgpt", value: "Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype,'value').set.call(document.querySelector('#prompt-textarea,textarea'),'THE QUERY HERE');document.querySelector('#prompt-textarea,textarea').dispatchEvent(new Event('input',{bubbles:true}));'typed'" }

Wait 800ms, then submit:

Browser { action: "evaluate", session_id: "chatgpt", value: "(function(){var btn=document.querySelector('[data-testid=\"send-button\"],button[aria-label*=\"Envoyer\"],button[aria-label*=\"Send\"]');if(btn&&!btn.disabled){btn.click();return 'sent';}var btns=[...document.querySelectorAll('button')];var s=btns.find(function(b){return b.querySelector('svg')&&!b.disabled&&b.closest('[class*=\"composer\"]');});if(s){s.click();return 'sent-svg';}return 'no-btn';})()" }
Step 5: Wait for response

Poll every 5 seconds for up to 60 seconds, checking message count:

Browser { action: "evaluate", session_id: "chatgpt", value: "document.querySelectorAll('[data-message-author-role]').length" }

Stop when message count >= 2 (user + assistant).

Step 6: Extract results

Messages (user + assistant full text):

Browser { action: "evaluate", session_id: "chatgpt", value: "(function(){var msgs=document.querySelectorAll('[data-message-author-role]');var r=[];msgs.forEach(function(m){r.push({role:m.getAttribute('data-message-author-role'),text:m.textContent.trim()})});return JSON.stringify(r);})()" }

Hydration JSON (session, config, feature flags):

Browser { action: "evaluate", session_id: "chatgpt", value: "var e=document.querySelector('script[type=\"application/json\"]');e?e.textContent:''" }

Intercepted SSE streams (conversation stream + search product updates):

Browser { action: "evaluate", session_id: "chatgpt", value: "JSON.stringify((window.__sse||[]).map(function(s){return{url:s.url,method:s.m,status:s.s,size:s.sz}}))" }

To get a specific SSE body (e.g., index 0):

Browser { action: "evaluate", session_id: "chatgpt", value: "(window.__sse||[])[0]?.body||''" }

Intercepted API calls:

Browser { action: "evaluate", session_id: "chatgpt", value: "JSON.stringify((window.__api||[]).filter(function(a){return a.url.includes('backend')}).map(function(a){return{url:a.url,method:a.m,status:a.s,size:a.sz}}))" }

CDP network log (all HTTP requests/responses):

Browser { action: "get_network_log", session_id: "chatgpt", filter: "backend" }
Step 7: Save to /tmp

Save all extracted data to /tmp/chatgpt-search-*.json:

  • /tmp/chatgpt-search-messages.json — user + assistant messages
  • /tmp/chatgpt-search-hydration.json — UI hydration JSON
  • /tmp/chatgpt-search-sse.json — SSE stream data (if captured)
  • /tmp/chatgpt-search-api.json — API call responses
Step 8: Report

Present the assistant's response to the user, and list saved files with sizes.

Output format

## ChatGPT Search: [query]

### Response
[Full assistant message text]

### Files saved
- /tmp/chatgpt-search-messages.json (X KB) — conversation messages
- /tmp/chatgpt-search-hydration.json (X KB) — UI hydration data
- /tmp/chatgpt-search-sse.json (X KB) — SSE streams
- /tmp/chatgpt-search-api.json (X KB) — API responses

### Metadata
- Model: [from hydration or conversation init]
- Session ID: [from hydration]
- Country: [from hydration]

Important notes

  • ChatGPT works without login for basic queries (anonymous mode)
  • For authenticated queries, the user must log in manually in the debug Chrome
  • The fetch interceptor captures SSE streams (conversation + search/product_update)
  • CDP network log captures JSON API calls but NOT SSE stream bodies
  • Always close the session when done: Browser { action: "close_session", session_id: "chatgpt" }

© SeifBenayed, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in .claude/skills/chatgpt-search of SeifBenayed/cloclo.

  • SKILL.md
  • search.mjs

Open the folder on GitHubat commit 00f5195

Compare with similar skills

Chatgpt Search next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Chatgpt Search compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Chatgpt Search this skillSeifBenayed/cloclo114—~1.7kAutomated safety check: NotesMIT
Agent Readiness Auditindranilbanerjee/digital-marketing-pro8551 repos~3.9kAutomated safety check: PassMIT
Axyusukebe/ax7191 repos~918Automated safety check: PassMIT
Meowhub Browserzhaojiaqi/MeowHub111—~1.6kAutomated safety check: PassGPL-3.0
SEO Firecrawlseranking/seo-skills160—~2.3kAutomated safety check: PassMIT
Facebook Page Postsbrowser-act/skills6.1k—~2.3kAutomated safety check: PassMIT

Similar skills

  • Agent Readiness Audit

    indranilbanerjee/digital-marketing-pro

    Audit whether AI agents and AI crawlers can actually use a site — robots.txt rules per AI crawler token (OpenAI, Anthropic and Perplexity bots, Google-Extended, Applebot-Extended)…

    855 GitHub starsUsed in 1 repo~3.9k tokens
    Data & AnalyticsAuto-check passed
  • Ax

    yusukebe/ax

    Use the ax CLI instead of curl + throwaway parsing scripts whenever you fetch a URL, explore an unknown web page, or extract structured data from HTML.

    719 GitHub starsUsed in 1 repo~918 tokens
    Data & AnalyticsAuto-check passed
  • Meowhub Browser

    zhaojiaqi/MeowHub

    Browse the web using Browserless.io cloud browser service. An agent skill from zhaojiaqi/MeowHub.

    111 GitHub stars~1.6k tokensUpdated 4 mo ago
    Data & AnalyticsAuto-check passed
  • SEO Firecrawl

    seranking/seo-skills

    Ad-hoc web scraping, site mapping, and full-site crawling via Firecrawl MCP.

    160 GitHub stars~2.3k tokensUpdated 3 mo ago
    Data & AnalyticsAuto-check passed
  • Facebook Page Posts

    browser-act/skills

    Scrapes posts from any public Facebook Page timeline, returning structured data including post text, author info, engagement metrics (likes/comments/shares), reaction breakdowns…

    6.1k GitHub stars~2.3k tokensUpdated 1 mo ago
    Data & AnalyticsAuto-check passed
  • Facebook Page Profile Posts

    browser-act/skills

    Scrapes posts from any public Facebook Page or personal Profile timeline, returning structured data including post text, author info with profile picture, engagement metrics (likes/comments/shares)…

    6.1k GitHub stars~2.7k tokensUpdated 1 mo ago
    Data & AnalyticsAuto-check passed

More from SeifBenayed/cloclo

  • Browse

    SeifBenayed/cloclo

    Visual feedback browser automation with multi-session, multi-tab, iframe support, and enterprise primitives.

    114 GitHub stars~2.7k tokensUpdated 6 mo ago
    Auto-check passed
  • Simplify

    SeifBenayed/cloclo

    Review code for unnecessary complexity and simplify it. An agent skill from SeifBenayed/cloclo.

    114 GitHub stars~430 tokensUpdated 6 mo ago
    Auto-check: notes
  • Commit

    SeifBenayed/cloclo

    Create a git commit with a good message. An agent skill from SeifBenayed/cloclo.

    114 GitHub stars~299 tokensUpdated 6 mo ago
    Auto-check: notes
  • Debug

    SeifBenayed/cloclo

    Troubleshoot and debug issues. An agent skill from SeifBenayed/cloclo.

    114 GitHub stars~419 tokensUpdated 6 mo ago
    Auto-check: notes
  • Review PR

    SeifBenayed/cloclo

    Review a pull request for bugs, security issues, and improvements.

    114 GitHub stars~376 tokensUpdated 6 mo ago
    Auto-check: notes

Works with

Questions about Chatgpt Search

What does Chatgpt Search do?

Search ChatGPT and extract the full response + hydration JSON that powers the UI. Chatgpt Search is an agent skill from SeifBenayed/cloclo. Search ChatGPT and extract the full response + hydration JSON that powers the UI.

When should I use Chatgpt Search?

Chatgpt Search fits situations like: asked to search chatgpt; get chatgpt response.

How do I install Chatgpt Search in Claude Code?

Run `npx skills add SeifBenayed/cloclo --skill chatgpt-search -a claude-code`. Or copy the skill folder (.claude/skills/chatgpt-search in SeifBenayed/cloclo) into .claude/skills/chatgpt-search in your project. Claude Code loads it when a task matches its description.

How do I install Chatgpt Search in Codex?

Run `npx skills add SeifBenayed/cloclo --skill chatgpt-search -a codex`. Or copy the skill folder (.claude/skills/chatgpt-search in SeifBenayed/cloclo) into .agents/skills/chatgpt-search in your project. Codex loads it when a task matches its description.

Can I use Chatgpt Search in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add SeifBenayed/cloclo --skill chatgpt-search -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/chatgpt-search, .gemini/skills/chatgpt-search, .github/skills/chatgpt-search and .opencode/skills/chatgpt-search in your project.

What does Chatgpt Search need to run?

Going by SKILL.md and its folder, Chatgpt Search needs JavaScript for the scripts in its folder and the command-line tools its instructions call (curl). Our summary lists: Node.js. Its frontmatter pre-approves these tools: Browser, Bash, Read, Write, Glob, Grep.

Does Chatgpt Search access the network?

SKILL.md names 1 domain. In commands or code: chatgpt.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Chatgpt Search safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Chatgpt Search use?

Chatgpt Search is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Chatgpt Search use?

About 1.7k tokens (SKILL.md is roughly 7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Chatgpt Search?

Skills that share tags, products or a category with Chatgpt Search: Agent Readiness Audit (indranilbanerjee/digital-marketing-pro, 855 stars), Ax (yusukebe/ax, 719 stars), Meowhub Browser (zhaojiaqi/MeowHub, 111 stars) and SEO Firecrawl (seranking/seo-skills, 160 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Chatgpt Search?

SeifBenayed (a GitHub user) maintains it in SeifBenayed/cloclo, which has 114 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on April 5, 2026.

Source: SeifBenayed/cloclo on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.