1Password 명령줄 도구의 설치와 인증을 확인하고 저장된 비밀번호와 API 키를 명령이나 설정에 전달합니다. 데스크톱 앱 연동과 서비스 계정도 지원합니다.
- 1Password 명령줄 도구 설치
- API 키를 명령에 전달
- CI에서 서비스 계정 인증 사용
OpenClaw의 browser 도구로 로그인 상태와 탭을 확인하며 여러 단계의 웹 작업을 진행합니다. 오래된 조작 대상 참조와 시간 초과 문제도 다룹니다.
Use when controlling web pages with the OpenClaw browser tool, especially multi-step flows, login checks, tab management, or recovery from stale refs/timeouts.
OpenClaw의 browser 도구로 페이지 확인부터 클릭과 입력까지 여러 단계를 진행합니다. 조작 전에 브라우저 상태, 로그인에 사용할 프로필, 열린 탭을 확인합니다. 화면 내용을 읽고 최신 스냅샷의 조작 대상을 사용합니다. 오래된 참조를 다시 가져오거나 중복 탭을 정리하고, 통신 오류와 시간 초과 문제를 확인하는 방법도 다룹니다.
화면 변화를 확인하며 양식을 입력하는 작업에 유용합니다. 기존 로그인 상태를 사용하거나 재시도로 탭이 늘어났을 때도 도움이 됩니다. Google Meet 참여 시 권한 화면과 로그인 요청을 구분하는 절차도 포함합니다.
OpenClaw의 browser 도구가 필요합니다. 기존 브라우저에 연결하는 프로필은 일괄 작업과 일부 진단 기능 등에 제한이 있습니다. 인증, CAPTCHA, 2FA, 권한 승인처럼 수동 처리가 필요한 단계에서는 사용자가 해야 할 일을 안내합니다.
이 소개문은 공개된 SKILL.md를 바탕으로 AI(OpenAI Codex)가 작성했습니다. 정확한 사양은 아래 원문을 확인하세요.
AI가 SKILL.md의 내용만을 근거로 4가지 관점에서 판정했습니다. 스타 수나 인기도는 판정에 넣지 않았습니다.
총점은 각 항목을 A=25점, B=15점, C=5점으로 더한 값입니다. 2026년 10월 19일 기준으로 AI(OpenAI Codex)가 판정했습니다. 참고용이므로 설치 전에 원문도 확인해 주세요.
설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Use this skill when you need the browser tool for anything beyond a single page check.
openclaw browser doctor or action="status" when the browser/plugin setup itself may be broken.action="status" for availability.action="profiles" if login state or profile choice matters.action="tabs" before opening a new tab if retries/timeouts may have left windows behind.label, for example label="meet".action="tabs" or action="open", store suggestedTargetId and pass it as targetId in later calls.suggestedTargetId is the label when one exists, otherwise the stable tabId handle like t1.targetId except for immediate diagnostics; it can change under Chromium target replacement.action="text" with optional selector and maxChars for bounded visible prose (first selector match, otherwise article/main/body). On existing-session profiles, use snapshot instead. Efficient snapshots omit most prose.action="snapshot" on the intended targetId.query to find lines containing all query tokens, ignoring case; matching lines keep their refs.targetId for follow-up actions so refs stay on the same tab.refs="aria" when supported. If you receive axN refs from snapshotFormat="aria", use them only after that same snapshot call; stale or unbound axN refs fail fast and need a fresh snapshot.urls=true when link text is ambiguous or a direct navigation target would avoid brittle clicks.labels=true on snapshot or screenshot when visual position matters. On Playwright-backed profiles, the response includes an annotations array ({ref, number, role, name?, box}) with each ref's bounding box in the captured image's coordinate space, so you can reason about position without re-snapshotting; screenshot labels can also combine with fullPage=true (CLI: --full-page) to label the whole document, or ref / element to clip to one element. profile="user" and other existing-session (chrome-mcp) profiles render an overlay into page screenshots but do not attach annotations or use the Playwright full-page/ref/element projection helper, so read positions from the labeled image itself on those profiles. The raw-CDP fallback (no Playwright) does not support labeled screenshots at all and returns a 501, so only request labels when Playwright is available.action="act" with a ref from the latest snapshot.navigate returns the loaded page's compact snapshot inline, and batch act results that report a cross-document navigation include fresh page state; use those refs directly instead of a follow-up snapshot call.action="emulate" with device, colorScheme, timezoneId, or locale when testing those settings; snapshot again afterward. Existing-session profiles do not support emulation.action="requests", optional URL/type filter, and limit (default 50 recent entries). clear=true clears the collected log after reading. Use a managed profile; existing-session profiles do not support this log.action="errors" and limit (default 50 recent entries). clear=true clears the collected log after reading. Existing-session profiles do not support this log.openclaw browser batch runs an array of nested /act actions in one /act call (the same kind="batch" runtime reached through the agent tool), so CLI users and scripts can combine actions like wait, click, type, and evaluate into a single replayable plan without per-action round trips. Each entry in actions[] is a BrowserActRequest — the closed union the /act route accepts — not arbitrary openclaw browser subcommands. batch is not supported on profile="user" and other existing-session (chrome-mcp) profiles; send actions individually there.
openclaw browser batch --actions '<json>', --actions-file plan.json, or --actions-file - for stdin. --actions-file and stdin input are capped at 1,000,000 bytes; split larger plans into multiple batch commands. --continue sets stopOnError=false; default stops on first error.snapshot run before the batch (snapshot is not a nested action). A nested action that changes page state — such as a click that triggers navigation, or an evaluate that mutates the DOM — can invalidate earlier refs for the rest of the batch; put state-changing actions first, or split into a follow-up batch after re-snapshotting. Navigation and re-snapshotting happen outside the batch, since open, navigate, and snapshot are not /act kinds.targetId that resolves to a different tab is rejected with ACT_TARGET_ID_MISMATCH.{ "results": [{ "ok": true } | { "ok": false, "error": "..." }, ...] } in order; with default stopOnError the array ends at the first failure. Any failed entry exits nonzero; use --json to preserve the full response in scripts.When tools.codeMode is enabled, the Browser tool has no normal turn — it is cataloged behind exec/wait. Call it from exec cells as an async global, using the callable name the exec quick index advertises for the Browser tool (normally browser; colliding names get suffixed, and a client tool can win an identical name). An exact catalog.search("browser") returns a handle already bound to the effective callable name, so resolve the handle in each cell and call it instead of hard-coding the literal global; an empty result means the Browser tool is not cataloged in this run.
Keep the same labeled tab through the loop, and alternate reads with actions. Each exec cell starts a fresh VM — bindings from a completed cell are gone in the next, and only runs left waiting keep their state until wait resumes them — so carry comparison state across cells by returning it and re-embedding the returned values in the next cell:
// previous = the url/newElements returned by the last completed cell (a fresh
// VM runs this cell, so prior bindings do not exist here).
const previous = { url: "https://example.com/inbox", newElements: 0 };
const [browser] = await catalog.search("browser", { limit: 1 });
const details = await browser({
action: "snapshot",
snapshotFormat: "ai",
targetId: "task",
refs: "aria",
interactive: true,
});
const changed =
details?.url !== previous.url ||
(details?.newElements ?? 0) > 0 ||
details?.blockedByDialog === true;
return {
targetId: details?.targetId,
url: details?.url,
newElements: details?.newElements,
stats: details?.stats,
text: details?.text,
changed,
};
details directly. Snapshot and text observations include bounded text with the same untrusted-content wrapper as direct tool output. Keep that wrapper when returning page data to the model. Existing identity, stats, and dialog fields remain available.text with a narrow selector. It does not require the evaluate capability:const [browser] = await catalog.search("browser", { limit: 1 });
const read = await browser({
action: "text",
selector: "main",
maxChars: 2000,
targetId: "task",
});
return { url: read?.url, text: read?.text };
Use snapshot query and text selector/maxChars to narrow reads at the Browser owner before wrapping. A blocked dialog still needs its reported recovery step; page text does not grant permission to evaluate scripts.
url/newElements in the next cell, or keep the comparison inside one cell. Only waiting runs persist, resumed by wait.aborted, take a fresh snapshot before continuing.newElements is positive, inspect those elements first, then update the re-embedded state.Before creating a tab for a named task, list tabs and reuse an existing matching label or URL when it is still usable.
Example:
{ "action": "tabs" }
If no suitable tab exists:
{ "action": "open", "url": "https://example.com", "label": "task" }
Then target it by label:
{ "action": "snapshot", "targetId": "task", "refs": "aria" }
If a retry creates duplicates, close the extras by tabId:
{ "action": "close", "targetId": "t3" }
Do not pass bare numbers like "2" as targetId. Numeric tab positions are only for the CLI openclaw browser tab select 2 helper; browser tool calls need a suggestedTargetId, label, tabId, or raw target id.
If an action fails with a missing or stale ref:
targetId again.Use profile="user" only when existing cookies/login matter. This attaches to the user's running Chromium-based browser.
On macOS, action="importprofile" is the alternative when the agent should use an isolated managed browser with cookies copied from a real Chrome-family profile. First use action="profiles" and inspect systemProfiles, then import into a fresh managed profile name. Import asks for one Keychain/Touch ID consent prompt. It copies cookies, not local storage or IndexedDB; device-bound session credentials (DBSC) mean some Google sessions may still require re-authentication.
For profile="user" and other existing-session profiles, omit timeoutMs on act:type, hover, scrollIntoView, drag, select, and fill; that driver rejects per-call timeout overrides for those actions. act:evaluate accepts timeoutMs.
When creating or joining a Meet:
label="meet", and reuse it during retries.아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
1Password 명령줄 도구의 설치와 인증을 확인하고 저장된 비밀번호와 API 키를 명령이나 설정에 전달합니다. 데스크톱 앱 연동과 서비스 계정도 지원합니다.
OpenClaw에 전달한 자연어 요청을 Claude Code 같은 외부 코딩 에이전트로 연결합니다. ACP나 acpx로 작업을 시작하거나 이어가며 대화 맥락을 유지합니다.
OpenClaw에 모델 제공업체를 추가하고 실제 응답을 확인합니다. 인증 정보는 환경 변수나 파일 참조로 다루며 설정 검증과 결과 보고도 진행합니다.
AI 에이전트의 작업 로그를 GitHub PR이나 이슈에 첨부할 기록으로 정리합니다. 관련 내용을 추리고 민감한 정보를 제거해 미리 보며, 별도 승인을 받아 게시합니다.
에이전트에서 macOS의 Apple Notes 메모를 생성, 검색, 편집, 삭제합니다. 폴더 간 이동과 HTML 또는 Markdown 내보내기도 지원합니다.
Mac에서 Apple Reminders의 기한이 있는 할 일을 확인하고 추가·편집합니다. 목록 관리와 완료·삭제를 통해 iPhone이나 iPad에서 보는 작업을 정리합니다.