mcpField
G
ghost-browser

ghost-browser

github.com/aiagentwithdhruvAgent workflows2044 installsUpdated 15w ago
Repository

About ghost-browser

Ghost Browser is a skill for controlling a real, logged-in Chrome session through natural-language tasks. It uses an LLM to navigate and interact with pages, while pausing before final public actions unless submission is explicitly enabled.

Key features

  1. 01Controls Chrome through CDP and Playwright
  2. 02Executes natural-language browser tasks
  3. 03Uses persistent logged-in profiles
  4. 04Pauses before irreversible actions
  5. 05Supports scripted low-level browser control

Use cases

  1. 01Search job listings and gather details
  2. 02Draft comments without publishing them
  3. 03Fill applications and stop before submission

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/aiagentwithdhruv/skills --skill ghost-browser

After installing, type/ghost-browserin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

ghost_agent.py
ghost_chrome.py
ghost_launch.py

Details

From the project README

Ghost Browser — Agentic control of Dhruv's real Chrome

You give it a goal in plain English. It drives his actual logged-in Chrome like a human — scrolling, clicking, typing, reading — and stops before any irreversible public action.

Runtime lives at: Social-Media-Agent-1.0/browser-automation/ Engine: browser-use (0.13.x) + Playwright CDP attach + real Google Chrome Brain: OpenAI gpt-5.4-mini (actions) + gpt-5.4 (accurate page reading), keys in that folder's .env


Why this beats normal automation

  • Un-blockable: drives your REAL Chrome with your REAL logged-in sessions + residential IP — same trick Manus uses. Not a headless bot, so bot-detection has nothing to catch.
  • Persistent: Chrome opens ONCE and stays open. No reopening tabs per action.
  • Human-paced: small scrolls, brief pauses, deliberate steps — fast where safe, slow where blocking is a risk.
  • LLM-driven: you state the goal; it decides the clicks. Survives LinkedIn/any site renaming its buttons (no brittle selectors).
  • Safe on the brand account: never clicks a final Submit / Post / Send / Apply-confirm, or reacts to >3 posts per run. It fills everything and STOPS for Dhruv's click. Override with --allow-submit.

How to run it (two steps)

Step 1 — attach to a profile (once per session). Quits Chrome, clean-copies the login, relaunches on the debug port. His everyday Chrome is untouched (works on a copy).

cd "Social-Media-Agent-1.0/browser-automation"
./.venv/bin/python ghost_launch.py aiv     # or: onsite | msbc | dhruv | agi | default
# waits for "✅ READY"

Step 2 — command it in plain English (repeat as many times as you want; Chrome stays open).

./.venv/bin/python ghost_agent.py "open Jobs, search Solution Consultant remote India, list the top 5 with company + location"
./.venv/bin/python ghost_agent.py "scroll my feed and draft a thoughtful comment on the top AI post — do NOT post it"
./.venv/bin/python ghost_agent.py "open this job <url>, fill the application with my details, stop before Submit"

Profile map (name → Chrome profile)

sayprofileaccount
aivProfile 6Ai with Dhruv ([email protected]) — default
dhruvProfile 2Dhruv Tomar
onsiteProfile 4[email protected]
msbcProfile 12MSBC
agiProfile 8[email protected]

Safety model (do not weaken without Dhruv's explicit OK)

  • Reading, scrolling, navigating, searching, opening posts, and typing into comment/message/application fields = automated.
  • Final public/irreversible actions (Post, Send, Submit, Publish, Connect, >3 reactions/run) = Dhruv clicks, unless the command includes --allow-submit.
  • This protects the brand account from a ToS flag mid-job-hunt.

Files

filerole
ghost_launch.pyquit + clean-copy profile + relaunch Chrome on CDP port 9222
ghost_agent.pythe LLM-driven agent (natural-language task → human-paced actions)
ghost_chrome.pylow-level Playwright CDP driver (for scripted, non-LLM control)
.envOpenAI + Euri keys (gitignored)

Notes / gotchas

  • Chrome 136+ blocks the debug port on the normal profile dir — that's why ghost_launch.py uses a clean copy under .chrome-cdp-<name>/ (gitignored).
  • Set a different brain with GHOST_MODEL / GHOST_READ_MODEL env vars. Euri keys are present for cost-sensitive product runs.
  • The engine has a built-in LLM-judge that grades each run — watch for its verdict to catch misreads.
  • Requires the runtime built: python3 -m venv .venv && .venv/bin/pip install browser-use playwright && .venv/bin/playwright install chromium.

Alternative: Claude for Chrome (official, complementary)

For interactive "Claude, do this in my browser" moments, the official Anthropic Claude for Chrome extension (Max plan) is the safest zero-code option — records/repeats workflows, schedules tasks, uses live sessions. Ghost Browser is the scriptable, ownable version for automation Dhruv controls.

Comments

Markdown supported