Learn-skills.dev ghost-browser
AI-powered browser automation with human-like behavior — LinkedIn auto-posting with images, feed scraping, job applications, web scraping any website, visual demos (MonkeyType 412 WPM), and anti-detection evasion. Use when user asks to automate browser tasks, scrape websites, post to LinkedIn, or build human-like automation.
install
source · Clone the upstream repo
git clone https://github.com/NeverSight/learn-skills.dev
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/NeverSight/learn-skills.dev "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/skills-md/aiagentwithdhruv/skills/ghost-browser" ~/.claude/skills/neversight-learn-skills-dev-ghost-browser && rm -rf "$T"
manifest:
data/skills-md/aiagentwithdhruv/skills/ghost-browser/SKILL.mdsource content
Ghost Browser — AI-Powered Browser Automation
The browser moves on its own. No human needed.
GitHub: https://github.com/aiagentwithdhruv/ghost-browser Path:
Social-Media-Agent-1.0/browser-automation/
Stack: Python 3, Playwright, OpenAI API
What It Does
Automates any browser action with human-like behavior — LinkedIn posting, engagement, job applications, web scraping, stats tracking, and visual demos.
Schema
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| string | For LinkedIn | LinkedIn cookie from DevTools |
| string | For Twitter | Twitter auth_token cookie |
| string | For Twitter | Twitter ct0 cookie |
| string | For YouTube | Google Cloud API key (free) |
| string | For AI comments | GPT-4o-mini for comment/cover letter generation |
Outputs
| Name | Type | Description |
|---|---|---|
| LinkedIn post | Action | Published post with optional image |
| Feed data | JSON | Posts from LinkedIn feed with author, content, URN |
| Job listings | JSON | Jobs from LinkedIn/Indeed with title, company, description |
| Scraped data | JSON/CSV | Data from any website (smart/full/selector modes) |
| Stats | JSON + MD | Followers, views, connections across all platforms |
| Screenshots | PNG | Any URL, full page or element |
Credentials
| Service | How to Get |
|---|---|
| LinkedIn li_at | DevTools → Application → Cookies → linkedin.com |
| Twitter auth_token + ct0 | DevTools → Application → Cookies → x.com |
| YouTube API | Google Cloud Console → YouTube Data API v3 (FREE) |
| OpenAI | platform.openai.com → API Keys |
Cost
| Component | Cost |
|---|---|
| Playwright/Chromium | Free |
| YouTube API | Free (10K units/day) |
| OpenAI (comments) | ~$0.01 per comment |
| LinkedIn/Twitter | Free (cookie auth) |
Scripts Reference
| Script | What It Does | Example Command |
|---|---|---|
| LinkedIn CLI — post, feed, engage, apply, connect | |
| Scrape any website with 6 presets | |
| Pull stats from all platforms | |
| 6-stage visual demo (viral) | |
| Speed typing demo (412 WPM) | |
| Browse AI jobs on LinkedIn + Indeed | |
| Screenshot any URL | |
Architecture
human_behavior.py ← Anti-detection layer ↓ base_browser.py ← Playwright wrapper (cookie auth, context manager) ↓ ├── linkedin_browser.py ← LinkedIn: post, like, comment, apply, connect ├── linkedin_scraper.py ← LinkedIn: followers, connections, analytics ├── twitter_scraper.py ← Twitter: followers, impressions ├── youtube_stats.py ← YouTube API (no browser) ├── universal_scraper.py ← Any website (6 presets) └── screenshot_tool.py ← Screenshots ↓ ├── linkedin_engage.py ← CLI for LinkedIn ├── stats_tracker.py ← Master orchestrator ├── demo_wow.py ← Viral demo └── job_research.py ← Job market research
Human-Like Behavior Rules
| Behavior | Implementation |
|---|---|
| Typing | 40-55 WPM, char-by-char, 3-5% typo rate with backspace correction |
| Delays | Gaussian distribution (not uniform) — clusters around midpoint |
| Scrolling | Sinusoidal speed curve — slow start, fast middle, slow end |
| Clicking | Random offset from center (not dead-center like bots) |
| Reading | Wait time proportional to word count |
| Breaks | 30-120 sec pause every 15-25 actions |
| Viewport | Random from pool: 1440x900, 1920x1080, 1536x864, etc. |
LinkedIn Post Flow
1. Navigate to feed 2. Click "Start a post" 3. Find Quill editor (contenteditable div) 4. Short posts (<200 chars) → human_type with typos Long posts (>200 chars) → insert_text (paste) 5. Attach image → file input upload 6. Click "Next" (LinkedIn image editor step) 7. Click "Post" → confirmed
Composable With
| Skill | How |
|---|---|
| Scrape → enrich with ghost-browser LinkedIn data |
| Scrape leads → cold email |
| Google Maps preset in universal_scraper |
| Research content → auto-post to LinkedIn |
| Job research data feeds Upwork proposals |
| Stats tracker sends notifications |
Revenue Use Cases
| Use Case | Revenue |
|---|---|
| LinkedIn automation service | $500-2000/mo per client |
| Web scraping gigs (Fiverr/Upwork) | $200-1000 per project |
| LinkedIn ghostwriting + auto-post | $500-1500/mo per client |
| AI job application bot | $50-200 per person |
| Lead generation (scrape → email) | $500-2000/mo per client |
Quick Start
cd Social-Media-Agent-1.0/browser-automation pip install -r requirements.txt playwright install chromium cp .env.example .env # Add your cookies # Run the viral demo python3 demo_wow.py # Post to LinkedIn python3 linkedin_engage.py post --text "Hello world" --visible # Scrape Indeed jobs python3 universal_scraper.py indeed --query "AI engineer" --output jobs.json