ghost-browser
SKILL.md
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 |
|---|---|---|---|
LINKEDIN_LI_AT |
string | For LinkedIn | LinkedIn li_at cookie from DevTools |
TWITTER_AUTH_TOKEN |
string | For Twitter | Twitter auth_token cookie |
TWITTER_CT0 |
string | For Twitter | Twitter ct0 cookie |
YOUTUBE_API_KEY |
string | For YouTube | Google Cloud API key (free) |
OPENAI_API_KEY |
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_engage.py |
LinkedIn CLI — post, feed, engage, apply, connect | python3 linkedin_engage.py post --text "Hello" --image photo.jpg --visible |
universal_scraper.py |
Scrape any website with 6 presets | python3 universal_scraper.py indeed --query "AI engineer" --output jobs.json |
stats_tracker.py |
Pull stats from all platforms | python3 stats_tracker.py --notify |
demo_wow.py |
6-stage visual demo (viral) | python3 demo_wow.py |
monkeytype_flex.py |
Speed typing demo (412 WPM) | python3 monkeytype_flex.py |
job_research.py |
Browse AI jobs on LinkedIn + Indeed | python3 job_research.py |
screenshot_tool.py |
Screenshot any URL | python3 screenshot_tool.py --url "https://example.com" |
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-leads |
Scrape → enrich with ghost-browser LinkedIn data |
instantly-campaigns |
Scrape leads → cold email |
gmaps-leads |
Google Maps preset in universal_scraper |
cross-niche-outliers |
Research content → auto-post to LinkedIn |
upwork-apply |
Job research data feeds Upwork proposals |
send-telegram |
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
Weekly Installs
6
Repository
aiagentwithdhruv/skillsGitHub Stars
5
First Seen
9 days ago
Security Audits
Installed on
opencode6
github-copilot6
codex6
amp6
cline6
kimi-cli6