{"id":"9898f37b-cf23-4f90-977f-95355f77699d","entityType":"agent","slug":"clawhub-dataify-server-dataify-airbnb-product-by-searchurl","name":"Dataify Airbnb Builder","canonicalUrl":"https://www.xpersona.co/agent/clawhub-dataify-server-dataify-airbnb-product-by-searchurl","canonicalPath":"/agent/clawhub-dataify-server-dataify-airbnb-product-by-searchurl","generatedAt":"2026-10-11T08:40:49.420Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T06:00:29.383Z","emptyReason":null},"description":"Collect Airbnb Builder data and return results Skill: Dataify Airbnb Builder Owner: dataify-server Summary: Collect Airbnb Builder data and return results Tags: latest:1.3.1 Version history: v1.3.1 | 2026-09-08T06:17:57.571Z | 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:51.729Z | 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-airbnb-product-by-searchurl","sourceUrl":"https://clawhub.ai/dataify-server/dataify-airbnb-product-by-searchurl","homepage":"https://clawhub.ai/dataify-server/skills/dataify-airbnb-product-by-searchurl","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/dataify-server/dataify-airbnb-product-by-searchurl","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/dataify-server/skills/dataify-airbnb-product-by-searchurl","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":61,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Collect Airbnb Builder data and return results Skill: Dataify Airbnb Builder Owner: dataify-server Summary: Collect Airbnb Builder data and return results Tags:"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T06:00:29.383Z","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-11T06:00:29.383Z","emptyReason":null},"stars":null,"forks":null,"downloads":1139,"packageName":null,"latestVersion":"1.3.1","tractionLabel":"1.1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T06:00:29.370Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T06:00:29.383Z","lastCrawledAt":"2026-10-11T06:00:29.370Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T06:00:29.370Z","lastVerifiedAt":null,"highlights":[{"version":"1.3.1","createdAt":"2026-09-08T06:17:57.571Z","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":14,"zipByteSize":30990},{"version":"1.3.0","createdAt":"2026-09-01T09:11:51.729Z","changelog":"默认返回最终采集结果，完善异步等待下载与安全恢复；修复空目标误执行、Quick Start、Token 配置和触发路由冲突，并补齐发布前自动化测试","fileCount":8,"zipByteSize":10064},{"version":"1.2.0","createdAt":"2026-07-16T08:34:55.338Z","changelog":"新增能力路由与异步任务闭环，修复失效引用、Token 泄漏和 Skill 元数据兼容性","fileCount":8,"zipByteSize":8292},{"version":"1.1.0","createdAt":"2026-06-08T02:05:12.322Z","changelog":"补全中文文档，更新目录结构","fileCount":6,"zipByteSize":7708},{"version":"1.0.1","createdAt":"2026-06-08T01:32:12.725Z","changelog":"- Removed the file skill-card.md. - Updated documentation: Dataify Dashboard URL now points to https://dashboard.dataify.com?utm_source=skill for API token instructions. - No functional or interface changes to the skill logic.","fileCount":6,"zipByteSize":7642},{"version":"1.0.0","createdAt":"2026-05-28T08:11:31.795Z","changelog":"Initial release of Dataify builder skill for airbnb.com product scraping by search URL: - Guides users step-by-step to prepare Dataify scraper requests rooted at airbnb_product_by-searchurl. - Lets users choose tools using Chinese tool names, and dynamically presents required parameters from a saved catalog. - Builds a JSON array for \"spider_parameters\", supporting both single and multi-row requests with correctly aligned values. - Always generates a ready-to-run curl command for scraperapi.dataify.com/builder, with required headers and parameters. - Includes environment setup instructions for DATAIFY_API_TOKEN for Windows, macOS, and Linux. - Supports both Python and PowerShell helper scripts for request building.","fileCount":6,"zipByteSize":7334}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17feed8b2qc486skqmjapxmjs86bd4f:dataify-airbnb-product-by-searchurl","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-airbnb-product-by-searchurl/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-airbnb-product-by-searchurl/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-airbnb-product-by-searchurl/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-airbnb-product-by-searchurl/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-airbnb-product-by-searchurl/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-airbnb-product-by-searchurl/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:40:49.418Z"}},"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-airbnb-product-by-searchurl/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-airbnb-product-by-searchurl/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-airbnb-product-by-searchurl/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dataify-server-dataify-airbnb-product-by-searchurl/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-11T06:00:29.383Z","emptyReason":null},"readme":"Skill: Dataify Airbnb Builder\n\nOwner: dataify-server\n\nSummary: Collect Airbnb Builder data and return results\n\nTags: latest:1.3.1\n\nVersion history:\n\nv1.3.1 | 2026-09-08T06:17:57.571Z | 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:51.729Z | user\n\n默认返回最终采集结果，完善异步等待下载与安全恢复；修复空目标误执行、Quick Start、Token 配置和触发路由冲突，并补齐发布前自动化测试\n\nv1.2.0 | 2026-07-16T08:34:55.338Z | user\n\n新增能力路由与异步任务闭环，修复失效引用、Token 泄漏和 Skill 元数据兼容性\n\nv1.1.0 | 2026-06-08T02:05:12.322Z | user\n\n补全中文文档，更新目录结构\n\nv1.0.1 | 2026-06-08T01:32:12.725Z | user\n\n- Removed the file skill-card.md.\n- Updated documentation: Dataify Dashboard URL now points to https://dashboard.dataify.com?utm_source=skill for API token instructions.\n- No functional or interface changes to the skill logic.\n\nv1.0.0 | 2026-05-28T08:11:31.795Z | auto\n\nInitial release of Dataify builder skill for airbnb.com product scraping by search URL:\n\n- Guides users step-by-step to prepare Dataify scraper requests rooted at airbnb_product_by-searchurl.\n- Lets users choose tools using Chinese tool names, and dynamically presents required parameters from a saved catalog.\n- Builds a JSON array for \"spider_parameters\", supporting both single and multi-row requests with correctly aligned values.\n- Always generates a ready-to-run curl command for scraperapi.dataify.com/builder, with required headers and parameters.\n- Includes environment setup instructions for DATAIFY_API_TOKEN for Windows, macOS, and Linux.\n- Supports both Python and PowerShell helper scripts for request building.\n\nArchive index:\n\nArchive v1.3.1: 14 files, 30990 bytes\n\nFiles: agents/openai.yaml (376b), references/tool-params.json (418b), scripts/build-dataify-request.ps1 (294b), scripts/build-dataify-request.py (730b), scripts/business_workflow.py (34775b), scripts/catalog_builder.py (7013b), scripts/dataify_client.py (6994b), scripts/task_runtime.py (2259b), scripts/token_setup.py (2585b), scripts/wait_for_task.py (8879b), skill-card.md (2434b), SKILL.md (8532b), SKILL.zh-CN.md (7171b), _meta.json (154b)\n\nFile v1.3.1:SKILL.md\n\n---\nname: \"dataify-airbnb-product-by-searchurl\"\ndescription: \"Collect structured Airbnb listing results from a known Airbnb search-results URL. Use when the user provides or wants to scrape an Airbnb search URL. Do not use for general hotel discovery or Booking.com URLs.\"\n---\n\n# Dataify Builder Skill\n\nUse this skill to prepare Dataify builder requests for the scraper family rooted at `airbnb_product_by-searchurl` on `airbnb.com`.\n\n\n## Quick Start\n\n**Input:** an Airbnb search URL.\n\n```bash\npython3 scripts/build-dataify-request.py --tool-sign airbnb_product_by-searchurl --params-json '[{\"searchurl\":\"https://www.airbnb.com/s/Paris--France/homes\"}]'\n```\n\nThis submits the task, waits for completion, downloads the final result, and returns it. Add `--no-wait` only when submission-only behavior is requested.\n## Workflow\n\n1. Check whether `DATAIFY_API_TOKEN` exists in the environment.\n2. 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.`.\n3. Ask the user to choose exactly one tool from the following Chinese list:\n- 搜索URL (airbnb_product_by-searchurl)\n- 位置 (airbnb_product_by-location)\n4. Read `references/tool-params.json` and find the chosen tool by `tool_sign` or Chinese tool name.\n5. For each parameter in the chosen tool:\n   - If `input_mode` is `user_input`, ask the user for the value.\n   - If `input_mode` is `select`, present the saved options to the user.\n6. Use `scripts/build-dataify-request.py` as the default cross-platform helper.\n7. Use `scripts/build-dataify-request.ps1` as the Windows PowerShell helper when needed.\n8. When a selectable parameter has a human-readable Chinese label, keep that label in `spider_parameters`. Do not replace it with a code such as `HK` unless the user explicitly asks for the coded value.\n9. Build `spider_parameters` as a JSON array.\n10. If every parameter has only one final value, build one object such as `[{\"searchurl\":\"...\",\"country\":\"Hong Kong\"}]`.\n11. If one or more parameters have multiple aligned values, zip them by index and build one object per row. Example: `[{\"search_url\":\"url1\",\"page_turning\":\"1\",\"max_num\":\"15\"},{\"search_url\":\"url2\",\"page_turning\":\"1\",\"max_num\":\"15\"}]`.\n12. If a parameter has one value while another parameter has multiple values, reuse the single value across every generated row.\n13. Set `spider_name` to `airbnb.com`.\n14. Set `spider_id` to the selected tool's `tool_sign`.\n15. Always include `spider_errors=true` and `file_name={{TasksID}}`.\n16. Return a curl command for `https://scraperapi.dataify.com/builder`.\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```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```powershell\n$env:DATAIFY_API_TOKEN = \"your_token_here\"\n```\n\nmacOS or Linux, permanent for bash:\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\nmacOS or Linux, permanent for zsh:\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n## Script usage\n\nPython:\n```bash\npython scripts/build-dataify-request.py --tool-sign <selected_tool_sign> --values-file values.json\n```\n\nPowerShell:\n```powershell\n& \".\\scripts\\build-dataify-request.ps1\" -ToolSign \"<selected_tool_sign>\" -ValuesFile \".\\values.json\"\n```\n\nThe `values.json` file should contain either one object or an array of objects. Example:\n```json\n[{\"searchurl\":\"https://www.airbnb.com/s/Greece/homes?...\",\"country\":\"Hong Kong\"}]\n```\n\n## Required output shape\n\nGenerate a curl command in this form:\n\n```bash\ncurl -X POST 'https://scraperapi.dataify.com/builder' \\\n  -H \"Authorization: Bearer $DATAIFY_API_TOKEN\" \\\n  -H 'Content-Type: application/x-www-form-urlencoded' \\\n  -d 'spider_name=airbnb.com' \\\n  -d 'spider_id=<selected_tool_sign>' \\\n  -d 'spider_parameters=[{\"param\":\"value\"}]' \\\n  -d 'spider_errors=true' \\\n  -d 'file_name={{TasksID}}'\n```\n\n## Reference usage\n\n- `references/tool-params.json` stores the full saved parameter catalog for every available tool in this scraper family.\n- `scripts/build-dataify-request.py` is the portable implementation and should be preferred.\n- `scripts/build-dataify-request.ps1` mirrors the same behavior for Windows users.\n- If a parameter has no options, the user must provide the value.\n- Do not assume `spider_parameters` always contains exactly one object. Multi-value tools may require multiple objects zipped by index.\n- Use the saved `url_example` only as a reference example. Do not assume the user wants the example values unless they explicitly confirm them.\n\n## Default completion behavior\n\nThe default deliverable is the collected result, not only a `task_id`.\n\n1. Submit the Builder task once and capture its `task_id`.\n2. Immediately continue with `$dataify-task-operations` and monitor the same task ID.\n   - Use the default 600-second wait for ordinary collections.\n   - Use `--timeout 1800` for media downloads or clearly high-volume, multi-page, or multi-input collections.\n3. When the task succeeds, download and return the final JSON result. Summarize large payloads while preserving access to the raw result.\n4. If monitoring times out or is interrupted, return the task ID and a resume command. Do not resubmit the paid task.\n5. Stop after submission only when the user explicitly asks for submission only, a task ID, or `--no-wait` behavior.\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-airbnb-product-by-searchurl\",\n  \"version\": \"1.3.1\",\n  \"publishedAt\": 1788848277571\n}\n\nFile v1.3.1:references/tool-params.json\n\n[{\"tool_name_cn\":\"搜索URL\",\"tool_sign\":\"airbnb_product_by-searchurl\",\"spider_name\":\"airbnb.com\",\"params\":[{\"param\":\"searchurl\",\"required\":true,\"input_mode\":\"user_input\",\"format\":\"url\",\"url_example\":\"https://www.airbnb.com/s/Tokyo--Japan/homes\"}]},{\"tool_name_cn\":\"位置\",\"tool_sign\":\"airbnb_product_by-location\",\"spider_name\":\"airbnb.com\",\"params\":[{\"param\":\"location\",\"required\":true,\"input_mode\":\"user_input\"}]}]\n\nFile v1.3.1:skill-card.md\n\n## Description:\n\nCollect structured Airbnb listing results from a known Airbnb search-results URL through Dataify.\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\nExternal users and developers use this skill to collect structured Airbnb listing results from a provided Airbnb search URL, submit the Dataify Builder task, monitor completion, and return the final collected JSON result.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The security review marks the skill as suspicious because an Airbnb-specific description is packaged with broader scraping and workflow code.\n\nMitigation: Review before installation and remove or isolate unrelated business workflow scripts if only Airbnb search-result collection is needed.\n\nRisk: Credential handling can expose or over-retain a Dataify API token if users paste tokens into chat or store broad tokens permanently.\n\nMitigation: Use a limited Dataify token, never paste it into chat, avoid permanent shell-profile storage when unnecessary, and rotate or review the key if it is rejected.\n\nRisk: Generated curl commands or edited URLs can initiate paid Dataify requests against untrusted or unintended targets.\n\nMitigation: Review the target URL and generated command before execution, use only trusted complete HTTP(S) Airbnb search URLs, and avoid executing commands for untrusted or edited URLs.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/dataify-server/skills/dataify-airbnb-product-by-searchurl)\n- [Tool parameter catalog](artifact/references/tool-params.json)\n- [Skill source](artifact/SKILL.md)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, JSON]\n\n**Output Format:** [Markdown guidance with shell commands and JSON task results]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires a Dataify API token and a valid Airbnb search URL; may return a task ID and resume command if monitoring times out.]\n\n## Skill Version(s):\n\n1.3.1 (source: server release metadata)\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-airbnb-product-by-searchurl\"\ndescription: \"为 airbnb.com 上以 airbnb_product_by-searchurl 为根的 scraper 系列准备 Dataify builder 请求。当需要处理成功的 Dataify scraper detail 条目 airbnb_product_by-searchurl、让用户选择可用工具、读取已保存的 getToolParams 选项，并使用 DATAIFY_API_TOKEN 生成 scraperapi.dataify.com/builder curl 请求时，使用此 skill。\"\n---\n\n# Dataify Builder Skill 中文版\n\n这个 skill 用于为 `airbnb.com` 下、以 `airbnb_product_by-searchurl` 为入口的 Dataify scraper 工具族生成 builder 请求。\n\n## 工作流程\n\n1. 先检查环境变量中是否存在 `DATAIFY_API_TOKEN`。\n2. 如果 token 缺失，告诉用户：`Dataify 需要 API Token。新账号注册即得 50 免费积分，约可获得 6000 条试用结果，7 天有效，仅成功请求计费。注册完成后告诉我，我会继续当前任务。`。\n3. 先让用户从下面的中文工具列表中明确选择一个工具：\n- 搜索URL (airbnb_product_by-searchurl)\n- 位置 (airbnb_product_by-location)\n4. 再读取 `references/tool-params.json`，根据 `tool_sign` 或中文工具名找到对应工具。\n5. 对所选工具的每个参数分别处理：\n   - 如果 `input_mode` 是 `user_input`，让用户提供值。\n   - 如果 `input_mode` 是 `select`，把已保存的可选项展示给用户，让用户选择。\n6. 默认优先使用 `scripts/build-dataify-request.py`，因为它是跨平台版本。\n7. Windows 下也可以使用 `scripts/build-dataify-request.ps1`。\n8. 对于可选型参数，如果存在人类可读标签，优先把该标签写入 `spider_parameters`。除非用户明确要求编码值，否则不要把“香港”替换成 `HK`。\n9. `spider_parameters` 必须是一个 JSON 数组。\n10. 如果所有参数最终都只有一组值，就生成一个对象，例如 `[{\"searchurl\":\"...\",\"country\":\"Hong Kong\"}]`。\n11. 如果某些参数有多组一一对应的值，就按索引对齐，生成多个对象。例如 `[{\"search_url\":\"url1\",\"page_turning\":\"1\",\"max_num\":\"15\"},{\"search_url\":\"url2\",\"page_turning\":\"1\",\"max_num\":\"15\"}]`。\n12. 如果某个参数只有一个值，而另一个参数有多个值，则将这个单值复用到每一行。\n13. `spider_name` 固定取 `airbnb.com`。\n14. `spider_id` 固定取用户所选工具的 `tool_sign`。\n15. 始终包含 `spider_errors=true` 和 `file_name={{TasksID}}`。\n16. 最终输出 `https://scraperapi.dataify.com/builder` 的 `curl` 请求。\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\nPython：\n\n```bash\npython scripts/build-dataify-request.py --tool-sign <selected_tool_sign> --values-file values.json\n```\n\nPowerShell：\n\n```powershell\n& \".\\scripts\\build-dataify-request.ps1\" -ToolSign \"<selected_tool_sign>\" -ValuesFile \".\\values.json\"\n```\n\n`values.json` 可以是单个对象，也可以是对象数组。例如：\n\n```json\n[{\"searchurl\":\"https://www.airbnb.com/s/Greece/homes?...\",\"country\":\"Hong Kong\"}]\n```\n\n## 输出格式\n\n最终 `curl` 命令应为：\n\n```bash\ncurl -X POST 'https://scraperapi.dataify.com/builder' \\\n  -H \"Authorization: Bearer $DATAIFY_API_TOKEN\" \\\n  -H 'Content-Type: application/x-www-form-urlencoded' \\\n  -d 'spider_name=airbnb.com' \\\n  -d 'spider_id=<selected_tool_sign>' \\\n  -d 'spider_parameters=[{\"param\":\"value\"}]' \\\n  -d 'spider_errors=true' \\\n  -d 'file_name={{TasksID}}'\n```\n\n## 参考文件\n\n- `references/tool-params.json` 保存了这个 skill 下所有工具及参数选项。\n- `scripts/build-dataify-request.py` 是首选的跨平台实现。\n- `scripts/build-dataify-request.ps1` 是 Windows PowerShell 版本。\n- 如果参数没有预设选项，必须向用户要值。\n- 不要假设 `spider_parameters` 永远只有一个对象；多值工具可能需要按索引生成多个对象。\n- `url_example` 仅作为参考，不要默认用户就要用示例值，除非用户明确确认。\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 Airbnb Builder\"\n  short_description: \"Collect Airbnb Builder data and return results\"\n  default_prompt: \"Use $dataify-airbnb-product-by-searchurl to complete the requested Dataify collection, wait for the asynchronous task, and return the final collected result. Stop at task submission only when I explicitly request no-wait behavior.\"\n\nArchive v1.3.0: 8 files, 10064 bytes\n\nFiles: agents/openai.yaml (376b), references/tool-params.json (218b), scripts/build-dataify-request.ps1 (294b), scripts/build-dataify-request.py (408b), skill-card.md (2205b), SKILL.md (8294b), SKILL.zh-CN.md (6976b), _meta.json (154b)\n\nFile v1.3.0:SKILL.md\n\n---\nname: \"dataify-airbnb-product-by-searchurl\"\ndescription: \"Collect structured Airbnb listing results from a known Airbnb search-results URL. Use when the user provides or wants to scrape an Airbnb search URL. Do not use for general hotel discovery or Booking.com URLs.\"\n---\n\n# Dataify Builder Skill\n\nUse this skill to prepare Dataify builder requests for the scraper family rooted at `airbnb_product_by-searchurl` on `airbnb.com`.\n\n\n## Quick Start\n\n**Input:** an Airbnb search URL.\n\n```bash\npython3 scripts/build-dataify-request.py --tool-sign airbnb_product_by-searchurl --params-json '[{\"searchurl\":\"https://www.airbnb.com/s/Paris--France/homes\"}]'\n```\n\nThis submits the task, waits for completion, downloads the final result, and returns it. Add `--no-wait` only when submission-only behavior is requested.\n## Workflow\n\n1. Check whether `DATAIFY_API_TOKEN` exists in the environment.\n2. 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 it.\n3. Ask the user to choose exactly one tool from the following Chinese list:\n- 搜索URL (airbnb_product_by-searchurl)\n- 位置 (airbnb_product_by-location)\n4. Read `references/tool-params.json` and find the chosen tool by `tool_sign` or Chinese tool name.\n5. For each parameter in the chosen tool:\n   - If `input_mode` is `user_input`, ask the user for the value.\n   - If `input_mode` is `select`, present the saved options to the user.\n6. Use `scripts/build-dataify-request.py` as the default cross-platform helper.\n7. Use `scripts/build-dataify-request.ps1` as the Windows PowerShell helper when needed.\n8. When a selectable parameter has a human-readable Chinese label, keep that label in `spider_parameters`. Do not replace it with a code such as `HK` unless the user explicitly asks for the coded value.\n9. Build `spider_parameters` as a JSON array.\n10. If every parameter has only one final value, build one object such as `[{\"searchurl\":\"...\",\"country\":\"Hong Kong\"}]`.\n11. If one or more parameters have multiple aligned values, zip them by index and build one object per row. Example: `[{\"search_url\":\"url1\",\"page_turning\":\"1\",\"max_num\":\"15\"},{\"search_url\":\"url2\",\"page_turning\":\"1\",\"max_num\":\"15\"}]`.\n12. If a parameter has one value while another parameter has multiple values, reuse the single value across every generated row.\n13. Set `spider_name` to `airbnb.com`.\n14. Set `spider_id` to the selected tool's `tool_sign`.\n15. Always include `spider_errors=true` and `file_name={{TasksID}}`.\n16. Return a curl command for `https://scraperapi.dataify.com/builder`.\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```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```powershell\n$env:DATAIFY_API_TOKEN = \"your_token_here\"\n```\n\nmacOS or Linux, permanent for bash:\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\nmacOS or Linux, permanent for zsh:\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n## Script usage\n\nPython:\n```bash\npython scripts/build-dataify-request.py --tool-sign <selected_tool_sign> --values-file values.json\n```\n\nPowerShell:\n```powershell\n& \".\\scripts\\build-dataify-request.ps1\" -ToolSign \"<selected_tool_sign>\" -ValuesFile \".\\values.json\"\n```\n\nThe `values.json` file should contain either one object or an array of objects. Example:\n```json\n[{\"searchurl\":\"https://www.airbnb.com/s/Greece/homes?...\",\"country\":\"Hong Kong\"}]\n```\n\n## Required output shape\n\nGenerate a curl command in this form:\n\n```bash\ncurl -X POST 'https://scraperapi.dataify.com/builder' \\\n  -H \"Authorization: Bearer $DATAIFY_API_TOKEN\" \\\n  -H 'Content-Type: application/x-www-form-urlencoded' \\\n  -d 'spider_name=airbnb.com' \\\n  -d 'spider_id=<selected_tool_sign>' \\\n  -d 'spider_parameters=[{\"param\":\"value\"}]' \\\n  -d 'spider_errors=true' \\\n  -d 'file_name={{TasksID}}'\n```\n\n## Reference usage\n\n- `references/tool-params.json` stores the full saved parameter catalog for every available tool in this scraper family.\n- `scripts/build-dataify-request.py` is the portable implementation and should be preferred.\n- `scripts/build-dataify-request.ps1` mirrors the same behavior for Windows users.\n- If a parameter has no options, the user must provide the value.\n- Do not assume `spider_parameters` always contains exactly one object. Multi-value tools may require multiple objects zipped by index.\n- Use the saved `url_example` only as a reference example. Do not assume the user wants the example values unless they explicitly confirm them.\n\n## Default completion behavior\n\nThe default deliverable is the collected result, not only a `task_id`.\n\n1. Submit the Builder task once and capture its `task_id`.\n2. Immediately continue with `$dataify-task-operations` and monitor the same task ID.\n   - Use the default 600-second wait for ordinary collections.\n   - Use `--timeout 1800` for media downloads or clearly high-volume, multi-page, or multi-input collections.\n3. When the task succeeds, download and return the final JSON result. Summarize large payloads while preserving access to the raw result.\n4. If monitoring times out or is interrupted, return the task ID and a resume command. Do not resubmit the paid task.\n5. Stop after submission only when the user explicitly asks for submission only, a task ID, or `--no-wait` behavior.\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-airbnb-product-by-searchurl\",\n  \"version\": \"1.3.0\",\n  \"publishedAt\": 1788253911729\n}\n\nFile v1.3.0:references/tool-params.json\n\n[{\"tool_name_cn\":\"搜索URL\",\"tool_sign\":\"airbnb_product_by-searchurl\",\"spider_name\":\"airbnb.com\",\"params\":[]},{\"tool_name_cn\":\"位置\",\"tool_sign\":\"airbnb_product_by-location\",\"spider_name\":\"airbnb.com\",\"params\":[]}]\n\nFile v1.3.0:skill-card.md\n\n## Description:\n\nCollect structured Airbnb listing results from a known Airbnb search-results URL.\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\nExternal users and developers use this skill to prepare and run Dataify Builder requests that collect Airbnb listing results from a supplied Airbnb search URL, then wait for and return the collected JSON result.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill submits Airbnb target URLs and collection parameters to Dataify using the user's account token.\n\nMitigation: Install and use it only when Dataify collection is intended, avoid sharing tokens in chat, and prefer a session-scoped DATAIFY_API_TOKEN unless persistent setup is required.\n\nRisk: The package exposes broader Airbnb scraping behavior than the search-URL-focused description suggests because it includes both search-URL and location-based collection options.\n\nMitigation: Review the selected tool before execution and confirm scope when a request could increase collection volume or credit usage.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/dataify-server/skills/dataify-airbnb-product-by-searchurl)\n- [Publisher profile](https://clawhub.ai/user/dataify-server)\n- [Dataify dashboard](https://dashboard.dataify.com/login?utm_source=skill)\n- [Tool parameter catalog](references/tool-params.json)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown with inline shell commands and JSON result summaries]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May submit paid external Dataify scraping tasks and return summarized collected JSON while preserving access to the raw result.]\n\n## Skill Version(s):\n\n1.3.0 (source: 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.0:SKILL.zh-CN.md\n\n---\nname: \"dataify-airbnb-product-by-searchurl\"\ndescription: \"为 airbnb.com 上以 airbnb_product_by-searchurl 为根的 scraper 系列准备 Dataify builder 请求。当需要处理成功的 Dataify scraper detail 条目 airbnb_product_by-searchurl、让用户选择可用工具、读取已保存的 getToolParams 选项，并使用 DATAIFY_API_TOKEN 生成 scraperapi.dataify.com/builder curl 请求时，使用此 skill。\"\n---\n\n# Dataify Builder Skill 中文版\n\n这个 skill 用于为 `airbnb.com` 下、以 `airbnb_product_by-searchurl` 为入口的 Dataify scraper 工具族生成 builder 请求。\n\n## 工作流程\n\n1. 先检查环境变量中是否存在 `DATAIFY_API_TOKEN`。\n2. 如果 token 缺失，提示用户前往 <a href=\"https://dashboard.dataify.com?utm_source=skill\">dataify&#23448;&#32593;</a> 获取。\n3. 先让用户从下面的中文工具列表中明确选择一个工具：\n- 搜索URL (airbnb_product_by-searchurl)\n- 位置 (airbnb_product_by-location)\n4. 再读取 `references/tool-params.json`，根据 `tool_sign` 或中文工具名找到对应工具。\n5. 对所选工具的每个参数分别处理：\n   - 如果 `input_mode` 是 `user_input`，让用户提供值。\n   - 如果 `input_mode` 是 `select`，把已保存的可选项展示给用户，让用户选择。\n6. 默认优先使用 `scripts/build-dataify-request.py`，因为它是跨平台版本。\n7. Windows 下也可以使用 `scripts/build-dataify-request.ps1`。\n8. 对于可选型参数，如果存在人类可读标签，优先把该标签写入 `spider_parameters`。除非用户明确要求编码值，否则不要把“香港”替换成 `HK`。\n9. `spider_parameters` 必须是一个 JSON 数组。\n10. 如果所有参数最终都只有一组值，就生成一个对象，例如 `[{\"searchurl\":\"...\",\"country\":\"Hong Kong\"}]`。\n11. 如果某些参数有多组一一对应的值，就按索引对齐，生成多个对象。例如 `[{\"search_url\":\"url1\",\"page_turning\":\"1\",\"max_num\":\"15\"},{\"search_url\":\"url2\",\"page_turning\":\"1\",\"max_num\":\"15\"}]`。\n12. 如果某个参数只有一个值，而另一个参数有多个值，则将这个单值复用到每一行。\n13. `spider_name` 固定取 `airbnb.com`。\n14. `spider_id` 固定取用户所选工具的 `tool_sign`。\n15. 始终包含 `spider_errors=true` 和 `file_name={{TasksID}}`。\n16. 最终输出 `https://scraperapi.dataify.com/builder` 的 `curl` 请求。\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\nPython：\n\n```bash\npython scripts/build-dataify-request.py --tool-sign <selected_tool_sign> --values-file values.json\n```\n\nPowerShell：\n\n```powershell\n& \".\\scripts\\build-dataify-request.ps1\" -ToolSign \"<selected_tool_sign>\" -ValuesFile \".\\values.json\"\n```\n\n`values.json` 可以是单个对象，也可以是对象数组。例如：\n\n```json\n[{\"searchurl\":\"https://www.airbnb.com/s/Greece/homes?...\",\"country\":\"Hong Kong\"}]\n```\n\n## 输出格式\n\n最终 `curl` 命令应为：\n\n```bash\ncurl -X POST 'https://scraperapi.dataify.com/builder' \\\n  -H \"Authorization: Bearer $DATAIFY_API_TOKEN\" \\\n  -H 'Content-Type: application/x-www-form-urlencoded' \\\n  -d 'spider_name=airbnb.com' \\\n  -d 'spider_id=<selected_tool_sign>' \\\n  -d 'spider_parameters=[{\"param\":\"value\"}]' \\\n  -d 'spider_errors=true' \\\n  -d 'file_name={{TasksID}}'\n```\n\n## 参考文件\n\n- `references/tool-params.json` 保存了这个 skill 下所有工具及参数选项。\n- `scripts/build-dataify-request.py` 是首选的跨平台实现。\n- `scripts/build-dataify-request.ps1` 是 Windows PowerShell 版本。\n- 如果参数没有预设选项，必须向用户要值。\n- 不要假设 `spider_parameters` 永远只有一个对象；多值工具可能需要按索引生成多个对象。\n- `url_example` 仅作为参考，不要默认用户就要用示例值，除非用户明确确认。\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 Airbnb Builder\"\n  short_description: \"Collect Airbnb Builder data and return results\"\n  default_prompt: \"Use $dataify-airbnb-product-by-searchurl to complete the requested Dataify collection, wait for the asynchronous task, and return the final collected result. Stop at task submission only when I explicitly request no-wait behavior.\"\n\nArchive v1.2.0: 8 files, 8292 bytes\n\nFiles: agents/openai.yaml (227b), references/tool-params.json (218b), scripts/build-dataify-request.ps1 (294b), scripts/build-dataify-request.py (3728b), skill-card.md (2265b), SKILL.md (4740b), SKILL.zh-CN.md (4547b), _meta.json (154b)\n\nFile v1.2.0:SKILL.md\n\n---\nname: \"dataify-airbnb-product-by-searchurl\"\ndescription: \"Prepare Dataify builder requests for the airbnb.com scraper family rooted at airbnb_product_by-searchurl. Use  when needs to work with the successful Dataify scraper detail entry for airbnb_product_by-searchurl, let the user choose one of its available tools, read saved getToolParams options, and generate a scraperapi.dataify.com/builder curl request with DATAIFY_API_TOKEN.\"\n---\n\n# Dataify Builder Skill\n\nUse this skill to prepare Dataify builder requests for the scraper family rooted at `airbnb_product_by-searchurl` on `airbnb.com`.\n\n## Workflow\n\n1. Check whether `DATAIFY_API_TOKEN` exists in the environment.\n2. 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 it.\n3. Ask the user to choose exactly one tool from the following Chinese list:\n- 搜索URL (airbnb_product_by-searchurl)\n- 位置 (airbnb_product_by-location)\n4. Read `references/tool-params.json` and find the chosen tool by `tool_sign` or Chinese tool name.\n5. For each parameter in the chosen tool:\n   - If `input_mode` is `user_input`, ask the user for the value.\n   - If `input_mode` is `select`, present the saved options to the user.\n6. Use `scripts/build-dataify-request.py` as the default cross-platform helper.\n7. Use `scripts/build-dataify-request.ps1` as the Windows PowerShell helper when needed.\n8. When a selectable parameter has a human-readable Chinese label, keep that label in `spider_parameters`. Do not replace it with a code such as `HK` unless the user explicitly asks for the coded value.\n9. Build `spider_parameters` as a JSON array.\n10. If every parameter has only one final value, build one object such as `[{\"searchurl\":\"...\",\"country\":\"Hong Kong\"}]`.\n11. If one or more parameters have multiple aligned values, zip them by index and build one object per row. Example: `[{\"search_url\":\"url1\",\"page_turning\":\"1\",\"max_num\":\"15\"},{\"search_url\":\"url2\",\"page_turning\":\"1\",\"max_num\":\"15\"}]`.\n12. If a parameter has one value while another parameter has multiple values, reuse the single value across every generated row.\n13. Set `spider_name` to `airbnb.com`.\n14. Set `spider_id` to the selected tool's `tool_sign`.\n15. Always include `spider_errors=true` and `file_name={{TasksID}}`.\n16. Return a curl command for `https://scraperapi.dataify.com/builder`.\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```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```powershell\n$env:DATAIFY_API_TOKEN = \"your_token_here\"\n```\n\nmacOS or Linux, permanent for bash:\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\nmacOS or Linux, permanent for zsh:\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n## Script usage\n\nPython:\n```bash\npython scripts/build-dataify-request.py --tool-sign <selected_tool_sign> --values-file values.json\n```\n\nPowerShell:\n```powershell\n& \".\\scripts\\build-dataify-request.ps1\" -ToolSign \"<selected_tool_sign>\" -ValuesFile \".\\values.json\"\n```\n\nThe `values.json` file should contain either one object or an array of objects. Example:\n```json\n[{\"searchurl\":\"https://www.airbnb.com/s/Greece/homes?...\",\"country\":\"Hong Kong\"}]\n```\n\n## Required output shape\n\nGenerate a curl command in this form:\n\n```bash\ncurl -X POST 'https://scraperapi.dataify.com/builder' \\\n  -H \"Authorization: Bearer $DATAIFY_API_TOKEN\" \\\n  -H 'Content-Type: application/x-www-form-urlencoded' \\\n  -d 'spider_name=airbnb.com' \\\n  -d 'spider_id=<selected_tool_sign>' \\\n  -d 'spider_parameters=[{\"param\":\"value\"}]' \\\n  -d 'spider_errors=true' \\\n  -d 'file_name={{TasksID}}'\n```\n\n## Reference usage\n\n- `references/tool-params.json` stores the full saved parameter catalog for every available tool in this scraper family.\n- `scripts/build-dataify-request.py` is the portable implementation and should be preferred.\n- `scripts/build-dataify-request.ps1` mirrors the same behavior for Windows users.\n- If a parameter has no options, the user must provide the value.\n- If a parameter has options, present those options back to the user before building the final request.\n- Do not assume `spider_parameters` always contains exactly one object. Multi-value tools may require multiple objects zipped by index.\n- Use the saved `url_example` only as a reference example. Do not assume the user wants the example values unless they explicitly confirm them.\n\nFile v1.2.0:_meta.json\n\n{\n  \"ownerId\": \"kn74z5hmmwk21kw8tpphd9w21x86bkdf\",\n  \"slug\": \"dataify-airbnb-product-by-searchurl\",\n  \"version\": \"1.2.0\",\n  \"publishedAt\": 1784190895338\n}\n\nFile v1.2.0:references/tool-params.json\n\n[{\"tool_name_cn\":\"搜索URL\",\"tool_sign\":\"airbnb_product_by-searchurl\",\"spider_name\":\"airbnb.com\",\"params\":[]},{\"tool_name_cn\":\"位置\",\"tool_sign\":\"airbnb_product_by-location\",\"spider_name\":\"airbnb.com\",\"params\":[]}]\n\nFile v1.2.0:skill-card.md\n\n## Description: <br>\nPrepare Dataify builder requests for the airbnb.com scraper family rooted at airbnb_product_by-searchurl, including tool selection, saved parameter lookup, and generation of a scraperapi.dataify.com builder curl request using DATAIFY_API_TOKEN. <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 users use this skill to prepare Dataify Airbnb scraper builder calls by choosing an available scraper tool, collecting parameter values, and producing an executable curl request. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: DATAIFY_API_TOKEN is required and could be exposed through shell history, profile edits, terminals, or logs. <br>\nMitigation: Treat the token as a secret, avoid committing or sharing token setup commands, and review generated commands before running them. <br>\nRisk: User-provided spider parameters may include sensitive personal data sent to Dataify. <br>\nMitigation: Only include personal or sensitive data in spider_parameters when the user intends to send it to Dataify. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/dataify-server/skills/dataify-airbnb-product-by-searchurl) <br>\n- [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) <br>\n- [Saved tool parameter catalog](references/tool-params.json) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Shell commands, Configuration, Guidance] <br>\n**Output Format:** [Markdown containing a curl command and brief setup guidance] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires DATAIFY_API_TOKEN and user-provided scraper parameter values; generated requests target Dataify's builder endpoint.] <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-airbnb-product-by-searchurl\"\ndescription: \"为 airbnb.com 上以 airbnb_product_by-searchurl 为根的 scraper 系列准备 Dataify builder 请求。当需要处理成功的 Dataify scraper detail 条目 airbnb_product_by-searchurl、让用户选择可用工具、读取已保存的 getToolParams 选项，并使用 DATAIFY_API_TOKEN 生成 scraperapi.dataify.com/builder curl 请求时，使用此 skill。\"\n---\n\n# Dataify Builder Skill 中文版\n\n这个 skill 用于为 `airbnb.com` 下、以 `airbnb_product_by-searchurl` 为入口的 Dataify scraper 工具族生成 builder 请求。\n\n## 工作流程\n\n1. 先检查环境变量中是否存在 `DATAIFY_API_TOKEN`。\n2. 如果 token 缺失，提示用户前往 <a href=\"https://dashboard.dataify.com?utm_source=skill\">dataify&#23448;&#32593;</a> 获取。\n3. 先让用户从下面的中文工具列表中明确选择一个工具：\n- 搜索URL (airbnb_product_by-searchurl)\n- 位置 (airbnb_product_by-location)\n4. 再读取 `references/tool-params.json`，根据 `tool_sign` 或中文工具名找到对应工具。\n5. 对所选工具的每个参数分别处理：\n   - 如果 `input_mode` 是 `user_input`，让用户提供值。\n   - 如果 `input_mode` 是 `select`，把已保存的可选项展示给用户，让用户选择。\n6. 默认优先使用 `scripts/build-dataify-request.py`，因为它是跨平台版本。\n7. Windows 下也可以使用 `scripts/build-dataify-request.ps1`。\n8. 对于可选型参数，如果存在人类可读标签，优先把该标签写入 `spider_parameters`。除非用户明确要求编码值，否则不要把“香港”替换成 `HK`。\n9. `spider_parameters` 必须是一个 JSON 数组。\n10. 如果所有参数最终都只有一组值，就生成一个对象，例如 `[{\"searchurl\":\"...\",\"country\":\"Hong Kong\"}]`。\n11. 如果某些参数有多组一一对应的值，就按索引对齐，生成多个对象。例如 `[{\"search_url\":\"url1\",\"page_turning\":\"1\",\"max_num\":\"15\"},{\"search_url\":\"url2\",\"page_turning\":\"1\",\"max_num\":\"15\"}]`。\n12. 如果某个参数只有一个值，而另一个参数有多个值，则将这个单值复用到每一行。\n13. `spider_name` 固定取 `airbnb.com`。\n14. `spider_id` 固定取用户所选工具的 `tool_sign`。\n15. 始终包含 `spider_errors=true` 和 `file_name={{TasksID}}`。\n16. 最终输出 `https://scraperapi.dataify.com/builder` 的 `curl` 请求。\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\nPython：\n\n```bash\npython scripts/build-dataify-request.py --tool-sign <selected_tool_sign> --values-file values.json\n```\n\nPowerShell：\n\n```powershell\n& \".\\scripts\\build-dataify-request.ps1\" -ToolSign \"<selected_tool_sign>\" -ValuesFile \".\\values.json\"\n```\n\n`values.json` 可以是单个对象，也可以是对象数组。例如：\n\n```json\n[{\"searchurl\":\"https://www.airbnb.com/s/Greece/homes?...\",\"country\":\"Hong Kong\"}]\n```\n\n## 输出格式\n\n最终 `curl` 命令应为：\n\n```bash\ncurl -X POST 'https://scraperapi.dataify.com/builder' \\\n  -H \"Authorization: Bearer $DATAIFY_API_TOKEN\" \\\n  -H 'Content-Type: application/x-www-form-urlencoded' \\\n  -d 'spider_name=airbnb.com' \\\n  -d 'spider_id=<selected_tool_sign>' \\\n  -d 'spider_parameters=[{\"param\":\"value\"}]' \\\n  -d 'spider_errors=true' \\\n  -d 'file_name={{TasksID}}'\n```\n\n## 参考文件\n\n- `references/tool-params.json` 保存了这个 skill 下所有工具及参数选项。\n- `scripts/build-dataify-request.py` 是首选的跨平台实现。\n- `scripts/build-dataify-request.ps1` 是 Windows PowerShell 版本。\n- 如果参数没有预设选项，必须向用户要值。\n- 如果参数有预设选项，先把选项展示给用户，再生成最终请求。\n- 不要假设 `spider_parameters` 永远只有一个对象；多值工具可能需要按索引生成多个对象。\n- `url_example` 仅作为参考，不要默认用户就要用示例值，除非用户明确确认。\n\nFile v1.2.0:agents/openai.yaml\n\ninterface:\n  display_name: \"Dataify Airbnb Builder\"\n  short_description: \"Prepare Dataify builder calls for airbnb.com\"\n  default_prompt: \"Use $dataify-airbnb-product-by-searchurl to prepare a Dataify builder curl request.\"\n\nArchive v1.1.0: 6 files, 7708 bytes\n\nFiles: agents/openai.yaml (227b), scripts/build-dataify-request.py (3721b), skill-card.md (2303b), SKILL.md (4743b), SKILL.zh-CN.md (4547b), _meta.json (154b)\n\nFile v1.1.0:SKILL.md\n\n---\nname: \"dataify-airbnb-product-by-searchurl\"\ndescription: \"Prepare Dataify builder requests for the airbnb.com scraper family rooted at airbnb_product_by-searchurl. Use  when needs to work with the successful Dataify scraper detail entry for airbnb_product_by-searchurl, let the user choose one of its available tools, read saved getToolParams options, and generate a scraperapi.dataify.com/builder curl request with DATAIFY_API_TOKEN.\"\n---\n\n# Dataify Builder Skill\n\nUse this skill to prepare Dataify builder requests for the scraper family rooted at `airbnb_product_by-searchurl` on `airbnb.com`.\n\n## Workflow\n\n1. Check whether `DATAIFY_API_TOKEN` exists in the environment.\n2. 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 it.\n3. Ask the user to choose exactly one tool from the following Chinese list:\n- 搜索URL (airbnb_product_by-searchurl)\n- 位置 (airbnb_product_by-location)\n4. Read `references/tool-params.json` and find the chosen tool by `tool_sign` or Chinese tool name.\n5. For each parameter in the chosen tool:\n   - If `input_mode` is `user_input`, ask the user for the value.\n   - If `input_mode` is `select`, present the saved options to the user.\n6. Use `scripts/build-dataify-request.py` as the default cross-platform helper.\n7. Use `scripts/build-dataify-request.ps1` as the Windows PowerShell helper when needed.\n8. When a selectable parameter has a human-readable Chinese label, keep that label in `spider_parameters`. Do not replace it with a code such as `HK` unless the user explicitly asks for the coded value.\n9. Build `spider_parameters` as a JSON array.\n10. If every parameter has only one final value, build one object such as `[{\"searchurl\":\"...\",\"country\":\"Hong Kong\"}]`.\n11. If one or more parameters have multiple aligned values, zip them by index and build one object per row. Example: `[{\"search_url\":\"url1\",\"page_turning\":\"1\",\"max_num\":\"15\"},{\"search_url\":\"url2\",\"page_turning\":\"1\",\"max_num\":\"15\"}]`.\n12. If a parameter has one value while another parameter has multiple values, reuse the single value across every generated row.\n13. Set `spider_name` to `airbnb.com`.\n14. Set `spider_id` to the selected tool's `tool_sign`.\n15. Always include `spider_errors=true` and `file_name={{TasksID}}`.\n16. Return a curl command for `https://scraperapi.dataify.com/builder`.\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```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```powershell\n$env:DATAIFY_API_TOKEN = \"your_token_here\"\n```\n\nmacOS or Linux, permanent for bash:\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\nmacOS or Linux, permanent for zsh:\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n## Script usage\n\nPython:\n```bash\npython scripts/build-dataify-request.py --tool-sign <selected_tool_sign> --values-file values.json\n```\n\nPowerShell:\n```powershell\n& \".\\scripts\\build-dataify-request.ps1\" -ToolSign \"<selected_tool_sign>\" -ValuesFile \".\\values.json\"\n```\n\nThe `values.json` file should contain either one object or an array of objects. Example:\n```json\n[{\"searchurl\":\"https://www.airbnb.com/s/Greece/homes?...\",\"country\":\"Hong Kong\"}]\n```\n\n## Required output shape\n\nGenerate a curl command in this form:\n\n```bash\ncurl -X POST 'https://scraperapi.dataify.com/builder' \\\n  -H \"Authorization: Bearer $DATAIFY_API_TOKEN\" \\\n  -H 'Content-Type: application/x-www-form-urlencoded' \\\n  -d 'spider_name=airbnb.com' \\\n  -d 'spider_id=<selected_tool_sign>' \\\n  -d 'spider_parameters=[{\"param\":\"value\"}]' \\\n  -d 'spider_errors=true' \\\n  -d 'file_name={{TasksID}}'\n```\n\n## Reference usage\n\n- `references/tool-params.json` stores the full saved parameter catalog for every available tool in this scraper family.\n- `scripts/build-dataify-request.py` is the portable implementation and should be preferred.\n- `scripts/build-dataify-request.ps1` mirrors the same behavior for Windows users.\n- If a parameter has no options, the user must provide the value.\n- If a parameter has options, present those options back to the user before building the final request.\n- Do not assume `spider_parameters` always contains exactly one object. Multi-value tools may require multiple objects zipped by index.\n- Use the saved `url_example` only as a reference example. Do not assume the user wants the example values unless they explicitly confirm them.\n\nFile v1.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn74z5hmmwk21kw8tpphd9w21x86bkdf\",\n  \"slug\": \"dataify-airbnb-product-by-searchurl\",\n  \"version\": \"1.1.0\",\n  \"publishedAt\": 1780884312322\n}\n\nFile v1.1.0:skill-card.md\n\n## Description: <br>\nPrepares Dataify builder requests for Airbnb scraper tools rooted at airbnb_product_by-searchurl, guiding tool selection, parameter collection, and curl generation with DATAIFY_API_TOKEN. <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 operators use this skill to prepare Dataify builder curl requests for Airbnb scraping workflows, including tool choice, saved parameter options, and multi-row spider_parameters payloads. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Generated curl output can expose a real Dataify API token if shared or logged. <br>\nMitigation: Prefer commands that reference $DATAIFY_API_TOKEN, review generated output before sharing, and avoid storing token-bearing curl commands in tickets, logs, or documentation. <br>\nRisk: The packaged artifact appears to be missing the parameter catalog required by the documented workflow. <br>\nMitigation: Confirm that references/tool-params.json is available before relying on saved tool parameters, or provide parameter values explicitly during use. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/dataify-server/dataify-airbnb-product-by-searchurl) <br>\n- [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) <br>\n- [Dataify builder endpoint](https://scraperapi.dataify.com/builder) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown with inline bash, PowerShell, and JSON examples] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Produces curl requests and setup guidance; generated commands can contain sensitive Dataify token material if the helper expands the environment variable.] <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-airbnb-product-by-searchurl\"\ndescription: \"为 airbnb.com 上以 airbnb_product_by-searchurl 为根的 scraper 系列准备 Dataify builder 请求。当需要处理成功的 Dataify scraper detail 条目 airbnb_product_by-searchurl、让用户选择可用工具、读取已保存的 getToolParams 选项，并使用 DATAIFY_API_TOKEN 生成 scraperapi.dataify.com/builder curl 请求时，使用此 skill。\"\n---\n\n# Dataify Builder Skill 中文版\n\n这个 skill 用于为 `airbnb.com` 下、以 `airbnb_product_by-searchurl` 为入口的 Dataify scraper 工具族生成 builder 请求。\n\n## 工作流程\n\n1. 先检查环境变量中是否存在 `DATAIFY_API_TOKEN`。\n2. 如果 token 缺失，提示用户前往 <a href=\"https://dashboard.dataify.com?utm_source=skill\">dataify&#23448;&#32593;</a> 获取。\n3. 先让用户从下面的中文工具列表中明确选择一个工具：\n- 搜索URL (airbnb_product_by-searchurl)\n- 位置 (airbnb_product_by-location)\n4. 再读取 `references/tool-params.json`，根据 `tool_sign` 或中文工具名找到对应工具。\n5. 对所选工具的每个参数分别处理：\n   - 如果 `input_mode` 是 `user_input`，让用户提供值。\n   - 如果 `input_mode` 是 `select`，把已保存的可选项展示给用户，让用户选择。\n6. 默认优先使用 `scripts/build-dataify-request.py`，因为它是跨平台版本。\n7. Windows 下也可以使用 `scripts/build-dataify-request.ps1`。\n8. 对于可选型参数，如果存在人类可读标签，优先把该标签写入 `spider_parameters`。除非用户明确要求编码值，否则不要把“香港”替换成 `HK`。\n9. `spider_parameters` 必须是一个 JSON 数组。\n10. 如果所有参数最终都只有一组值，就生成一个对象，例如 `[{\"searchurl\":\"...\",\"country\":\"Hong Kong\"}]`。\n11. 如果某些参数有多组一一对应的值，就按索引对齐，生成多个对象。例如 `[{\"search_url\":\"url1\",\"page_turning\":\"1\",\"max_num\":\"15\"},{\"search_url\":\"url2\",\"page_turning\":\"1\",\"max_num\":\"15\"}]`。\n12. 如果某个参数只有一个值，而另一个参数有多个值，则将这个单值复用到每一行。\n13. `spider_name` 固定取 `airbnb.com`。\n14. `spider_id` 固定取用户所选工具的 `tool_sign`。\n15. 始终包含 `spider_errors=true` 和 `file_name={{TasksID}}`。\n16. 最终输出 `https://scraperapi.dataify.com/builder` 的 `curl` 请求。\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\nPython：\n\n```bash\npython scripts/build-dataify-request.py --tool-sign <selected_tool_sign> --values-file values.json\n```\n\nPowerShell：\n\n```powershell\n& \".\\scripts\\build-dataify-request.ps1\" -ToolSign \"<selected_tool_sign>\" -ValuesFile \".\\values.json\"\n```\n\n`values.json` 可以是单个对象，也可以是对象数组。例如：\n\n```json\n[{\"searchurl\":\"https://www.airbnb.com/s/Greece/homes?...\",\"country\":\"Hong Kong\"}]\n```\n\n## 输出格式\n\n最终 `curl` 命令应为：\n\n```bash\ncurl -X POST 'https://scraperapi.dataify.com/builder' \\\n  -H \"Authorization: Bearer $DATAIFY_API_TOKEN\" \\\n  -H 'Content-Type: application/x-www-form-urlencoded' \\\n  -d 'spider_name=airbnb.com' \\\n  -d 'spider_id=<selected_tool_sign>' \\\n  -d 'spider_parameters=[{\"param\":\"value\"}]' \\\n  -d 'spider_errors=true' \\\n  -d 'file_name={{TasksID}}'\n```\n\n## 参考文件\n\n- `references/tool-params.json` 保存了这个 skill 下所有工具及参数选项。\n- `scripts/build-dataify-request.py` 是首选的跨平台实现。\n- `scripts/build-dataify-request.ps1` 是 Windows PowerShell 版本。\n- 如果参数没有预设选项，必须向用户要值。\n- 如果参数有预设选项，先把选项展示给用户，再生成最终请求。\n- 不要假设 `spider_parameters` 永远只有一个对象；多值工具可能需要按索引生成多个对象。\n- `url_example` 仅作为参考，不要默认用户就要用示例值，除非用户明确确认。\n\nFile v1.1.0:agents/openai.yaml\n\ninterface:\n  display_name: \"Dataify Airbnb Builder\"\n  short_description: \"Prepare Dataify builder calls for airbnb.com\"\n  default_prompt: \"Use $dataify-airbnb-product-by-searchurl to prepare a Dataify builder curl request.\"\n\nArchive v1.0.1: 6 files, 7642 bytes\n\nFiles: agents/openai.yaml (227b), scripts/build-dataify-request.py (3721b), skill-card.md (2158b), SKILL.md (4743b), SKILL.zh-CN.md (4547b), _meta.json (154b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: \"dataify-airbnb-product-by-searchurl\"\ndescription: \"Prepare Dataify builder requests for the airbnb.com scraper family rooted at airbnb_product_by-searchurl. Use  when needs to work with the successful Dataify scraper detail entry for airbnb_product_by-searchurl, let the user choose one of its available tools, read saved getToolParams options, and generate a scraperapi.dataify.com/builder curl request with DATAIFY_API_TOKEN.\"\n---\n\n# Dataify Builder Skill\n\nUse this skill to prepare Dataify builder requests for the scraper family rooted at `airbnb_product_by-searchurl` on `airbnb.com`.\n\n## Workflow\n\n1. Check whether `DATAIFY_API_TOKEN` exists in the environment.\n2. 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 it.\n3. Ask the user to choose exactly one tool from the following Chinese list:\n- 搜索URL (airbnb_product_by-searchurl)\n- 位置 (airbnb_product_by-location)\n4. Read `references/tool-params.json` and find the chosen tool by `tool_sign` or Chinese tool name.\n5. For each parameter in the chosen tool:\n   - If `input_mode` is `user_input`, ask the user for the value.\n   - If `input_mode` is `select`, present the saved options to the user.\n6. Use `scripts/build-dataify-request.py` as the default cross-platform helper.\n7. Use `scripts/build-dataify-request.ps1` as the Windows PowerShell helper when needed.\n8. When a selectable parameter has a human-readable Chinese label, keep that label in `spider_parameters`. Do not replace it with a code such as `HK` unless the user explicitly asks for the coded value.\n9. Build `spider_parameters` as a JSON array.\n10. If every parameter has only one final value, build one object such as `[{\"searchurl\":\"...\",\"country\":\"Hong Kong\"}]`.\n11. If one or more parameters have multiple aligned values, zip them by index and build one object per row. Example: `[{\"search_url\":\"url1\",\"page_turning\":\"1\",\"max_num\":\"15\"},{\"search_url\":\"url2\",\"page_turning\":\"1\",\"max_num\":\"15\"}]`.\n12. If a parameter has one value while another parameter has multiple values, reuse the single value across every generated row.\n13. Set `spider_name` to `airbnb.com`.\n14. Set `spider_id` to the selected tool's `tool_sign`.\n15. Always include `spider_errors=true` and `file_name={{TasksID}}`.\n16. Return a curl command for `https://scraperapi.dataify.com/builder`.\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```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```powershell\n$env:DATAIFY_API_TOKEN = \"your_token_here\"\n```\n\nmacOS or Linux, permanent for bash:\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\nmacOS or Linux, permanent for zsh:\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n## Script usage\n\nPython:\n```bash\npython scripts/build-dataify-request.py --tool-sign <selected_tool_sign> --values-file values.json\n```\n\nPowerShell:\n```powershell\n& \".\\scripts\\build-dataify-request.ps1\" -ToolSign \"<selected_tool_sign>\" -ValuesFile \".\\values.json\"\n```\n\nThe `values.json` file should contain either one object or an array of objects. Example:\n```json\n[{\"searchurl\":\"https://www.airbnb.com/s/Greece/homes?...\",\"country\":\"Hong Kong\"}]\n```\n\n## Required output shape\n\nGenerate a curl command in this form:\n\n```bash\ncurl -X POST 'https://scraperapi.dataify.com/builder' \\\n  -H \"Authorization: Bearer $DATAIFY_API_TOKEN\" \\\n  -H 'Content-Type: application/x-www-form-urlencoded' \\\n  -d 'spider_name=airbnb.com' \\\n  -d 'spider_id=<selected_tool_sign>' \\\n  -d 'spider_parameters=[{\"param\":\"value\"}]' \\\n  -d 'spider_errors=true' \\\n  -d 'file_name={{TasksID}}'\n```\n\n## Reference usage\n\n- `references/tool-params.json` stores the full saved parameter catalog for every available tool in this scraper family.\n- `scripts/build-dataify-request.py` is the portable implementation and should be preferred.\n- `scripts/build-dataify-request.ps1` mirrors the same behavior for Windows users.\n- If a parameter has no options, the user must provide the value.\n- If a parameter has options, present those options back to the user before building the final request.\n- Do not assume `spider_parameters` always contains exactly one object. Multi-value tools may require multiple objects zipped by index.\n- Use the saved `url_example` only as a reference example. Do not assume the user wants the example values unless they explicitly confirm them.\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn74z5hmmwk21kw8tpphd9w21x86bkdf\",\n  \"slug\": \"dataify-airbnb-product-by-searchurl\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1780882332725\n}\n\nFile v1.0.1:skill-card.md\n\n## Description: <br>\nThis skill prepares Dataify builder curl requests for the airbnb.com scraper family rooted at airbnb_product_by-searchurl. <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 operators use this skill to choose an Airbnb Dataify scraper tool, collect required parameter values, normalize them into spider_parameters JSON, and produce a Dataify builder curl command. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Generated curl output may expose the DATAIFY_API_TOKEN bearer token in terminal history, logs, or shared transcripts. <br>\nMitigation: Use a limited-scope Dataify token when possible, avoid recording or sharing generated commands, and rotate any token that is exposed. <br>\nRisk: The artifact references helper and parameter files that are not present, so setup or execution may fail. <br>\nMitigation: Verify the packaged reference files and helper scripts before deployment, and test the selected tool path with non-sensitive sample values. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/dataify-server/dataify-airbnb-product-by-searchurl) <br>\n- [Dataify Dashboard](https://dashboard.dataify.com?utm_source=skill) <br>\n- [Dataify builder endpoint](https://scraperapi.dataify.com/builder) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Shell commands, JSON, Guidance] <br>\n**Output Format:** [Markdown with inline shell commands and JSON snippets] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Generated curl commands may contain a Dataify bearer token in the Authorization header.] <br>\n\n## Skill Version(s): <br>\n1.0.1 (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.0.1:SKILL.zh-CN.md\n\n---\nname: \"dataify-airbnb-product-by-searchurl\"\ndescription: \"为 airbnb.com 上以 airbnb_product_by-searchurl 为根的 scraper 系列准备 Dataify builder 请求。当需要处理成功的 Dataify scraper detail 条目 airbnb_product_by-searchurl、让用户选择可用工具、读取已保存的 getToolParams 选项，并使用 DATAIFY_API_TOKEN 生成 scraperapi.dataify.com/builder curl 请求时，使用此 skill。\"\n---\n\n# Dataify Builder Skill 中文版\n\n这个 skill 用于为 `airbnb.com` 下、以 `airbnb_product_by-searchurl` 为入口的 Dataify scraper 工具族生成 builder 请求。\n\n## 工作流程\n\n1. 先检查环境变量中是否存在 `DATAIFY_API_TOKEN`。\n2. 如果 token 缺失，提示用户前往 <a href=\"https://dashboard.dataify.com?utm_source=skill\">dataify&#23448;&#32593;</a> 获取。\n3. 先让用户从下面的中文工具列表中明确选择一个工具：\n- 搜索URL (airbnb_product_by-searchurl)\n- 位置 (airbnb_product_by-location)\n4. 再读取 `references/tool-params.json`，根据 `tool_sign` 或中文工具名找到对应工具。\n5. 对所选工具的每个参数分别处理：\n   - 如果 `input_mode` 是 `user_input`，让用户提供值。\n   - 如果 `input_mode` 是 `select`，把已保存的可选项展示给用户，让用户选择。\n6. 默认优先使用 `scripts/build-dataify-request.py`，因为它是跨平台版本。\n7. Windows 下也可以使用 `scripts/build-dataify-request.ps1`。\n8. 对于可选型参数，如果存在人类可读标签，优先把该标签写入 `spider_parameters`。除非用户明确要求编码值，否则不要把“香港”替换成 `HK`。\n9. `spider_parameters` 必须是一个 JSON 数组。\n10. 如果所有参数最终都只有一组值，就生成一个对象，例如 `[{\"searchurl\":\"...\",\"country\":\"Hong Kong\"}]`。\n11. 如果某些参数有多组一一对应的值，就按索引对齐，生成多个对象。例如 `[{\"search_url\":\"url1\",\"page_turning\":\"1\",\"max_num\":\"15\"},{\"search_url\":\"url2\",\"page_turning\":\"1\",\"max_num\":\"15\"}]`。\n12. 如果某个参数只有一个值，而另一个参数有多个值，则将这个单值复用到每一行。\n13. `spider_name` 固定取 `airbnb.com`。\n14. `spider_id` 固定取用户所选工具的 `tool_sign`。\n15. 始终包含 `spider_errors=true` 和 `file_name={{TasksID}}`。\n16. 最终输出 `https://scraperapi.dataify.com/builder` 的 `curl` 请求。\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\nPython：\n\n```bash\npython scripts/build-dataify-request.py --tool-sign <selected_tool_sign> --values-file values.json\n```\n\nPowerShell：\n\n```powershell\n& \".\\scripts\\build-dataify-request.ps1\" -ToolSign \"<selected_tool_sign>\" -ValuesFile \".\\values.json\"\n```\n\n`values.json` 可以是单个对象，也可以是对象数组。例如：\n\n```json\n[{\"searchurl\":\"https://www.airbnb.com/s/Greece/homes?...\",\"country\":\"Hong Kong\"}]\n```\n\n## 输出格式\n\n最终 `curl` 命令应为：\n\n```bash\ncurl -X POST 'https://scraperapi.dataify.com/builder' \\\n  -H \"Authorization: Bearer $DATAIFY_API_TOKEN\" \\\n  -H 'Content-Type: application/x-www-form-urlencoded' \\\n  -d 'spider_name=airbnb.com' \\\n  -d 'spider_id=<selected_tool_sign>' \\\n  -d 'spider_parameters=[{\"param\":\"value\"}]' \\\n  -d 'spider_errors=true' \\\n  -d 'file_name={{TasksID}}'\n```\n\n## 参考文件\n\n- `references/tool-params.json` 保存了这个 skill 下所有工具及参数选项。\n- `scripts/build-dataify-request.py` 是首选的跨平台实现。\n- `scripts/build-dataify-request.ps1` 是 Windows PowerShell 版本。\n- 如果参数没有预设选项，必须向用户要值。\n- 如果参数有预设选项，先把选项展示给用户，再生成最终请求。\n- 不要假设 `spider_parameters` 永远只有一个对象；多值工具可能需要按索引生成多个对象。\n- `url_example` 仅作为参考，不要默认用户就要用示例值，除非用户明确确认。\n\nFile v1.0.1:agents/openai.yaml\n\ninterface:\n  display_name: \"Dataify Airbnb Builder\"\n  short_description: \"Prepare Dataify builder calls for airbnb.com\"\n  default_prompt: \"Use $dataify-airbnb-product-by-searchurl to prepare a Dataify builder curl request.\"\n\nArchive v1.0.0: 6 files, 7334 bytes\n\nFiles: agents/openai.yaml (227b), scripts/build-dataify-request.py (3699b), skill-card.md (1958b), SKILL.md (4725b), SKILL.zh-CN.md (4092b), _meta.json (154b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: \"dataify-airbnb-product-by-searchurl\"\ndescription: \"Prepare Dataify builder requests for the airbnb.com scraper family rooted at airbnb_product_by-searchurl. Use  when needs to work with the successful Dataify scraper detail entry for airbnb_product_by-searchurl, let the user choose one of its available tools, read saved getToolParams options, and generate a scraperapi.dataify.com/builder curl request with DATAIFY_API_TOKEN.\"\n---\n\n# Dataify Builder Skill\n\nUse this skill to prepare Dataify builder requests for the scraper family rooted at `airbnb_product_by-searchurl` on `airbnb.com`.\n\n## Workflow\n\n1. Check whether `DATAIFY_API_TOKEN` exists in the environment.\n2. If the token is missing, stop and tell the user to sign in at Dataify Dashboard](https://dataify.com/dashboard) to obtain it.\n3. Ask the user to choose exactly one tool from the following Chinese list:\n- 搜索URL (airbnb_product_by-searchurl)\n- 位置 (airbnb_product_by-location)\n4. Read `references/tool-params.json` and find the chosen tool by `tool_sign` or Chinese tool name.\n5. For each parameter in the chosen tool:\n   - If `input_mode` is `user_input`, ask the user for the value.\n   - If `input_mode` is `select`, present the saved options to the user.\n6. Use `scripts/build-dataify-request.py` as the default cross-platform helper.\n7. Use `scripts/build-dataify-request.ps1` as the Windows PowerShell helper when needed.\n8. When a selectable parameter has a human-readable Chinese label, keep that label in `spider_parameters`. Do not replace it with a code such as `HK` unless the user explicitly asks for the coded value.\n9. Build `spider_parameters` as a JSON array.\n10. If every parameter has only one final value, build one object such as `[{\"searchurl\":\"...\",\"country\":\"Hong Kong\"}]`.\n11. If one or more parameters have multiple aligned values, zip them by index and build one object per row. Example: `[{\"search_url\":\"url1\",\"page_turning\":\"1\",\"max_num\":\"15\"},{\"search_url\":\"url2\",\"page_turning\":\"1\",\"max_num\":\"15\"}]`.\n12. If a parameter has one value while another parameter has multiple values, reuse the single value across every generated row.\n13. Set `spider_name` to `airbnb.com`.\n14. Set `spider_id` to the selected tool's `tool_sign`.\n15. Always include `spider_errors=true` and `file_name={{TasksID}}`.\n16. Return a curl command for `https://scraperapi.dataify.com/builder`.\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```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```powershell\n$env:DATAIFY_API_TOKEN = \"your_token_here\"\n```\n\nmacOS or Linux, permanent for bash:\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\nmacOS or Linux, permanent for zsh:\n```bash\necho 'export DATAIFY_API_TOKEN=\"your_token_here\"' >> ~/.zshrc\nsource ~/.zshrc\n```\n\n## Script usage\n\nPython:\n```bash\npython scripts/build-dataify-request.py --tool-sign <selected_tool_sign> --values-file values.json\n```\n\nPowerShell:\n```powershell\n& \".\\scripts\\build-dataify-request.ps1\" -ToolSign \"<selected_tool_sign>\" -ValuesFile \".\\values.json\"\n```\n\nThe `values.json` file should contain either one object or an array of objects. Example:\n```json\n[{\"searchurl\":\"https://www.airbnb.com/s/Greece/homes?...\",\"country\":\"Hong Kong\"}]\n```\n\n## Required output shape\n\nGenerate a curl command in this form:\n\n```bash\ncurl -X POST 'https://scraperapi.dataify.com/builder' \\\n  -H \"Authorization: Bearer $DATAIFY_API_TOKEN\" \\\n  -H 'Content-Type: application/x-www-form-urlencoded' \\\n  -d 'spider_name=airbnb.com' \\\n  -d 'spider_id=<selected_tool_sign>' \\\n  -d 'spider_parameters=[{\"param\":\"value\"}]' \\\n  -d 'spider_errors=true' \\\n  -d 'file_name={{TasksID}}'\n```\n\n## Reference usage\n\n- `references/tool-params.json` stores the full saved parameter catalog for every available tool in this scraper family.\n- `scripts/build-dataify-request.py` is the portable implementation and should be preferred.\n- `scripts/build-dataify-request.ps1` mirrors the same behavior for Windows users.\n- If a parameter has no options, the user must provide the value.\n- If a parameter has options, present those options back to the user before building the final request.\n- Do not assume `spider_parameters` always contains exactly one object. Multi-value tools may require multiple objects zipped by index.\n- Use the saved `url_example` only as a reference example. Do not assume the user wants the example values unless they explicitly confirm them.\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn74z5hmmwk21kw8tpphd9w21x86bkdf\",\n  \"slug\": \"dataify-airbnb-product-by-searchurl\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1779955891795\n}\n\nFile v1.0.0:skill-card.md\n\n## Description: <br>\nPrepares Dataify builder requests for airbnb.com scraper tools rooted at airbnb_product_by-searchurl and returns a ready-to-run curl command. <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>\nExternal developers and operators use this skill to collect parameters for Dataify Airbnb scraper tools and generate correctly shaped builder requests with DATAIFY_API_TOKEN authentication. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Dataify API tokens can be exposed in saved shell files or generated command output. <br>\nMitigation: Prefer session-scoped environment variables or a secret manager, avoid committing shell profiles containing tokens, and keep generated commands using Authorization: Bearer $DATAIFY_API_TOKEN rather than expanded token values. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/dataify-server/dataify-airbnb-product-by-searchurl) <br>\n- [Publisher profile](https://clawhub.ai/user/dataify-server) <br>\n- [Dataify Dashboard](https://dataify.com/dashboard) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with curl commands and JSON spider_parameters] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May include environment variable setup guidance and multi-row spider_parameters arrays.] <br>\n\n## Skill Version(s): <br>\n1.0.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.0.0:SKILL.zh-CN.md\n\n# Dataify Builder Skill 中文版\n\n这个 skill 用于为 `airbnb.com` 下、以 `airbnb_product_by-searchurl` 为入口的 Dataify scraper 工具族生成 builder 请求。\n\n## 工作流程\n\n1. 先检查环境变量中是否存在 `DATAIFY_API_TOKEN`。\n2. 如果 token 缺失，提示用户前往 <a href=\"https://www.dataify.com/\">dataify&#23448;&#32593;</a> 获取。\n3. 先让用户从下面的中文工具列表中明确选择一个工具：\n- 搜索URL (airbnb_product_by-searchurl)\n- 位置 (airbnb_product_by-location)\n4. 再读取 `references/tool-params.json`，根据 `tool_sign` 或中文工具名找到对应工具。\n5. 对所选工具的每个参数分别处理：\n   - 如果 `input_mode` 是 `user_input`，让用户提供值。\n   - 如果 `input_mode` 是 `select`，把已保存的可选项展示给用户，让用户选择。\n6. 默认优先使用 `scripts/build-dataify-request.py`，因为它是跨平台版本。\n7. Windows 下也可以使用 `scripts/build-dataify-request.ps1`。\n8. 对于可选型参数，如果存在人类可读标签，优先把该标签写入 `spider_parameters`。除非用户明确要求编码值，否则不要把“香港”替换成 `HK`。\n9. `spider_parameters` 必须是一个 JSON 数组。\n10. 如果所有参数最终都只有一组值，就生成一个对象，例如 `[{\"searchurl\":\"...\",\"country\":\"Hong Kong\"}]`。\n11. 如果某些参数有多组一一对应的值，就按索引对齐，生成多个对象。例如 `[{\"search_url\":\"url1\",\"page_turning\":\"1\",\"max_num\":\"15\"},{\"search_url\":\"url2\",\"page_turning\":\"1\",\"max_num\":\"15\"}]`。\n12. 如果某个参数只有一个值，而另一个参数有多个值，则将这个单值复用到每一行。\n13. `spider_name` 固定取 `airbnb.com`。\n14. `spider_id` 固定取用户所选工具的 `tool_sign`。\n15. 始终包含 `spider_errors=true` 和 `file_name={{TasksID}}`。\n16. 最终输出 `https://scraperapi.dataify.com/builder` 的 `curl` 请求。\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\nPython：\n\n```bash\npython scripts/build-dataify-request.py --tool-sign <selected_tool_sign> --values-file values.json\n```\n\nPowerShell：\n\n```powershell\n& \".\\scripts\\build-dataify-request.ps1\" -ToolSign \"<selected_tool_sign>\" -ValuesFile \".\\values.json\"\n```\n\n`values.json` 可以是单个对象，也可以是对象数组。例如：\n\n```json\n[{\"searchurl\":\"https://www.airbnb.com/s/Greece/homes?...\",\"country\":\"Hong Kong\"}]\n```\n\n## 输出格式\n\n最终 `curl` 命令应为：\n\n```bash\ncurl -X POST 'https://scraperapi.dataify.com/builder' \\\n  -H \"Authorization: Bearer $DATAIFY_API_TOKEN\" \\\n  -H 'Content-Type: application/x-www-form-urlencoded' \\\n  -d 'spider_name=airbnb.com' \\\n  -d 'spider_id=<selected_tool_sign>' \\\n  -d 'spider_parameters=[{\"param\":\"value\"}]' \\\n  -d 'spider_errors=true' \\\n  -d 'file_name={{TasksID}}'\n```\n\n## 参考文件\n\n- `references/tool-params.json` 保存了这个 skill 下所有工具及参数选项。\n- `scripts/build-dataify-request.py` 是首选的跨平台实现。\n- `scripts/build-dataify-request.ps1` 是 Windows PowerShell 版本。\n- 如果参数没有预设选项，必须向用户要值。\n- 如果参数有预设选项，先把选项展示给用户，再生成最终请求。\n- 不要假设 `spider_parameters` 永远只有一个对象；多值工具可能需要按索引生成多个对象。\n- `url_example` 仅作为参考，不要默认用户就要用示例值，除非用户明确确认。\n\nFile v1.0.0:agents/openai.yaml\n\ninterface:\n  display_name: \"Dataify Airbnb Builder\"\n  short_description: \"Prepare Dataify builder calls for airbnb.com\"\n  default_prompt: \"Use $dataify-airbnb-product-by-searchurl to prepare a Dataify builder curl request.\"","readmeExcerpt":"Skill: Dataify Airbnb Builder Owner: dataify-server Summary: Collect Airbnb Builder data and return results Tags: latest:1.3.1 Version history: v1.3.1 | 2026-09-08T06:17:57.571Z | 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:51.729Z | user 默","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"python3 scripts/build-dataify-request.py --tool-sign airbnb_product_by-searchurl --params-json '[{\"searchurl\":\"https://www.airbnb.com/s/Paris--France/homes\"}]'"},{"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":"bash","snippet":"python scripts/build-dataify-request.py --tool-sign <selected_tool_sign> --values-file values.json"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: \"dataify-airbnb-product-by-searchurl\"\ndescription: \"Collect structured Airbnb listing results from a known Airbnb search-results URL. Use when the user provides or wants to scrape an Airbnb search URL. Do not use for general hotel discovery or Booking.com URLs.\"\n---\n\n# Dataify Builder Skill\n\nUse this skill to prepare Dataify builder requests for the scraper family rooted at `airbnb_product_by-searchurl` on `airbnb.com`.\n\n\n## Quick Start\n\n**Input:** an Airbnb search URL.\n\n```bash\npython3 scripts/build-dataify-request.py --tool-sign airbnb_product_by-searchurl --params-json '[{\"searchurl\":\"https://www.airbnb.com/s/Paris--France/homes\"}]'\n```\n\nThis submits the task, waits for completion, downloads the final result, and returns it. Add `--no-wait` only when submission-only behavior is requested.\n## Workflow\n\n1. Check whether `DATAIFY_API_TOKEN` exists in the environment.\n2. 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.`.\n3. Ask the user to choose exactly one tool from the following Chinese list:\n- 搜索URL (airbnb_product_by-searchurl)\n- 位置 (airbnb_product_by-location)\n4. Read `references/tool-params.json` and find the chosen tool by `tool_sign` or Chinese tool name.\n5. For each parameter in the chosen tool:\n   - If `input_mode` is `user_input`, ask the user for the value.\n   - If `input_mode` is `select`, present the saved options to the user.\n6. Use `scripts/build-dataify-request.py` as the default cross-platform helper.\n7. Use `scripts/build-dataify-request.ps1` as the Windows PowerShell helper when needed.\n8. When a selectable parameter has a human-readable Chinese label, keep that label in `spider_parameters`. Do not replace it with a code such as `HK` unless the user explicitly asks for the coded value.\n9. Build `spider_parameters` as a JSON array.\n10. If every parameter has only one final value, build one object such as `[{\"searchurl\":\"...\",\"country\":\"Hong Kong\"}]`.\n11. If one or more parameters have multiple aligned values, zip them by index and build one object per row. Example: `[{\"search_url\":\"url1\",\"page_turning\":\"1\",\"max_num\":\"15\"},{\"search_url\":\"url2\",\"page_turning\":\"1\",\"max_num\":\"15\"}]`.\n12. If a parameter has one value while another parameter has multiple values, reuse the single value across every generated row.\n13. Set `spider_name` to `airbnb.com`.\n14. Set `spider_id` to the selected tool's `tool_sign`.\n15. Always include `spider_errors=true` and `file_name={{TasksID}}`.\n16. Return a curl command for `https://scraperapi.dataify.com/builder`.\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```powershell\n[Environment]::SetEnvironmentVariable(\"DATA"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn74z5hmmwk21kw8tpphd9w21x86bkdf\",\n  \"slug\": \"dataify-airbnb-product-by-searchurl\",\n  \"version\": \"1.3.1\",\n  \"publishedAt\": 1788848277571\n}"},{"path":"references/tool-params.json","content":"[{\"tool_name_cn\":\"搜索URL\",\"tool_sign\":\"airbnb_product_by-searchurl\",\"spider_name\":\"airbnb.com\",\"params\":[{\"param\":\"searchurl\",\"required\":true,\"input_mode\":\"user_input\",\"format\":\"url\",\"url_example\":\"https://www.airbnb.com/s/Tokyo--Japan/homes\"}]},{\"tool_name_cn\":\"位置\",\"tool_sign\":\"airbnb_product_by-location\",\"spider_name\":\"airbnb.com\",\"params\":[{\"param\":\"location\",\"required\":true,\"input_mode\":\"user_input\"}]}]"},{"path":"skill-card.md","content":"## Description:\n\nCollect structured Airbnb listing results from a known Airbnb search-results URL through Dataify.\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\nExternal users and developers use this skill to collect structured Airbnb listing results from a provided Airbnb search URL, submit the Dataify Builder task, monitor completion, and return the final collected JSON result.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The security review marks the skill as suspicious because an Airbnb-specific description is packaged with broader scraping and workflow code.\n\nMitigation: Review before installation and remove or isolate unrelated business workflow scripts if only Airbnb search-result collection is needed.\n\nRisk: Credential handling can expose or over-retain a Dataify API token if users paste tokens into chat or store broad tokens permanently.\n\nMitigation: Use a limited Dataify token, never paste it into chat, avoid permanent shell-profile storage when unnecessary, and rotate or review the key if it is rejected.\n\nRisk: Generated curl commands or edited URLs can initiate paid Dataify requests against untrusted or unintended targets.\n\nMitigation: Review the target URL and generated command before execution, use only trusted complete HTTP(S) Airbnb search URLs, and avoid executing commands for untrusted or edited URLs.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/dataify-server/skills/dataify-airbnb-product-by-searchurl)\n- [Tool parameter catalog](artifact/references/tool-params.json)\n- [Skill source](artifact/SKILL.md)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, JSON]\n\n**Output Format:** [Markdown guidance with shell commands and JSON task results]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires a Dataify API token and a valid Airbnb search URL; may return a task ID and resume command if monitoring times out.]\n\n## Skill Version(s):\n\n1.3.1 (source: server release metadata)\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-airbnb-product-by-searchurl\"\ndescription: \"为 airbnb.com 上以 airbnb_product_by-searchurl 为根的 scraper 系列准备 Dataify builder 请求。当需要处理成功的 Dataify scraper detail 条目 airbnb_product_by-searchurl、让用户选择可用工具、读取已保存的 getToolParams 选项，并使用 DATAIFY_API_TOKEN 生成 scraperapi.dataify.com/builder curl 请求时，使用此 skill。\"\n---\n\n# Dataify Builder Skill 中文版\n\n这个 skill 用于为 `airbnb.com` 下、以 `airbnb_product_by-searchurl` 为入口的 Dataify scraper 工具族生成 builder 请求。\n\n## 工作流程\n\n1. 先检查环境变量中是否存在 `DATAIFY_API_TOKEN`。\n2. 如果 token 缺失，告诉用户：`Dataify 需要 API Token。新账号注册即得 50 免费积分，约可获得 6000 条试用结果，7 天有效，仅成功请求计费。注册完成后告诉我，我会继续当前任务。`。\n3. 先让用户从下面的中文工具列表中明确选择一个工具：\n- 搜索URL (airbnb_product_by-searchurl)\n- 位置 (airbnb_product_by-location)\n4. 再读取 `references/tool-params.json`，根据 `tool_sign` 或中文工具名找到对应工具。\n5. 对所选工具的每个参数分别处理：\n   - 如果 `input_mode` 是 `user_input`，让用户提供值。\n   - 如果 `input_mode` 是 `select`，把已保存的可选项展示给用户，让用户选择。\n6. 默认优先使用 `scripts/build-dataify-request.py`，因为它是跨平台版本。\n7. Windows 下也可以使用 `scripts/build-dataify-request.ps1`。\n8. 对于可选型参数，如果存在人类可读标签，优先把该标签写入 `spider_parameters`。除非用户明确要求编码值，否则不要把“香港”替换成 `HK`。\n9. `spider_parameters` 必须是一个 JSON 数组。\n10. 如果所有参数最终都只有一组值，就生成一个对象，例如 `[{\"searchurl\":\"...\",\"country\":\"Hong Kong\"}]`。\n11. 如果某些参数有多组一一对应的值，就按索引对齐，生成多个对象。例如 `[{\"search_url\":\"url1\",\"page_turning\":\"1\",\"max_num\":\"15\"},{\"search_url\":\"url2\",\"page_turning\":\"1\",\"max_num\":\"15\"}]`。\n12. 如果某个参数只有一个值，而另一个参数有多个值，则将这个单值复用到每一行。\n13. `spider_name` 固定取 `airbnb.com`。\n14. `spider_id` 固定取用户所选工具的 `tool_sign`。\n15. 始终包含 `spider_errors=true` 和 `file_name={{TasksID}}`。\n16. 最终输出 `https://scraperapi.dataify.com/builder` 的 `curl` 请求。\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\nPython：\n\n```bash\npython scripts/build-dataify-request.py --tool-sign <selected_tool_sign> --values-file values.json\n```\n\nPowerShell：\n\n```powershell\n& \".\\scripts\\build-dataify-request.ps1\" -ToolSign \"<selected_tool_sign>\" -ValuesFile \".\\values.json\"\n```\n\n`values.json` 可以是单个对象，也可以是对象数组。例如：\n\n```json\n[{\"searchurl\":\"https://www.airbnb.com/s/Greece/homes?...\",\"country\":\"Hong Kong\"}]\n```\n\n## 输出格式\n\n最终 `curl` 命令应为：\n\n```bash\ncurl -X POST 'https://scraperapi.dataify.com/builder' \\\n  -H \"Authorization: Bearer $DATAIFY_API_TOKEN\" \\\n  -H 'Content-Type: application/x-www-form-urlencoded' \\\n  -d 'spider_name=airbnb.com' \\\n  -d 'spider_id=<selected_tool_sign>' \\\n  -d 'spider_parameters=[{\"param\":\"value\"}]' \\\n  -d 'spider_errors=true' \\\n  -d 'file_name={{TasksID}}'\n```\n\n## 参考文件\n\n- `references/tool-params.json` 保存了这个 skill 下所有工具及参数选项。\n- `scripts/build-dataify-request.py` 是首选的跨平台实现。\n- `scri"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Collect Airbnb Builder data and return results Skill: Dataify Airbnb Builder Owner: dataify-server Summary: Collect Airbnb Builder data and return results Tags: latest:1.3.1 Version history: v1.3.1 | 2026-09-08T06:17:57.571Z | 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:51.729Z | user 默","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1117,"uniquenessScore":48,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T06:00:29.383Z","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-11T06:00:29.383Z","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:40:49.420Z","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"}]}}}