소스 정보
- 저장소
- Demerzels-lab/elsamultiskillagent
- 최근 소스 활동
- 2026년 5월 14일 08:17
- 감지된 SKILL.md 언어
- 영어
- 스타
- 10
- 포크
- 1
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/Demerzels-lab/elsamultiskillagent --skill stealthy-auto-browse명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
The philosophical layer for AI agents.
Agents can sign plugins, rotate credentials without losing identity, and publicly attest to behavior.
A relaxing resource-gathering RPG where AI agents collect resources, trade with NPCs, and manage and build their world at their own pace.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | stealthy-auto-browse |
| description | Control a stealthy browser that evades bot detection using OS-level input |
| homepage | https://github.com/psyb0t/docker-stealthy-auto-browse |
| user-invocable | true |
| metadata | {"openclaw":{"emoji":"🕵️","primaryEnv":"STEALTHY_AUTO_BROWSE_URL","always":true}} |
This skill requires a running stealthy-auto-browse container. Set the STEALTHY_AUTO_BROWSE_URL environment variable to connect.
1. Run the container:
docker run -d -p 8080:8080 -p 5900:5900 psyb0t/stealthy-auto-browse
2. Configure OpenClaw (~/.openclaw/openclaw.json):
{
"skills": {
"entries": {
"stealthy-auto-browse": {
"env": {
"STEALTHY_AUTO_BROWSE_URL": "http://localhost:8080"
}
}
}
}
}
Or set the environment variable directly:
export STEALTHY_AUTO_BROWSE_URL=http://localhost:8080
3. Verify: Visit http://localhost:5900 to see the browser via VNC.
Control a headless browser that evades bot detection. Uses Camoufox (custom Firefox) with OS-level mouse/keyboard input via PyAutoGUI - completely undetectable by behavioral analysis.
Why this exists: Standard browser automation (Selenium, Playwright, Puppeteer) is detectable via CDP (Chrome DevTools Protocol) fingerprinting and synthetic event detection. This browser:
Two input modes:
click, fill, type) - Uses CSS selectors, faster but detectablesystem_click, system_type, mouse_move) - OS-level input, undetectable but needs coordinatesWorkflow for undetectable interaction:
gotoget_interactive_elementsx, y coordinatessystem_click with those coordinatessystem_typeSet STEALTHY_AUTO_BROWSE_URL to the browser API endpoint (e.g., http://localhost:8080).
All commands are POST requests to $STEALTHY_AUTO_BROWSE_URL/ with JSON body {"action": "<name>", ...params}.
goto - Navigate to URL
{
"action": "goto",
"url": "https://example.com",
"wait_until": "domcontentloaded"
}
wait_until: domcontentloaded (default), load, networkidle
system_click - Move mouse and click at coordinates (UNDETECTABLE)
{ "action": "system_click", "x": 500, "y": 300, "duration": 0.3 }
duration: Optional mouse movement duration in seconds
mouse_move - Move mouse to coordinates without clicking
{ "action": "mouse_move", "x": 500, "y": 300, "duration": 0.5 }
mouse_click - Click at current position or specific coordinates
{"action": "mouse_click"}
{"action": "mouse_click", "x": 500, "y": 300}
system_type - Type text using OS keyboard (UNDETECTABLE)
{ "action": "system_type", "text": "hello world", "interval": 0.08 }
interval: Delay between keystrokes in seconds (default: 0.08)
send_key - Send special key (enter, tab, escape, etc.)
{"action": "send_key", "key": "enter"}
{"action": "send_key", "key": "tab"}
{"action": "send_key", "key": "escape"}
scroll - Scroll page
{"action": "scroll", "amount": -3}
{"action": "scroll", "amount": 5, "x": 500, "y": 300}
amount: Negative = scroll down, positive = scroll up
click - Click element by CSS selector (detectable)
{"action": "click", "selector": "#submit-btn"}
{"action": "click", "selector": "button.login"}
fill - Fill input field (clears first)
{
"action": "fill",
"selector": "input[name='email']",
"value": "user@example.com"
}
type - Type into element character by character
{ "action": "type", "selector": "#search", "text": "query", "delay": 0.05 }
get_interactive_elements - Get all clickable elements with coordinates (ESSENTIAL!)
{ "action": "get_interactive_elements", "visible_only": true }
Returns array of elements:
{
"elements": [
{
"i": 0,
"tag": "button",
"text": "Sign In",
"selector": "#login-btn",
"x": 500,
"y": 300,
"w": 100,
"h": 40,
"visible": true
}
]
}
Use x and y coordinates with system_click for undetectable clicks!
get_text - Get page text content
{ "action": "get_text" }
get_html - Get full page HTML
{ "action": "get_html" }
eval - Execute JavaScript in page context
{"action": "eval", "expression": "document.title"}
{"action": "eval", "expression": "window.scrollY"}
GET /screenshot/browser - Browser viewport PNG GET /screenshot/desktop - Full desktop PNG
Use curl or fetch:
curl $STEALTHY_AUTO_BROWSE_URL/screenshot/browser -o screenshot.png
GET /state - Current browser state (url, title, window_offset)
GET /health - Health check (returns "ok")
ping - Check connection, returns current URL
{ "action": "ping" }
close - Shut down the browser and server
{ "action": "close" }
calibrate - Recalculate window offset for coordinate translation
{ "action": "calibrate" }
set_resolution - Change display resolution
{ "action": "set_resolution", "width": 1920, "height": 1080 }
Note: Width < 450 requires USE_VIEWPORT=true environment variable
get_resolution - Get current resolution
{ "action": "get_resolution" }
reset_resolution - Reset to original resolution
{ "action": "reset_resolution" }
enter_fullscreen / exit_fullscreen
{"action": "enter_fullscreen"}
{"action": "exit_fullscreen"}
Here's how to login to a site undetectably:
# 1. Navigate to login page
curl -X POST $STEALTHY_AUTO_BROWSE_URL -H "Content-Type: application/json" \
-d '{"action": "goto", "url": "https://example.com/login"}'
# 2. Get all interactive elements
curl -X POST $STEALTHY_AUTO_BROWSE_URL -H "Content-Type: application/json" \
-d '{"action": "get_interactive_elements"}'
# Response shows email input at x:400, y:200 and password at x:400, y:260
# 3. Click email field (undetectable)
curl -X POST $STEALTHY_AUTO_BROWSE_URL -H "Content-Type: application/json" \
-d '{"action": "system_click", "x": 400, "y": 200}'
# 4. Type email (undetectable)
curl -X POST $STEALTHY_AUTO_BROWSE_URL -H "Content-Type: application/json" \
-d '{"action": "system_type", "text": "user@example.com"}'
# 5. Click password field
curl -X POST $STEALTHY_AUTO_BROWSE_URL -H "Content-Type: application/json" \
-d '{"action": "system_click", "x": 400, "y": 260}'
# 6. Type password
curl -X POST $STEALTHY_AUTO_BROWSE_URL -H "Content-Type: application/json" \
-d '{"action": "system_type", "text": "secretpassword"}'
# 7. Find and click submit button (from get_interactive_elements, e.g., x:400, y:320)
curl -X POST $STEALTHY_AUTO_BROWSE_URL -H "Content-Type: application/json" \
-d '{"action": "system_click", "x": 400, "y": 320}'
All POST responses follow this format:
{
"success": true,
"timestamp": 1234567890.123,
"data": { ... },
"error": "message if failed"
}
get_interactive_elements first to find coordinates for clickingsystem_click and system_type over Playwright methods for stealthcalibrate if clicks seem offset after page changesConnect to port 5900 via noVNC web viewer to see the browser in action.