ziniao-assistant
??ーカルのZiniaoブリッジを介してZiniaoブラウザを操作し、利用可能なツールを動的に取得して実行するためのSkillです。
📜 元の英語説明(参考)
Control Ziniao Browser via the local Ziniao bridge. On skill load or before first invoke, GET /zclaw/tools and treat returned name list as the only allowed tool strings; then POST /zclaw/tools/invoke. API key for invoke via ~/.zclaw/config.json or ZCLAW_API_KEY. On bridge failure stop the turn per skill.
🇯🇵 日本人クリエイター向け解説
??ーカルのZiniaoブリッジを介してZiniaoブラウザを操作し、利用可能なツールを動的に取得して実行するためのSkillです。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o ziniao-assistant.zip https://jpskill.com/download/5614.zip && unzip -o ziniao-assistant.zip && rm ziniao-assistant.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/5614.zip -OutFile "$d\ziniao-assistant.zip"; Expand-Archive "$d\ziniao-assistant.zip" -DestinationPath $d -Force; ri "$d\ziniao-assistant.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
ziniao-assistant.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
ziniao-assistantフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-17
- 取得日時
- 2026-05-17
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
[Skill 名] ziniao-assistant
Ziniao Assistant
セッションツール許可リスト(必須 — 最初に取得)
目的: invoke の前に信頼できるツール名をコンテキストに配置し、すべての tool フィールドがそのセットからのみ選択されるようにします(幻覚的な名前を減らします)。
-
ZClaw タスクを処理する際(またはこのスキルがロードされた直後)の最初の HTTP 呼び出し:
GET {baseUrl}/zclaw/toolsinvokeと同じbaseUrlを使用します(ZCLAW_BASE_URL/ZINIAO_ZCLAW_BASE_URL、デフォルトはhttp://127.0.0.1:9481)。 この GET にはX-ZClaw-Api-Keyも Ziniao ログインも不要です(ブリッジ上の公開レジストリ)。 -
レスポンスを解析します: JSON 形式は
{ ret, data }で、dataは{ name, description, inputSchema }の配列です。以下を構築します。allowedTools = data.map((t) => t.name)そして、セッションのために作業メモリに保持します。引数を選択する際に、各名前の横にdescription/inputSchemaを任意で保持することもできます。 -
すべての
POST {baseUrl}/zclaw/tools/invokeの前に:allowedTools.includes(tool)を確認します。意図する名前がallowedToolsにない場合、リクエストを送信しないでください—ユーザーの意図をallowedToolsからの実際の名前(例: URL を開く →visit_pageまたはopen_store+launchUrl)にマッピングします。 -
invokeがサポートされていない/不明なツールのようなエラーを返した場合:GET /zclaw/toolsを再実行し、allowedToolsを更新し、有効なnameで再試行します。 -
GET /zclaw/toolsが失敗した場合(接続拒否、タイムアウト): 到達不能なブリッジについてはブロッカーで停止に従ってください。静的な知識のみで続行する必要がある場合は、以下の静的フォールバック許可リストを使用してください—それでも架空の名前は使用しないでください。
静的フォールバック許可リスト(GET が不可能な場合)
健全なブリッジと一致するカンマ区切りの tool 名(GET が機能するときに再同期します):
list_stores, resolve_store, open_store, close_store, visit_page, get_page_content, query_elements, click_element, input_text, scroll_page, take_screenshot, wait_for_element, wait_for_navigation, execute_script, run_automation, extract_data, prepare_agent, get_logs, download_file, debug_compare_lists
利用可能な機能
すべての invoke 操作は POST {baseUrl}/zclaw/tools/invoke を tool + args とともに使用します。信頼できる名前は GET /zclaw/tools から取得されます(上記参照)。以下の表は、そのレジストリに合わせたドキュメントです。
| カテゴリ | ツール | 説明 |
|---|---|---|
| ストア | list_stores |
ストアをリスト表示します(storeId、storeName、platformName、ip)。一度呼び出します。ループはしません。 |
resolve_store |
storeId または storeName でストアを解決します。 | |
open_store |
ストアを開きます(リストまたは解決された storeId/storeName で)。一度呼び出します。 | |
close_store |
storeId でストアを閉じます。 | |
| ページ | visit_page |
URL に移動します。waitUntil/timeout はオプションです。 |
get_page_content |
ページコンテンツを読み取ります(text/html/structured)。 | |
| インタラクション | query_elements |
セレクターで DOM をクエリします。 |
click_element |
セレクターで要素をクリックします。waitForNavigation はオプションです。 | |
input_text |
要素に入力します。clear、submit はオプションです。 | |
scroll_page |
ページまたは要素をスクロールします。 | |
take_screenshot |
スクリーンショットを撮ります(フルページまたはビューポート)。 | |
| 待機 | wait_for_element |
セレクターを待ちます。 |
wait_for_navigation |
ナビゲーションを待ちます。 | |
| 自動化 | execute_script |
ページで JavaScript を実行します。 |
run_automation |
多段階自動化(ステップ配列)。 | |
extract_data |
メタデータ/ページの状態を抽出します。mode=running は起動されたストアをリスト表示します。 | |
| ユーティリティ | prepare_agent |
エージェントリソースを準備します。 |
download_file |
コンテンツをダウンロードに書き込みます(content、filename)。 | |
get_logs |
ブリッジログを取得します。 | |
| デバッグ | debug_compare_lists |
デバッグ: アカウント/リストとストア/リストを比較します(オプション; GET /zclaw/tools レジストリにあります)。 |
使用しないでください: run_script → execute_script を使用してください。screenshot / get_screenshot → take_screenshot を使用してください。execute_automation → run_automation を使用してください。
ツール名: 幻覚なし(必須)
ブリッジは、以下のコアツールにリストされている tool 文字列のみを受け入れます。個別の「ナビゲート API」、「ブラウザ API」、または「ストアツール」名前空間はありません—すべては1つの POST .../zclaw/tools/invoke ボディフィールド tool です。
一般的な自動化の習慣(Playwright、Selenium、ブラウザ使用など)からツール名を発明したり推測したりしてはなりません。コアツールに名前がない場合、それは存在しません。
これらおよび類似の名前は無効です(失敗するか拒否されます): navigate, navigation, go_to, goto, open_url, openUrl, goto_url, load_url, browse, open_page, openPage, call_store_tool, store_tool, browser_navigate, visit, goto_tab, switch_tab(ツール名として—代わりに visit_page / open_store を使用してください)。
ストアで URL を開く—サポートされている方法は2つだけです:
visit_page— 引数:storeId,url(およびオプションのwaitUntil,timeoutMs,targetId)。ストアがすでに開いている後に使用します。open_store— 引数:storeIdまたはstoreName、およびオプションのlaunchUrl。これにより、ストアの起動時に最初のタブがその URL を開きます。
visit_page または open_store + launchUrl を試す前に、架空のツールを連鎖させないでください。
API: ツールの呼び出し方法(必須)
すべてのツールは1つのエンドポイントのみを介して呼び出されます。 他のパスを呼び出さないでください。
- ツールの発見(認証なし):
GET {baseUrl}/zclaw/tools— 最初にこれを使用してください。セッションツール許可リストを参照してください。 - メソッドとパス:
POST {baseUrl}/zclaw/tools/invoke(例:POST http://127.0.0.1:9481/zclaw/tools/invoke)。ベース URL はZCLAW_BASE_URLまたはZINIAO_ZCLAW_BASE_URLから取得されます(デフォルトはhttp://127.0.0.1:9481)。 - 呼び出しには認証が必須です: すべての
POST {baseUrl}/zclaw/tools/invokeはAPI キー認証情報を持つ必要があります。推奨ヘッダー:X-ZClaw-Api-Key: <key>。ボディのapiKey、またはAuthorization: Bearer <key>(互換性のみ)も受け入れられます。キーなしで呼び出しを送信しないでください。 - リクエストボディ(JSON):
{ "tool": "<name>", "args": { ... } }。オプション:"action": "json"。 toolはツールのいずれか1つと完全に一致する必要があります。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Ziniao Assistant
Session tool allowlist (Mandatory — fetch first)
Goal: Put the authoritative tool names into context before any invoke, so every tool field is chosen from that set only (reduces hallucinated names).
-
First HTTP call when handling a ZClaw task (or immediately after this skill is loaded):
GET {baseUrl}/zclaw/tools
SamebaseUrlas invoke (ZCLAW_BASE_URL/ZINIAO_ZCLAW_BASE_URL, defaulthttp://127.0.0.1:9481).
NoX-ZClaw-Api-Keyand no Ziniao login are required for this GET (public registry on the bridge). -
Parse the response: JSON shape
{ ret, data }wheredatais an array of{ name, description, inputSchema }. Build
allowedTools = data.map((t) => t.name)
and retain it in working memory for the session. Optionally keepdescription/inputSchemanext to each name when choosing args. -
Before every
POST {baseUrl}/zclaw/tools/invoke: ensureallowedTools.includes(tool). If the name you intend is not inallowedTools, do not send the request—map the user’s intent to a real name fromallowedTools(e.g. open URL →visit_pageoropen_store+launchUrl). -
If
invokereturns an error like unsupported / unknown tool: re-runGET /zclaw/tools, refreshallowedTools, and retry with a validname. -
If
GET /zclaw/toolsfails (connection refused, timeout): follow Stop on Blocker for unreachable bridge; if you must proceed with static knowledge only, use the Static fallback allowlist below—still no invented names.
Static fallback allowlist (when GET is impossible)
Comma-separated tool names that match a healthy bridge (re-sync when GET works):
list_stores, resolve_store, open_store, close_store, visit_page, get_page_content, query_elements, click_element, input_text, scroll_page, take_screenshot, wait_for_element, wait_for_navigation, execute_script, run_automation, extract_data, prepare_agent, get_logs, download_file, debug_compare_lists
Available Capabilities
All invoke operations use POST {baseUrl}/zclaw/tools/invoke with tool + args. Authoritative names come from GET /zclaw/tools (see above); the table below is documentation aligned with that registry.
| Category | Tool | Description |
|---|---|---|
| Store | list_stores |
List stores (storeId, storeName, platformName, ip). Call once; no loop. |
resolve_store |
Resolve store by storeId or storeName. | |
open_store |
Open store (by storeId/storeName from list or resolve). Call once. | |
close_store |
Close store by storeId. | |
| Page | visit_page |
Navigate to URL, optional waitUntil/timeout. |
get_page_content |
Read page content (text/html/structured). | |
| Interaction | query_elements |
Query DOM by selector. |
click_element |
Click element by selector, optional waitForNavigation. | |
input_text |
Type into element; optional clear, submit. | |
scroll_page |
Scroll page or element. | |
take_screenshot |
Screenshot (full page or viewport). | |
| Waiting | wait_for_element |
Wait for selector. |
wait_for_navigation |
Wait for navigation. | |
| Automation | execute_script |
Run JavaScript in page. |
run_automation |
Multi-step automation (steps array). | |
extract_data |
Extract metadata / page state; mode=running lists launched stores. | |
| Utilities | prepare_agent |
Prepare agent resources. |
download_file |
Write content to Downloads (content, filename). | |
get_logs |
Get bridge logs. | |
| Debug | debug_compare_lists |
Debug: compare account/list vs store/list (optional; in GET /zclaw/tools registry). |
Do not use: run_script → use execute_script; screenshot / get_screenshot → use take_screenshot; execute_automation → use run_automation.
Tool names: no hallucination (Mandatory)
The bridge only accepts the tool strings listed in Core Tools below. There is no separate “navigate API”, “browser API”, or “store tool” namespace—everything is one POST .../zclaw/tools/invoke body field tool.
You MUST NOT invent or guess tool names from general automation habits (Playwright, Selenium, browser-use, etc.). If a name is not in Core Tools, it does not exist.
These and similar names are INVALID (will fail or be rejected): navigate, navigation, go_to, goto, open_url, openUrl, goto_url, load_url, browse, open_page, openPage, call_store_tool, store_tool, browser_navigate, visit, goto_tab, switch_tab (as a tool name—use visit_page / open_store instead).
Opening a URL in a store—only two supported ways:
visit_page— args:storeId,url(and optionalwaitUntil,timeoutMs,targetId). Use after the store is already open.open_store— args:storeIdorstoreName, and optionallaunchUrlso the first tab opens that URL when the store starts.
Do not chain imaginary tools before trying visit_page or open_store + launchUrl.
API: How to Invoke Tools (Required)
All tools are invoked through one endpoint only. Do not call other paths.
- Discover tools (no auth):
GET {baseUrl}/zclaw/tools— use first; see Session tool allowlist. - Method and path:
POST {baseUrl}/zclaw/tools/invoke(e.g.POST http://127.0.0.1:9481/zclaw/tools/invoke). Base URL fromZCLAW_BASE_URLorZINIAO_ZCLAW_BASE_URL(defaulthttp://127.0.0.1:9481). - Auth is mandatory for invoke: Every
POST {baseUrl}/zclaw/tools/invokemust carry API key credentials. Preferred header:X-ZClaw-Api-Key: <key>. Also accepted: bodyapiKey, orAuthorization: Bearer <key>(compatibility only). Never send invoke without key. - Request body (JSON):
{ "tool": "<name>", "args": { ... } }. Optional:"action": "json". toolmust be exactly one of the tool names in the Core Tools list below (e.g.list_stores,visit_page,get_page_content,click_element,take_screenshot,execute_script,run_automation). Wrong names (e.g.run_script,screenshot) or custom paths will fail.- Do not call paths like
/zclaw/page/execute,/zclaw/page/visit,/zclaw/page/click, etc. Every tool call must bePOST /zclaw/tools/invokewith the correcttoolname in the body.
Invoke Auth Examples (Mandatory)
Correct (preferred):
curl -X POST http://127.0.0.1:9481/zclaw/tools/invoke \
-H "Content-Type: application/json" \
-H "X-ZClaw-Api-Key: <ZCLAW_API_KEY>" \
-d '{"tool":"open_store","args":{"storeName":"Rosehut"}}'
Also accepted (compatibility):
curl -X POST http://127.0.0.1:9481/zclaw/tools/invoke \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <ZCLAW_API_KEY>" \
-d '{"tool":"open_store","args":{"storeName":"Rosehut"}}'
Invalid (must not generate): no API key in header/body.
When To Use
Use when the user wants to operate Ziniao Browser or configure the Ziniao bridge (list stores, open store, visit pages, read content, click, input, screenshot, export, automation). When a task has multiple similar sub-items (e.g. several order types or reports), visit or check each one separately before concluding; do not infer from a subset.
Stop on Blocker (Mandatory — Enforced First)
Trigger: Any of: (a) POST {baseUrl}/zclaw/tools/invoke fails with connection refused, timeout, or no response; (b) a required tool call returns an error that makes the task impossible; (c) a required resource (e.g. store not found, API key missing) is missing.
You MUST:
- Stop immediately. Do not retry the same request. Do not read more code, grep, or open other files to "diagnose" or "work around". Do not design or write "run these steps when the bridge is up" or any follow-up plan.
- End the turn. Do not speculate on other causes, suggest code changes, or continue the task. Connection or tool failure means the task is not executable—stop only. (User-facing messages for unreachable bridge are handled by the software.)
Hard Constraints
- Stop on blocker: If the bridge is unreachable or a required tool call fails, stop and end the turn; do not retry, read code, or create templates or follow-up plans. See "Stop on Blocker" above.
- Invoke must include API key: Every
POST /zclaw/tools/invokerequest must include API key credentials (X-ZClaw-Api-Keypreferred; or bodyapiKey; orAuthorization: Bearer <key>). Do not generate keyless invoke commands. - No script files: Do not create or run any scripts (
.sh/.js/.pyor other code files) to execute tasks; use only the tools in Core Tools viaPOST /zclaw/tools/invoke. Temporary files are allowed (e.g. intermediate data, content fordownload_file); script/executable files are not. - All browser actions must stay inside Ziniao Browser or a Ziniao store exposed by the bridge. Do not open system browser, Chrome, Safari, Edge, Firefox, or use Playwright/Puppeteer/browser-use when the bridge fails.
- Use only the tools in Core Tools. Do NOT use:
run_script(useexecute_script),screenshotorget_screenshot(usetake_screenshot),execute_automation(userun_automation), or any tool not listed there. Do NOT inventnavigate,open_url,call_store_tool, or any name not in Core Tools. - Prefer tool-based flow: open store (optionally with
launchUrl) →visit_pagefor further URLs → get_page_content / query_elements / click_element / input_text / take_screenshot / download_file / run_automation. Useexecute_scriptonly for in-page JavaScript (e.g. DOM extraction), not for orchestration.
API Key: Configure via Conversation (Preferred)
The user can configure the API key by sending it in the conversation. When the user provides an API key (e.g. pastes it, or says “设置 API key 为 xxx”, “my API key is znoc_xxx”, “configure ZCLAW_API_KEY: xxx”), you MUST:
- Write the key to the config file the skill reads from:
- macOS / Linux:
~/.zclaw/config.json - Windows:
%USERPROFILE%\.zclaw\config.json(e.g.C:\Users\<YourName>\.zclaw\config.json) Create the.zclawdirectory if it does not exist. File content: JSON with at least"ZCLAW_API_KEY": "<the key the user provided>". If the file already exists, merge: updateZCLAW_API_KEYand keep other keys (e.g.ZCLAW_BASE_URL) unchanged.
- macOS / Linux:
- Immediately use this new API key for all subsequent
POST /zclaw/tools/invokerequests in this conversation. Do not wait for a reload; treat the key you just wrote as the current key. If the user provides a new key again later, write again and switch to the new key for the rest of the conversation.
Writing the config file is allowed for API key setup only (creating/updating ~/.zclaw/config.json). Do not create or run scripts; use normal file write to that path.
API Key: Read into Context (Required)
When this skill is used, load the API key into the conversation context so every request (including the first) can authenticate. Use this order (Ziniao and ZClaw both use ZCLAW_API_KEY):
- User just provided in this conversation — if you have just written the key to the config per “API Key: Configure via Conversation”, use that key for all requests.
- Environment variable
ZCLAW_API_KEY— use if set. - Config file
~/.zclaw/config.json— if the key is not in env and not set in conversation, readZCLAW_API_KEYfrom this JSON file (e.g.{ "ZCLAW_API_KEY": "your-key" }).
Use the resolved key for all POST /zclaw/tools/invoke requests (e.g. header X-ZClaw-Api-Key or body apiKey). Optionally ZCLAW_BASE_URL or ZINIAO_ZCLAW_BASE_URL (default http://127.0.0.1:9481).
Do this at skill load or at the start of the conversation so the key is available and the first tool call does not fail with "Missing bearer token". After the user configures a new key via conversation, update to the new key immediately for the rest of the turn.
Environment & Setup
- API key: Env
ZCLAW_API_KEY, orZCLAW_API_KEYin~/.zclaw/config.json(see path note below). The bridge also accepts the key via headerX-ZClaw-Api-Keyor bodyapiKey. - Base URL:
ZCLAW_BASE_URLorZINIAO_ZCLAW_BASE_URL(defaulthttp://127.0.0.1:9481). - First time / Rotate key: Obtain a ZClaw API key from your server or Ziniao Ecosystem Center (there is no API key generation in the app settings). You can (1) configure via conversation — tell the assistant your API key and it will write it to
~/.zclaw/config.jsonand use it immediately; or (2) setZCLAW_API_KEYin your environment or in~/.zclaw/config.json; or (3) runbash ziniao-skills/install-ziniao-openclaw-skill.sh "YOUR_API_KEY"(Windows: useinstall-ziniao-openclaw-skill.ps1with-ApiKey). After configuring via conversation, the assistant uses the new key for all subsequent requests in that conversation.
Reading the key: The bridge uses process.env.ZCLAW_API_KEY, which works on Windows, macOS, and Linux. The variable must be present in the environment of the process that runs the app (Ziniao/Electron). If the app is started from the GUI (e.g. Dock, Start menu), only system/user environment variables are visible; shell-only exports (e.g. in a terminal) are not. To ensure the key is always available on all platforms, you can use the config file instead of env.
Setting ZCLAW_API_KEY by OS:
- macOS / Linux: (1) Config file (recommended):
~/.zclaw/config.jsonwith{ "ZCLAW_API_KEY": "your-key" }(same path on both). (2) Env: In the same shell that starts the app:export ZCLAW_API_KEY=your-key. For GUI launches, addexport ZCLAW_API_KEY=...to~/.bashrc,~/.zshrc, or~/.profile, or set it system-wide (e.g./etc/environmenton Linux). - Windows: (1) Config file (recommended):
%USERPROFILE%\.zclaw\config.json(e.g.C:\Users\YourName\.zclaw\config.json) with{ "ZCLAW_API_KEY": "your-key" }. (2) Env: System Properties → Environment Variables → add User or System variableZCLAW_API_KEY; or in PowerShell (current user):[Environment]::SetUserVariable("ZCLAW_API_KEY","your-key"). Restart the app after changing system env.
Invocation: This skill is designed for use with the ZClaw framework (recommended). The Ziniao bridge is an HTTP API; any client that can send requests with a valid API key can call the same tools.
Store Resolution and Opening: Validation and Response Contract
Getting and opening stores follows Ziniao’s existing validation and launch flow: store detail (e.g. default_browser, platform) is fetched via store/detail when launching; the browser is then started using the same logic as the client.
ZClaw responses are filtered by convention and do not expose full Ziniao store details: open_store returns only storeId, name, debugPort, reused, etc.; list_stores returns only storeId, storeName, platformName, ip. ZClaw does not expose full store detail; it only exposes status for stores launched via ZClaw. The running-stores list (e.g. extract_data with mode=running or the running-stores API) contains only storeId, storeName, debugPort, wsUrl.
If open_store or visit_page returns 400 "Store detail not found", the backend store/detail API or its response shape may be failing; the bridge tries several response paths and, when present, includes the server’s msg in the error.
No Extra Scripts (Mandatory)
You must not create or use any scripts to execute tasks. All actions must be performed only through the tools listed in Core Tools. Do not:
- Create or run Node.js, shell, Python, or other script files (e.g.
.sh,.js,.py) to accomplish the task. - Invoke external commands or scripts for steps that the tools can do (list stores, open store, visit page, click, input, screenshot, download_file, run_automation, etc.).
Temporary files are allowed during the run (e.g. temporary data files, intermediate content to pass to download_file, or scratch files). Script files are not allowed — do not create or execute any file intended to be run as code. Use only POST /zclaw/tools/invoke with the tool names and args from Core Tools. If something cannot be done with the existing tools, report the limitation instead of scripting around it.
Store List and Opening (Mandatory)
- No looping: Call
list_storesat most once to get data; then callopen_storeonce. Do not repeatedly call list in a cycle. - To open a store: (1) Get storeId — either from one
list_stores(use the item whosestoreNamematches the user’s store) or from oneresolve_store(storeName); (2) Callopen_storeonce with thatstoreIdor withstoreName(exact string from the list). - list_stores response: Each item has exactly:
storeId,storeName,platformName,ip. UsestoreNamewhen callingresolve_storeoropen_store(exact match). Do not use other fields as the store name.
Recommended Workflow
- Allowlist:
GET /zclaw/tools→ keepallowedTools(and schemas) in context; everyinvokeusestool∈allowedTools. 0.5. Auth: Resolve API key first (conversation-provided> envZCLAW_API_KEY>~/.zclaw/config.json) and include it in every invoke request. - Store: One
list_storesor oneresolve_store→ getstoreId/storeName→ oneopen_store(passlaunchUrlif the user gave a target URL up front—avoids a second navigation step). Match bystoreNamefrom list; if ambiguous, ask user or use exactstoreId. No fuzzy/substring matching. - Page: If the store is open and you need a URL:
visit_pageonly (storeId+url). Never usenavigate,open_url, or other non-listed tool names. Then useget_page_content,query_elements,click_element,input_text,take_screenshot,download_fileas needed; preferrun_automationfor multi-step flows. - Errors: Use
get_logson failure; after API key rotation, update config and refresh skills. - Multiple similar items: When a task involves multiple similar sub-items (e.g. several order types, several reports), visit or check each item separately before drawing a conclusion; do not infer "all have no data" or "all behave the same" from only a subset.
Core Tools
Only these tools exist. Use exactly these names as the tool field in POST /zclaw/tools/invoke; put parameters in args. Do not use or invent other tool names or other URLs.
Pass one arguments object per call (as args); required keys must be present. When running ZClaw tasks, the bridge operates on the correct tab but does not bring the browser window to the front, so your other windows and work are not interrupted.
Store Management
- list_stores — List stores (call once; no loop). Response:
{ page, limit, total, items }where each item hasstoreId,storeName,platformName,ip. UsestoreNamefor resolve/open. Args:page?,limit?,all?,filterKeyword?,storeListType?. - resolve_store — Resolve by exact storeId or storeName. Args:
storeId?,storeName?,expectedName?. ReturnsstoreIdandnameforopen_store. - open_store — Open store (need storeId from list_stores or resolve_store). Uses store/detail + launch. Returns (filtered): storeId, name, debugPort, reused, and optionally status, windowHandler, launchUrl. Call once. Args:
storeId?,storeName?(use list itemstoreName),expectedName?,launchUrl?,isHeadless?,privacyMode?,windowRatio?. - close_store — Close store. Args:
storeId(required).
Page Navigation & Content
- visit_page — Navigate and wait. Args:
storeId,url; optionalwaitUntil(domcontentloaded|load|networkidle),timeoutMs,targetId. - get_page_content — Read page content. Args:
storeId; optionalformat(text|html|structured),timeoutMs,targetId.
Page Interaction
- query_elements — DOM by selector. Args:
storeId,selector; optionaltimeoutMs,targetId. - click_element — Click. Args:
storeId,selector; optionalwaitForNavigation,timeoutMs,targetId. - input_text — Type into element. Args:
storeId,selector,text; optionalclear,submit,timeoutMs,targetId. - scroll_page — Scroll. Args:
storeId; optionalx,y,selector,behavior(auto|smooth),timeoutMs,targetId. - take_screenshot — Screenshot (not
screenshot). Args:storeId; optionalfullPage,path,timeoutMs,targetId.
Page Waiting
- wait_for_element — Wait for selector. Args:
storeId,selector; optionaltimeoutMs,targetId. - wait_for_navigation — Wait for navigation. Args:
storeId; optionaltimeoutMs,targetId.
Automation & Scripting
- execute_script — Run JS in page (not
run_script). Args:storeId,script; optionaltimeoutMs,targetId. - run_automation — Multi-step flow. Args:
steps(array of{ type, ... }). - extract_data — Extract metadata or page state. Use
mode=runningto list launched stores (returns onlystoreId,storeName,debugPort,wsUrl);mode=storereturns that store’s launch status only (no store detail). Args:mode?(store|running|plugin|page),storeId?,payload?.
Utilities
- prepare_agent — Prepare agent resources.
- download_file — Write to Downloads. Args:
content,filename. - get_logs — Bridge logs.
Debug
- debug_compare_lists — Compare account/list vs store/list (debug). Args:
limit?.
Invalid tool names (will fail): run_script, screenshot, get_screenshot, execute_automation — use execute_script and take_screenshot, run_automation instead. Also invalid: any name in Tool names: no hallucination (e.g. navigate, open_url, call_store_tool).