AI Newsletter Digest improvements: fixed QP soft line break decoding, URL extraction, and content cleaning
This commit is contained in:
201
archive/inactive-skills/verify-on-browser/SKILL.md
Normal file
201
archive/inactive-skills/verify-on-browser/SKILL.md
Normal file
@@ -0,0 +1,201 @@
|
||||
---
|
||||
description: Control browser via Chrome DevTools Protocol - full CDP access
|
||||
---
|
||||
|
||||
# Browser Control Skill
|
||||
|
||||
Use the `browser` MCP server to control a browser with full CDP access. The core `cdp_send` tool can call ANY Chrome DevTools Protocol method.
|
||||
|
||||
## Available Tools
|
||||
|
||||
### `cdp_send` - Raw CDP Access
|
||||
Call any CDP method directly:
|
||||
```
|
||||
cdp_send(method: "Domain.method", params: {...})
|
||||
```
|
||||
|
||||
### `screenshot` - Capture Page
|
||||
```
|
||||
screenshot(format: "png"|"jpeg", fullPage: true|false)
|
||||
```
|
||||
|
||||
### `get_url` - Current URL
|
||||
```
|
||||
get_url()
|
||||
```
|
||||
|
||||
### `close_browser` - Close Browser
|
||||
```
|
||||
close_browser()
|
||||
```
|
||||
|
||||
## Common CDP Operations
|
||||
|
||||
### Navigation
|
||||
```javascript
|
||||
// Navigate to URL
|
||||
cdp_send(method: "Page.navigate", params: { url: "https://example.com" })
|
||||
|
||||
// Reload
|
||||
cdp_send(method: "Page.reload")
|
||||
|
||||
// Go back/forward
|
||||
cdp_send(method: "Page.navigateToHistoryEntry", params: { entryId: 1 })
|
||||
```
|
||||
|
||||
### DOM Manipulation
|
||||
```javascript
|
||||
// Get document root
|
||||
cdp_send(method: "DOM.getDocument")
|
||||
|
||||
// Query selector (needs nodeId from getDocument)
|
||||
cdp_send(method: "DOM.querySelector", params: { nodeId: 1, selector: "h1" })
|
||||
|
||||
// Get outer HTML
|
||||
cdp_send(method: "DOM.getOuterHTML", params: { nodeId: 5 })
|
||||
|
||||
// Set attribute
|
||||
cdp_send(method: "DOM.setAttributeValue", params: { nodeId: 5, name: "class", value: "new-class" })
|
||||
```
|
||||
|
||||
### JavaScript Execution
|
||||
```javascript
|
||||
// Evaluate expression
|
||||
cdp_send(method: "Runtime.evaluate", params: { expression: "document.title" })
|
||||
|
||||
// Evaluate with return value
|
||||
cdp_send(method: "Runtime.evaluate", params: {
|
||||
expression: "document.querySelectorAll('a').length",
|
||||
returnByValue: true
|
||||
})
|
||||
|
||||
// Call function on object
|
||||
cdp_send(method: "Runtime.callFunctionOn", params: {
|
||||
objectId: "...",
|
||||
functionDeclaration: "function() { return this.innerText; }"
|
||||
})
|
||||
```
|
||||
|
||||
### Network
|
||||
```javascript
|
||||
// Enable network tracking (required first)
|
||||
cdp_send(method: "Network.enable")
|
||||
|
||||
// Set cookies
|
||||
cdp_send(method: "Network.setCookie", params: {
|
||||
name: "session",
|
||||
value: "abc123",
|
||||
domain: ".example.com"
|
||||
})
|
||||
|
||||
// Get cookies
|
||||
cdp_send(method: "Network.getCookies")
|
||||
|
||||
// Clear cache
|
||||
cdp_send(method: "Network.clearBrowserCache")
|
||||
|
||||
// Set extra headers
|
||||
cdp_send(method: "Network.setExtraHTTPHeaders", params: {
|
||||
headers: { "X-Custom": "value" }
|
||||
})
|
||||
|
||||
// Block URLs
|
||||
cdp_send(method: "Network.setBlockedURLs", params: { urls: ["*.ads.com"] })
|
||||
```
|
||||
|
||||
### Input Simulation
|
||||
```javascript
|
||||
// Click (dispatch mouse event)
|
||||
cdp_send(method: "Input.dispatchMouseEvent", params: {
|
||||
type: "mousePressed",
|
||||
x: 100,
|
||||
y: 200,
|
||||
button: "left",
|
||||
clickCount: 1
|
||||
})
|
||||
|
||||
// Type text
|
||||
cdp_send(method: "Input.insertText", params: { text: "Hello world" })
|
||||
|
||||
// Key press
|
||||
cdp_send(method: "Input.dispatchKeyEvent", params: {
|
||||
type: "keyDown",
|
||||
key: "Enter"
|
||||
})
|
||||
```
|
||||
|
||||
### Emulation
|
||||
```javascript
|
||||
// Set viewport
|
||||
cdp_send(method: "Emulation.setDeviceMetricsOverride", params: {
|
||||
width: 375,
|
||||
height: 812,
|
||||
deviceScaleFactor: 3,
|
||||
mobile: true
|
||||
})
|
||||
|
||||
// Set geolocation
|
||||
cdp_send(method: "Emulation.setGeolocationOverride", params: {
|
||||
latitude: 37.7749,
|
||||
longitude: -122.4194,
|
||||
accuracy: 100
|
||||
})
|
||||
|
||||
// Set timezone
|
||||
cdp_send(method: "Emulation.setTimezoneOverride", params: { timezoneId: "America/New_York" })
|
||||
```
|
||||
|
||||
### Performance & Debugging
|
||||
```javascript
|
||||
// Enable performance metrics
|
||||
cdp_send(method: "Performance.enable")
|
||||
|
||||
// Get metrics
|
||||
cdp_send(method: "Performance.getMetrics")
|
||||
|
||||
// Start profiler
|
||||
cdp_send(method: "Profiler.start")
|
||||
|
||||
// Stop and get profile
|
||||
cdp_send(method: "Profiler.stop")
|
||||
|
||||
// Enable debugger
|
||||
cdp_send(method: "Debugger.enable")
|
||||
|
||||
// Set breakpoint
|
||||
cdp_send(method: "Debugger.setBreakpointByUrl", params: {
|
||||
lineNumber: 10,
|
||||
url: "https://example.com/script.js"
|
||||
})
|
||||
```
|
||||
|
||||
### Storage
|
||||
```javascript
|
||||
// Get local storage
|
||||
cdp_send(method: "DOMStorage.getDOMStorageItems", params: {
|
||||
storageId: { securityOrigin: "https://example.com", isLocalStorage: true }
|
||||
})
|
||||
|
||||
// Clear storage
|
||||
cdp_send(method: "Storage.clearDataForOrigin", params: {
|
||||
origin: "https://example.com",
|
||||
storageTypes: "all"
|
||||
})
|
||||
```
|
||||
|
||||
## CDP Protocol Reference
|
||||
|
||||
For complete list of all domains and methods:
|
||||
https://chromedevtools.github.io/devtools-protocol/
|
||||
|
||||
Common domains:
|
||||
- **Page** - Navigation, lifecycle, PDF generation
|
||||
- **DOM** - Document structure manipulation
|
||||
- **CSS** - Stylesheet manipulation
|
||||
- **Runtime** - JavaScript execution
|
||||
- **Network** - Request/response interception
|
||||
- **Input** - Keyboard/mouse simulation
|
||||
- **Emulation** - Device/viewport simulation
|
||||
- **Debugger** - JavaScript debugging
|
||||
- **Performance** - Performance metrics
|
||||
- **Storage** - localStorage, IndexedDB, cookies
|
||||
Reference in New Issue
Block a user