Install
openclaw skills install ai-task-hubAI task hub for image analysis, background removal, speech-to-text, text-to-speech, markdown conversion, and points queries. Default host path is connector-f...
openclaw skills install ai-task-hubFormerly skill-hub-gateway.
Public package boundary:
portal.skill.execute, portal.skill.poll, portal.skill.presentation, portal.account.connect, portal.account.balance, and portal.account.ledger.api_key or userToken inside this package.PUBLIC_BRIDGE_ENTRY_HOST and AI_TASK_HUB_ENTRY_HOST are only host-side entry_host fallbacks, not API secrets, auth tokens, or billing credentials.POST /agent/public-bridge/invoke.host_or_private_wrapper.https://gateway-api.binaryworks.app.POST /agent/public-bridge/upload-file for the same request flow.connect / status / invoke / logout are connector lifecycle commands for host/runtime installation state.portal.account.connect / portal.skill.execute / portal.skill.poll / portal.skill.presentation / portal.account.balance / portal.account.ledger are the published skill actions.portal.skill.execute -> portal.skill.poll -> portal.skill.presentation as the default path for every capability. Default behavior must follow the capability delivery mode.connect: start or resume browser authorization for one connector installationstatus: read whether the connector installation already has continuityinvoke: call one published skill action through the connector runtimelogout: clear continuity for that connector installationportal.account.connect: explicit account bind or connection-status checkportal.skill.execute: submit a capability runportal.skill.poll: poll a submitted runportal.skill.presentation: fetch rendered outputs for a runportal.account.balance: read current points balanceportal.account.ledger: read points ledger rowshuman_detectimage_taggingface-detectbody-keypoints-2dface-emotion-recognitionperson-instance-segmentationperson-semantic-segmentationconcert-cutoutfull-body-mattinghead-mattingproduct-cutoutasrtts_reportmarkdown_convertembeddingsrerankerimage-generationVideo Face Generationinstant_result
tts_report, image analysis, retrieval.portal.skill.execute is usually enough.aggregated_short_wait
image-generation.portal.skill.poll when the short wait does not complete.asset_delivery
presentation or rendered files as part of the formal result surface.portal.skill.execute -> portal.skill.poll, then portal.skill.presentation when files or rendered outputs are needed.long_running
asr, markdown_convert, video-face-generation.portal.skill.execute with later portal.skill.poll; use portal.skill.presentation only when that capability later exposes a rendered result surface.execute -> poll -> presentation.portal.skill.poll and portal.skill.presentation are follow-up surfaces, not universal default steps.mobileclaw, openclaw, codex, and claude require the AI Task Hub connector/runtime to own continuity from the first call.POST /agent/hosted-connector/install, POST /agent/hosted-connector/connect, POST /agent/hosted-connector/invoke, POST /agent/hosted-connector/status, POST /agent/hosted-connector/logout.POST /agent/public-bridge/invoke is the underlying transport used by that connector/runtime, and also the compatibility fallback when a host bypasses the connector during debugging or manual integration.POST /agent/skill/bridge/invoke.image_url, attachment.url, storage URLs, bridge layers, host uploads, input normalization, or controlled media domain details to end users unless they explicitly ask for technical debugging.Chinese documentation: SKILL.zh-CN.md
Use this skill when the user asks to:
speech to text, audio transcription)text to speech, voice generation)document to markdown)poll, check job status)overlay, mask, and cutoutExample requests that should trigger this skill:
vision aliases: face detection, human detection, person detection, image taggingbackground aliases: remove background, background removal, cutout, matting, product-cutoutasr aliases: speech to text, audio transcription, transcribe audiotts aliases: text to speech, voice generation, speech synthesismarkdown_convert aliases: document to markdown, file to markdown, markdown conversionpoll aliases: check job status, poll long-running task, async run statuspresentation aliases: rendered output, overlay, mask, cutout filesaccount.balance aliases: points balance, credits balance, remaining pointsaccount.ledger aliases: points ledger, credits history, points statementembeddings/reranker aliases: vectorization, semantic vectors, relevance rerankingPublic discovery boundary for visual capabilities:
Default API base URL: https://gateway-api.binaryworks.app
Published package policy: outbound base URL is locked to the default API base URL to reduce token exfiltration risk.
Action to endpoint mapping:
portal.skill.execute -> POST /agent/skill/executeportal.skill.poll -> GET /agent/skill/runs/:run_idportal.skill.presentation -> GET /agent/skill/runs/:run_id/presentationportal.account.connect -> POST /agent/public-bridge/invoke (explicit connect/status check only)portal.account.balance -> GET /agent/skill/account/balanceportal.account.ledger -> GET /agent/skill/account/ledgerscripts/*.mjs.node (as declared in metadata.openclaw.requires.bins).curl|wget ... | sh|bash|python|node is not part of this package).Third-party agent entry mode (official host integrations should route through connector/runtime):
entry_user_key; do not ask end users to manage continuity manually.POST /agent/public-bridge/invoke and persist the same entry_user_key outside this published skill package.portal.account.connect when host/runtime wants an explicit browser-connect preflight instead of waiting for a protected action to fail.TRIAL_ENABLED and available trial points, first-time calls may proceed without browser authorization.AUTHORIZATION_REQUIRED is returned only for conditional upgrade paths (for example trial exhausted or trial-disabled rollback).authorization_url may include gateway_api_base_url; preserve it when completing browser authorization so /agent-auth/complete is posted back to the same API environment that created the auth session.authorization_url to the user, persist entry_user_key, then retry the same action with that same entry_user_key.entry_user_key before and after browser authorization.AUTHORIZATION_REQUIRED or portal.account.connect returns connector_install, treat it as the official npm connector/runtime guidance for hosts that have not yet provisioned the supported continuity layer.connector_install refers to the official connector package outside this published skill package.connector_install.guide_url, then continue the same browser authorization_url flow with the same entry_user_key.AUTHORIZATION_REQUIRED with details.likely_cause=ENTRY_USER_KEY_NOT_REUSED, details.recovery_action=REUSE_ENTRY_USER_KEY, and details.reauthorization_required=false, host should restore the previously persisted entry_user_key and retry without sending the user through browser authorization again.Identifier format constraints used by gateway auth:
agent_uid must match ^agent_[a-z0-9][a-z0-9_-]{5,63}$.conversation_id must match ^[A-Za-z0-9._:-]{8,128}$.Host-side token bridge (outside published package):
POST /agent/public-bridge/invoke.POST /agent/skill/bridge/invoke.host_or_private_wrapper, not inside this published package.action, agent_uid, conversation_id, and optional payload.conversation_id should be a host-generated opaque session/install identifier, not a public chat ID, raw thread ID, or PII.entry_user_key.entry_user_key; public bridge intentionally does not accept owner overrides.agent_uid, repair binding when missing, issue short-lived internal task token, and run the action server-side.portal.skill.execute through public bridge is write-capable and should send options.confirm_write=true after user confirmation; otherwise gateway may return ACTION_CONFIRMATION_REQUIRED.base_url, gateway_api_key, api_key, user_token, agent_task_token, owner_uid_hint, and install_channel overrides are rejected by the deployed bridge endpoint.entry_user_key, normalize agent_uid, and re-run the same bridge action after authorization completes.Host integration modes:
connector-managed interactive (recommended): connector/runtime calls POST /agent/public-bridge/invoke, surfaces the returned host-owned authorization URL to the user when needed, persists returned entry_user_key, and retries after authorization completes.trusted host bridge (secondary): a trusted backend you control may call POST /agent/skill/bridge/invoke with its own bridge assertion secret.data.agent_guidance.bridge_auth with continuity_owner=host_or_private_wrapper, published_skill_persistence=disabled, and the returned bridge_context.error.details.bridge_auth so host/runtime can recover continuity outside the published skill package.Default product path for official hosts remains connector-first and result-first.
Use the raw transport reference below only when:
entry_user_key itselfPreferred raw transport for third-party agent entry (normally owned by connector/runtime, and also usable as a compatibility fallback when a host can preserve continuity itself):
{
"entry_host": "<host_runtime>",
"action": "portal.account.balance",
"agent_uid": "support_assistant",
"conversation_id": "host_session_20260316_opaque_001",
"payload": {}
}
POST /agent/public-bridge/invoke.entry_host must match the active host runtime. Current built-in examples are mobileclaw, openclaw, codex, claude; future lowercase host slugs can follow the same contract when connector/runtime is configured for them.mobileclaw, OpenClaw -> openclaw, Codex -> codex, Claude -> claude.entry_host explicitly, export PUBLIC_BRIDGE_ENTRY_HOST or AI_TASK_HUB_ENTRY_HOST, or install the package under the host-specific runtime path so host inference stays correct.TRIAL_ENABLED and available trial points, first-time onboarding can complete without browser authorization.AUTHORIZATION_REQUIRED with authorization_url and entry_user_key only when conditional authorization upgrade is required (for example trial exhausted).entry_user_key and retry with the same value after user authorization completes.gateway_api_base_url embedded in the authorization flow so the completion request lands on the same gateway API environment.agent_uid should be your host-defined stable runtime agent identifier.conversation_id should be your host-generated opaque session/install identifier; it is not tied to Telegram or any single tool and does not determine account ownership.entry_user_key across conversations when those conversations should share one account.Trusted host runtime secondary mode:
POST /agent/skill/bridge/invoke.Action payload templates (same for public bridge and trusted host bridge mode):
portal.skill.execute{
"capability": "human_detect",
"input": { "image_url": "https://files.example.com/demo.png" },
"request_id": "optional_request_id"
}
portal.skill.poll{ "run_id": "run_123" }
portal.skill.presentation{ "run_id": "run_123", "channel": "web", "include_files": true }
portal.account.connect{ "connect_mode": "browser", "auth_session_id": "optional_existing_auth_session" }
portal.account.balance{}
portal.account.ledger{ "date_from": "2026-03-01", "date_to": "2026-03-15" }
Agent-side decision flow:
POST /agent/public-bridge/invoke directly when you are in a compatibility or debugging path and can preserve the same entry_user_key yourself.delivery mode, not a universal three-step recipe:
instant_result: prefer result-first flow; use portal.skill.execute only when dropping to published skill actions.aggregated_short_wait: prefer result-first flow; fall back to portal.skill.poll only if the short wait does not complete.asset_delivery: use portal.skill.presentation only when the capability needs formal rendered assets.long_running: keep explicit async expectations and use portal.skill.poll as the normal follow-up.portal.account.connect, surface the returned authorization_url when present, and keep reusing the same entry_user_key.portal.account.balance or portal.account.ledger directly.conversation_id as session context only; do not use it as the account key.entry_user_key; do not pass owner_uid_hint to the public bridge endpoint.AUTHORIZATION_REQUIRED is returned, show authorization_url, persist entry_user_key, then retry the same action after user authorization completes.AUTHORIZATION_REQUIRED includes details.likely_cause=ENTRY_USER_KEY_NOT_REUSED, do not open a new auth flow yet; first restore the previously persisted entry_user_key and retry the same bridge call.details.reauthorization_required=false as a recovery hint that browser re-login is unnecessary for this failure mode.AUTH_UNAUTHORIZED + agent_uid claim format is invalid: use canonical agent_uid (agent_...) instead of a short host alias (assistant, planner).SYSTEM_NOT_FOUND + agent binding not found: restart the same bridge flow once and let gateway repair binding.Output parsing contract:
request_id, data, error.error as failure even when HTTP tooling hides status code.portal.skill.execute, portal.skill.poll, portal.skill.presentation), the script enriches responses with data.agent_guidance.visualization.playbook.image-generation, user delivery should be image-first: present the generated image itself and omit structured fields unless the user explicitly asks for source data or debugging details.overlay/mask/cutout/view_url) when available.allow_manual_draw=false) to avoid inconsistent agent-side rendering.raw/visual.spec), not local drawing.body-contour-63pt -> when both rendered assets and geometry are absent, playbook marks status=degraded and recommends fallback capability body-keypoints-2d.portal.skill.execute: payload requires capability and input.payload.request_id is optional and passed through.portal.skill.poll and portal.skill.presentation: payload requires run_id.portal.skill.presentation supports include_files (defaults to true).portal.account.connect: payload may include connect_mode and optional auth_session_id when host/runtime is checking an existing browser bind.portal.account.balance: payload is optional and ignored.portal.account.ledger: payload may include date_from + date_to (YYYY-MM-DD, must be provided together).Attachment normalization:
image_url / audio_url / file_url / video_url.attachment.url is mapped to target media field by capability.portal.upload action in this package; for third-party agent entry, callers should keep using portal.skill.execute, and the bundled runtime will only forward explicit attachment bytes already supplied by the host for the current request.POST /agent/public-bridge/upload-file for third-party/public entry, not POST /agent/skill/bridge/upload-file.file_path handling is disabled in the published public skill.payload.file_path, input.file_path, attachment.path, or attachment.file_path./agent/public-bridge/upload-file.Video Face Generation requires 2 uploaded files from the user before execution:
input.video_urlinput.merge_infos[0].merge_face_image.urlattachment.url auto-mapping for Video Face Generation; host must pass both structured URL fields explicitly.request_id, data, error.POINTS_INSUFFICIENT and pass through error.details.recharge_url.scripts/skill.mjsscripts/agent-task-auth.mjsscripts/base-url.mjsscripts/attachment-normalize.mjsscripts/telemetry.mjs (compatibility shim)references/capabilities.jsonreferences/openapi.jsonSKILL.zh-CN.md