browserforce

安装量: 51
排名: #14532

安装

npx skills add https://github.com/ivalsaraj/browserforce --skill browserforce

BrowserForce — Your Real Chrome Browser BrowserForce gives you the user's actual Chrome browser — all their logins, cookies, and extensions already active. No headless browser, no fresh profiles. Prerequisites The user must have: BrowserForce Chrome extension installed and connected (green icon) The relay auto-starts on first command — no manual step needed Check with: browserforce status Quick Reference browserforce status

Check relay + extension status

browserforce tabs

List open tabs

browserforce snapshot [ n ]

Accessibility tree of tab n

browserforce screenshot [ n ]

Screenshot tab n (PNG to stdout)

browserforce navigate < url

Open URL in new tab

browserforce -e ""

Run Playwright JavaScript (one-shot)

Important: One-Shot Execution Each browserforce -e call is independent — state does NOT persist between calls. Do everything you need (navigate, act, observe) within a single -e call. Core Workflow: Observe → Act → Observe Quick observation (no code needed) browserforce snapshot 0

See what's on tab 0

browserforce tabs

List all tabs

Navigate and read a page browserforce -e " state.page = await context.newPage(); await state.page.goto('https://example.com'); await waitForPageLoad(); return await snapshot(); " Note: snapshot() reads from state.page (if set) or page (default tab 0). Always assign state.page when creating a new page so snapshot() reads the right tab. Click and verify browserforce -e " state.page = context.pages()[context.pages().length - 1]; await state.page.locator('role=button[name= \" Next \" ]').click(); await waitForPageLoad(); return await snapshot(); " Fill a form browserforce -e " state.page = context.pages()[context.pages().length - 1]; await state.page.locator('role=textbox[name= \" Email \" ]').fill('user@example.com'); return await snapshot(); " Extract data browserforce -e " const p = context.pages()[context.pages().length - 1]; return await p.evaluate(() => document.querySelector('.price').textContent); " Screenshot browserforce screenshot 0

page.png

or via -e:

browserforce -e " state.page = context.pages()[0]; return await state.page.screenshot(); "

page.png Rules snapshot() over screenshot() — snapshot returns text (fast, cheap). Use screenshot only for visual layout verification. One-shot execution — each -e call is independent. Do all steps in one call. Don't navigate existing tabs — create your own via context.newPage() or browserforce navigate . Use convenience commands for simple operations: browserforce tabs , browserforce snapshot , browserforce screenshot . waitForPageLoad() — call after navigation or clicks that trigger page loads. Error Recovery Connection lost: User must check browserforce status No tabs: browserforce navigate https://example.com Element not found: browserforce -e "return await snapshot({ search: 'button' })" Important This is the user's REAL browser. Be respectful: Don't close tabs you didn't open Don't navigate tabs you didn't create Don't modify browser settings or stored data

返回排行榜