{"id":"2054f3f0-9517-4a3d-b8e0-744bdeccc22f","entityType":"agent","slug":"clawhub-dataify-server-dataify-web-unlocker","name":"Dataify Web Unlocker","canonicalUrl":"https://www.xpersona.co/agent/clawhub-dataify-server-dataify-web-unlocker","canonicalPath":"/agent/clawhub-dataify-server-dataify-web-unlocker","generatedAt":"2026-10-11T08:39:45.064Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T05:47:20.539Z","emptyReason":null},"description":"Unlock blocked or JS-heavy pages through Dataify Skill: Dataify Web Unlocker Owner: dataify-server Summary: Unlock blocked or JS-heavy pages through Dataify Tags: latest:1.3.1 Version history: v1.3.1 | 2026-09-08T06:17:21.532Z | user Fix natural-language usage failures: validate required targets and URLs, preserve catalog references, default Amazon region safely, normalize Google News links, and improve UTF-8 error output. v1.3.0 | 2026-09-01T09:11:44.551Z | user 默","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s17feed8b2qc486skqmjapxmjs86bd4f:dataify-web-unlocker","sourceUrl":"https://clawhub.ai/dataify-server/dataify-web-unlocker","homepage":"https://clawhub.ai/dataify-server/skills/dataify-web-unlocker","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/dataify-server/dataify-web-unlocker","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/dataify-server/skills/dataify-web-unlocker","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":61,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Unlock blocked or JS-heavy pages through Dataify Skill: Dataify Web Unlocker Owner: dataify-server Summary: Unlock blocked or JS-heavy pages through Dataify Tag"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T05:47:20.539Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T05:47:20.539Z","emptyReason":null},"stars":null,"forks":null,"downloads":1142,"packageName":null,"latestVersion":"1.3.1","tractionLabel":"1.1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T05:47:20.527Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T05:47:20.539Z","lastCrawledAt":"2026-10-11T05:47:20.527Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T05:47:20.527Z","lastVerifiedAt":null,"highlights":[{"version":"1.3.1","createdAt":"2026-09-08T06:17:21.532Z","changelog":"Fix natural-language usage failures: validate required targets and URLs, preserve catalog references, default Amazon region safely, normalize Google News links, and improve UTF-8 error output.","fileCount":13,"zipByteSize":31642},{"version":"1.3.0","createdAt":"2026-09-01T09:11:44.551Z","changelog":"默认返回最终采集结果，完善异步等待下载与安全恢复；修复空目标误执行、Quick Start、Token 配置和触发路由冲突，并补齐发布前自动化测试","fileCount":7,"zipByteSize":10856},{"version":"1.2.0","createdAt":"2026-07-16T08:34:47.694Z","changelog":"新增能力路由与异步任务闭环，修复失效引用、Token 泄漏和 Skill 元数据兼容性","fileCount":7,"zipByteSize":8378},{"version":"1.1.0","createdAt":"2026-06-08T02:05:07.259Z","changelog":"补全中文文档，更新目录结构","fileCount":6,"zipByteSize":7883},{"version":"1.0.1","createdAt":"2026-06-08T01:24:58.474Z","changelog":"- Updated description for greater clarity; emphasized CAPTCHA bypass, dynamic content support, and screenshot capability. - Updated documentation links to the Dataify Dashboard for more direct onboarding. - Removed redundant skill-card.md file. - Improved the wording and conciseness of the SKILL.md and SKILL.zh-CN.md files. - No changes to command syntax or API usage; all functionality remains backward compatible.","fileCount":6,"zipByteSize":7932},{"version":"1.0.0","createdAt":"2026-05-28T08:09:54.723Z","changelog":"Initial release of Dataify Web Unlocker skill. - Unlock or fetch web pages using the Dataify Web Unlocker API, with strong support for handling blocks, JavaScript rendering, redirects, country selection, and custom headers/cookies. - Bundled cross-platform Python and PowerShell scripts for easy API invocation. - Only the `url` parameter is required—prompt users to confirm the target URL if not explicit. - All other fields use safe defaults unless the user specifies overrides. - Provides clear instructions for setting the `DATAIFY_API_TOKEN` environment variable. - Supports a dry-run mode for previewing requests without sending them. - Detailed fallback instructions for using raw `curl` requests when needed.","fileCount":6,"zipByteSize":7492}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17feed8b2qc486skqmjapxmjs86bd4f:dataify-web-unlocker","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-web-unlocker/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-web-unlocker/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-web-unlocker/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-web-unlocker/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-web-unlocker/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-web-unlocker/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T08:39:45.062Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-web-unlocker/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-web-unlocker/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-web-unlocker/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-web-unlocker/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-11T05:47:20.539Z","emptyReason":null},"readme":"Skill: Dataify Web Unlocker\n\nOwner: dataify-server\n\nSummary: Unlock blocked or JS-heavy pages through Dataify\n\nTags: latest:1.3.1\n\nVersion history:\n\nv1.3.1 | 2026-09-08T06:17:21.532Z | user\n\nFix natural-language usage failures: validate required targets and URLs, preserve catalog references, default Amazon region safely, normalize Google News links, and improve UTF-8 error output.\n\nv1.3.0 | 2026-09-01T09:11:44.551Z | user\n\n默认返回最终采集结果，完善异步等待下载与安全恢复；修复空目标误执行、Quick Start、Token 配置和触发路由冲突，并补齐发布前自动化测试\n\nv1.2.0 | 2026-07-16T08:34:47.694Z | user\n\n新增能力路由与异步任务闭环，修复失效引用、Token 泄漏和 Skill 元数据兼容性\n\nv1.1.0 | 2026-06-08T02:05:07.259Z | user\n\n补全中文文档，更新目录结构\n\nv1.0.1 | 2026-06-08T01:24:58.474Z | auto\n\n- Updated description for greater clarity; emphasized CAPTCHA bypass, dynamic content support, and screenshot capability.\n- Updated documentation links to the Dataify Dashboard for more direct onboarding.\n- Removed redundant skill-card.md file.\n- Improved the wording and conciseness of the SKILL.md and SKILL.zh-CN.md files.\n- No changes to command syntax or API usage; all functionality remains backward compatible.\n\nv1.0.0 | 2026-05-28T08:09:54.723Z | auto\n\nInitial release of Dataify Web Unlocker skill.\n\n- Unlock or fetch web pages using the Dataify Web Unlocker API, with strong support for handling blocks, JavaScript rendering, redirects, country selection, and custom headers/cookies.\n- Bundled cross-platform Python and PowerShell scripts for easy API invocation.\n- Only the `url` parameter is required—prompt users to confirm the target URL if not explicit.\n- All other fields use safe defaults unless the user specifies overrides.\n- Provides clear instructions for setting the `DATAIFY_API_TOKEN` environment variable.\n- Supports a dry-run mode for previewing requests without sending them.\n- Detailed fallback instructions for using raw `curl` requests when needed.\n\nArchive index:\n\nArchive v1.3.1: 13 files, 31642 bytes\n\nFiles: agents/openai.yaml (223b), scripts/business_workflow.py (34775b), scripts/catalog_builder.py (7013b), scripts/dataify_client.py (6994b), scripts/invoke-dataify-web-unlocker.ps1 (609b), scripts/invoke-dataify-web-unlocker.py (4608b), scripts/task_runtime.py (2259b), scripts/token_setup.py (2585b), scripts/wait_for_task.py (8879b), skill-card.md (2091b), SKILL.md (8683b), SKILL.zh-CN.md (7214b), _meta.json (139b)\n\nFile v1.3.1:SKILL.md\n\n---\nname: \"dataify-web-unlocker\"\ndescription: \"Fetch HTML or a screenshot from a known blocked or JavaScript-rendered webpage with Dataify Web Unlocker. Use for CAPTCHA-protected, dynamic, or SPA pages. Do not use for search-engine discovery or platform-specific structured records.\"\n---\n\n# Dataify Web Unlocker\n\nUse the bundled wrappers to call Dataify's Web Unlocker API with a stable parameter set across platforms.\n\nTreat every request field as optional user input except for `url`. Confirm the target `url` with the user before making the request if it is not already explicit in the prompt. For every other field, keep the default value unless the user explicitly asks to override it.\n\n\n## Quick Start\n\n**Input:** one public webpage URL.\n\n```bash\npython3 scripts/invoke-dataify-web-unlocker.py --url \"https://example.com\"\n```\n\nThis is a synchronous request: the command prints the unlocked page result directly.\n\nIf `DATAIFY_API_TOKEN` is missing, log in or register at https://dashboard.dataify.com/login?utm_source=skill. New accounts get 50 free credits, enough for about 6,000 trial results, valid for 7 days, and only successful requests are billed.\n\n## Workflow\n\n1. Use `scripts/invoke-dataify-web-unlocker.py` on macOS/Linux or when cross-platform portability matters.\n2. Use `scripts/invoke-dataify-web-unlocker.ps1` on Windows when PowerShell is the best fit.\n3. Use a raw `curl` command only when the user explicitly asks for it.\n4. Confirm the target `url` with the user if it was not clearly provided. Do not guess the URL.\n5. Treat every other request field as optional. Override a field only when the user explicitly asked for a non-default value.\n6. Let the script read `DATAIFY_API_TOKEN` from the environment.\n7. If the token is missing, stop and tell the user: `Dataify requires an API token. New accounts get 50 free credits, enough for about 6,000 trial results, valid for 7 days, and only successful requests are billed. Once registration is complete, tell me and I'll continue the current task.`.\n8. Return the API response body directly unless the user asks for extra post-processing.\n\n## Set DATAIFY_API_TOKEN\n\nPrefer a permanent environment-variable setup instead of setting the token only for the current terminal session.\n\nWindows PowerShell, permanent for the current user:\n\n```powershell\n[Environment]::SetEnvironmentVariable(\"DATAIFY_API_TOKEN\", \"your_token_here\", \"User\")\n```\n\nThen reopen PowerShell. If the current session also needs the token immediately, run:\n\n```powershell\n$env:DATAIFY_API_TOKEN = \"your_token_here\"\n```\n\nmacOS or Linux, permanent for bash:\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\nmacOS or Linux, permanent for zsh:\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n## Default request body\n\nUse these defaults unless the user asks for different values. Only `url` must be collected before the real request is sent:\n\n```json\n{\n  \"url\": \"https://www.google.com\",\n  \"type\": \"html\",\n  \"js_render\": \"True\",\n  \"block_resources\": \"\",\n  \"clean_content\": \"\",\n  \"country\": \"us\",\n  \"headers\": \"\",\n  \"cookies\": \"\",\n  \"wait\": \"\",\n  \"wait_for\": \"\",\n  \"follow_redirect\": \"True\",\n  \"isjson\": \"1\"\n}\n```\n\n## Preferred commands\n\nAsk for the URL first if the user did not provide one. After that, the minimal call should pass only `url` and rely on defaults for everything else.\n\nCross-platform Python:\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://www.google.com\"\n```\n\nWindows PowerShell:\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://www.google.com\"\n```\n\nCommon overrides in Python:\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py \\\n  --url \"https://example.com\" \\\n  --js-render \"True\" \\\n  --country \"us\" \\\n  --wait \"3000\" \\\n  --wait-for \".main-content\"\n```\n\nCommon overrides in PowerShell:\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" `\n  -Url \"https://example.com\" `\n  -JsRender \"True\" `\n  -Country \"us\" `\n  -Wait \"3000\" `\n  -WaitFor \".main-content\"\n```\n\nUse `--dry-run` or `-DryRun` to preview the endpoint, authorization state, and JSON payload without making the network request:\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://example.com\" --dry-run\n```\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://example.com\" -DryRun\n```\n\n## Raw curl fallback\n\nIf the user explicitly wants the raw request, use `curl.exe` in PowerShell, not `curl`, to avoid the PowerShell alias ambiguity.\n\nBefore calling the API, check the token:\n\n```powershell\nif (-not $env:DATAIFY_API_TOKEN) {\n  Write-Error \"DATAIFY_API_TOKEN is not set. Sign in at https://dashboard.dataify.com?utm_source=skill to obtain it.\"\n  exit 1\n}\n```\n\nThen send the request:\n\n```powershell\ncurl.exe -X POST \"https://webunlocker.dataify.com/request\" `\n  -H \"Authorization: Bearer $env:DATAIFY_API_TOKEN\" `\n  -H \"Content-Type: application/json\" `\n  -d \"{\\\"url\\\":\\\"https://www.google.com\\\",\\\"type\\\":\\\"html\\\",\\\"js_render\\\":\\\"True\\\",\\\"block_resources\\\":\\\"\\\",\\\"clean_content\\\":\\\"\\\",\\\"country\\\":\\\"us\\\",\\\"headers\\\":\\\"\\\",\\\"cookies\\\":\\\"\\\",\\\"wait\\\":\\\"\\\",\\\"wait_for\\\":\\\"\\\",\\\"follow_redirect\\\":\\\"True\\\",\\\"isjson\\\":\\\"1\\\"}\"\n```\n\n## Parameter notes\n\n- `url` is the only field that should be treated as required input from the user.\n- Ask the user to confirm `url` if it is missing or ambiguous.\n- `headers` and `cookies` are passed through as strings exactly as provided by the caller.\n- Keep boolean-like fields as strings such as `\"True\"` because that matches the supplied API format.\n- Keep `isjson` as `\"1\"` unless the user explicitly requests a different response mode.\n- Prefer minimal overrides. Do not invent custom headers, cookies, waits, render settings, or country overrides unless the user requested them.\n- The Python wrapper uses only the standard library so it stays portable and does not require third-party packages.\n\n## Parameter interaction policy\n\n- For a clear, low-risk, read-only, and low-cost request, apply safe defaults and execute immediately. A short execution summary is optional; do not pause for confirmation.\n- Ask only for a missing required input, a material ambiguity, a high-volume or multi-page scope, a media download, a choice that materially changes credit usage, an irreversible action, or an explicit user request to review parameters.\n- When confirmation is required, show only user-facing values that affect the target, scope, output, or cost. Prefer one concise sentence; use a compact table only when three or more consequential values are easier to compare.\n- Never show fixed fields, empty optional fields, unchanged defaults, credentials, or internal implementation parameters such as engine selectors, response-format flags, offsets, spider IDs, and file-name templates.\n- Keep advanced filters hidden unless the user asks for them or they are needed to resolve ambiguity. Never substitute documentation example values for missing required user input.\n- After returning results, offer relevant refinements instead of forcing all optional decisions before the first result.\n\n## Account CTA policy\n\n- Show a prominent Dataify account CTA only when the API token is missing, rejected/invalid, or the account has insufficient credits.\n- For a missing token, offer https://dashboard.dataify.com/login?utm_source=skill and state: New accounts get 50 free credits, enough for about 6,000 trial results, valid for 7 days, and only successful requests are billed. Never ask the user to paste the token into chat.\n- Detect the current operating system and shell. Show only the matching session-scoped setup command first (`export` for macOS/Linux shells, `$env:` for Windows PowerShell, or `set` for Windows Command Prompt). Show other platforms or persistent setup only when detection is ambiguous or the user asks.\n- After the user says the token is configured, verify only whether `DATAIFY_API_TOKEN` is present; never print its value. If verification succeeds, continue the original task without asking the user to repeat it.\n- Explain that persistent shell changes may require a new terminal or restarting the agent application. Do not recommend a project `.env` unless the execution path explicitly loads it, and ensure `.env` is ignored by version control.\n- For an invalid token, direct the user to API-key management without implying that a new registration is required. For insufficient credits, direct the user to balance or recharge management.\n- During normal submission, processing, and successful completion, do not promote registration or the Dashboard. Never expose the token or include it in CTA attribution parameters.\n\nFile v1.3.1:_meta.json\n\n{\n  \"ownerId\": \"kn74z5hmmwk21kw8tpphd9w21x86bkdf\",\n  \"slug\": \"dataify-web-unlocker\",\n  \"version\": \"1.3.1\",\n  \"publishedAt\": 1788848241532\n}\n\nFile v1.3.1:skill-card.md\n\n## Description:\n\nFetch HTML or screenshots from known blocked or JavaScript-rendered webpages with Dataify Web Unlocker.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[dataify-server](https://clawhub.ai/user/dataify-server)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agents use this skill to retrieve HTML or screenshots from public webpages that are blocked, CAPTCHA-protected, or require JavaScript rendering. It is suited to explicit, single-page fetches where the target URL is known and credentials remain in environment variables.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The package includes broader search and business-scraping workflows beyond the advertised Web Unlocker behavior.\n\nMitigation: Review installed files before use and invoke only the Web Unlocker wrappers unless broader workflows are explicitly approved.\n\nRisk: Requests can pass through caller-supplied headers or cookies, and token setup guidance may encourage persistent shell-profile storage.\n\nMitigation: Use the skill only for public, non-sensitive webpages; avoid session cookies and private headers; prefer session-scoped DATAIFY_API_TOKEN configuration.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/dataify-server/skills/dataify-web-unlocker)\n- [Dataify Web Unlocker API endpoint](https://webunlocker.dataify.com/request)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with shell commands; API responses are returned as text or JSON.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires DATAIFY_API_TOKEN and an explicit public HTTP(S) target URL.]\n\n## Skill Version(s):\n\n1.3.1 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.3.1:SKILL.zh-CN.md\n\n---\nname: \"dataify-web-unlocker\"\ndescription: \"依托Dataify网页解锁API抓取受限网页，输入任意URL即可智能识别破解验证码、全自动JS页面渲染，支持返回完整网页HTML源码或PNG全屏截图，适配动态网页、SPA单页应用等各类高难度数据采集场景。\"\n---\n\n# Dataify Web Unlocker 中文版\n\n这个 skill 用于通过 Dataify Web Unlocker API 抓取或解锁网页内容。\n\n## 工作流程\n\n1. 在 macOS/Linux 或强调跨平台时，优先使用 `scripts/invoke-dataify-web-unlocker.py`。\n2. 在 Windows 下可使用 `scripts/invoke-dataify-web-unlocker.ps1`。\n3. 只有当用户明确要求原始请求时，才使用 `curl` 命令。\n4. `url` 是唯一必须先确认的参数；如果用户没有明确给出目标地址，不要猜。\n5. 其余参数都视为可选覆盖项；除非用户明确要求，否则保持默认值。\n6. 脚本会从环境变量中读取 `DATAIFY_API_TOKEN`。\n7. 如果缺少 token，提示用户前往 [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) 获取 `DATAIFY_API_TOKEN`。\n8. 除非用户要求额外处理，否则直接返回接口响应内容。\n\n## 设置 DATAIFY_API_TOKEN\n\n推荐使用永久环境变量，而不是只在当前终端临时设置。\n\nWindows PowerShell，当前用户永久设置：\n\n```powershell\n[Environment]::SetEnvironmentVariable(\"DATAIFY_API_TOKEN\", \"your_token_here\", \"User\")\n```\n\n然后重新打开 PowerShell。如果当前会话也要立即生效，再执行：\n\n```powershell\n$env:DATAIFY_API_TOKEN = \"your_token_here\"\n```\n\nmacOS 或 Linux，bash 永久设置：\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\nmacOS 或 Linux，zsh 永久设置：\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n## 默认请求体\n\n除非用户明确要求不同取值，否则使用以下默认值。真正发起请求前，只必须先拿到 `url`：\n\n```json\n{\n  \"url\": \"https://www.google.com\",\n  \"type\": \"html\",\n  \"js_render\": \"True\",\n  \"block_resources\": \"\",\n  \"clean_content\": \"\",\n  \"country\": \"us\",\n  \"headers\": \"\",\n  \"cookies\": \"\",\n  \"wait\": \"\",\n  \"wait_for\": \"\",\n  \"follow_redirect\": \"True\",\n  \"isjson\": \"1\"\n}\n```\n\n## 常用命令\n\n如果用户没提供 URL，先询问 URL。最小调用只传 `url`，其他参数走默认值。\n\nPython：\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://www.google.com\"\n```\n\nPowerShell：\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://www.google.com\"\n```\n\nPython 覆盖参数示例：\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py \\\n  --url \"https://example.com\" \\\n  --js-render \"True\" \\\n  --country \"us\" \\\n  --wait \"3000\" \\\n  --wait-for \".main-content\"\n```\n\nPowerShell 覆盖参数示例：\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" `\n  -Url \"https://example.com\" `\n  -JsRender \"True\" `\n  -Country \"us\" `\n  -Wait \"3000\" `\n  -WaitFor \".main-content\"\n```\n\n只预览请求而不实际发起网络调用：\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://example.com\" --dry-run\n```\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://example.com\" -DryRun\n```\n\n## 原始 curl 回退方式\n\n如果用户明确要求原始请求，在 PowerShell 中请使用 `curl.exe`，避免命中 PowerShell 的 `curl` 别名。\n\n先检查 token：\n\n```powershell\nif (-not $env:DATAIFY_API_TOKEN) {\n  Write-Error \"DATAIFY_API_TOKEN is not set. Sign in at https://dashboard.dataify.com?utm_source=skill to obtain it.\"\n  exit 1\n}\n```\n\n然后发起请求：\n\n```powershell\ncurl.exe -X POST \"https://webunlocker.dataify.com/request\" `\n  -H \"Authorization: Bearer $env:DATAIFY_API_TOKEN\" `\n  -H \"Content-Type: application/json\" `\n  -d \"{\\\"url\\\":\\\"https://www.google.com\\\",\\\"type\\\":\\\"html\\\",\\\"js_render\\\":\\\"True\\\",\\\"block_resources\\\":\\\"\\\",\\\"clean_content\\\":\\\"\\\",\\\"country\\\":\\\"us\\\",\\\"headers\\\":\\\"\\\",\\\"cookies\\\":\\\"\\\",\\\"wait\\\":\\\"\\\",\\\"wait_for\\\":\\\"\\\",\\\"follow_redirect\\\":\\\"True\\\",\\\"isjson\\\":\\\"1\\\"}\"\n```\n\n## 参数说明\n\n- `url` 是唯一必须从用户处确认的参数。\n- 如果 `url` 缺失或有歧义，必须先向用户确认。\n- `headers` 和 `cookies` 会按字符串原样传给接口。\n- 类似 `\"True\"` 这类布尔值风格字段，保持字符串形式。\n- 除非用户明确要求其他模式，否则 `isjson` 保持 `\"1\"`。\n- 除非用户明确要求，否则不要擅自增加 headers、cookies、wait、render 设置或 country 覆盖值。\n- Python 版本仅使用标准库，因此更适合跨平台使用。\n\n## 参数交互策略\n\n- 当请求意图明确、只读、低风险且成本较低时，使用安全默认值直接执行。可以用一句话说明执行内容，但不要暂停等待确认。\n- 只在缺少必填输入、存在会明显改变结果的歧义、大批量或多页采集、媒体下载、会明显增加积分消耗、不可逆操作，或用户明确要求查看参数时询问。\n- 必须确认时，只展示会影响目标、范围、输出或成本的用户参数。优先使用一句简短说明；只有三个及以上关键值确实需要比较时才使用精简表格。\n- 不要展示固定字段、空的可选字段、未修改的默认值、凭据或内部实现参数，例如引擎选择、响应格式开关、偏移量、spider ID 和文件名模板。\n- 默认隐藏高级筛选项，除非用户主动询问或需要它们消除歧义。不得用文档示例值代替用户缺失的必填输入。\n- 先返回首个结果，再提供相关的细化选项，不要在首次执行前强迫用户决定所有可选项。\n\n## Account CTA policy\n\n- Show a prominent Dataify account CTA only when the API token is missing, rejected/invalid, or the account has insufficient credits.\n- For a missing token, offer https://dashboard.dataify.com/login?utm_source=skill and state: New accounts get 50 free credits, enough for about 6,000 trial results, valid for 7 days, and only successful requests are billed. Never ask the user to paste the token into chat.\n- Detect the current operating system and shell. Show only the matching session-scoped setup command first (`export` for macOS/Linux shells, `$env:` for Windows PowerShell, or `set` for Windows Command Prompt). Show other platforms or persistent setup only when detection is ambiguous or the user asks.\n- After the user says the token is configured, verify only whether `DATAIFY_API_TOKEN` is present; never print its value. If verification succeeds, continue the original task without asking the user to repeat it.\n- Explain that persistent shell changes may require a new terminal or restarting the agent application. Do not recommend a project `.env` unless the execution path explicitly loads it, and ensure `.env` is ignored by version control.\n- For an invalid token, direct the user to API-key management without implying that a new registration is required. For insufficient credits, direct the user to balance or recharge management.\n- During normal submission, processing, and successful completion, do not promote registration or the Dashboard. Never expose the token or include it in CTA attribution parameters.\n\nFile v1.3.1:agents/openai.yaml\n\ninterface:\n  display_name: \"Dataify Web Unlocker\"\n  short_description: \"Unlock blocked or JS-heavy pages through Dataify\"\n  default_prompt: \"Use $dataify-web-unlocker to fetch or unlock a web page through the Dataify API.\"\n\nArchive v1.3.0: 7 files, 10856 bytes\n\nFiles: agents/openai.yaml (223b), scripts/invoke-dataify-web-unlocker.ps1 (609b), scripts/invoke-dataify-web-unlocker.py (3777b), skill-card.md (2310b), SKILL.md (8369b), SKILL.zh-CN.md (7121b), _meta.json (139b)\n\nFile v1.3.0:SKILL.md\n\n---\nname: \"dataify-web-unlocker\"\ndescription: \"Fetch HTML or a screenshot from a known blocked or JavaScript-rendered webpage with Dataify Web Unlocker. Use for CAPTCHA-protected, dynamic, or SPA pages. Do not use for search-engine discovery or platform-specific structured records.\"\n---\n\n# Dataify Web Unlocker\n\nUse the bundled wrappers to call Dataify's Web Unlocker API with a stable parameter set across platforms.\n\nTreat every request field as optional user input except for `url`. Confirm the target `url` with the user before making the request if it is not already explicit in the prompt. For every other field, keep the default value unless the user explicitly asks to override it.\n\n\n## Quick Start\n\n**Input:** one public webpage URL.\n\n```bash\npython3 scripts/invoke-dataify-web-unlocker.py --url \"https://example.com\"\n```\n\nThis is a synchronous request: the command prints the unlocked page result directly.\n\nIf `DATAIFY_API_TOKEN` is missing, log in or register at https://dashboard.dataify.com/login?utm_source=skill. New accounts receive 50 free credits.\n\n## Workflow\n\n1. Use `scripts/invoke-dataify-web-unlocker.py` on macOS/Linux or when cross-platform portability matters.\n2. Use `scripts/invoke-dataify-web-unlocker.ps1` on Windows when PowerShell is the best fit.\n3. Use a raw `curl` command only when the user explicitly asks for it.\n4. Confirm the target `url` with the user if it was not clearly provided. Do not guess the URL.\n5. Treat every other request field as optional. Override a field only when the user explicitly asked for a non-default value.\n6. Let the script read `DATAIFY_API_TOKEN` from the environment.\n7. If the token is missing, stop and tell the user to sign in at [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) to obtain `DATAIFY_API_TOKEN`.\n8. Return the API response body directly unless the user asks for extra post-processing.\n\n## Set DATAIFY_API_TOKEN\n\nPrefer a permanent environment-variable setup instead of setting the token only for the current terminal session.\n\nWindows PowerShell, permanent for the current user:\n\n```powershell\n[Environment]::SetEnvironmentVariable(\"DATAIFY_API_TOKEN\", \"your_token_here\", \"User\")\n```\n\nThen reopen PowerShell. If the current session also needs the token immediately, run:\n\n```powershell\n$env:DATAIFY_API_TOKEN = \"your_token_here\"\n```\n\nmacOS or Linux, permanent for bash:\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\nmacOS or Linux, permanent for zsh:\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n## Default request body\n\nUse these defaults unless the user asks for different values. Only `url` must be collected before the real request is sent:\n\n```json\n{\n  \"url\": \"https://www.google.com\",\n  \"type\": \"html\",\n  \"js_render\": \"True\",\n  \"block_resources\": \"\",\n  \"clean_content\": \"\",\n  \"country\": \"us\",\n  \"headers\": \"\",\n  \"cookies\": \"\",\n  \"wait\": \"\",\n  \"wait_for\": \"\",\n  \"follow_redirect\": \"True\",\n  \"isjson\": \"1\"\n}\n```\n\n## Preferred commands\n\nAsk for the URL first if the user did not provide one. After that, the minimal call should pass only `url` and rely on defaults for everything else.\n\nCross-platform Python:\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://www.google.com\"\n```\n\nWindows PowerShell:\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://www.google.com\"\n```\n\nCommon overrides in Python:\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py \\\n  --url \"https://example.com\" \\\n  --js-render \"True\" \\\n  --country \"us\" \\\n  --wait \"3000\" \\\n  --wait-for \".main-content\"\n```\n\nCommon overrides in PowerShell:\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" `\n  -Url \"https://example.com\" `\n  -JsRender \"True\" `\n  -Country \"us\" `\n  -Wait \"3000\" `\n  -WaitFor \".main-content\"\n```\n\nUse `--dry-run` or `-DryRun` to preview the endpoint, authorization state, and JSON payload without making the network request:\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://example.com\" --dry-run\n```\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://example.com\" -DryRun\n```\n\n## Raw curl fallback\n\nIf the user explicitly wants the raw request, use `curl.exe` in PowerShell, not `curl`, to avoid the PowerShell alias ambiguity.\n\nBefore calling the API, check the token:\n\n```powershell\nif (-not $env:DATAIFY_API_TOKEN) {\n  Write-Error \"DATAIFY_API_TOKEN is not set. Sign in at https://dashboard.dataify.com?utm_source=skill to obtain it.\"\n  exit 1\n}\n```\n\nThen send the request:\n\n```powershell\ncurl.exe -X POST \"https://webunlocker.dataify.com/request\" `\n  -H \"Authorization: Bearer $env:DATAIFY_API_TOKEN\" `\n  -H \"Content-Type: application/json\" `\n  -d \"{\\\"url\\\":\\\"https://www.google.com\\\",\\\"type\\\":\\\"html\\\",\\\"js_render\\\":\\\"True\\\",\\\"block_resources\\\":\\\"\\\",\\\"clean_content\\\":\\\"\\\",\\\"country\\\":\\\"us\\\",\\\"headers\\\":\\\"\\\",\\\"cookies\\\":\\\"\\\",\\\"wait\\\":\\\"\\\",\\\"wait_for\\\":\\\"\\\",\\\"follow_redirect\\\":\\\"True\\\",\\\"isjson\\\":\\\"1\\\"}\"\n```\n\n## Parameter notes\n\n- `url` is the only field that should be treated as required input from the user.\n- Ask the user to confirm `url` if it is missing or ambiguous.\n- `headers` and `cookies` are passed through as strings exactly as provided by the caller.\n- Keep boolean-like fields as strings such as `\"True\"` because that matches the supplied API format.\n- Keep `isjson` as `\"1\"` unless the user explicitly requests a different response mode.\n- Prefer minimal overrides. Do not invent custom headers, cookies, waits, render settings, or country overrides unless the user requested them.\n- The Python wrapper uses only the standard library so it stays portable and does not require third-party packages.\n\n## Parameter interaction policy\n\n- For a clear, low-risk, read-only, and low-cost request, apply safe defaults and execute immediately. A short execution summary is optional; do not pause for confirmation.\n- Ask only for a missing required input, a material ambiguity, a high-volume or multi-page scope, a media download, a choice that materially changes credit usage, an irreversible action, or an explicit user request to review parameters.\n- When confirmation is required, show only user-facing values that affect the target, scope, output, or cost. Prefer one concise sentence; use a compact table only when three or more consequential values are easier to compare.\n- Never show fixed fields, empty optional fields, unchanged defaults, credentials, or internal implementation parameters such as engine selectors, response-format flags, offsets, spider IDs, and file-name templates.\n- Keep advanced filters hidden unless the user asks for them or they are needed to resolve ambiguity. Never substitute documentation example values for missing required user input.\n- After returning results, offer relevant refinements instead of forcing all optional decisions before the first result.\n\n## Account CTA policy\n\n- Show a prominent Dataify account CTA only when the API token is missing, rejected/invalid, or the account has insufficient credits.\n- For a missing token, offer https://dashboard.dataify.com/login?utm_source=skill and state: New accounts receive 50 free credits. Never ask the user to paste the token into chat.\n- Detect the current operating system and shell. Show only the matching session-scoped setup command first (`export` for macOS/Linux shells, `$env:` for Windows PowerShell, or `set` for Windows Command Prompt). Show other platforms or persistent setup only when detection is ambiguous or the user asks.\n- After the user says the token is configured, verify only whether `DATAIFY_API_TOKEN` is present; never print its value. If verification succeeds, continue the original task without asking the user to repeat it.\n- Explain that persistent shell changes may require a new terminal or restarting the agent application. Do not recommend a project `.env` unless the execution path explicitly loads it, and ensure `.env` is ignored by version control.\n- For an invalid token, direct the user to API-key management without implying that a new registration is required. For insufficient credits, direct the user to balance or recharge management.\n- During normal submission, processing, and successful completion, do not promote registration or the Dashboard. Never expose the token or include it in CTA attribution parameters.\n\nFile v1.3.0:_meta.json\n\n{\n  \"ownerId\": \"kn74z5hmmwk21kw8tpphd9w21x86bkdf\",\n  \"slug\": \"dataify-web-unlocker\",\n  \"version\": \"1.3.0\",\n  \"publishedAt\": 1788253904551\n}\n\nFile v1.3.0:skill-card.md\n\n## Description:\n\nFetch HTML or a screenshot from a known blocked or JavaScript-rendered webpage with Dataify Web Unlocker.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[dataify-server](https://clawhub.ai/user/dataify-server)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agents use this skill to fetch content from a specific public webpage when ordinary browsing is blocked by JavaScript rendering, CAPTCHA defenses, or SPA behavior. It is intended for known URLs, not search discovery or platform-specific structured records.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Target URLs and fetched page content are sent to Dataify.\n\nMitigation: Use the skill only for public or intentionally disclosed targets, and avoid internal URLs or personal data unless disclosure to Dataify is intended.\n\nRisk: Custom headers or cookies can disclose session credentials or authorization material.\n\nMitigation: Do not pass session cookies, authorization headers, or other sensitive request metadata unless that disclosure is explicitly intended.\n\nRisk: Persistent shell-profile token setup leaves DATAIFY_API_TOKEN available to future shells.\n\nMitigation: Prefer session-scoped token setup for testing and review persistent shell changes before deploying the skill.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/dataify-server/skills/dataify-web-unlocker)\n- [Dataify Web Unlocker API endpoint](https://webunlocker.dataify.com/request)\n- [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with shell commands and direct API response content]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Can return HTML or screenshot-oriented page content depending on the request type; dry-run mode returns JSON request previews.]\n\n## Skill Version(s):\n\n1.3.0 (source: evidence.release.version)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.3.0:SKILL.zh-CN.md\n\n---\nname: \"dataify-web-unlocker\"\ndescription: \"依托Dataify网页解锁API抓取受限网页，输入任意URL即可智能识别破解验证码、全自动JS页面渲染，支持返回完整网页HTML源码或PNG全屏截图，适配动态网页、SPA单页应用等各类高难度数据采集场景。\"\n---\n\n# Dataify Web Unlocker 中文版\n\n这个 skill 用于通过 Dataify Web Unlocker API 抓取或解锁网页内容。\n\n## 工作流程\n\n1. 在 macOS/Linux 或强调跨平台时，优先使用 `scripts/invoke-dataify-web-unlocker.py`。\n2. 在 Windows 下可使用 `scripts/invoke-dataify-web-unlocker.ps1`。\n3. 只有当用户明确要求原始请求时，才使用 `curl` 命令。\n4. `url` 是唯一必须先确认的参数；如果用户没有明确给出目标地址，不要猜。\n5. 其余参数都视为可选覆盖项；除非用户明确要求，否则保持默认值。\n6. 脚本会从环境变量中读取 `DATAIFY_API_TOKEN`。\n7. 如果缺少 token，提示用户前往 [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) 获取 `DATAIFY_API_TOKEN`。\n8. 除非用户要求额外处理，否则直接返回接口响应内容。\n\n## 设置 DATAIFY_API_TOKEN\n\n推荐使用永久环境变量，而不是只在当前终端临时设置。\n\nWindows PowerShell，当前用户永久设置：\n\n```powershell\n[Environment]::SetEnvironmentVariable(\"DATAIFY_API_TOKEN\", \"your_token_here\", \"User\")\n```\n\n然后重新打开 PowerShell。如果当前会话也要立即生效，再执行：\n\n```powershell\n$env:DATAIFY_API_TOKEN = \"your_token_here\"\n```\n\nmacOS 或 Linux，bash 永久设置：\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\nmacOS 或 Linux，zsh 永久设置：\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n## 默认请求体\n\n除非用户明确要求不同取值，否则使用以下默认值。真正发起请求前，只必须先拿到 `url`：\n\n```json\n{\n  \"url\": \"https://www.google.com\",\n  \"type\": \"html\",\n  \"js_render\": \"True\",\n  \"block_resources\": \"\",\n  \"clean_content\": \"\",\n  \"country\": \"us\",\n  \"headers\": \"\",\n  \"cookies\": \"\",\n  \"wait\": \"\",\n  \"wait_for\": \"\",\n  \"follow_redirect\": \"True\",\n  \"isjson\": \"1\"\n}\n```\n\n## 常用命令\n\n如果用户没提供 URL，先询问 URL。最小调用只传 `url`，其他参数走默认值。\n\nPython：\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://www.google.com\"\n```\n\nPowerShell：\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://www.google.com\"\n```\n\nPython 覆盖参数示例：\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py \\\n  --url \"https://example.com\" \\\n  --js-render \"True\" \\\n  --country \"us\" \\\n  --wait \"3000\" \\\n  --wait-for \".main-content\"\n```\n\nPowerShell 覆盖参数示例：\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" `\n  -Url \"https://example.com\" `\n  -JsRender \"True\" `\n  -Country \"us\" `\n  -Wait \"3000\" `\n  -WaitFor \".main-content\"\n```\n\n只预览请求而不实际发起网络调用：\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://example.com\" --dry-run\n```\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://example.com\" -DryRun\n```\n\n## 原始 curl 回退方式\n\n如果用户明确要求原始请求，在 PowerShell 中请使用 `curl.exe`，避免命中 PowerShell 的 `curl` 别名。\n\n先检查 token：\n\n```powershell\nif (-not $env:DATAIFY_API_TOKEN) {\n  Write-Error \"DATAIFY_API_TOKEN is not set. Sign in at https://dashboard.dataify.com?utm_source=skill to obtain it.\"\n  exit 1\n}\n```\n\n然后发起请求：\n\n```powershell\ncurl.exe -X POST \"https://webunlocker.dataify.com/request\" `\n  -H \"Authorization: Bearer $env:DATAIFY_API_TOKEN\" `\n  -H \"Content-Type: application/json\" `\n  -d \"{\\\"url\\\":\\\"https://www.google.com\\\",\\\"type\\\":\\\"html\\\",\\\"js_render\\\":\\\"True\\\",\\\"block_resources\\\":\\\"\\\",\\\"clean_content\\\":\\\"\\\",\\\"country\\\":\\\"us\\\",\\\"headers\\\":\\\"\\\",\\\"cookies\\\":\\\"\\\",\\\"wait\\\":\\\"\\\",\\\"wait_for\\\":\\\"\\\",\\\"follow_redirect\\\":\\\"True\\\",\\\"isjson\\\":\\\"1\\\"}\"\n```\n\n## 参数说明\n\n- `url` 是唯一必须从用户处确认的参数。\n- 如果 `url` 缺失或有歧义，必须先向用户确认。\n- `headers` 和 `cookies` 会按字符串原样传给接口。\n- 类似 `\"True\"` 这类布尔值风格字段，保持字符串形式。\n- 除非用户明确要求其他模式，否则 `isjson` 保持 `\"1\"`。\n- 除非用户明确要求，否则不要擅自增加 headers、cookies、wait、render 设置或 country 覆盖值。\n- Python 版本仅使用标准库，因此更适合跨平台使用。\n\n## 参数交互策略\n\n- 当请求意图明确、只读、低风险且成本较低时，使用安全默认值直接执行。可以用一句话说明执行内容，但不要暂停等待确认。\n- 只在缺少必填输入、存在会明显改变结果的歧义、大批量或多页采集、媒体下载、会明显增加积分消耗、不可逆操作，或用户明确要求查看参数时询问。\n- 必须确认时，只展示会影响目标、范围、输出或成本的用户参数。优先使用一句简短说明；只有三个及以上关键值确实需要比较时才使用精简表格。\n- 不要展示固定字段、空的可选字段、未修改的默认值、凭据或内部实现参数，例如引擎选择、响应格式开关、偏移量、spider ID 和文件名模板。\n- 默认隐藏高级筛选项，除非用户主动询问或需要它们消除歧义。不得用文档示例值代替用户缺失的必填输入。\n- 先返回首个结果，再提供相关的细化选项，不要在首次执行前强迫用户决定所有可选项。\n\n## Account CTA policy\n\n- Show a prominent Dataify account CTA only when the API token is missing, rejected/invalid, or the account has insufficient credits.\n- For a missing token, offer https://dashboard.dataify.com/login?utm_source=skill and state: New accounts receive 50 free credits. Never ask the user to paste the token into chat.\n- Detect the current operating system and shell. Show only the matching session-scoped setup command first (`export` for macOS/Linux shells, `$env:` for Windows PowerShell, or `set` for Windows Command Prompt). Show other platforms or persistent setup only when detection is ambiguous or the user asks.\n- After the user says the token is configured, verify only whether `DATAIFY_API_TOKEN` is present; never print its value. If verification succeeds, continue the original task without asking the user to repeat it.\n- Explain that persistent shell changes may require a new terminal or restarting the agent application. Do not recommend a project `.env` unless the execution path explicitly loads it, and ensure `.env` is ignored by version control.\n- For an invalid token, direct the user to API-key management without implying that a new registration is required. For insufficient credits, direct the user to balance or recharge management.\n- During normal submission, processing, and successful completion, do not promote registration or the Dashboard. Never expose the token or include it in CTA attribution parameters.\n\nFile v1.3.0:agents/openai.yaml\n\ninterface:\n  display_name: \"Dataify Web Unlocker\"\n  short_description: \"Unlock blocked or JS-heavy pages through Dataify\"\n  default_prompt: \"Use $dataify-web-unlocker to fetch or unlock a web page through the Dataify API.\"\n\nArchive v1.2.0: 7 files, 8378 bytes\n\nFiles: agents/openai.yaml (223b), scripts/invoke-dataify-web-unlocker.ps1 (609b), scripts/invoke-dataify-web-unlocker.py (3739b), skill-card.md (2565b), SKILL.md (5444b), SKILL.zh-CN.md (4605b), _meta.json (139b)\n\nFile v1.2.0:SKILL.md\n\n---\nname: \"dataify-web-unlocker\"\ndescription: \"Fetch blocked and dynamic web content via Dataify Web Unlocker API. Automatically identify and bypass CAPTCHA challenges, execute full-page JavaScript rendering, and return complete raw HTML source code or PNG webpage screenshots. Applicable for complex crawling scenarios including dynamic loading pages and SPA single-page applications.\"\n---\n\n# Dataify Web Unlocker\n\nUse the bundled wrappers to call Dataify's Web Unlocker API with a stable parameter set across platforms.\n\nTreat every request field as optional user input except for `url`. Confirm the target `url` with the user before making the request if it is not already explicit in the prompt. For every other field, keep the default value unless the user explicitly asks to override it.\n\n## Workflow\n\n1. Use `scripts/invoke-dataify-web-unlocker.py` on macOS/Linux or when cross-platform portability matters.\n2. Use `scripts/invoke-dataify-web-unlocker.ps1` on Windows when PowerShell is the best fit.\n3. Use a raw `curl` command only when the user explicitly asks for it.\n4. Confirm the target `url` with the user if it was not clearly provided. Do not guess the URL.\n5. Treat every other request field as optional. Override a field only when the user explicitly asked for a non-default value.\n6. Let the script read `DATAIFY_API_TOKEN` from the environment.\n7. If the token is missing, stop and tell the user to sign in at [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) to obtain `DATAIFY_API_TOKEN`.\n8. Return the API response body directly unless the user asks for extra post-processing.\n\n## Set DATAIFY_API_TOKEN\n\nPrefer a permanent environment-variable setup instead of setting the token only for the current terminal session.\n\nWindows PowerShell, permanent for the current user:\n\n```powershell\n[Environment]::SetEnvironmentVariable(\"DATAIFY_API_TOKEN\", \"your_token_here\", \"User\")\n```\n\nThen reopen PowerShell. If the current session also needs the token immediately, run:\n\n```powershell\n$env:DATAIFY_API_TOKEN = \"your_token_here\"\n```\n\nmacOS or Linux, permanent for bash:\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\nmacOS or Linux, permanent for zsh:\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n## Default request body\n\nUse these defaults unless the user asks for different values. Only `url` must be collected before the real request is sent:\n\n```json\n{\n  \"url\": \"https://www.google.com\",\n  \"type\": \"html\",\n  \"js_render\": \"True\",\n  \"block_resources\": \"\",\n  \"clean_content\": \"\",\n  \"country\": \"us\",\n  \"headers\": \"\",\n  \"cookies\": \"\",\n  \"wait\": \"\",\n  \"wait_for\": \"\",\n  \"follow_redirect\": \"True\",\n  \"isjson\": \"1\"\n}\n```\n\n## Preferred commands\n\nAsk for the URL first if the user did not provide one. After that, the minimal call should pass only `url` and rely on defaults for everything else.\n\nCross-platform Python:\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://www.google.com\"\n```\n\nWindows PowerShell:\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://www.google.com\"\n```\n\nCommon overrides in Python:\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py \\\n  --url \"https://example.com\" \\\n  --js-render \"True\" \\\n  --country \"us\" \\\n  --wait \"3000\" \\\n  --wait-for \".main-content\"\n```\n\nCommon overrides in PowerShell:\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" `\n  -Url \"https://example.com\" `\n  -JsRender \"True\" `\n  -Country \"us\" `\n  -Wait \"3000\" `\n  -WaitFor \".main-content\"\n```\n\nUse `--dry-run` or `-DryRun` to preview the endpoint, authorization state, and JSON payload without making the network request:\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://example.com\" --dry-run\n```\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://example.com\" -DryRun\n```\n\n## Raw curl fallback\n\nIf the user explicitly wants the raw request, use `curl.exe` in PowerShell, not `curl`, to avoid the PowerShell alias ambiguity.\n\nBefore calling the API, check the token:\n\n```powershell\nif (-not $env:DATAIFY_API_TOKEN) {\n  Write-Error \"DATAIFY_API_TOKEN is not set. Sign in at https://dashboard.dataify.com?utm_source=skill to obtain it.\"\n  exit 1\n}\n```\n\nThen send the request:\n\n```powershell\ncurl.exe -X POST \"https://webunlocker.dataify.com/request\" `\n  -H \"Authorization: Bearer $env:DATAIFY_API_TOKEN\" `\n  -H \"Content-Type: application/json\" `\n  -d \"{\\\"url\\\":\\\"https://www.google.com\\\",\\\"type\\\":\\\"html\\\",\\\"js_render\\\":\\\"True\\\",\\\"block_resources\\\":\\\"\\\",\\\"clean_content\\\":\\\"\\\",\\\"country\\\":\\\"us\\\",\\\"headers\\\":\\\"\\\",\\\"cookies\\\":\\\"\\\",\\\"wait\\\":\\\"\\\",\\\"wait_for\\\":\\\"\\\",\\\"follow_redirect\\\":\\\"True\\\",\\\"isjson\\\":\\\"1\\\"}\"\n```\n\n## Parameter notes\n\n- `url` is the only field that should be treated as required input from the user.\n- Ask the user to confirm `url` if it is missing or ambiguous.\n- `headers` and `cookies` are passed through as strings exactly as provided by the caller.\n- Keep boolean-like fields as strings such as `\"True\"` because that matches the supplied API format.\n- Keep `isjson` as `\"1\"` unless the user explicitly requests a different response mode.\n- Prefer minimal overrides. Do not invent custom headers, cookies, waits, render settings, or country overrides unless the user requested them.\n- The Python wrapper uses only the standard library so it stays portable and does not require third-party packages.\n\nFile v1.2.0:_meta.json\n\n{\n  \"ownerId\": \"kn74z5hmmwk21kw8tpphd9w21x86bkdf\",\n  \"slug\": \"dataify-web-unlocker\",\n  \"version\": \"1.2.0\",\n  \"publishedAt\": 1784190887694\n}\n\nFile v1.2.0:skill-card.md\n\n## Description: <br>\nFetch blocked and dynamic web content through the Dataify Web Unlocker API, with optional JavaScript rendering and responses returned as raw HTML or PNG screenshots. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[dataify-server](https://clawhub.ai/user/dataify-server) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and agents use this skill to fetch blocked or JavaScript-heavy web pages through Dataify's Web Unlocker API and return the API response directly as HTML or screenshot output. It is suited for authorized crawling and page retrieval workflows where the target URL is explicit or confirmed before the request. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Target URLs and request metadata are sent to Dataify when the wrapper calls the Web Unlocker API. <br>\nMitigation: Use only authorized targets, and do not send internal-only URLs or regulated/private page targets unless intentionally approved. <br>\nRisk: User-supplied headers or cookies could expose browser sessions, authorization headers, or other secrets to Dataify. <br>\nMitigation: Do not pass real browser cookies, Authorization headers, session tokens, or other credentials unless explicitly authorized and intended. <br>\nRisk: The skill can unlock blocked or CAPTCHA-protected pages, which may conflict with site rules or access expectations. <br>\nMitigation: Confirm the target URL and authorization to retrieve the page before making a live request. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/dataify-server/skills/dataify-web-unlocker) <br>\n- [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with shell commands; API response bodies may be HTML, JSON, or PNG screenshot data depending on request settings.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires DATAIFY_API_TOKEN and sends the target URL plus any supplied request metadata to Dataify.] <br>\n\n## Skill Version(s): <br>\n1.2.0 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.2.0:SKILL.zh-CN.md\n\n---\nname: \"dataify-web-unlocker\"\ndescription: \"依托Dataify网页解锁API抓取受限网页，输入任意URL即可智能识别破解验证码、全自动JS页面渲染，支持返回完整网页HTML源码或PNG全屏截图，适配动态网页、SPA单页应用等各类高难度数据采集场景。\"\n---\n\n# Dataify Web Unlocker 中文版\n\n这个 skill 用于通过 Dataify Web Unlocker API 抓取或解锁网页内容。\n\n## 工作流程\n\n1. 在 macOS/Linux 或强调跨平台时，优先使用 `scripts/invoke-dataify-web-unlocker.py`。\n2. 在 Windows 下可使用 `scripts/invoke-dataify-web-unlocker.ps1`。\n3. 只有当用户明确要求原始请求时，才使用 `curl` 命令。\n4. `url` 是唯一必须先确认的参数；如果用户没有明确给出目标地址，不要猜。\n5. 其余参数都视为可选覆盖项；除非用户明确要求，否则保持默认值。\n6. 脚本会从环境变量中读取 `DATAIFY_API_TOKEN`。\n7. 如果缺少 token，提示用户前往 [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) 获取 `DATAIFY_API_TOKEN`。\n8. 除非用户要求额外处理，否则直接返回接口响应内容。\n\n## 设置 DATAIFY_API_TOKEN\n\n推荐使用永久环境变量，而不是只在当前终端临时设置。\n\nWindows PowerShell，当前用户永久设置：\n\n```powershell\n[Environment]::SetEnvironmentVariable(\"DATAIFY_API_TOKEN\", \"your_token_here\", \"User\")\n```\n\n然后重新打开 PowerShell。如果当前会话也要立即生效，再执行：\n\n```powershell\n$env:DATAIFY_API_TOKEN = \"your_token_here\"\n```\n\nmacOS 或 Linux，bash 永久设置：\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\nmacOS 或 Linux，zsh 永久设置：\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n## 默认请求体\n\n除非用户明确要求不同取值，否则使用以下默认值。真正发起请求前，只必须先拿到 `url`：\n\n```json\n{\n  \"url\": \"https://www.google.com\",\n  \"type\": \"html\",\n  \"js_render\": \"True\",\n  \"block_resources\": \"\",\n  \"clean_content\": \"\",\n  \"country\": \"us\",\n  \"headers\": \"\",\n  \"cookies\": \"\",\n  \"wait\": \"\",\n  \"wait_for\": \"\",\n  \"follow_redirect\": \"True\",\n  \"isjson\": \"1\"\n}\n```\n\n## 常用命令\n\n如果用户没提供 URL，先询问 URL。最小调用只传 `url`，其他参数走默认值。\n\nPython：\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://www.google.com\"\n```\n\nPowerShell：\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://www.google.com\"\n```\n\nPython 覆盖参数示例：\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py \\\n  --url \"https://example.com\" \\\n  --js-render \"True\" \\\n  --country \"us\" \\\n  --wait \"3000\" \\\n  --wait-for \".main-content\"\n```\n\nPowerShell 覆盖参数示例：\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" `\n  -Url \"https://example.com\" `\n  -JsRender \"True\" `\n  -Country \"us\" `\n  -Wait \"3000\" `\n  -WaitFor \".main-content\"\n```\n\n只预览请求而不实际发起网络调用：\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://example.com\" --dry-run\n```\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://example.com\" -DryRun\n```\n\n## 原始 curl 回退方式\n\n如果用户明确要求原始请求，在 PowerShell 中请使用 `curl.exe`，避免命中 PowerShell 的 `curl` 别名。\n\n先检查 token：\n\n```powershell\nif (-not $env:DATAIFY_API_TOKEN) {\n  Write-Error \"DATAIFY_API_TOKEN is not set. Sign in at https://dashboard.dataify.com?utm_source=skill to obtain it.\"\n  exit 1\n}\n```\n\n然后发起请求：\n\n```powershell\ncurl.exe -X POST \"https://webunlocker.dataify.com/request\" `\n  -H \"Authorization: Bearer $env:DATAIFY_API_TOKEN\" `\n  -H \"Content-Type: application/json\" `\n  -d \"{\\\"url\\\":\\\"https://www.google.com\\\",\\\"type\\\":\\\"html\\\",\\\"js_render\\\":\\\"True\\\",\\\"block_resources\\\":\\\"\\\",\\\"clean_content\\\":\\\"\\\",\\\"country\\\":\\\"us\\\",\\\"headers\\\":\\\"\\\",\\\"cookies\\\":\\\"\\\",\\\"wait\\\":\\\"\\\",\\\"wait_for\\\":\\\"\\\",\\\"follow_redirect\\\":\\\"True\\\",\\\"isjson\\\":\\\"1\\\"}\"\n```\n\n## 参数说明\n\n- `url` 是唯一必须从用户处确认的参数。\n- 如果 `url` 缺失或有歧义，必须先向用户确认。\n- `headers` 和 `cookies` 会按字符串原样传给接口。\n- 类似 `\"True\"` 这类布尔值风格字段，保持字符串形式。\n- 除非用户明确要求其他模式，否则 `isjson` 保持 `\"1\"`。\n- 除非用户明确要求，否则不要擅自增加 headers、cookies、wait、render 设置或 country 覆盖值。\n- Python 版本仅使用标准库，因此更适合跨平台使用。\n\nFile v1.2.0:agents/openai.yaml\n\ninterface:\n  display_name: \"Dataify Web Unlocker\"\n  short_description: \"Unlock blocked or JS-heavy pages through Dataify\"\n  default_prompt: \"Use $dataify-web-unlocker to fetch or unlock a web page through the Dataify API.\"\n\nArchive v1.1.0: 6 files, 7883 bytes\n\nFiles: agents/openai.yaml (223b), scripts/invoke-dataify-web-unlocker.py (3739b), skill-card.md (2473b), SKILL.md (5444b), SKILL.zh-CN.md (4605b), _meta.json (139b)\n\nFile v1.1.0:SKILL.md\n\n---\nname: \"dataify-web-unlocker\"\ndescription: \"Fetch blocked and dynamic web content via Dataify Web Unlocker API. Automatically identify and bypass CAPTCHA challenges, execute full-page JavaScript rendering, and return complete raw HTML source code or PNG webpage screenshots. Applicable for complex crawling scenarios including dynamic loading pages and SPA single-page applications.\"\n---\n\n# Dataify Web Unlocker\n\nUse the bundled wrappers to call Dataify's Web Unlocker API with a stable parameter set across platforms.\n\nTreat every request field as optional user input except for `url`. Confirm the target `url` with the user before making the request if it is not already explicit in the prompt. For every other field, keep the default value unless the user explicitly asks to override it.\n\n## Workflow\n\n1. Use `scripts/invoke-dataify-web-unlocker.py` on macOS/Linux or when cross-platform portability matters.\n2. Use `scripts/invoke-dataify-web-unlocker.ps1` on Windows when PowerShell is the best fit.\n3. Use a raw `curl` command only when the user explicitly asks for it.\n4. Confirm the target `url` with the user if it was not clearly provided. Do not guess the URL.\n5. Treat every other request field as optional. Override a field only when the user explicitly asked for a non-default value.\n6. Let the script read `DATAIFY_API_TOKEN` from the environment.\n7. If the token is missing, stop and tell the user to sign in at [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) to obtain `DATAIFY_API_TOKEN`.\n8. Return the API response body directly unless the user asks for extra post-processing.\n\n## Set DATAIFY_API_TOKEN\n\nPrefer a permanent environment-variable setup instead of setting the token only for the current terminal session.\n\nWindows PowerShell, permanent for the current user:\n\n```powershell\n[Environment]::SetEnvironmentVariable(\"DATAIFY_API_TOKEN\", \"your_token_here\", \"User\")\n```\n\nThen reopen PowerShell. If the current session also needs the token immediately, run:\n\n```powershell\n$env:DATAIFY_API_TOKEN = \"your_token_here\"\n```\n\nmacOS or Linux, permanent for bash:\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\nmacOS or Linux, permanent for zsh:\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n## Default request body\n\nUse these defaults unless the user asks for different values. Only `url` must be collected before the real request is sent:\n\n```json\n{\n  \"url\": \"https://www.google.com\",\n  \"type\": \"html\",\n  \"js_render\": \"True\",\n  \"block_resources\": \"\",\n  \"clean_content\": \"\",\n  \"country\": \"us\",\n  \"headers\": \"\",\n  \"cookies\": \"\",\n  \"wait\": \"\",\n  \"wait_for\": \"\",\n  \"follow_redirect\": \"True\",\n  \"isjson\": \"1\"\n}\n```\n\n## Preferred commands\n\nAsk for the URL first if the user did not provide one. After that, the minimal call should pass only `url` and rely on defaults for everything else.\n\nCross-platform Python:\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://www.google.com\"\n```\n\nWindows PowerShell:\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://www.google.com\"\n```\n\nCommon overrides in Python:\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py \\\n  --url \"https://example.com\" \\\n  --js-render \"True\" \\\n  --country \"us\" \\\n  --wait \"3000\" \\\n  --wait-for \".main-content\"\n```\n\nCommon overrides in PowerShell:\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" `\n  -Url \"https://example.com\" `\n  -JsRender \"True\" `\n  -Country \"us\" `\n  -Wait \"3000\" `\n  -WaitFor \".main-content\"\n```\n\nUse `--dry-run` or `-DryRun` to preview the endpoint, authorization state, and JSON payload without making the network request:\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://example.com\" --dry-run\n```\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://example.com\" -DryRun\n```\n\n## Raw curl fallback\n\nIf the user explicitly wants the raw request, use `curl.exe` in PowerShell, not `curl`, to avoid the PowerShell alias ambiguity.\n\nBefore calling the API, check the token:\n\n```powershell\nif (-not $env:DATAIFY_API_TOKEN) {\n  Write-Error \"DATAIFY_API_TOKEN is not set. Sign in at https://dashboard.dataify.com?utm_source=skill to obtain it.\"\n  exit 1\n}\n```\n\nThen send the request:\n\n```powershell\ncurl.exe -X POST \"https://webunlocker.dataify.com/request\" `\n  -H \"Authorization: Bearer $env:DATAIFY_API_TOKEN\" `\n  -H \"Content-Type: application/json\" `\n  -d \"{\\\"url\\\":\\\"https://www.google.com\\\",\\\"type\\\":\\\"html\\\",\\\"js_render\\\":\\\"True\\\",\\\"block_resources\\\":\\\"\\\",\\\"clean_content\\\":\\\"\\\",\\\"country\\\":\\\"us\\\",\\\"headers\\\":\\\"\\\",\\\"cookies\\\":\\\"\\\",\\\"wait\\\":\\\"\\\",\\\"wait_for\\\":\\\"\\\",\\\"follow_redirect\\\":\\\"True\\\",\\\"isjson\\\":\\\"1\\\"}\"\n```\n\n## Parameter notes\n\n- `url` is the only field that should be treated as required input from the user.\n- Ask the user to confirm `url` if it is missing or ambiguous.\n- `headers` and `cookies` are passed through as strings exactly as provided by the caller.\n- Keep boolean-like fields as strings such as `\"True\"` because that matches the supplied API format.\n- Keep `isjson` as `\"1\"` unless the user explicitly requests a different response mode.\n- Prefer minimal overrides. Do not invent custom headers, cookies, waits, render settings, or country overrides unless the user requested them.\n- The Python wrapper uses only the standard library so it stays portable and does not require third-party packages.\n\nFile v1.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn74z5hmmwk21kw8tpphd9w21x86bkdf\",\n  \"slug\": \"dataify-web-unlocker\",\n  \"version\": \"1.1.0\",\n  \"publishedAt\": 1780884307259\n}\n\nFile v1.1.0:skill-card.md\n\n## Description: <br>\nFetch blocked and dynamic web content via Dataify Web Unlocker API. Automatically identify and bypass CAPTCHA challenges, execute full-page JavaScript rendering, and return complete raw HTML source code or PNG webpage screenshots. Applicable for complex crawling scenarios including dynamic loading pages and SPA single-page applications. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[dataify-server](https://clawhub.ai/user/dataify-server) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and automation agents use this skill to fetch blocked, CAPTCHA-protected, or JavaScript-heavy web pages through Dataify's Web Unlocker API and receive raw HTML or PNG screenshots. The skill is intended for crawling workflows where the target URL is explicitly provided or confirmed by the user. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Target URLs, optional headers or cookies, and fetched page content are sent to Dataify. <br>\nMitigation: Avoid private internal URLs, session cookies, Authorization headers, bearer tokens, and personal data unless sharing them with Dataify is approved and intended. <br>\nRisk: The skill depends on DATAIFY_API_TOKEN for live API calls. <br>\nMitigation: Store DATAIFY_API_TOKEN like any other API credential and use dry-run mode when previewing request payloads. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/dataify-server/dataify-web-unlocker) <br>\n- [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) <br>\n- [Dataify Web Unlocker API endpoint](https://webunlocker.dataify.com/request) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, code, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with shell commands and direct API response text or JSON] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May return raw HTML source, JSON response bodies, or PNG screenshot data depending on the requested API response type.] <br>\n\n## Skill Version(s): <br>\n1.1.0 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.1.0:SKILL.zh-CN.md\n\n---\nname: \"dataify-web-unlocker\"\ndescription: \"依托Dataify网页解锁API抓取受限网页，输入任意URL即可智能识别破解验证码、全自动JS页面渲染，支持返回完整网页HTML源码或PNG全屏截图，适配动态网页、SPA单页应用等各类高难度数据采集场景。\"\n---\n\n# Dataify Web Unlocker 中文版\n\n这个 skill 用于通过 Dataify Web Unlocker API 抓取或解锁网页内容。\n\n## 工作流程\n\n1. 在 macOS/Linux 或强调跨平台时，优先使用 `scripts/invoke-dataify-web-unlocker.py`。\n2. 在 Windows 下可使用 `scripts/invoke-dataify-web-unlocker.ps1`。\n3. 只有当用户明确要求原始请求时，才使用 `curl` 命令。\n4. `url` 是唯一必须先确认的参数；如果用户没有明确给出目标地址，不要猜。\n5. 其余参数都视为可选覆盖项；除非用户明确要求，否则保持默认值。\n6. 脚本会从环境变量中读取 `DATAIFY_API_TOKEN`。\n7. 如果缺少 token，提示用户前往 [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) 获取 `DATAIFY_API_TOKEN`。\n8. 除非用户要求额外处理，否则直接返回接口响应内容。\n\n## 设置 DATAIFY_API_TOKEN\n\n推荐使用永久环境变量，而不是只在当前终端临时设置。\n\nWindows PowerShell，当前用户永久设置：\n\n```powershell\n[Environment]::SetEnvironmentVariable(\"DATAIFY_API_TOKEN\", \"your_token_here\", \"User\")\n```\n\n然后重新打开 PowerShell。如果当前会话也要立即生效，再执行：\n\n```powershell\n$env:DATAIFY_API_TOKEN = \"your_token_here\"\n```\n\nmacOS 或 Linux，bash 永久设置：\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\nmacOS 或 Linux，zsh 永久设置：\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n## 默认请求体\n\n除非用户明确要求不同取值，否则使用以下默认值。真正发起请求前，只必须先拿到 `url`：\n\n```json\n{\n  \"url\": \"https://www.google.com\",\n  \"type\": \"html\",\n  \"js_render\": \"True\",\n  \"block_resources\": \"\",\n  \"clean_content\": \"\",\n  \"country\": \"us\",\n  \"headers\": \"\",\n  \"cookies\": \"\",\n  \"wait\": \"\",\n  \"wait_for\": \"\",\n  \"follow_redirect\": \"True\",\n  \"isjson\": \"1\"\n}\n```\n\n## 常用命令\n\n如果用户没提供 URL，先询问 URL。最小调用只传 `url`，其他参数走默认值。\n\nPython：\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://www.google.com\"\n```\n\nPowerShell：\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://www.google.com\"\n```\n\nPython 覆盖参数示例：\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py \\\n  --url \"https://example.com\" \\\n  --js-render \"True\" \\\n  --country \"us\" \\\n  --wait \"3000\" \\\n  --wait-for \".main-content\"\n```\n\nPowerShell 覆盖参数示例：\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" `\n  -Url \"https://example.com\" `\n  -JsRender \"True\" `\n  -Country \"us\" `\n  -Wait \"3000\" `\n  -WaitFor \".main-content\"\n```\n\n只预览请求而不实际发起网络调用：\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://example.com\" --dry-run\n```\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://example.com\" -DryRun\n```\n\n## 原始 curl 回退方式\n\n如果用户明确要求原始请求，在 PowerShell 中请使用 `curl.exe`，避免命中 PowerShell 的 `curl` 别名。\n\n先检查 token：\n\n```powershell\nif (-not $env:DATAIFY_API_TOKEN) {\n  Write-Error \"DATAIFY_API_TOKEN is not set. Sign in at https://dashboard.dataify.com?utm_source=skill to obtain it.\"\n  exit 1\n}\n```\n\n然后发起请求：\n\n```powershell\ncurl.exe -X POST \"https://webunlocker.dataify.com/request\" `\n  -H \"Authorization: Bearer $env:DATAIFY_API_TOKEN\" `\n  -H \"Content-Type: application/json\" `\n  -d \"{\\\"url\\\":\\\"https://www.google.com\\\",\\\"type\\\":\\\"html\\\",\\\"js_render\\\":\\\"True\\\",\\\"block_resources\\\":\\\"\\\",\\\"clean_content\\\":\\\"\\\",\\\"country\\\":\\\"us\\\",\\\"headers\\\":\\\"\\\",\\\"cookies\\\":\\\"\\\",\\\"wait\\\":\\\"\\\",\\\"wait_for\\\":\\\"\\\",\\\"follow_redirect\\\":\\\"True\\\",\\\"isjson\\\":\\\"1\\\"}\"\n```\n\n## 参数说明\n\n- `url` 是唯一必须从用户处确认的参数。\n- 如果 `url` 缺失或有歧义，必须先向用户确认。\n- `headers` 和 `cookies` 会按字符串原样传给接口。\n- 类似 `\"True\"` 这类布尔值风格字段，保持字符串形式。\n- 除非用户明确要求其他模式，否则 `isjson` 保持 `\"1\"`。\n- 除非用户明确要求，否则不要擅自增加 headers、cookies、wait、render 设置或 country 覆盖值。\n- Python 版本仅使用标准库，因此更适合跨平台使用。\n\nFile v1.1.0:agents/openai.yaml\n\ninterface:\n  display_name: \"Dataify Web Unlocker\"\n  short_description: \"Unlock blocked or JS-heavy pages through Dataify\"\n  default_prompt: \"Use $dataify-web-unlocker to fetch or unlock a web page through the Dataify API.\"\n\nArchive v1.0.1: 6 files, 7932 bytes\n\nFiles: agents/openai.yaml (223b), scripts/invoke-dataify-web-unlocker.py (3739b), skill-card.md (2625b), SKILL.md (5444b), SKILL.zh-CN.md (4605b), _meta.json (139b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: \"dataify-web-unlocker\"\ndescription: \"Fetch blocked and dynamic web content via Dataify Web Unlocker API. Automatically identify and bypass CAPTCHA challenges, execute full-page JavaScript rendering, and return complete raw HTML source code or PNG webpage screenshots. Applicable for complex crawling scenarios including dynamic loading pages and SPA single-page applications.\"\n---\n\n# Dataify Web Unlocker\n\nUse the bundled wrappers to call Dataify's Web Unlocker API with a stable parameter set across platforms.\n\nTreat every request field as optional user input except for `url`. Confirm the target `url` with the user before making the request if it is not already explicit in the prompt. For every other field, keep the default value unless the user explicitly asks to override it.\n\n## Workflow\n\n1. Use `scripts/invoke-dataify-web-unlocker.py` on macOS/Linux or when cross-platform portability matters.\n2. Use `scripts/invoke-dataify-web-unlocker.ps1` on Windows when PowerShell is the best fit.\n3. Use a raw `curl` command only when the user explicitly asks for it.\n4. Confirm the target `url` with the user if it was not clearly provided. Do not guess the URL.\n5. Treat every other request field as optional. Override a field only when the user explicitly asked for a non-default value.\n6. Let the script read `DATAIFY_API_TOKEN` from the environment.\n7. If the token is missing, stop and tell the user to sign in at [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) to obtain `DATAIFY_API_TOKEN`.\n8. Return the API response body directly unless the user asks for extra post-processing.\n\n## Set DATAIFY_API_TOKEN\n\nPrefer a permanent environment-variable setup instead of setting the token only for the current terminal session.\n\nWindows PowerShell, permanent for the current user:\n\n```powershell\n[Environment]::SetEnvironmentVariable(\"DATAIFY_API_TOKEN\", \"your_token_here\", \"User\")\n```\n\nThen reopen PowerShell. If the current session also needs the token immediately, run:\n\n```powershell\n$env:DATAIFY_API_TOKEN = \"your_token_here\"\n```\n\nmacOS or Linux, permanent for bash:\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\nmacOS or Linux, permanent for zsh:\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n## Default request body\n\nUse these defaults unless the user asks for different values. Only `url` must be collected before the real request is sent:\n\n```json\n{\n  \"url\": \"https://www.google.com\",\n  \"type\": \"html\",\n  \"js_render\": \"True\",\n  \"block_resources\": \"\",\n  \"clean_content\": \"\",\n  \"country\": \"us\",\n  \"headers\": \"\",\n  \"cookies\": \"\",\n  \"wait\": \"\",\n  \"wait_for\": \"\",\n  \"follow_redirect\": \"True\",\n  \"isjson\": \"1\"\n}\n```\n\n## Preferred commands\n\nAsk for the URL first if the user did not provide one. After that, the minimal call should pass only `url` and rely on defaults for everything else.\n\nCross-platform Python:\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://www.google.com\"\n```\n\nWindows PowerShell:\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://www.google.com\"\n```\n\nCommon overrides in Python:\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py \\\n  --url \"https://example.com\" \\\n  --js-render \"True\" \\\n  --country \"us\" \\\n  --wait \"3000\" \\\n  --wait-for \".main-content\"\n```\n\nCommon overrides in PowerShell:\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" `\n  -Url \"https://example.com\" `\n  -JsRender \"True\" `\n  -Country \"us\" `\n  -Wait \"3000\" `\n  -WaitFor \".main-content\"\n```\n\nUse `--dry-run` or `-DryRun` to preview the endpoint, authorization state, and JSON payload without making the network request:\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://example.com\" --dry-run\n```\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://example.com\" -DryRun\n```\n\n## Raw curl fallback\n\nIf the user explicitly wants the raw request, use `curl.exe` in PowerShell, not `curl`, to avoid the PowerShell alias ambiguity.\n\nBefore calling the API, check the token:\n\n```powershell\nif (-not $env:DATAIFY_API_TOKEN) {\n  Write-Error \"DATAIFY_API_TOKEN is not set. Sign in at https://dashboard.dataify.com?utm_source=skill to obtain it.\"\n  exit 1\n}\n```\n\nThen send the request:\n\n```powershell\ncurl.exe -X POST \"https://webunlocker.dataify.com/request\" `\n  -H \"Authorization: Bearer $env:DATAIFY_API_TOKEN\" `\n  -H \"Content-Type: application/json\" `\n  -d \"{\\\"url\\\":\\\"https://www.google.com\\\",\\\"type\\\":\\\"html\\\",\\\"js_render\\\":\\\"True\\\",\\\"block_resources\\\":\\\"\\\",\\\"clean_content\\\":\\\"\\\",\\\"country\\\":\\\"us\\\",\\\"headers\\\":\\\"\\\",\\\"cookies\\\":\\\"\\\",\\\"wait\\\":\\\"\\\",\\\"wait_for\\\":\\\"\\\",\\\"follow_redirect\\\":\\\"True\\\",\\\"isjson\\\":\\\"1\\\"}\"\n```\n\n## Parameter notes\n\n- `url` is the only field that should be treated as required input from the user.\n- Ask the user to confirm `url` if it is missing or ambiguous.\n- `headers` and `cookies` are passed through as strings exactly as provided by the caller.\n- Keep boolean-like fields as strings such as `\"True\"` because that matches the supplied API format.\n- Keep `isjson` as `\"1\"` unless the user explicitly requests a different response mode.\n- Prefer minimal overrides. Do not invent custom headers, cookies, waits, render settings, or country overrides unless the user requested them.\n- The Python wrapper uses only the standard library so it stays portable and does not require third-party packages.\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn74z5hmmwk21kw8tpphd9w21x86bkdf\",\n  \"slug\": \"dataify-web-unlocker\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1780881898474\n}\n\nFile v1.0.1:skill-card.md\n\n## Description: <br>\nFetch blocked and dynamic web content via Dataify Web Unlocker API. Automatically identify and bypass CAPTCHA challenges, execute full-page JavaScript rendering, and return complete raw HTML source code or PNG webpage screenshots. Applicable for complex crawling scenarios including dynamic loading pages and SPA single-page applications. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[dataify-server](https://clawhub.ai/user/dataify-server) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and agents use this skill to fetch or unlock blocked, JavaScript-heavy, or dynamic web pages through the Dataify API and receive raw HTML or webpage screenshots for downstream analysis. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Target URLs, headers, and cookies provided to the skill are transmitted to Dataify. <br>\nMitigation: Do not send internal URLs, private pages, authorization headers, or session cookies unless authorized and comfortable sharing them with Dataify. <br>\nRisk: The skill can be used to unlock blocked or CAPTCHA-protected web pages. <br>\nMitigation: Use it only for authorized targets, confirm the target URL before requests, and avoid guessing URLs. <br>\nRisk: API responses may contain untrusted web content returned directly from third-party pages. <br>\nMitigation: Review returned HTML, JSON, or screenshots before using them in downstream actions or decisions. <br>\n\n\n## Reference(s): <br>\n- [Dataify Web Unlocker on ClawHub](https://clawhub.ai/dataify-server/dataify-web-unlocker) <br>\n- [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) <br>\n- [Dataify Web Unlocker API endpoint](https://webunlocker.dataify.com/request) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with shell commands and API response body text or JSON] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires DATAIFY_API_TOKEN. The target URL is required; optional headers, cookies, wait settings, render settings, and country overrides are passed to Dataify when explicitly provided.] <br>\n\n## Skill Version(s): <br>\n1.0.1 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.0.1:SKILL.zh-CN.md\n\n---\nname: \"dataify-web-unlocker\"\ndescription: \"依托Dataify网页解锁API抓取受限网页，输入任意URL即可智能识别破解验证码、全自动JS页面渲染，支持返回完整网页HTML源码或PNG全屏截图，适配动态网页、SPA单页应用等各类高难度数据采集场景。\"\n---\n\n# Dataify Web Unlocker 中文版\n\n这个 skill 用于通过 Dataify Web Unlocker API 抓取或解锁网页内容。\n\n## 工作流程\n\n1. 在 macOS/Linux 或强调跨平台时，优先使用 `scripts/invoke-dataify-web-unlocker.py`。\n2. 在 Windows 下可使用 `scripts/invoke-dataify-web-unlocker.ps1`。\n3. 只有当用户明确要求原始请求时，才使用 `curl` 命令。\n4. `url` 是唯一必须先确认的参数；如果用户没有明确给出目标地址，不要猜。\n5. 其余参数都视为可选覆盖项；除非用户明确要求，否则保持默认值。\n6. 脚本会从环境变量中读取 `DATAIFY_API_TOKEN`。\n7. 如果缺少 token，提示用户前往 [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) 获取 `DATAIFY_API_TOKEN`。\n8. 除非用户要求额外处理，否则直接返回接口响应内容。\n\n## 设置 DATAIFY_API_TOKEN\n\n推荐使用永久环境变量，而不是只在当前终端临时设置。\n\nWindows PowerShell，当前用户永久设置：\n\n```powershell\n[Environment]::SetEnvironmentVariable(\"DATAIFY_API_TOKEN\", \"your_token_here\", \"User\")\n```\n\n然后重新打开 PowerShell。如果当前会话也要立即生效，再执行：\n\n```powershell\n$env:DATAIFY_API_TOKEN = \"your_token_here\"\n```\n\nmacOS 或 Linux，bash 永久设置：\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\nmacOS 或 Linux，zsh 永久设置：\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n## 默认请求体\n\n除非用户明确要求不同取值，否则使用以下默认值。真正发起请求前，只必须先拿到 `url`：\n\n```json\n{\n  \"url\": \"https://www.google.com\",\n  \"type\": \"html\",\n  \"js_render\": \"True\",\n  \"block_resources\": \"\",\n  \"clean_content\": \"\",\n  \"country\": \"us\",\n  \"headers\": \"\",\n  \"cookies\": \"\",\n  \"wait\": \"\",\n  \"wait_for\": \"\",\n  \"follow_redirect\": \"True\",\n  \"isjson\": \"1\"\n}\n```\n\n## 常用命令\n\n如果用户没提供 URL，先询问 URL。最小调用只传 `url`，其他参数走默认值。\n\nPython：\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://www.google.com\"\n```\n\nPowerShell：\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://www.google.com\"\n```\n\nPython 覆盖参数示例：\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py \\\n  --url \"https://example.com\" \\\n  --js-render \"True\" \\\n  --country \"us\" \\\n  --wait \"3000\" \\\n  --wait-for \".main-content\"\n```\n\nPowerShell 覆盖参数示例：\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" `\n  -Url \"https://example.com\" `\n  -JsRender \"True\" `\n  -Country \"us\" `\n  -Wait \"3000\" `\n  -WaitFor \".main-content\"\n```\n\n只预览请求而不实际发起网络调用：\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://example.com\" --dry-run\n```\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://example.com\" -DryRun\n```\n\n## 原始 curl 回退方式\n\n如果用户明确要求原始请求，在 PowerShell 中请使用 `curl.exe`，避免命中 PowerShell 的 `curl` 别名。\n\n先检查 token：\n\n```powershell\nif (-not $env:DATAIFY_API_TOKEN) {\n  Write-Error \"DATAIFY_API_TOKEN is not set. Sign in at https://dashboard.dataify.com?utm_source=skill to obtain it.\"\n  exit 1\n}\n```\n\n然后发起请求：\n\n```powershell\ncurl.exe -X POST \"https://webunlocker.dataify.com/request\" `\n  -H \"Authorization: Bearer $env:DATAIFY_API_TOKEN\" `\n  -H \"Content-Type: application/json\" `\n  -d \"{\\\"url\\\":\\\"https://www.google.com\\\",\\\"type\\\":\\\"html\\\",\\\"js_render\\\":\\\"True\\\",\\\"block_resources\\\":\\\"\\\",\\\"clean_content\\\":\\\"\\\",\\\"country\\\":\\\"us\\\",\\\"headers\\\":\\\"\\\",\\\"cookies\\\":\\\"\\\",\\\"wait\\\":\\\"\\\",\\\"wait_for\\\":\\\"\\\",\\\"follow_redirect\\\":\\\"True\\\",\\\"isjson\\\":\\\"1\\\"}\"\n```\n\n## 参数说明\n\n- `url` 是唯一必须从用户处确认的参数。\n- 如果 `url` 缺失或有歧义，必须先向用户确认。\n- `headers` 和 `cookies` 会按字符串原样传给接口。\n- 类似 `\"True\"` 这类布尔值风格字段，保持字符串形式。\n- 除非用户明确要求其他模式，否则 `isjson` 保持 `\"1\"`。\n- 除非用户明确要求，否则不要擅自增加 headers、cookies、wait、render 设置或 country 覆盖值。\n- Python 版本仅使用标准库，因此更适合跨平台使用。\n\nFile v1.0.1:agents/openai.yaml\n\ninterface:\n  display_name: \"Dataify Web Unlocker\"\n  short_description: \"Unlock blocked or JS-heavy pages through Dataify\"\n  default_prompt: \"Use $dataify-web-unlocker to fetch or unlock a web page through the Dataify API.\"\n\nArchive v1.0.0: 6 files, 7492 bytes\n\nFiles: agents/openai.yaml (223b), scripts/invoke-dataify-web-unlocker.py (3717b), skill-card.md (2148b), SKILL.md (5412b), SKILL.zh-CN.md (4268b), _meta.json (139b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: \"dataify-web-unlocker\"\ndescription: \"Unlock or fetch difficult web pages through the Dataify Web Unlocker API. Use  when needs to retrieve HTML or rendered content from sites that may block normal requests, when a user asks to use Dataify's web unlocker endpoint, or when a page needs JavaScript rendering, redirect handling, country selection, or request-level headers and cookies.\"\n---\n\n# Dataify Web Unlocker\n\nUse the bundled wrappers to call Dataify's Web Unlocker API with a stable parameter set across platforms.\n\nTreat every request field as optional user input except for `url`. Confirm the target `url` with the user before making the request if it is not already explicit in the prompt. For every other field, keep the default value unless the user explicitly asks to override it.\n\n## Workflow\n\n1. Use `scripts/invoke-dataify-web-unlocker.py` on macOS/Linux or when cross-platform portability matters.\n2. Use `scripts/invoke-dataify-web-unlocker.ps1` on Windows when PowerShell is the best fit.\n3. Use a raw `curl` command only when the user explicitly asks for it.\n4. Confirm the target `url` with the user if it was not clearly provided. Do not guess the URL.\n5. Treat every other request field as optional. Override a field only when the user explicitly asked for a non-default value.\n6. Let the script read `DATAIFY_API_TOKEN` from the environment.\n7. If the token is missing, stop and tell the user to sign in at [Dataify Dashboard](https://dataify.com/dashboard) to obtain `DATAIFY_API_TOKEN`.\n8. Return the API response body directly unless the user asks for extra post-processing.\n\n## Set DATAIFY_API_TOKEN\n\nPrefer a permanent environment-variable setup instead of setting the token only for the current terminal session.\n\nWindows PowerShell, permanent for the current user:\n\n```powershell\n[Environment]::SetEnvironmentVariable(\"DATAIFY_API_TOKEN\", \"your_token_here\", \"User\")\n```\n\nThen reopen PowerShell. If the current session also needs the token immediately, run:\n\n```powershell\n$env:DATAIFY_API_TOKEN = \"your_token_here\"\n```\n\nmacOS or Linux, permanent for bash:\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\nmacOS or Linux, permanent for zsh:\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n## Default request body\n\nUse these defaults unless the user asks for different values. Only `url` must be collected before the real request is sent:\n\n```json\n{\n  \"url\": \"https://www.google.com\",\n  \"type\": \"html\",\n  \"js_render\": \"True\",\n  \"block_resources\": \"\",\n  \"clean_content\": \"\",\n  \"country\": \"us\",\n  \"headers\": \"\",\n  \"cookies\": \"\",\n  \"wait\": \"\",\n  \"wait_for\": \"\",\n  \"follow_redirect\": \"True\",\n  \"isjson\": \"1\"\n}\n```\n\n## Preferred commands\n\nAsk for the URL first if the user did not provide one. After that, the minimal call should pass only `url` and rely on defaults for everything else.\n\nCross-platform Python:\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://www.google.com\"\n```\n\nWindows PowerShell:\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://www.google.com\"\n```\n\nCommon overrides in Python:\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py \\\n  --url \"https://example.com\" \\\n  --js-render \"True\" \\\n  --country \"us\" \\\n  --wait \"3000\" \\\n  --wait-for \".main-content\"\n```\n\nCommon overrides in PowerShell:\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" `\n  -Url \"https://example.com\" `\n  -JsRender \"True\" `\n  -Country \"us\" `\n  -Wait \"3000\" `\n  -WaitFor \".main-content\"\n```\n\nUse `--dry-run` or `-DryRun` to preview the endpoint, authorization state, and JSON payload without making the network request:\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://example.com\" --dry-run\n```\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://example.com\" -DryRun\n```\n\n## Raw curl fallback\n\nIf the user explicitly wants the raw request, use `curl.exe` in PowerShell, not `curl`, to avoid the PowerShell alias ambiguity.\n\nBefore calling the API, check the token:\n\n```powershell\nif (-not $env:DATAIFY_API_TOKEN) {\n  Write-Error \"DATAIFY_API_TOKEN is not set. Sign in at https://www.dataify.com/ to obtain it.\"\n  exit 1\n}\n```\n\nThen send the request:\n\n```powershell\ncurl.exe -X POST \"https://webunlocker.dataify.com/request\" `\n  -H \"Authorization: Bearer $env:DATAIFY_API_TOKEN\" `\n  -H \"Content-Type: application/json\" `\n  -d \"{\\\"url\\\":\\\"https://www.google.com\\\",\\\"type\\\":\\\"html\\\",\\\"js_render\\\":\\\"True\\\",\\\"block_resources\\\":\\\"\\\",\\\"clean_content\\\":\\\"\\\",\\\"country\\\":\\\"us\\\",\\\"headers\\\":\\\"\\\",\\\"cookies\\\":\\\"\\\",\\\"wait\\\":\\\"\\\",\\\"wait_for\\\":\\\"\\\",\\\"follow_redirect\\\":\\\"True\\\",\\\"isjson\\\":\\\"1\\\"}\"\n```\n\n## Parameter notes\n\n- `url` is the only field that should be treated as required input from the user.\n- Ask the user to confirm `url` if it is missing or ambiguous.\n- `headers` and `cookies` are passed through as strings exactly as provided by the caller.\n- Keep boolean-like fields as strings such as `\"True\"` because that matches the supplied API format.\n- Keep `isjson` as `\"1\"` unless the user explicitly requests a different response mode.\n- Prefer minimal overrides. Do not invent custom headers, cookies, waits, render settings, or country overrides unless the user requested them.\n- The Python wrapper uses only the standard library so it stays portable and does not require third-party packages.\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn74z5hmmwk21kw8tpphd9w21x86bkdf\",\n  \"slug\": \"dataify-web-unlocker\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1779955794723\n}\n\nFile v1.0.0:skill-card.md\n\n## Description: <br>\nDataify Web Unlocker helps agents fetch HTML or rendered content from difficult web pages through the Dataify Web Unlocker API. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[dataify-server](https://clawhub.ai/user/dataify-server) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and agents use this skill to fetch or unlock blocked, redirect-heavy, or JavaScript-rendered web pages via Dataify while keeping URL confirmation and request overrides explicit. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Requests can send target URLs, cookies, headers, or private page content to Dataify as a third-party web-fetching service. <br>\nMitigation: Avoid authentication cookies, Authorization headers, internal URLs, private account pages, and regulated data unless the user has explicitly approved that disclosure. <br>\nRisk: DATAIFY_API_TOKEN exposure could allow unauthorized use of the Dataify account. <br>\nMitigation: Store the token in an environment variable, treat it like a password, and rotate it if it may have been exposed. <br>\n\n\n## Reference(s): <br>\n- [ClawHub release page](https://clawhub.ai/dataify-server/dataify-web-unlocker) <br>\n- [Dataify dashboard](https://dataify.com/dashboard) <br>\n- [Dataify Web Unlocker API endpoint](https://webunlocker.dataify.com/request) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with shell commands; API responses may be JSON or HTML text.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires DATAIFY_API_TOKEN and sends requests to the Dataify Web Unlocker service.] <br>\n\n## Skill Version(s): <br>\n1.0.0 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.0.0:SKILL.zh-CN.md\n\n# Dataify Web Unlocker 中文版\n\n这个 skill 用于通过 Dataify Web Unlocker API 抓取或解锁网页内容。\n\n## 工作流程\n\n1. 在 macOS/Linux 或强调跨平台时，优先使用 `scripts/invoke-dataify-web-unlocker.py`。\n2. 在 Windows 下可使用 `scripts/invoke-dataify-web-unlocker.ps1`。\n3. 只有当用户明确要求原始请求时，才使用 `curl` 命令。\n4. `url` 是唯一必须先确认的参数；如果用户没有明确给出目标地址，不要猜。\n5. 其余参数都视为可选覆盖项；除非用户明确要求，否则保持默认值。\n6. 脚本会从环境变量中读取 `DATAIFY_API_TOKEN`。\n7. 如果缺少 token，提示用户前往 <a href=\"https://www.dataify.com/\">dataify&#23448;&#32593;</a> 获取 `DATAIFY_API_TOKEN`。\n8. 除非用户要求额外处理，否则直接返回接口响应内容。\n\n## 设置 DATAIFY_API_TOKEN\n\n推荐使用永久环境变量，而不是只在当前终端临时设置。\n\nWindows PowerShell，当前用户永久设置：\n\n```powershell\n[Environment]::SetEnvironmentVariable(\"DATAIFY_API_TOKEN\", \"your_token_here\", \"User\")\n```\n\n然后重新打开 PowerShell。如果当前会话也要立即生效，再执行：\n\n```powershell\n$env:DATAIFY_API_TOKEN = \"your_token_here\"\n```\n\nmacOS 或 Linux，bash 永久设置：\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\nmacOS 或 Linux，zsh 永久设置：\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n## 默认请求体\n\n除非用户明确要求不同取值，否则使用以下默认值。真正发起请求前，只必须先拿到 `url`：\n\n```json\n{\n  \"url\": \"https://www.google.com\",\n  \"type\": \"html\",\n  \"js_render\": \"True\",\n  \"block_resources\": \"\",\n  \"clean_content\": \"\",\n  \"country\": \"us\",\n  \"headers\": \"\",\n  \"cookies\": \"\",\n  \"wait\": \"\",\n  \"wait_for\": \"\",\n  \"follow_redirect\": \"True\",\n  \"isjson\": \"1\"\n}\n```\n\n## 常用命令\n\n如果用户没提供 URL，先询问 URL。最小调用只传 `url`，其他参数走默认值。\n\nPython：\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://www.google.com\"\n```\n\nPowerShell：\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://www.google.com\"\n```\n\nPython 覆盖参数示例：\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py \\\n  --url \"https://example.com\" \\\n  --js-render \"True\" \\\n  --country \"us\" \\\n  --wait \"3000\" \\\n  --wait-for \".main-content\"\n```\n\nPowerShell 覆盖参数示例：\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" `\n  -Url \"https://example.com\" `\n  -JsRender \"True\" `\n  -Country \"us\" `\n  -Wait \"3000\" `\n  -WaitFor \".main-content\"\n```\n\n只预览请求而不实际发起网络调用：\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://example.com\" --dry-run\n```\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://example.com\" -DryRun\n```\n\n## 原始 curl 回退方式\n\n如果用户明确要求原始请求，在 PowerShell 中请使用 `curl.exe`，避免命中 PowerShell 的 `curl` 别名。\n\n先检查 token：\n\n```powershell\nif (-not $env:DATAIFY_API_TOKEN) {\n  Write-Error \"DATAIFY_API_TOKEN is not set. Sign in at https://www.dataify.com/ to obtain it.\"\n  exit 1\n}\n```\n\n然后发起请求：\n\n```powershell\ncurl.exe -X POST \"https://webunlocker.dataify.com/request\" `\n  -H \"Authorization: Bearer $env:DATAIFY_API_TOKEN\" `\n  -H \"Content-Type: application/json\" `\n  -d \"{\\\"url\\\":\\\"https://www.google.com\\\",\\\"type\\\":\\\"html\\\",\\\"js_render\\\":\\\"True\\\",\\\"block_resources\\\":\\\"\\\",\\\"clean_content\\\":\\\"\\\",\\\"country\\\":\\\"us\\\",\\\"headers\\\":\\\"\\\",\\\"cookies\\\":\\\"\\\",\\\"wait\\\":\\\"\\\",\\\"wait_for\\\":\\\"\\\",\\\"follow_redirect\\\":\\\"True\\\",\\\"isjson\\\":\\\"1\\\"}\"\n```\n\n## 参数说明\n\n- `url` 是唯一必须从用户处确认的参数。\n- 如果 `url` 缺失或有歧义，必须先向用户确认。\n- `headers` 和 `cookies` 会按字符串原样传给接口。\n- 类似 `\"True\"` 这类布尔值风格字段，保持字符串形式。\n- 除非用户明确要求其他模式，否则 `isjson` 保持 `\"1\"`。\n- 除非用户明确要求，否则不要擅自增加 headers、cookies、wait、render 设置或 country 覆盖值。\n- Python 版本仅使用标准库，因此更适合跨平台使用。\n\nFile v1.0.0:agents/openai.yaml\n\ninterface:\n  display_name: \"Dataify Web Unlocker\"\n  short_description: \"Unlock blocked or JS-heavy pages through Dataify\"\n  default_prompt: \"Use $dataify-web-unlocker to fetch or unlock a web page through the Dataify API.\"","readmeExcerpt":"Skill: Dataify Web Unlocker Owner: dataify-server Summary: Unlock blocked or JS-heavy pages through Dataify Tags: latest:1.3.1 Version history: v1.3.1 | 2026-09-08T06:17:21.532Z | user Fix natural-language usage failures: validate required targets and URLs, preserve catalog references, default Amazon region safely, normalize Google News links, and improve UTF-8 error output. v1.3.0 | 2026-09-01T09:11:44.551Z | user 默","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"python3 scripts/invoke-dataify-web-unlocker.py --url \"https://example.com\""},{"language":"powershell","snippet":"[Environment]::SetEnvironmentVariable(\"DATAIFY_API_TOKEN\", \"your_token_here\", \"User\")"},{"language":"powershell","snippet":"$env:DATAIFY_API_TOKEN = \"your_token_here\""},{"language":"bash","snippet":"echo 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc"},{"language":"bash","snippet":"echo 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc"},{"language":"json","snippet":"{\n  \"url\": \"https://www.google.com\",\n  \"type\": \"html\",\n  \"js_render\": \"True\",\n  \"block_resources\": \"\",\n  \"clean_content\": \"\",\n  \"country\": \"us\",\n  \"headers\": \"\",\n  \"cookies\": \"\",\n  \"wait\": \"\",\n  \"wait_for\": \"\",\n  \"follow_redirect\": \"True\",\n  \"isjson\": \"1\"\n}"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: \"dataify-web-unlocker\"\ndescription: \"Fetch HTML or a screenshot from a known blocked or JavaScript-rendered webpage with Dataify Web Unlocker. Use for CAPTCHA-protected, dynamic, or SPA pages. Do not use for search-engine discovery or platform-specific structured records.\"\n---\n\n# Dataify Web Unlocker\n\nUse the bundled wrappers to call Dataify's Web Unlocker API with a stable parameter set across platforms.\n\nTreat every request field as optional user input except for `url`. Confirm the target `url` with the user before making the request if it is not already explicit in the prompt. For every other field, keep the default value unless the user explicitly asks to override it.\n\n\n## Quick Start\n\n**Input:** one public webpage URL.\n\n```bash\npython3 scripts/invoke-dataify-web-unlocker.py --url \"https://example.com\"\n```\n\nThis is a synchronous request: the command prints the unlocked page result directly.\n\nIf `DATAIFY_API_TOKEN` is missing, log in or register at https://dashboard.dataify.com/login?utm_source=skill. New accounts get 50 free credits, enough for about 6,000 trial results, valid for 7 days, and only successful requests are billed.\n\n## Workflow\n\n1. Use `scripts/invoke-dataify-web-unlocker.py` on macOS/Linux or when cross-platform portability matters.\n2. Use `scripts/invoke-dataify-web-unlocker.ps1` on Windows when PowerShell is the best fit.\n3. Use a raw `curl` command only when the user explicitly asks for it.\n4. Confirm the target `url` with the user if it was not clearly provided. Do not guess the URL.\n5. Treat every other request field as optional. Override a field only when the user explicitly asked for a non-default value.\n6. Let the script read `DATAIFY_API_TOKEN` from the environment.\n7. If the token is missing, stop and tell the user: `Dataify requires an API token. New accounts get 50 free credits, enough for about 6,000 trial results, valid for 7 days, and only successful requests are billed. Once registration is complete, tell me and I'll continue the current task.`.\n8. Return the API response body directly unless the user asks for extra post-processing.\n\n## Set DATAIFY_API_TOKEN\n\nPrefer a permanent environment-variable setup instead of setting the token only for the current terminal session.\n\nWindows PowerShell, permanent for the current user:\n\n```powershell\n[Environment]::SetEnvironmentVariable(\"DATAIFY_API_TOKEN\", \"your_token_here\", \"User\")\n```\n\nThen reopen PowerShell. If the current session also needs the token immediately, run:\n\n```powershell\n$env:DATAIFY_API_TOKEN = \"your_token_here\"\n```\n\nmacOS or Linux, permanent for bash:\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\nmacOS or Linux, permanent for zsh:\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n## Default request body\n\nUse these defaults unless the user asks for different values. Only `url` must be collected before the real request is sent:\n\n```json\n{\n  \"url\": \"https://ww"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn74z5hmmwk21kw8tpphd9w21x86bkdf\",\n  \"slug\": \"dataify-web-unlocker\",\n  \"version\": \"1.3.1\",\n  \"publishedAt\": 1788848241532\n}"},{"path":"skill-card.md","content":"## Description:\n\nFetch HTML or screenshots from known blocked or JavaScript-rendered webpages with Dataify Web Unlocker.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[dataify-server](https://clawhub.ai/user/dataify-server)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agents use this skill to retrieve HTML or screenshots from public webpages that are blocked, CAPTCHA-protected, or require JavaScript rendering. It is suited to explicit, single-page fetches where the target URL is known and credentials remain in environment variables.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The package includes broader search and business-scraping workflows beyond the advertised Web Unlocker behavior.\n\nMitigation: Review installed files before use and invoke only the Web Unlocker wrappers unless broader workflows are explicitly approved.\n\nRisk: Requests can pass through caller-supplied headers or cookies, and token setup guidance may encourage persistent shell-profile storage.\n\nMitigation: Use the skill only for public, non-sensitive webpages; avoid session cookies and private headers; prefer session-scoped DATAIFY_API_TOKEN configuration.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/dataify-server/skills/dataify-web-unlocker)\n- [Dataify Web Unlocker API endpoint](https://webunlocker.dataify.com/request)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with shell commands; API responses are returned as text or JSON.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires DATAIFY_API_TOKEN and an explicit public HTTP(S) target URL.]\n\n## Skill Version(s):\n\n1.3.1 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."},{"path":"SKILL.zh-CN.md","content":"---\nname: \"dataify-web-unlocker\"\ndescription: \"依托Dataify网页解锁API抓取受限网页，输入任意URL即可智能识别破解验证码、全自动JS页面渲染，支持返回完整网页HTML源码或PNG全屏截图，适配动态网页、SPA单页应用等各类高难度数据采集场景。\"\n---\n\n# Dataify Web Unlocker 中文版\n\n这个 skill 用于通过 Dataify Web Unlocker API 抓取或解锁网页内容。\n\n## 工作流程\n\n1. 在 macOS/Linux 或强调跨平台时，优先使用 `scripts/invoke-dataify-web-unlocker.py`。\n2. 在 Windows 下可使用 `scripts/invoke-dataify-web-unlocker.ps1`。\n3. 只有当用户明确要求原始请求时，才使用 `curl` 命令。\n4. `url` 是唯一必须先确认的参数；如果用户没有明确给出目标地址，不要猜。\n5. 其余参数都视为可选覆盖项；除非用户明确要求，否则保持默认值。\n6. 脚本会从环境变量中读取 `DATAIFY_API_TOKEN`。\n7. 如果缺少 token，提示用户前往 [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) 获取 `DATAIFY_API_TOKEN`。\n8. 除非用户要求额外处理，否则直接返回接口响应内容。\n\n## 设置 DATAIFY_API_TOKEN\n\n推荐使用永久环境变量，而不是只在当前终端临时设置。\n\nWindows PowerShell，当前用户永久设置：\n\n```powershell\n[Environment]::SetEnvironmentVariable(\"DATAIFY_API_TOKEN\", \"your_token_here\", \"User\")\n```\n\n然后重新打开 PowerShell。如果当前会话也要立即生效，再执行：\n\n```powershell\n$env:DATAIFY_API_TOKEN = \"your_token_here\"\n```\n\nmacOS 或 Linux，bash 永久设置：\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\nmacOS 或 Linux，zsh 永久设置：\n\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n## 默认请求体\n\n除非用户明确要求不同取值，否则使用以下默认值。真正发起请求前，只必须先拿到 `url`：\n\n```json\n{\n  \"url\": \"https://www.google.com\",\n  \"type\": \"html\",\n  \"js_render\": \"True\",\n  \"block_resources\": \"\",\n  \"clean_content\": \"\",\n  \"country\": \"us\",\n  \"headers\": \"\",\n  \"cookies\": \"\",\n  \"wait\": \"\",\n  \"wait_for\": \"\",\n  \"follow_redirect\": \"True\",\n  \"isjson\": \"1\"\n}\n```\n\n## 常用命令\n\n如果用户没提供 URL，先询问 URL。最小调用只传 `url`，其他参数走默认值。\n\nPython：\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://www.google.com\"\n```\n\nPowerShell：\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://www.google.com\"\n```\n\nPython 覆盖参数示例：\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py \\\n  --url \"https://example.com\" \\\n  --js-render \"True\" \\\n  --country \"us\" \\\n  --wait \"3000\" \\\n  --wait-for \".main-content\"\n```\n\nPowerShell 覆盖参数示例：\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" `\n  -Url \"https://example.com\" `\n  -JsRender \"True\" `\n  -Country \"us\" `\n  -Wait \"3000\" `\n  -WaitFor \".main-content\"\n```\n\n只预览请求而不实际发起网络调用：\n\n```bash\npython scripts/invoke-dataify-web-unlocker.py --url \"https://example.com\" --dry-run\n```\n\n```powershell\n& \".\\scripts\\invoke-dataify-web-unlocker.ps1\" -Url \"https://example.com\" -DryRun\n```\n\n## 原始 curl 回退方式\n\n如果用户明确要求原始请求，在 PowerShell 中请使用 `curl.exe`，避免命中 PowerShell 的 `curl` 别名。\n\n先检查 token：\n\n```powershell\nif (-not $env:DATAIFY_API_TOKEN) {\n  Write-Error \"DATAIFY_API_TOKEN is not set. Sign in at https://dashboard.dataify.com?utm_source=skill to obtain it.\"\n  exit 1\n}\n```\n\n然后发起请求：\n\n```powershell\ncurl.exe -X POST \"https://webunlocker.dataify.com/request\" `\n  -H \"Authorization: Bearer $env:DATAIFY_API_TOKEN\" `\n  -H \"Content-Type: application/json\" `\n  -d \"{\\\"url\\\":\\\"https://www.google.com\\\",\\\"type\\\":\\\"html\\\",\\\"js_render\\\":\\\"True\\\",\\\"block_resources\\\":\\\"\\\",\\\"clean_content\\\":\\\"\\\",\\\"country\\\":\\\"us\\\",\\\"h"},{"path":"agents/openai.yaml","content":"interface:\n  display_name: \"Dataify Web Unlocker\"\n  short_description: \"Unlock blocked or JS-heavy pages through Dataify\"\n  default_prompt: \"Use $dataify-web-unlocker to fetch or unlock a web page through the Dataify API.\""}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Unlock blocked or JS-heavy pages through Dataify Skill: Dataify Web Unlocker Owner: dataify-server Summary: Unlock blocked or JS-heavy pages through Dataify Tags: latest:1.3.1 Version history: v1.3.1 | 2026-09-08T06:17:21.532Z | user Fix natural-language usage failures: validate required targets and URLs, preserve catalog references, default Amazon region safely, normalize Google News links, and improve UTF-8 error output. v1.3.0 | 2026-09-01T09:11:44.551Z | user 默","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1237,"uniquenessScore":45,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T05:47:20.539Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T05:47:20.539Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T08:39:45.064Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}