| name | Browser Abstraction Layer |
| description | Unified browser interface for Antigravity native, Playwright, and Hyperbrowser providers |
Browser Abstraction Layer
Unified interface for web content extraction across browser providers
Provider Selection
function get_browser_provider() {
if (is_antigravity_environment()) {
return "antigravity"
}
config = Read("km-config.json")
return config?.browser?.provider || "playwright"
}
function is_antigravity_environment() {
return typeof antigravity !== 'undefined' ||
process.env.ANTIGRAVITY_SESSION ||
file_exists("~/.gemini/antigravity/")
}
Provider Comparison
| Feature | Antigravity Native | Playwright | Hyperbrowser |
|---|
| Setup required | None (built-in) | MCP server | MCP + API key |
| Simple scraping | Natural language | navigate → snapshot | scrape_webpage |
| Stealth mode | Built-in | Not supported | useStealth: true |
| Social media | Excellent | May be blocked | Good |
| Cost | Free (with Antigravity) | Free | API key required |
| Authentication | Session-aware | Limited | Profile support |
Unified Scraping Function
function scrape_url(url, options = {}) {
provider = get_browser_provider()
switch (provider) {
case "antigravity":
return antigravity_browser_fetch(url, options)
case "hyperbrowser":
return mcp__hyperbrowser__scrape_webpage({
url: url,
outputFormat: ["markdown"],
sessionOptions: {
useStealth: options.stealth || false
}
})
case "playwright":
default:
mcp__playwright__browser_navigate({ url: url })
mcp__playwright__browser_wait_for({ time: 3 })
return mcp__playwright__browser_snapshot()
}
}
Antigravity Native Browser
Antigravity has a powerful built-in browser agent. No MCP configuration needed.
Usage in Antigravity
Instead of calling MCP tools, simply instruct the agent:
Browse to https://example.com/article and extract the main content.
Or for more structured extraction:
Go to this URL and summarize the key points:
https://example.com/article
Advantages
- No setup: Works out of the box
- Session-aware: Can handle login states
- Smart extraction: AI-powered content understanding
- Anti-bot bypass: Better success with protected sites
When to Use Playwright Instead
Even in Antigravity, you might want Playwright MCP for:
- Automated screenshot capture
- Specific DOM manipulation
- Programmatic form filling
- Headless batch processing
Social Media Detection
function requires_stealth(url) {
const patterns = [
/threads\.net\//,
/instagram\.com\/p\//,
/instagram\.com\/reel\//,
/twitter\.com\//,
/x\.com\//
]
return patterns.some(p => p.test(url))
}
Provider Recommendations by URL Type
| URL Pattern | Best Provider | Fallback |
|---|
| threads.net | Antigravity / Hyperbrowser | - |
| instagram.com | Antigravity / Hyperbrowser | - |
| twitter.com/x.com | Antigravity | Hyperbrowser |
| Regular websites | Any | Playwright |
| Login-required sites | Antigravity | Hyperbrowser (with profile) |
Fallback Strategy
function scrape_with_fallback(url, options = {}) {
provider = get_browser_provider()
try {
return scrape_url(url, options)
} catch (error) {
if (provider === "playwright" && requires_stealth(url)) {
console.warn("Playwright blocked. Try Antigravity native or Hyperbrowser.")
}
if (provider === "antigravity") {
console.warn("Browser fetch failed. Retrying with different approach.")
}
throw error
}
}