SkillAgentSearch skills...

Ghost Browser

AI-powered browser automation — LinkedIn auto-post, web scraping, human-like typing at 412 WPM, job applications. The browser moves on its own.

Install / Use

/learn @aiagentwithdhruv/Ghost Browser
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<div align="center">

Ghost Browser

The browser moves on its own. No human needed.

Python Playwright OpenAI License

Your browser opens. Types by itself. Scrolls LinkedIn. Posts content. Applies to jobs. Scrapes data from any website. Takes typing tests at 412 WPM. All while you watch.

Built in one session with Claude Code + Playwright.

<br />

Demo Finale

<br />

View Demo · Quick Start · All Commands · How It Works

</div>

What It Does

| Capability | What Happens | |:---|:---| | LinkedIn Auto-Post | Opens LinkedIn, types your post letter-by-letter, attaches image, clicks Post | | LinkedIn Engagement | Scrolls feed, likes posts, writes AI-generated comments in your voice | | Job Applications | Searches jobs, reads descriptions, applies with AI-written cover letters | | Universal Web Scraper | Scrapes ANY website — Indeed, Google Maps, Hacker News, anything | | Ghost Typing | Takes typing tests at 400+ WPM with 100% accuracy | | Speed Reading | Opens Wikipedia, scrolls and highlights key information live | | GitHub Trending | Browses trending repos, opens top projects | | Stats Tracking | Pulls followers/views from LinkedIn, Twitter, YouTube | | Screenshot Tool | Screenshots any URL with custom viewports |


The WOW Demo

python3 demo_wow.py

Watch the browser come alive — 6 stages, zero human input:

  1. Google Search — ghost types "How to build AI agents" letter by letter
  2. Wikipedia — speed-reads an AI article, highlights key paragraphs
  3. GitHub — browses trending repos, clicks into the #1 project
  4. MonkeyType — takes a typing test at ~400 WPM (world record is 300)
  5. Hacker News — reads the top tech story
  6. Finale — custom branded splash screen

No one is touching the keyboard. The browser does everything.


Proof It Works

MonkeyType — 412 WPM | 100% Accuracy

<div align="center">

MonkeyType 412 WPM

</div>

MonkeyType flagged it as "Test invalid" because no human can type this fast. The world record is ~300 WPM. Ghost Browser hit 412.

<br />

MonkeyType — Live Demo | 333 WPM | 100% Accuracy

<div align="center">

MonkeyType Live Demo 333 WPM

</div>

Live run (March 2026): 333 WPM, 416 characters typed in 15 seconds, 100% accuracy, 83% consistency. Every single character typed by the bot in real-time — no human touched the keyboard.

<br />

LinkedIn — Live Feed Scrape

[1] Henryk Brzozowski — Voice AI Expert
    "Most people in the Voice AI space start with cold outreach..."

[2] Raj Shamani — Founder & Host @ Figuring Out
    "Suniel Shetty almost left his acting career to sell idlis..."

[3] Aditya Sharma — Helping Top 1% AI Talent
    "Most people confuse these 4 AI terms..."

[4] Fatmir Hyseni — Chartered Marketer
    "SEO built Canva. LLMs are now sending them double-digit % of traffic..."

Live run (March 2026): Bot opened LinkedIn, scrolled the feed with human-like behavior, and extracted 5 real posts — authors, headlines, content — all hands-free.

<br />

LinkedIn — Auto-Posted With Image

<div align="center">

LinkedIn Auto Post

</div>

Full post with image, typed and published automatically. "Post successful" confirmation at the bottom — completely hands-free.


Architecture

graph LR
    subgraph Anti-Detect["ANTI-DETECT"]
        HB["Human Behavior<br/>Gaussian delays<br/>Typos + corrections<br/>Smooth scrolling"]
        BB["Base Browser<br/>Playwright + Cookies"]
    end

    subgraph Agents["AGENTS"]
        LA["LinkedIn Agent"]
        SA["Scraper Agent"]
        JA["Job Agent"]
        DA["Demo Agent"]
        ST["Stats Tracker"]
    end

    subgraph Platforms["PLATFORMS"]
        LI["LinkedIn"]
        IN["Indeed"]
        GM["Google Maps"]
        MT["MonkeyType"]
        AW["Any Website"]
    end

    HB --> LA
    HB --> SA
    BB --> LA
    BB --> SA
    LA --> LI
    SA --> IN
    SA --> GM
    JA --> IN
    JA --> LI
    DA --> MT
    ST --> LI

    CLI["CLI: linkedin_engage.py"] -.-> Agents

    style Anti-Detect fill:#1e3a5f,stroke:#4a9eed,color:#e5e5e5
    style Agents fill:#2d1b69,stroke:#8b5cf6,color:#e5e5e5
    style Platforms fill:#1a4d2e,stroke:#22c55e,color:#e5e5e5
    style CLI fill:transparent,stroke:#06b6d4,color:#06b6d4,stroke-dasharray: 5 5

Quick Start

# Clone
git clone https://github.com/aiagentwithdhruv/ghost-browser.git
cd ghost-browser

# Install
pip install -r requirements.txt
playwright install chromium

# Set up credentials
cp .env.example .env
# Add your LinkedIn li_at cookie (see Credentials section)

# Run the demo
python3 demo_wow.py

4 commands. Watch the magic.


All Commands

LinkedIn Automation

# Post to LinkedIn with image
python3 linkedin_engage.py post --text "Your post here" --image photo.jpg --visible

# Post from a text file
python3 linkedin_engage.py post --text-file post.txt --image banner.png --visible

# Scroll feed and view posts
python3 linkedin_engage.py feed --visible

# Auto-engage: like + AI comment on 5 posts
python3 linkedin_engage.py engage --count 5 --visible

# Search + apply to jobs with AI cover letters
python3 linkedin_engage.py apply --query "AI engineer" --location "Remote" --visible

# Send connection requests with custom note
python3 linkedin_engage.py connect --profile "https://linkedin.com/in/someone" --note "Hey!" --visible

Scrape Any Website

# Indeed jobs
python3 universal_scraper.py indeed --query "AI engineer" --output jobs.json

# Google Maps businesses
python3 universal_scraper.py google-maps --query "AI companies San Francisco" --output leads.json

# Any URL — smart mode auto-detects content
python3 universal_scraper.py "https://news.ycombinator.com" --mode smart --output hn.json

# Custom CSS selector
python3 universal_scraper.py "https://example.com" --selector "h2.title" --output titles.json

Stats & Screenshots

# Pull stats from all platforms
python3 stats_tracker.py --notify

# YouTube only (free API, no browser needed)
python3 stats_tracker.py --youtube-only

# Screenshot any URL
python3 screenshot_tool.py --url "https://example.com" --output screenshot.png

Fun Demos

# The full WOW demo (6 stages)
python3 demo_wow.py

# MonkeyType speed demon (15 sec test, ~400 WPM)
python3 monkeytype_flex.py

# Job market research (LinkedIn + Indeed)
python3 job_research.py

How It Works

Human-Like Behavior Engine

The human_behavior.py layer makes every action indistinguishable from a real user:

| Behavior | Implementation | |:---|:---| | Typing | Character-by-character at 40-55 WPM with 3-5% typo rate — types wrong char, pauses, backspaces, corrects | | Delays | Gaussian distribution (not uniform) — clusters around midpoint like real humans | | Scrolling | Sinusoidal speed curve — slow start, fast middle, slow end | | Clicking | Random offset from element center (bots click dead-center, humans don't) | | Reading | Calculates reading time based on word count, waits proportionally | | Breaks | 30-120 sec breaks every 15-25 actions | | Viewport | Random realistic resolution from a pool (1440x900, 1920x1080, etc.) |

# Ghost typing with realistic typos
HumanBehavior.human_type(page, "input", "Hello world", wpm=45, typo_rate=0.05)

# Smooth scrolling (sinusoidal, not instant jump)
HumanBehavior.human_scroll(page, "down", distance=600)

# Click with natural offset from center
HumanBehavior.human_click(page, "button.submit")

# Reading delay proportional to content length
HumanBehavior.reading_time("This is a long article about AI...")

LinkedIn Post Flow

Open feed → Click "Start a post"
    → Find Quill editor (contenteditable div)
    → Short posts (<200 chars): ghost-type character-by-character with typos
    → Long posts (>200 chars): insert_text (humans paste long posts too)
    → Click media button → upload image via file input
    → Click "Next" (LinkedIn's image editor step)
    → Click "Post" → confirmed!

AI-Generated Comments

# Uses GPT-4o-mini with your brand voice
BRAND_PROMPT = """You are Dhruv Tomar (AIwithDhruv), an Applied AI Engineer.
Your tone: 40% witty realism, 30% strategic clarity, 20% motivational.
Write SHORT comments (1-3 sentences). Be genuine, add value.
Never be generic ("Great post!"). Sound like a real person."""

Getting Credentials

<details> <summary><b>LinkedIn <code>li_at</code> Cookie</b></summary>
  1. Login to LinkedIn in Chrome
  2. DevTools (F12) → Application → Cookies → linkedin.com
  3. Copy li_at value → paste in .env
</details> <details> <summary><b>YouTube API Key (FREE)</b></summary>
  1. Google Cloud Console → Enable YouTube Data API v3
  2. Create API Key → copy to .env
  3. Cost: $0 (10,000 free units/day)
</details> <details> <summary><b>Twitter Cookies</b></summary>
  1. Login to x.com → DevTools → Application → Cookies
  2. Copy auth_token and ct0 → paste in .env
</details>

v2.0 — Multi-Agent Orchestrator

NEW in v2.0: Run multiple browser agents simultaneously, each in its own isolated context.

# Run 3 agents at once (MonkeyType + GitHub + Hacker News)
python3 orchestrator.py --demo --visible

# LinkedIn feed + Indeed jobs + Google 
View on GitHub
GitHub Stars16
CategoryDevelopment
Updated17d ago
Forks0

Languages

Python

Security Score

75/100

Audited on Mar 23, 2026

No findings