{"id":"5445d68e-41ca-4f6c-bc79-36470d605536","entityType":"agent","slug":"clawhub-linkfox-ai-linkfox-etsy-product-query","name":"Etsy商品查询","canonicalUrl":"https://www.xpersona.co/agent/clawhub-linkfox-ai-linkfox-etsy-product-query","canonicalPath":"/agent/clawhub-linkfox-ai-linkfox-etsy-product-query","generatedAt":"2026-10-10T17:37:23.220Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T14:53:33.908Z","emptyReason":null},"description":"按多维度筛选 Etsy 商品（关键词/URL、价格、销量、收藏、评论、上架时间、类目、手工/复古等类型、Pick/Bestsell/Raving 等标签）。当用户提到 Etsy 商品、Etsy listing、Etsy 选品、Etsy 爆款、Etsy handmade、Etsy vintage、etsy items、Etsy商品查询时触发。即使用户未提及工具名，只要在 Etsy 上搜商品、看销量/价格/标签或筛品，也应触发此技能。 Skill: Etsy商品查询 Owner: linkfox-ai Summary: 按多维度筛选 Etsy 商品（关键词/URL、价格、销量、收藏、评论、上架时间、类目、手工/复古等类型、Pick/Bestsell/Raving 等标签）。当用户提到 Etsy 商品、Etsy listing、Etsy 选品、Etsy 爆款、Etsy handmade、Etsy vintage、etsy items、Etsy商品查询时触发。即使用户未提及工具名，只要在 Etsy 上搜商品、看销量/价格/标签或筛品，也应触发此技能。 Tags: latest:1.0.10 Version history: v1.0.10 | 2026-09-14T05:02:41.186Z | user Update from 1.0.9 to 1.0.10 v1.0.9 | 2026-08-14T14:51:09.965Z | user Update from","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.4K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s171g8b6m2khwdy9ye8bxj0wx183vd4z:linkfox-etsy-product-query","sourceUrl":"https://clawhub.ai/linkfox-ai/linkfox-etsy-product-query","homepage":"https://clawhub.ai/linkfox-ai/skills/linkfox-etsy-product-query","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/linkfox-ai/linkfox-etsy-product-query","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/linkfox-ai/skills/linkfox-etsy-product-query","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":63,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"按多维度筛选 Etsy 商品（关键词/URL、价格、销量、收藏、评论、上架时间、类目、手工/复古等类型、Pick/Bestsell/Raving 等标签）。当用户提到 Etsy 商品、Etsy listing、Etsy 选品、Etsy 爆款、Etsy handmade、Etsy vintage、etsy items、E"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T14:53:33.908Z","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-10T14:53:33.908Z","emptyReason":null},"stars":null,"forks":null,"downloads":1374,"packageName":null,"latestVersion":"1.0.10","tractionLabel":"1.4K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T14:53:33.908Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T14:53:33.908Z","lastCrawledAt":"2026-10-10T14:53:33.908Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T14:53:33.908Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.10","createdAt":"2026-09-14T05:02:41.186Z","changelog":"Update from 1.0.9 to 1.0.10","fileCount":7,"zipByteSize":19254},{"version":"1.0.9","createdAt":"2026-08-14T14:51:09.965Z","changelog":"Update from 1.0.8 to 1.0.9","fileCount":7,"zipByteSize":19422},{"version":"1.0.8","createdAt":"2026-08-07T10:49:18.628Z","changelog":"Update from 1.0.7 to 1.0.8","fileCount":7,"zipByteSize":19248},{"version":"1.0.7","createdAt":"2026-07-13T12:08:38.455Z","changelog":"Update from 1.0.6 to 1.0.7","fileCount":5,"zipByteSize":10752},{"version":"1.0.6","createdAt":"2026-07-10T05:40:02.998Z","changelog":"Update from 1.0.5 to 1.0.6","fileCount":5,"zipByteSize":9506},{"version":"1.0.5","createdAt":"2026-07-09T05:44:31.114Z","changelog":"Update from 1.0.4 to 1.0.5","fileCount":5,"zipByteSize":9727},{"version":"1.0.4","createdAt":"2026-07-09T05:19:27.355Z","changelog":"Update from 1.0.3 to 1.0.4","fileCount":5,"zipByteSize":9917}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s171g8b6m2khwdy9ye8bxj0wx183vd4z:linkfox-etsy-product-query","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-linkfox-ai-linkfox-etsy-product-query/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-etsy-product-query/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-etsy-product-query/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-etsy-product-query/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-etsy-product-query/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-etsy-product-query/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-10T17:37:23.219Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-etsy-product-query/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-etsy-product-query/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-etsy-product-query/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-etsy-product-query/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-10T14:53:33.908Z","emptyReason":null},"readme":"Skill: Etsy商品查询\n\nOwner: linkfox-ai\n\nSummary: 按多维度筛选 Etsy 商品（关键词/URL、价格、销量、收藏、评论、上架时间、类目、手工/复古等类型、Pick/Bestsell/Raving 等标签）。当用户提到 Etsy 商品、Etsy listing、Etsy 选品、Etsy 爆款、Etsy handmade、Etsy vintage、etsy items、Etsy商品查询时触发。即使用户未提及工具名，只要在 Etsy 上搜商品、看销量/价格/标签或筛品，也应触发此技能。\n\nTags: latest:1.0.10\n\nVersion history:\n\nv1.0.10 | 2026-09-14T05:02:41.186Z | user\n\nUpdate from 1.0.9 to 1.0.10\n\nv1.0.9 | 2026-08-14T14:51:09.965Z | user\n\nUpdate from 1.0.8 to 1.0.9\n\nv1.0.8 | 2026-08-07T10:49:18.628Z | user\n\nUpdate from 1.0.7 to 1.0.8\n\nv1.0.7 | 2026-07-13T12:08:38.455Z | user\n\nUpdate from 1.0.6 to 1.0.7\n\nv1.0.6 | 2026-07-10T05:40:02.998Z | user\n\nUpdate from 1.0.5 to 1.0.6\n\nv1.0.5 | 2026-07-09T05:44:31.114Z | user\n\nUpdate from 1.0.4 to 1.0.5\n\nv1.0.4 | 2026-07-09T05:19:27.355Z | user\n\nUpdate from 1.0.3 to 1.0.4\n\nArchive index:\n\nArchive v1.0.10: 7 files, 19254 bytes\n\nFiles: references/api.md (4957b), references/onboarding.md (1999b), scripts/etsy_product_query.py (12729b), scripts/onboarding.py (24027b), skill-card.md (2335b), SKILL.md (2211b), _meta.json (146b)\n\nFile v1.0.10:SKILL.md\n\n---\nname: linkfox-etsy-product-query\ndescription: 按多维度筛选 Etsy 商品（关键词/URL、价格、销量、收藏、评论、上架时间、类目、手工/复古等类型、Pick/Bestsell/Raving 等标签）。当用户提到 Etsy 商品、Etsy listing、Etsy 选品、Etsy 爆款、Etsy handmade、Etsy vintage、etsy items、Etsy商品查询时触发。即使用户未提及工具名，只要在 Etsy 上搜商品、看销量/价格/标签或筛品，也应触发此技能。\n---\n\n# Etsy 商品查询（`_ehunt_productQuery`）\n\n## 要点\n\n- **分页**：`page` 从 1 起；`pageSize` 默认 20、最大 100（建议 ≤50）。\n- **区间入参**：与店铺接口相同思路，`begin*` / `end*` 成对。\n- **排序**：`sortBy` 为 **1~6**（上游 `sort_by`）。`sortDesc`：**1=降序，2=升序**（与 `_ehunt_storeQuery` 的 1/0 不同）。\n- **商品类型** `productType`：`1` 手工、`2` 复古、`3` 数字、`4` 定制、`9` 其他，多选用逗号。\n- **货币**：`currencyCode` 默认 `USD`。\n- **类目 id**：`category` 为单品类 ID；可先通过类目检索类技能拿到 id。\n\n## 脚本（可选）\n\n命令行调试：`python scripts/etsy_product_query.py '<JSON>'`（需 `LINKFOXAGENT_API_KEY`）。详见 [references/api.md](references/api.md) 末尾。\n\n## 参考\n\n入参/出参表见 [references/api.md](references/api.md)。\n\n## 解决认证和算力问题\n发生以下异常情况时，采用 references/onboarding.md 引导解决问题：\n\n### 异常情况\n- **未配置API Key**：环境变量未配置 `LINKFOX_AGENT_API_KEY`，也未配置 `LINKFOXAGENT_API_KEY`。\n- **响应401或402状态码**\n- **响应提示算力或余额不足**：消息含\"算力余额不足/计费不足/余额不足/quota exceeded/insufficient balance/套餐到期/需充值/请充值\"，或类似含义的内容。\n\n## 算力消耗规则\n\n按动态规则计费：消耗算力 = 返回的商品数 × 1.8。按本页返回条数计费；翻到下一页，本质上是再发一次请求，再按下一页返回条数重新计算。\n\n> **重要**：本技能的服务按倍数动态计算，可能一次性消耗大量算力，必须提醒用户，由用户决定是否继续。\n\nFile v1.0.10:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-etsy-product-query\",\n  \"version\": \"1.0.10\",\n  \"publishedAt\": 1789362161186\n}\n\nFile v1.0.10:references/api.md\n\n# `_ehunt_productQuery` API 参考\n\n## 调用说明\n\n- **工具名**：`_ehunt_productQuery`（LinkFox MCP，`serverName`：第三方数据服务）。\n- **MCP 展示名**：Etsy商品查询。\n- **说明**：参数与返回结构以当前网关返回为准；若上游返回 JSON 根级 `code` 字段，成功值以实网为准。\n\n## 请求参数（JSON）\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| beginFavorites | integer，≥0 | 否 | 收藏数（起始），与结束值共同组成上游 favorites |\n| beginFavoritesWeekly | integer，≥0 | 否 | 周新增收藏数（起始），与结束值共同组成上游 favorites_weekly |\n| beginPrice | number，≥0 | 否 | 价格（起始），与结束价共同组成上游 price（如 20~100）；仅填一侧时上游为 起始~ 或 ~结束 |\n| beginReviews | integer，≥0 | 否 | 评论数（起始），与结束值共同组成上游 reviews |\n| beginReviewsWeekly | integer，≥0 | 否 | 周新增评论数（起始），与结束值共同组成上游 reviews_weekly |\n| beginSales | integer，≥0 | 否 | 总销量（起始），与结束值共同组成上游 sales |\n| beginSalesWeekly | integer，≥0 | 否 | 周销量（起始），与结束值共同组成上游 sales_weekly（如 1~100） |\n| category | string, maxLen=1000 | 否 | 商品分类 ID（单品类），详见 商品分类接口 |\n| country | string, maxLen=1000 | 否 | 发货国家 |\n| currencyCode | string, default=USD, maxLen=1000 | 否 | 货币代码 |\n| endFavorites | integer，≥0 | 否 | 收藏数（结束） |\n| endFavoritesWeekly | integer，≥0 | 否 | 周新增收藏数（结束） |\n| endPrice | number，≥0 | 否 | 价格（结束），与起始价共同组成上游 price |\n| endReviews | integer，≥0 | 否 | 评论数（结束） |\n| endReviewsWeekly | integer，≥0 | 否 | 周新增评论数（结束） |\n| endSales | integer，≥0 | 否 | 总销量（结束） |\n| endSalesWeekly | integer，≥0 | 否 | 周销量（结束） |\n| isBestsell | integer | 否 | 是否畅销商品 |\n| isPick | integer | 否 | 是否 Pick 商品 |\n| isRaving | integer | 否 | 是否 Raving 商品 |\n| listedTime | string, pattern | 否 | 上架时间不早于该日期（YYYY-MM-DD） |\n| page | integer，≥1，默认 1 | 否 | 页码（从 1 开始） |\n| pageSize | integer，1~100，默认 20 | 否 | 每页条数，最大 100，建议不超过 50 |\n| productType | string，须符合 schema 正则 | 否 | 商品类型，多个逗号分隔：1=手工 2=复古 3=数字 4=定制 9=其他 |\n| searchKey | string, maxLen=500 | 否 | 搜索关键词或 Etsy 商品 URL |\n| sortBy | integer (1~6) | 否 | 排序字段（对应上游 sort_by，取值 1~6） |\n| sortDesc | integer | 否 | 排序方向（对应上游 `desc`）。schema 示例：降序 `1`、升序 `2`（与店铺查询的 `sortDesc` 编码不同） |\n| status | integer | 否 | 商品状态（示例：1 上架，0 下架） |\n\n## 响应主要字段\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| total | integer | 记录数（本页返回条数，便于与列表长度对齐） |\n| sourceTool | string | 工具类型：ehunt |\n| sourceType | string | 来源类型：etsy |\n| columns | array | 渲染的列 |\n| costToken | integer | 消耗 token（按本页返回条数估算） |\n| productNum | integer | 符合条件的商品总数（上游 product_num） |\n| title | string | 标题 |\n| type | string | 渲染的样式 |\n| products | array | Etsy 商品列表 |\n\n### `products[]` 元素\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| category | string | 类目名称 |\n| favorites | integer | 收藏数 |\n| favoritesWeekly | integer | 周新增收藏数 |\n| imageUrl | string | 主图 URL |\n| isBestsell | integer | 是否畅销：1=是 |\n| isPick | integer | 是否 Pick：1=是 |\n| isRaving | integer | 是否 Raving：1=是 |\n| price | number | 价格 |\n| productUrl | string | 商品链接 |\n| releaseTime | string | 上架/发布时间 |\n| reviews | integer | 评论数 |\n| reviewsWeekly | integer | 周新增评论数 |\n| salesTotal | integer | 总销量 |\n| salesWeekly | integer | 周销量 |\n| shipsFrom | string | 发货国家 |\n| status | integer | 商品状态：1=上架，0=下架 |\n| storeName | string | 店铺名称 |\n| tags | string | 标签 |\n| title | string | 商品标题 |\n\n## 脚本调试（可选）\n\n仓库内提供 **`scripts/etsy_product_query.py`**（Python 3，仅标准库）。\n\n- **默认路径段**：`ehunt/etsy/productQuery`（可用 `LINKFOX_EHUNT_PRODUCT_QUERY_PATH` 覆盖）\n- **网关**：`https://tool-gateway.linkfox.com`（可用 `LINKFOX_TOOL_GATEWAY_BASE` 覆盖）；**鉴权**：`LINKFOXAGENT_API_KEY`（如未配置 按 SKILL.md 的 **## 解决认证和算力问题** 处理）\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\npython scripts/etsy_product_query.py '{\"searchKey\": \"poster\", \"currencyCode\": \"USD\", \"page\": 1, \"pageSize\": 20}'\n```\n\nFile v1.0.10:references/onboarding.md\n\n# 解决认证和算力问题\n\n调用本 skill 时若网关返回 **auth** 或 **billing** 错误，走本 skill 自带的 `scripts/onboarding.py` 完成引导。\n\n**auth 场景**：`errcode=401` 或消息含 `authorized error`/`鉴权失败`/`未授权`/`unauthorized`；或 `LINKFOX_AGENT_API_KEY` 与 `LINKFOXAGENT_API_KEY` 均为空。\n1. 若已配置 key → 先让用户重启会话（最常见误判），仍失败让用户重新取 key 或换手机号重注册\n2. 未配置 → 询问：自助去 https://agent.linkfox.com/ 取 key，或提供手机号让脚本注册\n3. 手机号路径：\n   - `python scripts/onboarding.py send-code <phone>` → 展示 JSON 里的 phone/agreements\n   - 收到验证码后：`python scripts/onboarding.py login <phone> <code>`\n   - 拿到 `api_key` 后把下面三平台配置转发给用户，提示重启会话生效：\n     - Windows PowerShell（永久）：`setx LINKFOX_AGENT_API_KEY \"<key>\"`\n     - macOS zsh：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.zshrc && source ~/.zshrc`\n     - Linux bash：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.bashrc && source ~/.bashrc`\n     - 变量名 `LINKFOX_AGENT_API_KEY`（主推）或 `LINKFOXAGENT_API_KEY`（老规范）任一即可\n\n**billing 场景**：`errcode=402` 或消息含 `算力/余额/quota/insufficient/充值/套餐到期`。\n- `python scripts/onboarding.py list-plans` → 有 AskUserQuestion 就弹菜单，否则输出编号清单让用户选\n- 校验 `plan_id` ∈ 清单、支付方式 ∈ 该套餐 `available_methods`（通常 `wechat/alipay`）\n- `python scripts/onboarding.py order <plan_id> <method>` → 展示优先级 PNG > `pay_url` > `ascii_qr`（标注兜底）\n- 已付款可选调 `python scripts/onboarding.py query <order_id>`，不主动轮询\n\n排除 `errcode=403`（无权限，不归入这两类）。所有子命令输出 stdout JSON，`error` 字段已含阶段前缀，透传给用户即可。完整用法：`python scripts/onboarding.py --help`。\n\nFile v1.0.10:skill-card.md\n\n## Description:\n\nEtsy商品查询 helps agents filter Etsy listings by keyword or URL, price, sales, favorites, reviews, listing date, category, product type, and marketplace tags.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal sellers, ecommerce analysts, and agents use this skill to search and compare Etsy products by commercial signals such as sales, price, favorites, reviews, category, listing age, and product tags.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill handles LinkFox account onboarding, API keys, and paid billing flows.\n\nMitigation: Install and use it only when LinkFox is trusted, avoid exposing API keys in shared files or logs, and require explicit user confirmation before onboarding or payment commands.\n\nRisk: Endpoint override environment variables can direct requests away from the default LinkFox services.\n\nMitigation: Use endpoint overrides only when the destination is controlled and expected.\n\nRisk: Etsy product queries consume paid credits dynamically and larger result pages can increase cost.\n\nMitigation: Confirm page size and expected cost with the user before running large queries or pagination.\n\n## Reference(s):\n\n- [_ehunt_productQuery API reference](artifact/references/api.md)\n- [Authentication and billing onboarding](artifact/references/onboarding.md)\n- [ClawHub skill page](https://clawhub.ai/linkfox-ai/skills/linkfox-etsy-product-query)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, JSON, files, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with inline shell commands, JSON API parameters, stdout summaries, and saved JSON response files.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Query results may be summarized when responses are large; full responses are saved as JSON files by the query script.]\n\n## Skill Version(s):\n\n1.0.10 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.9: 7 files, 19422 bytes\n\nFiles: references/api.md (4957b), references/onboarding.md (2046b), scripts/etsy_product_query.py (12673b), scripts/onboarding.py (24089b), skill-card.md (2370b), SKILL.md (2211b), _meta.json (145b)\n\nFile v1.0.9:SKILL.md\n\n---\nname: linkfox-etsy-product-query\ndescription: 按多维度筛选 Etsy 商品（关键词/URL、价格、销量、收藏、评论、上架时间、类目、手工/复古等类型、Pick/Bestsell/Raving 等标签）。当用户提到 Etsy 商品、Etsy listing、Etsy 选品、Etsy 爆款、Etsy handmade、Etsy vintage、etsy items、Etsy商品查询时触发。即使用户未提及工具名，只要在 Etsy 上搜商品、看销量/价格/标签或筛品，也应触发此技能。\n---\n\n# Etsy 商品查询（`_ehunt_productQuery`）\n\n## 要点\n\n- **分页**：`page` 从 1 起；`pageSize` 默认 20、最大 100（建议 ≤50）。\n- **区间入参**：与店铺接口相同思路，`begin*` / `end*` 成对。\n- **排序**：`sortBy` 为 **1~6**（上游 `sort_by`）。`sortDesc`：**1=降序，2=升序**（与 `_ehunt_storeQuery` 的 1/0 不同）。\n- **商品类型** `productType`：`1` 手工、`2` 复古、`3` 数字、`4` 定制、`9` 其他，多选用逗号。\n- **货币**：`currencyCode` 默认 `USD`。\n- **类目 id**：`category` 为单品类 ID；可先通过类目检索类技能拿到 id。\n\n## 脚本（可选）\n\n命令行调试：`python scripts/etsy_product_query.py '<JSON>'`（需 `LINKFOXAGENT_API_KEY`）。详见 [references/api.md](references/api.md) 末尾。\n\n## 参考\n\n入参/出参表见 [references/api.md](references/api.md)。\n\n## 解决认证和积分问题\n发生以下异常情况时，采用 references/onboarding.md 引导解决问题：\n\n### 异常情况\n- **未配置API Key**：环境变量未配置 `LINKFOX_AGENT_API_KEY`，也未配置 `LINKFOXAGENT_API_KEY`。\n- **响应401或402状态码**\n- **响应提示积分或余额不足**：消息含\"积分余额不足/计费不足/余额不足/quota exceeded/insufficient balance/套餐到期/需充值/请充值\"，或类似含义的内容。\n\n## 积分消耗规则\n\n按动态规则计费：消耗积分 = 返回的商品数 × 1.8。按本页返回条数计费；翻到下一页，本质上是再发一次请求，再按下一页返回条数重新计算。\n\n> **重要**：本技能的服务按倍数动态计算，可能一次性消耗大量积分，必须提醒用户，由用户决定是否继续。\n\nFile v1.0.9:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-etsy-product-query\",\n  \"version\": \"1.0.9\",\n  \"publishedAt\": 1786719069965\n}\n\nFile v1.0.9:references/api.md\n\n# `_ehunt_productQuery` API 参考\n\n## 调用说明\n\n- **工具名**：`_ehunt_productQuery`（LinkFox MCP，`serverName`：第三方数据服务）。\n- **MCP 展示名**：Etsy商品查询。\n- **说明**：参数与返回结构以当前网关返回为准；若上游返回 JSON 根级 `code` 字段，成功值以实网为准。\n\n## 请求参数（JSON）\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| beginFavorites | integer，≥0 | 否 | 收藏数（起始），与结束值共同组成上游 favorites |\n| beginFavoritesWeekly | integer，≥0 | 否 | 周新增收藏数（起始），与结束值共同组成上游 favorites_weekly |\n| beginPrice | number，≥0 | 否 | 价格（起始），与结束价共同组成上游 price（如 20~100）；仅填一侧时上游为 起始~ 或 ~结束 |\n| beginReviews | integer，≥0 | 否 | 评论数（起始），与结束值共同组成上游 reviews |\n| beginReviewsWeekly | integer，≥0 | 否 | 周新增评论数（起始），与结束值共同组成上游 reviews_weekly |\n| beginSales | integer，≥0 | 否 | 总销量（起始），与结束值共同组成上游 sales |\n| beginSalesWeekly | integer，≥0 | 否 | 周销量（起始），与结束值共同组成上游 sales_weekly（如 1~100） |\n| category | string, maxLen=1000 | 否 | 商品分类 ID（单品类），详见 商品分类接口 |\n| country | string, maxLen=1000 | 否 | 发货国家 |\n| currencyCode | string, default=USD, maxLen=1000 | 否 | 货币代码 |\n| endFavorites | integer，≥0 | 否 | 收藏数（结束） |\n| endFavoritesWeekly | integer，≥0 | 否 | 周新增收藏数（结束） |\n| endPrice | number，≥0 | 否 | 价格（结束），与起始价共同组成上游 price |\n| endReviews | integer，≥0 | 否 | 评论数（结束） |\n| endReviewsWeekly | integer，≥0 | 否 | 周新增评论数（结束） |\n| endSales | integer，≥0 | 否 | 总销量（结束） |\n| endSalesWeekly | integer，≥0 | 否 | 周销量（结束） |\n| isBestsell | integer | 否 | 是否畅销商品 |\n| isPick | integer | 否 | 是否 Pick 商品 |\n| isRaving | integer | 否 | 是否 Raving 商品 |\n| listedTime | string, pattern | 否 | 上架时间不早于该日期（YYYY-MM-DD） |\n| page | integer，≥1，默认 1 | 否 | 页码（从 1 开始） |\n| pageSize | integer，1~100，默认 20 | 否 | 每页条数，最大 100，建议不超过 50 |\n| productType | string，须符合 schema 正则 | 否 | 商品类型，多个逗号分隔：1=手工 2=复古 3=数字 4=定制 9=其他 |\n| searchKey | string, maxLen=500 | 否 | 搜索关键词或 Etsy 商品 URL |\n| sortBy | integer (1~6) | 否 | 排序字段（对应上游 sort_by，取值 1~6） |\n| sortDesc | integer | 否 | 排序方向（对应上游 `desc`）。schema 示例：降序 `1`、升序 `2`（与店铺查询的 `sortDesc` 编码不同） |\n| status | integer | 否 | 商品状态（示例：1 上架，0 下架） |\n\n## 响应主要字段\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| total | integer | 记录数（本页返回条数，便于与列表长度对齐） |\n| sourceTool | string | 工具类型：ehunt |\n| sourceType | string | 来源类型：etsy |\n| columns | array | 渲染的列 |\n| costToken | integer | 消耗 token（按本页返回条数估算） |\n| productNum | integer | 符合条件的商品总数（上游 product_num） |\n| title | string | 标题 |\n| type | string | 渲染的样式 |\n| products | array | Etsy 商品列表 |\n\n### `products[]` 元素\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| category | string | 类目名称 |\n| favorites | integer | 收藏数 |\n| favoritesWeekly | integer | 周新增收藏数 |\n| imageUrl | string | 主图 URL |\n| isBestsell | integer | 是否畅销：1=是 |\n| isPick | integer | 是否 Pick：1=是 |\n| isRaving | integer | 是否 Raving：1=是 |\n| price | number | 价格 |\n| productUrl | string | 商品链接 |\n| releaseTime | string | 上架/发布时间 |\n| reviews | integer | 评论数 |\n| reviewsWeekly | integer | 周新增评论数 |\n| salesTotal | integer | 总销量 |\n| salesWeekly | integer | 周销量 |\n| shipsFrom | string | 发货国家 |\n| status | integer | 商品状态：1=上架，0=下架 |\n| storeName | string | 店铺名称 |\n| tags | string | 标签 |\n| title | string | 商品标题 |\n\n## 脚本调试（可选）\n\n仓库内提供 **`scripts/etsy_product_query.py`**（Python 3，仅标准库）。\n\n- **默认路径段**：`ehunt/etsy/productQuery`（可用 `LINKFOX_EHUNT_PRODUCT_QUERY_PATH` 覆盖）\n- **网关**：`https://tool-gateway.linkfox.com`（可用 `LINKFOX_TOOL_GATEWAY_BASE` 覆盖）；**鉴权**：`LINKFOXAGENT_API_KEY`（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理）\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\npython scripts/etsy_product_query.py '{\"searchKey\": \"poster\", \"currencyCode\": \"USD\", \"page\": 1, \"pageSize\": 20}'\n```\n\nFile v1.0.9:references/onboarding.md\n\n# 解决认证和积分问题\n\n调用本 skill 时若网关返回 **auth** 或 **billing** 错误，走本 skill 自带的 `scripts/onboarding.py` 完成引导。\n\n**auth 场景**：`errcode=401` 或消息含 `authorized error`/`鉴权失败`/`未授权`/`unauthorized`；或 `LINKFOX_AGENT_API_KEY` 与 `LINKFOXAGENT_API_KEY` 均为空。\n1. 若已配置 key → 先让用户重启会话（最常见误判），仍失败让用户重新取 key 或换手机号重注册\n2. 未配置 → 询问：自助去 https://agent.linkfox.com/ 取 key，或提供手机号让脚本注册\n3. 手机号路径：\n   - `python scripts/onboarding.py send-code <phone>` → 展示 JSON 里的 phone/agreements\n   - 收到验证码后：`python scripts/onboarding.py login <phone> <code>`（workbuddy 宿主加 `--channel workbuddy`）\n   - 拿到 `api_key` 后把下面三平台配置转发给用户，提示重启会话生效：\n     - Windows PowerShell（永久）：`setx LINKFOX_AGENT_API_KEY \"<key>\"`\n     - macOS zsh：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.zshrc && source ~/.zshrc`\n     - Linux bash：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.bashrc && source ~/.bashrc`\n     - 变量名 `LINKFOX_AGENT_API_KEY`（主推）或 `LINKFOXAGENT_API_KEY`（老规范）任一即可\n\n**billing 场景**：`errcode=402` 或消息含 `积分/余额/quota/insufficient/充值/套餐到期`。\n- `python scripts/onboarding.py list-plans` → 有 AskUserQuestion 就弹菜单，否则输出编号清单让用户选\n- 校验 `plan_id` ∈ 清单、支付方式 ∈ 该套餐 `available_methods`（通常 `wechat/alipay`）\n- `python scripts/onboarding.py order <plan_id> <method>` → 展示优先级 PNG > `pay_url` > `ascii_qr`（标注兜底）\n- 已付款可选调 `python scripts/onboarding.py query <order_id>`，不主动轮询\n\n排除 `errcode=403`（无权限，不归入这两类）。所有子命令输出 stdout JSON，`error` 字段已含阶段前缀，透传给用户即可。完整用法：`python scripts/onboarding.py --help`。\n\nFile v1.0.9:skill-card.md\n\n## Description:\n\n按多维度筛选 Etsy 商品，包括关键词或 URL、价格、销量、收藏、评论、上架时间、类目、商品类型和 Pick/Bestsell/Raving 标签。\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and e-commerce analysts use this skill to query and filter Etsy listings by product attributes, performance signals, listing state, and marketplace tags while managing LinkFox authentication and billing when required.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill requires a LinkFox API key, and onboarding can expose account or API-key details.\n\nMitigation: Use only accounts intended for this workflow, avoid sharing secrets, configure credentials through environment variables, and rotate or remove keys if exposed.\n\nRisk: The skill can consume paid LinkFox credits and includes payment-order creation.\n\nMitigation: Confirm query page size, expected returned item count, plan selection, and payment method before running chargeable or order commands.\n\nRisk: The query script can write complete API responses and cache files to a local linkfox directory.\n\nMitigation: Review and clean local linkfox output and cache directories after use, especially when queries or response data are sensitive.\n\n## Reference(s):\n\n- [_ehunt_productQuery API reference](references/api.md)\n- [Authentication and billing onboarding](references/onboarding.md)\n- [ClawHub skill page](https://clawhub.ai/linkfox-ai/skills/linkfox-etsy-product-query)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, JSON, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with JSON API responses and shell command examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Full API responses may be saved under a local linkfox session directory; large responses are summarized unless inline output is requested.]\n\n## Skill Version(s):\n\n1.0.9 (source: server 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\nArchive v1.0.8: 7 files, 19248 bytes\n\nFiles: references/api.md (4957b), references/onboarding.md (2046b), scripts/etsy_product_query.py (12673b), scripts/onboarding.py (24089b), skill-card.md (2276b), SKILL.md (2211b), _meta.json (145b)\n\nFile v1.0.8:SKILL.md\n\n---\nname: linkfox-etsy-product-query\ndescription: 按多维度筛选 Etsy 商品（关键词/URL、价格、销量、收藏、评论、上架时间、类目、手工/复古等类型、Pick/Bestsell/Raving 等标签）。当用户提到 Etsy 商品、Etsy listing、Etsy 选品、Etsy 爆款、Etsy handmade、Etsy vintage、etsy items、Etsy商品查询时触发。即使用户未提及工具名，只要在 Etsy 上搜商品、看销量/价格/标签或筛品，也应触发此技能。\n---\n\n# Etsy 商品查询（`_ehunt_productQuery`）\n\n## 要点\n\n- **分页**：`page` 从 1 起；`pageSize` 默认 20、最大 100（建议 ≤50）。\n- **区间入参**：与店铺接口相同思路，`begin*` / `end*` 成对。\n- **排序**：`sortBy` 为 **1~6**（上游 `sort_by`）。`sortDesc`：**1=降序，2=升序**（与 `_ehunt_storeQuery` 的 1/0 不同）。\n- **商品类型** `productType`：`1` 手工、`2` 复古、`3` 数字、`4` 定制、`9` 其他，多选用逗号。\n- **货币**：`currencyCode` 默认 `USD`。\n- **类目 id**：`category` 为单品类 ID；可先通过类目检索类技能拿到 id。\n\n## 脚本（可选）\n\n命令行调试：`python scripts/etsy_product_query.py '<JSON>'`（需 `LINKFOXAGENT_API_KEY`）。详见 [references/api.md](references/api.md) 末尾。\n\n## 参考\n\n入参/出参表见 [references/api.md](references/api.md)。\n\n## 解决认证和积分问题\n发生以下异常情况时，采用 references/onboarding.md 引导解决问题：\n\n### 异常情况\n- **未配置API Key**：环境变量未配置 `LINKFOX_AGENT_API_KEY`，也未配置 `LINKFOXAGENT_API_KEY`。\n- **响应401或402状态码**\n- **响应提示积分或余额不足**：消息含\"积分余额不足/计费不足/余额不足/quota exceeded/insufficient balance/套餐到期/需充值/请充值\"，或类似含义的内容。\n\n## 积分消耗规则\n\n按动态规则计费：消耗积分 = 返回的商品数 × 1.8。按本页返回条数计费；翻到下一页，本质上是再发一次请求，再按下一页返回条数重新计算。\n\n> **重要**：本技能的服务按倍数动态计算，可能一次性消耗大量积分，必须提醒用户，由用户决定是否继续。\n\nFile v1.0.8:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-etsy-product-query\",\n  \"version\": \"1.0.8\",\n  \"publishedAt\": 1786099758628\n}\n\nFile v1.0.8:references/api.md\n\n# `_ehunt_productQuery` API 参考\n\n## 调用说明\n\n- **工具名**：`_ehunt_productQuery`（LinkFox MCP，`serverName`：第三方数据服务）。\n- **MCP 展示名**：Etsy商品查询。\n- **说明**：参数与返回结构以当前网关返回为准；若上游返回 JSON 根级 `code` 字段，成功值以实网为准。\n\n## 请求参数（JSON）\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| beginFavorites | integer，≥0 | 否 | 收藏数（起始），与结束值共同组成上游 favorites |\n| beginFavoritesWeekly | integer，≥0 | 否 | 周新增收藏数（起始），与结束值共同组成上游 favorites_weekly |\n| beginPrice | number，≥0 | 否 | 价格（起始），与结束价共同组成上游 price（如 20~100）；仅填一侧时上游为 起始~ 或 ~结束 |\n| beginReviews | integer，≥0 | 否 | 评论数（起始），与结束值共同组成上游 reviews |\n| beginReviewsWeekly | integer，≥0 | 否 | 周新增评论数（起始），与结束值共同组成上游 reviews_weekly |\n| beginSales | integer，≥0 | 否 | 总销量（起始），与结束值共同组成上游 sales |\n| beginSalesWeekly | integer，≥0 | 否 | 周销量（起始），与结束值共同组成上游 sales_weekly（如 1~100） |\n| category | string, maxLen=1000 | 否 | 商品分类 ID（单品类），详见 商品分类接口 |\n| country | string, maxLen=1000 | 否 | 发货国家 |\n| currencyCode | string, default=USD, maxLen=1000 | 否 | 货币代码 |\n| endFavorites | integer，≥0 | 否 | 收藏数（结束） |\n| endFavoritesWeekly | integer，≥0 | 否 | 周新增收藏数（结束） |\n| endPrice | number，≥0 | 否 | 价格（结束），与起始价共同组成上游 price |\n| endReviews | integer，≥0 | 否 | 评论数（结束） |\n| endReviewsWeekly | integer，≥0 | 否 | 周新增评论数（结束） |\n| endSales | integer，≥0 | 否 | 总销量（结束） |\n| endSalesWeekly | integer，≥0 | 否 | 周销量（结束） |\n| isBestsell | integer | 否 | 是否畅销商品 |\n| isPick | integer | 否 | 是否 Pick 商品 |\n| isRaving | integer | 否 | 是否 Raving 商品 |\n| listedTime | string, pattern | 否 | 上架时间不早于该日期（YYYY-MM-DD） |\n| page | integer，≥1，默认 1 | 否 | 页码（从 1 开始） |\n| pageSize | integer，1~100，默认 20 | 否 | 每页条数，最大 100，建议不超过 50 |\n| productType | string，须符合 schema 正则 | 否 | 商品类型，多个逗号分隔：1=手工 2=复古 3=数字 4=定制 9=其他 |\n| searchKey | string, maxLen=500 | 否 | 搜索关键词或 Etsy 商品 URL |\n| sortBy | integer (1~6) | 否 | 排序字段（对应上游 sort_by，取值 1~6） |\n| sortDesc | integer | 否 | 排序方向（对应上游 `desc`）。schema 示例：降序 `1`、升序 `2`（与店铺查询的 `sortDesc` 编码不同） |\n| status | integer | 否 | 商品状态（示例：1 上架，0 下架） |\n\n## 响应主要字段\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| total | integer | 记录数（本页返回条数，便于与列表长度对齐） |\n| sourceTool | string | 工具类型：ehunt |\n| sourceType | string | 来源类型：etsy |\n| columns | array | 渲染的列 |\n| costToken | integer | 消耗 token（按本页返回条数估算） |\n| productNum | integer | 符合条件的商品总数（上游 product_num） |\n| title | string | 标题 |\n| type | string | 渲染的样式 |\n| products | array | Etsy 商品列表 |\n\n### `products[]` 元素\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| category | string | 类目名称 |\n| favorites | integer | 收藏数 |\n| favoritesWeekly | integer | 周新增收藏数 |\n| imageUrl | string | 主图 URL |\n| isBestsell | integer | 是否畅销：1=是 |\n| isPick | integer | 是否 Pick：1=是 |\n| isRaving | integer | 是否 Raving：1=是 |\n| price | number | 价格 |\n| productUrl | string | 商品链接 |\n| releaseTime | string | 上架/发布时间 |\n| reviews | integer | 评论数 |\n| reviewsWeekly | integer | 周新增评论数 |\n| salesTotal | integer | 总销量 |\n| salesWeekly | integer | 周销量 |\n| shipsFrom | string | 发货国家 |\n| status | integer | 商品状态：1=上架，0=下架 |\n| storeName | string | 店铺名称 |\n| tags | string | 标签 |\n| title | string | 商品标题 |\n\n## 脚本调试（可选）\n\n仓库内提供 **`scripts/etsy_product_query.py`**（Python 3，仅标准库）。\n\n- **默认路径段**：`ehunt/etsy/productQuery`（可用 `LINKFOX_EHUNT_PRODUCT_QUERY_PATH` 覆盖）\n- **网关**：`https://tool-gateway.linkfox.com`（可用 `LINKFOX_TOOL_GATEWAY_BASE` 覆盖）；**鉴权**：`LINKFOXAGENT_API_KEY`（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理）\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\npython scripts/etsy_product_query.py '{\"searchKey\": \"poster\", \"currencyCode\": \"USD\", \"page\": 1, \"pageSize\": 20}'\n```\n\nFile v1.0.8:references/onboarding.md\n\n# 解决认证和积分问题\n\n调用本 skill 时若网关返回 **auth** 或 **billing** 错误，走本 skill 自带的 `scripts/onboarding.py` 完成引导。\n\n**auth 场景**：`errcode=401` 或消息含 `authorized error`/`鉴权失败`/`未授权`/`unauthorized`；或 `LINKFOX_AGENT_API_KEY` 与 `LINKFOXAGENT_API_KEY` 均为空。\n1. 若已配置 key → 先让用户重启会话（最常见误判），仍失败让用户重新取 key 或换手机号重注册\n2. 未配置 → 询问：自助去 https://agent.linkfox.com/ 取 key，或提供手机号让脚本注册\n3. 手机号路径：\n   - `python scripts/onboarding.py send-code <phone>` → 展示 JSON 里的 phone/agreements\n   - 收到验证码后：`python scripts/onboarding.py login <phone> <code>`（workbuddy 宿主加 `--channel workbuddy`）\n   - 拿到 `api_key` 后把下面三平台配置转发给用户，提示重启会话生效：\n     - Windows PowerShell（永久）：`setx LINKFOX_AGENT_API_KEY \"<key>\"`\n     - macOS zsh：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.zshrc && source ~/.zshrc`\n     - Linux bash：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.bashrc && source ~/.bashrc`\n     - 变量名 `LINKFOX_AGENT_API_KEY`（主推）或 `LINKFOXAGENT_API_KEY`（老规范）任一即可\n\n**billing 场景**：`errcode=402` 或消息含 `积分/余额/quota/insufficient/充值/套餐到期`。\n- `python scripts/onboarding.py list-plans` → 有 AskUserQuestion 就弹菜单，否则输出编号清单让用户选\n- 校验 `plan_id` ∈ 清单、支付方式 ∈ 该套餐 `available_methods`（通常 `wechat/alipay`）\n- `python scripts/onboarding.py order <plan_id> <method>` → 展示优先级 PNG > `pay_url` > `ascii_qr`（标注兜底）\n- 已付款可选调 `python scripts/onboarding.py query <order_id>`，不主动轮询\n\n排除 `errcode=403`（无权限，不归入这两类）。所有子命令输出 stdout JSON，`error` 字段已含阶段前缀，透传给用户即可。完整用法：`python scripts/onboarding.py --help`。\n\nFile v1.0.8:skill-card.md\n\n## Description:\n\nQueries and filters Etsy products by keyword or product URL, price, sales, favorites, reviews, listing date, category, product type, and marketplace labels.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal Etsy sellers, marketplace researchers, and agent users use this skill to find and compare Etsy listings by commercial signals such as price, sales, favorites, reviews, listing time, category, and product labels.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Etsy search inputs and API credentials are sent to LinkFox services.\n\nMitigation: Use the skill only when the user is comfortable sharing those inputs and credentials with LinkFox.\n\nRisk: The artifact includes account login, API-key generation, and payment-order flows beyond product search.\n\nMitigation: Prefer the self-service LinkFox account page for account setup and do not run payment commands unless the user intentionally wants to buy credits.\n\nRisk: Query results and payment QR artifacts may be saved in local linkfox output or cache directories.\n\nMitigation: Periodically remove local linkfox output and cache directories when those results or payment files are sensitive.\n\n## Reference(s):\n\n- [_ehunt_productQuery API Reference](references/api.md)\n- [Authentication and Credits Onboarding](references/onboarding.md)\n- [ClawHub Skill Page](https://clawhub.ai/linkfox-ai/skills/linkfox-etsy-product-query)\n\n## Skill Output:\n\n**Output Type(s):** [text, JSON, files, shell commands, configuration guidance]\n\n**Output Format:** [Markdown guidance with JSON API results and saved JSON response files]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Large API responses are summarized in stdout while the full response is saved under a local linkfox session directory.]\n\n## Skill Version(s):\n\n1.0.8 (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\nArchive v1.0.7: 5 files, 10752 bytes\n\nFiles: references/api.md (4957b), scripts/etsy_product_query.py (12673b), skill-card.md (3236b), SKILL.md (2828b), _meta.json (145b)\n\nFile v1.0.7:SKILL.md\n\n---\nname: linkfox-etsy-product-query\ndescription: 按多维度筛选 Etsy 商品（关键词/URL、价格、销量、收藏、评论、上架时间、类目、手工/复古等类型、Pick/Bestsell/Raving 等标签）。当用户提到 Etsy 商品、Etsy listing、Etsy 选品、Etsy 爆款、Etsy handmade、Etsy vintage、etsy items、Etsy商品查询时触发。即使用户未提及工具名，只要在 Etsy 上搜商品、看销量/价格/标签或筛品，也应触发此技能。\n---\n\n# Etsy 商品查询（`_ehunt_productQuery`）\n\n## 要点\n\n- **分页**：`page` 从 1 起；`pageSize` 默认 20、最大 100（建议 ≤50）。\n- **区间入参**：与店铺接口相同思路，`begin*` / `end*` 成对。\n- **排序**：`sortBy` 为 **1~6**（上游 `sort_by`）。`sortDesc`：**1=降序，2=升序**（与 `_ehunt_storeQuery` 的 1/0 不同）。\n- **商品类型** `productType`：`1` 手工、`2` 复古、`3` 数字、`4` 定制、`9` 其他，多选用逗号。\n- **货币**：`currencyCode` 默认 `USD`。\n- **类目 id**：`category` 为单品类 ID；可先通过类目检索类技能拿到 id。\n\n## 脚本（可选）\n\n命令行调试：`python scripts/etsy_product_query.py '<JSON>'`（需 `LINKFOXAGENT_API_KEY`）。详见 [references/api.md](references/api.md) 末尾。\n\n## 参考\n\n入参/出参表见 [references/api.md](references/api.md)。\n\n## 解决认证和积分问题\n发生以下异常情况时，采用以下措施来处理：\n\n### 异常情况\n- **未配置API Key**：环境变量未配置 `LINKFOX_AGENT_API_KEY`，也未配置 `LINKFOXAGENT_API_KEY`。\n- **响应401或402状态码**\n- **响应提示积分或余额不足**：消息含\"积分余额不足/计费不足/余额不足/quota exceeded/insufficient balance/套餐到期/需充值/请充值\"，或类似含义的内容。\n\n### 措施\n- 优先采用skill内的 onboarding.md 引导解决问题。\n- 如找不到 onboarding.md 文件，则加载 /linkfox-onboarding 这个skill并根据它的引导来处理。如未安装请先安装：\n    - 下载 https://agent-files.linkfox.com/skills/linkfox-onboarding/release.zip，解压后安装这个skill。如需用户授权才可下载，要询问用户获得授权，你不能自己放弃下载。\n- 兜底措施：仅当前面两个措施经过所有努力都走不通时，才提示用户依据 https://skill.linkfox.com/linkfoxskills/guide.htm 指引获取API Key，或去 https://os.linkfox.com/ 补充积分。\n\n## 积分消耗规则\n\n按动态规则计费：消耗积分 = 返回的商品数 × 1.8。按本页返回条数计费；翻到下一页，本质上是再发一次请求，再按下一页返回条数重新计算。\n\n> **重要**：本技能的服务按倍数动态计算，可能一次性消耗大量积分，必须提醒用户，由用户决定是否继续。\n\nFile v1.0.7:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-etsy-product-query\",\n  \"version\": \"1.0.7\",\n  \"publishedAt\": 1783944518455\n}\n\nFile v1.0.7:references/api.md\n\n# `_ehunt_productQuery` API 参考\n\n## 调用说明\n\n- **工具名**：`_ehunt_productQuery`（LinkFox MCP，`serverName`：第三方数据服务）。\n- **MCP 展示名**：Etsy商品查询。\n- **说明**：参数与返回结构以当前网关返回为准；若上游返回 JSON 根级 `code` 字段，成功值以实网为准。\n\n## 请求参数（JSON）\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| beginFavorites | integer，≥0 | 否 | 收藏数（起始），与结束值共同组成上游 favorites |\n| beginFavoritesWeekly | integer，≥0 | 否 | 周新增收藏数（起始），与结束值共同组成上游 favorites_weekly |\n| beginPrice | number，≥0 | 否 | 价格（起始），与结束价共同组成上游 price（如 20~100）；仅填一侧时上游为 起始~ 或 ~结束 |\n| beginReviews | integer，≥0 | 否 | 评论数（起始），与结束值共同组成上游 reviews |\n| beginReviewsWeekly | integer，≥0 | 否 | 周新增评论数（起始），与结束值共同组成上游 reviews_weekly |\n| beginSales | integer，≥0 | 否 | 总销量（起始），与结束值共同组成上游 sales |\n| beginSalesWeekly | integer，≥0 | 否 | 周销量（起始），与结束值共同组成上游 sales_weekly（如 1~100） |\n| category | string, maxLen=1000 | 否 | 商品分类 ID（单品类），详见 商品分类接口 |\n| country | string, maxLen=1000 | 否 | 发货国家 |\n| currencyCode | string, default=USD, maxLen=1000 | 否 | 货币代码 |\n| endFavorites | integer，≥0 | 否 | 收藏数（结束） |\n| endFavoritesWeekly | integer，≥0 | 否 | 周新增收藏数（结束） |\n| endPrice | number，≥0 | 否 | 价格（结束），与起始价共同组成上游 price |\n| endReviews | integer，≥0 | 否 | 评论数（结束） |\n| endReviewsWeekly | integer，≥0 | 否 | 周新增评论数（结束） |\n| endSales | integer，≥0 | 否 | 总销量（结束） |\n| endSalesWeekly | integer，≥0 | 否 | 周销量（结束） |\n| isBestsell | integer | 否 | 是否畅销商品 |\n| isPick | integer | 否 | 是否 Pick 商品 |\n| isRaving | integer | 否 | 是否 Raving 商品 |\n| listedTime | string, pattern | 否 | 上架时间不早于该日期（YYYY-MM-DD） |\n| page | integer，≥1，默认 1 | 否 | 页码（从 1 开始） |\n| pageSize | integer，1~100，默认 20 | 否 | 每页条数，最大 100，建议不超过 50 |\n| productType | string，须符合 schema 正则 | 否 | 商品类型，多个逗号分隔：1=手工 2=复古 3=数字 4=定制 9=其他 |\n| searchKey | string, maxLen=500 | 否 | 搜索关键词或 Etsy 商品 URL |\n| sortBy | integer (1~6) | 否 | 排序字段（对应上游 sort_by，取值 1~6） |\n| sortDesc | integer | 否 | 排序方向（对应上游 `desc`）。schema 示例：降序 `1`、升序 `2`（与店铺查询的 `sortDesc` 编码不同） |\n| status | integer | 否 | 商品状态（示例：1 上架，0 下架） |\n\n## 响应主要字段\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| total | integer | 记录数（本页返回条数，便于与列表长度对齐） |\n| sourceTool | string | 工具类型：ehunt |\n| sourceType | string | 来源类型：etsy |\n| columns | array | 渲染的列 |\n| costToken | integer | 消耗 token（按本页返回条数估算） |\n| productNum | integer | 符合条件的商品总数（上游 product_num） |\n| title | string | 标题 |\n| type | string | 渲染的样式 |\n| products | array | Etsy 商品列表 |\n\n### `products[]` 元素\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| category | string | 类目名称 |\n| favorites | integer | 收藏数 |\n| favoritesWeekly | integer | 周新增收藏数 |\n| imageUrl | string | 主图 URL |\n| isBestsell | integer | 是否畅销：1=是 |\n| isPick | integer | 是否 Pick：1=是 |\n| isRaving | integer | 是否 Raving：1=是 |\n| price | number | 价格 |\n| productUrl | string | 商品链接 |\n| releaseTime | string | 上架/发布时间 |\n| reviews | integer | 评论数 |\n| reviewsWeekly | integer | 周新增评论数 |\n| salesTotal | integer | 总销量 |\n| salesWeekly | integer | 周销量 |\n| shipsFrom | string | 发货国家 |\n| status | integer | 商品状态：1=上架，0=下架 |\n| storeName | string | 店铺名称 |\n| tags | string | 标签 |\n| title | string | 商品标题 |\n\n## 脚本调试（可选）\n\n仓库内提供 **`scripts/etsy_product_query.py`**（Python 3，仅标准库）。\n\n- **默认路径段**：`ehunt/etsy/productQuery`（可用 `LINKFOX_EHUNT_PRODUCT_QUERY_PATH` 覆盖）\n- **网关**：`https://tool-gateway.linkfox.com`（可用 `LINKFOX_TOOL_GATEWAY_BASE` 覆盖）；**鉴权**：`LINKFOXAGENT_API_KEY`（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理）\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\npython scripts/etsy_product_query.py '{\"searchKey\": \"poster\", \"currencyCode\": \"USD\", \"page\": 1, \"pageSize\": 20}'\n```\n\nFile v1.0.7:skill-card.md\n\n## Description: <br>\nHelps agents search and filter Etsy products by keyword or listing URL, price, sales, favorites, reviews, listing date, category, product type, and product tags. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal sellers, product researchers, and e-commerce operators use this skill to turn multi-criteria Etsy product research requests into LinkFox-backed product-query parameters, run the search, and review structured product results. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill requires a LinkFox API key and sends Etsy research queries through a credentialed LinkFox remote gateway. <br>\nMitigation: Use it only when sharing the API key, query terms, filters, and session metadata with LinkFox services is acceptable. <br>\nRisk: The gateway host can be changed through environment configuration. <br>\nMitigation: Before running the skill, confirm LINKFOX_TOOL_GATEWAY is unset or points only to the official LinkFox gateway. <br>\nRisk: Full product-query responses may be saved or cached locally and can contain sensitive sourcing research. <br>\nMitigation: Review the local linkfox output and cache directories after sensitive searches, and delete saved JSON files when retention is not needed. <br>\nRisk: Large result pages can consume many LinkFox credits because costs scale with returned product count. <br>\nMitigation: Warn the user about per-result credit consumption and confirm before broad searches, large page sizes, or repeated pagination. <br>\nRisk: Authentication or credit troubleshooting can direct installation of a remote LinkFox onboarding package. <br>\nMitigation: Download or install onboarding material only after confirming the source and obtaining explicit user approval. <br>\n\n\n## Reference(s): <br>\n- [Etsy Product Query API Reference](artifact/references/api.md) <br>\n- [ClawHub Skill Page](https://clawhub.ai/linkfox-ai/skills/linkfox-etsy-product-query) <br>\n- [LinkFox API Key and Credit Guide](https://skill.linkfox.com/linkfoxskills/guide.htm) <br>\n- [LinkFox Tool Gateway](https://tool-gateway.linkfox.com) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with JSON request parameters, shell-command examples, stdout summaries, and optional saved JSON response files.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Accepts Etsy keywords or listing URLs plus filters for price, sales, favorites, reviews, listing date, category, status, product type, and tags; requires a LinkFox API key and can save or cache full response JSON under a linkfox directory.] <br>\n\n## Skill Version(s): <br>\n1.0.7 (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\nArchive v1.0.6: 5 files, 9506 bytes\n\nFiles: references/api.md (4946b), scripts/etsy_product_query.py (12754b), skill-card.md (2033b), SKILL.md (1376b), _meta.json (145b)\n\nFile v1.0.6:SKILL.md\n\n---\nname: linkfox-etsy-product-query\ndescription: 按多维度筛选 Etsy 商品（关键词/URL、价格、销量、收藏、评论、上架时间、类目、手工/复古等类型、Pick/Bestsell/Raving 等标签）。当用户提到 Etsy 商品、Etsy listing、Etsy 选品、Etsy 爆款、Etsy handmade、Etsy vintage、etsy items、Etsy商品查询时触发。即使用户未提及工具名，只要在 Etsy 上搜商品、看销量/价格/标签或筛品，也应触发此技能。\n---\n\n# Etsy 商品查询（`_ehunt_productQuery`）\n\n## 要点\n\n- **分页**：`page` 从 1 起；`pageSize` 默认 20、最大 100（建议 ≤50）。\n- **区间入参**：与店铺接口相同思路，`begin*` / `end*` 成对。\n- **排序**：`sortBy` 为 **1~6**（上游 `sort_by`）。`sortDesc`：**1=降序，2=升序**（与 `_ehunt_storeQuery` 的 1/0 不同）。\n- **商品类型** `productType`：`1` 手工、`2` 复古、`3` 数字、`4` 定制、`9` 其他，多选用逗号。\n- **货币**：`currencyCode` 默认 `USD`。\n- **类目 id**：`category` 为单品类 ID；可先通过类目检索类技能拿到 id。\n\n## 脚本（可选）\n\n命令行调试：`python scripts/etsy_product_query.py '<JSON>'`（需 `LINKFOXAGENT_API_KEY`）。详见 [references/api.md](references/api.md) 末尾。\n\n## 参考\n\n入参/出参表见 [references/api.md](references/api.md)。\n\nFile v1.0.6:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-etsy-product-query\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1783662002998\n}\n\nFile v1.0.6:references/api.md\n\n# `_ehunt_productQuery` API 参考\n\n## 调用说明\n\n- **工具名**：`_ehunt_productQuery`（LinkFox MCP，`serverName`：第三方数据服务）。\n- **MCP 展示名**：Etsy商品查询。\n- **说明**：参数与返回结构以当前网关返回为准；若上游返回 JSON 根级 `code` 字段，成功值以实网为准。\n\n## 请求参数（JSON）\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| beginFavorites | integer，≥0 | 否 | 收藏数（起始），与结束值共同组成上游 favorites |\n| beginFavoritesWeekly | integer，≥0 | 否 | 周新增收藏数（起始），与结束值共同组成上游 favorites_weekly |\n| beginPrice | number，≥0 | 否 | 价格（起始），与结束价共同组成上游 price（如 20~100）；仅填一侧时上游为 起始~ 或 ~结束 |\n| beginReviews | integer，≥0 | 否 | 评论数（起始），与结束值共同组成上游 reviews |\n| beginReviewsWeekly | integer，≥0 | 否 | 周新增评论数（起始），与结束值共同组成上游 reviews_weekly |\n| beginSales | integer，≥0 | 否 | 总销量（起始），与结束值共同组成上游 sales |\n| beginSalesWeekly | integer，≥0 | 否 | 周销量（起始），与结束值共同组成上游 sales_weekly（如 1~100） |\n| category | string, maxLen=1000 | 否 | 商品分类 ID（单品类），详见 商品分类接口 |\n| country | string, maxLen=1000 | 否 | 发货国家 |\n| currencyCode | string, default=USD, maxLen=1000 | 否 | 货币代码 |\n| endFavorites | integer，≥0 | 否 | 收藏数（结束） |\n| endFavoritesWeekly | integer，≥0 | 否 | 周新增收藏数（结束） |\n| endPrice | number，≥0 | 否 | 价格（结束），与起始价共同组成上游 price |\n| endReviews | integer，≥0 | 否 | 评论数（结束） |\n| endReviewsWeekly | integer，≥0 | 否 | 周新增评论数（结束） |\n| endSales | integer，≥0 | 否 | 总销量（结束） |\n| endSalesWeekly | integer，≥0 | 否 | 周销量（结束） |\n| isBestsell | integer | 否 | 是否畅销商品 |\n| isPick | integer | 否 | 是否 Pick 商品 |\n| isRaving | integer | 否 | 是否 Raving 商品 |\n| listedTime | string, pattern | 否 | 上架时间不早于该日期（YYYY-MM-DD） |\n| page | integer，≥1，默认 1 | 否 | 页码（从 1 开始） |\n| pageSize | integer，1~100，默认 20 | 否 | 每页条数，最大 100，建议不超过 50 |\n| productType | string，须符合 schema 正则 | 否 | 商品类型，多个逗号分隔：1=手工 2=复古 3=数字 4=定制 9=其他 |\n| searchKey | string, maxLen=500 | 否 | 搜索关键词或 Etsy 商品 URL |\n| sortBy | integer (1~6) | 否 | 排序字段（对应上游 sort_by，取值 1~6） |\n| sortDesc | integer | 否 | 排序方向（对应上游 `desc`）。schema 示例：降序 `1`、升序 `2`（与店铺查询的 `sortDesc` 编码不同） |\n| status | integer | 否 | 商品状态（示例：1 上架，0 下架） |\n\n## 响应主要字段\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| total | integer | 记录数（本页返回条数，便于与列表长度对齐） |\n| sourceTool | string | 工具类型：ehunt |\n| sourceType | string | 来源类型：etsy |\n| columns | array | 渲染的列 |\n| costToken | integer | 消耗 token（按本页返回条数估算） |\n| productNum | integer | 符合条件的商品总数（上游 product_num） |\n| title | string | 标题 |\n| type | string | 渲染的样式 |\n| products | array | Etsy 商品列表 |\n\n### `products[]` 元素\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| category | string | 类目名称 |\n| favorites | integer | 收藏数 |\n| favoritesWeekly | integer | 周新增收藏数 |\n| imageUrl | string | 主图 URL |\n| isBestsell | integer | 是否畅销：1=是 |\n| isPick | integer | 是否 Pick：1=是 |\n| isRaving | integer | 是否 Raving：1=是 |\n| price | number | 价格 |\n| productUrl | string | 商品链接 |\n| releaseTime | string | 上架/发布时间 |\n| reviews | integer | 评论数 |\n| reviewsWeekly | integer | 周新增评论数 |\n| salesTotal | integer | 总销量 |\n| salesWeekly | integer | 周销量 |\n| shipsFrom | string | 发货国家 |\n| status | integer | 商品状态：1=上架，0=下架 |\n| storeName | string | 店铺名称 |\n| tags | string | 标签 |\n| title | string | 商品标题 |\n\n## 脚本调试（可选）\n\n仓库内提供 **`scripts/etsy_product_query.py`**（Python 3，仅标准库）。\n\n- **默认路径段**：`ehunt/etsy/productQuery`（可用 `LINKFOX_EHUNT_PRODUCT_QUERY_PATH` 覆盖）\n- **网关**：`https://tool-gateway.linkfox.com`（可用 `LINKFOX_TOOL_GATEWAY_BASE` 覆盖）；**鉴权**：`LINKFOXAGENT_API_KEY`（申请见 https://skill.linkfox.com/linkfoxskills/guide.htm ）\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\npython scripts/etsy_product_query.py '{\"searchKey\": \"poster\", \"currencyCode\": \"USD\", \"page\": 1, \"pageSize\": 20}'\n```\n\nFile v1.0.6:skill-card.md\n\n## Description: <br>\nQueries and filters Etsy product listings by keyword or URL, price, sales, favorites, reviews, listing date, category, product type, and product labels such as Pick, Bestsell, and Raving. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users, e-commerce operators, and agents use this skill to search and compare Etsy listings for product research, selection, and filtering by sales, price, review, category, and listing attributes. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill sends Etsy query parameters and a LinkFox API key to a configurable network gateway. <br>\nMitigation: Use only a trusted gateway configuration and check or unset LINKFOX_TOOL_GATEWAY before running. <br>\nRisk: Full API responses are saved locally and may be written outside the preferred workspace if that location is not writable. <br>\nMitigation: Run the skill in an appropriate workspace and review or remove saved LinkFox response files and caches when they are no longer needed. <br>\n\n\n## Reference(s): <br>\n- [_ehunt_productQuery API Reference](references/api.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, JSON, Files, Shell commands, Guidance] <br>\n**Output Format:** [Markdown guidance with optional shell commands; script output is JSON or a compact text summary.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Full API responses are saved locally; large responses may be summarized in stdout.] <br>\n\n## Skill Version(s): <br>\n1.0.6 (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\nArchive v1.0.5: 5 files, 9727 bytes\n\nFiles: references/api.md (4946b), scripts/etsy_product_query.py (12754b), skill-card.md (2376b), SKILL.md (1376b), _meta.json (145b)\n\nFile v1.0.5:SKILL.md\n\n---\nname: linkfox-etsy-product-query\ndescription: 按多维度筛选 Etsy 商品（关键词/URL、价格、销量、收藏、评论、上架时间、类目、手工/复古等类型、Pick/Bestsell/Raving 等标签）。当用户提到 Etsy 商品、Etsy listing、Etsy 选品、Etsy 爆款、Etsy handmade、Etsy vintage、etsy items、Etsy商品查询时触发。即使用户未提及工具名，只要在 Etsy 上搜商品、看销量/价格/标签或筛品，也应触发此技能。\n---\n\n# Etsy 商品查询（`_ehunt_productQuery`）\n\n## 要点\n\n- **分页**：`page` 从 1 起；`pageSize` 默认 20、最大 100（建议 ≤50）。\n- **区间入参**：与店铺接口相同思路，`begin*` / `end*` 成对。\n- **排序**：`sortBy` 为 **1~6**（上游 `sort_by`）。`sortDesc`：**1=降序，2=升序**（与 `_ehunt_storeQuery` 的 1/0 不同）。\n- **商品类型** `productType`：`1` 手工、`2` 复古、`3` 数字、`4` 定制、`9` 其他，多选用逗号。\n- **货币**：`currencyCode` 默认 `USD`。\n- **类目 id**：`category` 为单品类 ID；可先通过类目检索类技能拿到 id。\n\n## 脚本（可选）\n\n命令行调试：`python scripts/etsy_product_query.py '<JSON>'`（需 `LINKFOXAGENT_API_KEY`）。详见 [references/api.md](references/api.md) 末尾。\n\n## 参考\n\n入参/出参表见 [references/api.md](references/api.md)。\n\nFile v1.0.5:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-etsy-product-query\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1783575871114\n}\n\nFile v1.0.5:references/api.md\n\n# `_ehunt_productQuery` API 参考\n\n## 调用说明\n\n- **工具名**：`_ehunt_productQuery`（LinkFox MCP，`serverName`：第三方数据服务）。\n- **MCP 展示名**：Etsy商品查询。\n- **说明**：参数与返回结构以当前网关返回为准；若上游返回 JSON 根级 `code` 字段，成功值以实网为准。\n\n## 请求参数（JSON）\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| beginFavorites | integer，≥0 | 否 | 收藏数（起始），与结束值共同组成上游 favorites |\n| beginFavoritesWeekly | integer，≥0 | 否 | 周新增收藏数（起始），与结束值共同组成上游 favorites_weekly |\n| beginPrice | number，≥0 | 否 | 价格（起始），与结束价共同组成上游 price（如 20~100）；仅填一侧时上游为 起始~ 或 ~结束 |\n| beginReviews | integer，≥0 | 否 | 评论数（起始），与结束值共同组成上游 reviews |\n| beginReviewsWeekly | integer，≥0 | 否 | 周新增评论数（起始），与结束值共同组成上游 reviews_weekly |\n| beginSales | integer，≥0 | 否 | 总销量（起始），与结束值共同组成上游 sales |\n| beginSalesWeekly | integer，≥0 | 否 | 周销量（起始），与结束值共同组成上游 sales_weekly（如 1~100） |\n| category | string, maxLen=1000 | 否 | 商品分类 ID（单品类），详见 商品分类接口 |\n| country | string, maxLen=1000 | 否 | 发货国家 |\n| currencyCode | string, default=USD, maxLen=1000 | 否 | 货币代码 |\n| endFavorites | integer，≥0 | 否 | 收藏数（结束） |\n| endFavoritesWeekly | integer，≥0 | 否 | 周新增收藏数（结束） |\n| endPrice | number，≥0 | 否 | 价格（结束），与起始价共同组成上游 price |\n| endReviews | integer，≥0 | 否 | 评论数（结束） |\n| endReviewsWeekly | integer，≥0 | 否 | 周新增评论数（结束） |\n| endSales | integer，≥0 | 否 | 总销量（结束） |\n| endSalesWeekly | integer，≥0 | 否 | 周销量（结束） |\n| isBestsell | integer | 否 | 是否畅销商品 |\n| isPick | integer | 否 | 是否 Pick 商品 |\n| isRaving | integer | 否 | 是否 Raving 商品 |\n| listedTime | string, pattern | 否 | 上架时间不早于该日期（YYYY-MM-DD） |\n| page | integer，≥1，默认 1 | 否 | 页码（从 1 开始） |\n| pageSize | integer，1~100，默认 20 | 否 | 每页条数，最大 100，建议不超过 50 |\n| productType | string，须符合 schema 正则 | 否 | 商品类型，多个逗号分隔：1=手工 2=复古 3=数字 4=定制 9=其他 |\n| searchKey | string, maxLen=500 | 否 | 搜索关键词或 Etsy 商品 URL |\n| sortBy | integer (1~6) | 否 | 排序字段（对应上游 sort_by，取值 1~6） |\n| sortDesc | integer | 否 | 排序方向（对应上游 `desc`）。schema 示例：降序 `1`、升序 `2`（与店铺查询的 `sortDesc` 编码不同） |\n| status | integer | 否 | 商品状态（示例：1 上架，0 下架） |\n\n## 响应主要字段\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| total | integer | 记录数（本页返回条数，便于与列表长度对齐） |\n| sourceTool | string | 工具类型：ehunt |\n| sourceType | string | 来源类型：etsy |\n| columns | array | 渲染的列 |\n| costToken | integer | 消耗 token（按本页返回条数估算） |\n| productNum | integer | 符合条件的商品总数（上游 product_num） |\n| title | string | 标题 |\n| type | string | 渲染的样式 |\n| products | array | Etsy 商品列表 |\n\n### `products[]` 元素\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| category | string | 类目名称 |\n| favorites | integer | 收藏数 |\n| favoritesWeekly | integer | 周新增收藏数 |\n| imageUrl | string | 主图 URL |\n| isBestsell | integer | 是否畅销：1=是 |\n| isPick | integer | 是否 Pick：1=是 |\n| isRaving | integer | 是否 Raving：1=是 |\n| price | number | 价格 |\n| productUrl | string | 商品链接 |\n| releaseTime | string | 上架/发布时间 |\n| reviews | integer | 评论数 |\n| reviewsWeekly | integer | 周新增评论数 |\n| salesTotal | integer | 总销量 |\n| salesWeekly | integer | 周销量 |\n| shipsFrom | string | 发货国家 |\n| status | integer | 商品状态：1=上架，0=下架 |\n| storeName | string | 店铺名称 |\n| tags | string | 标签 |\n| title | string | 商品标题 |\n\n## 脚本调试（可选）\n\n仓库内提供 **`scripts/etsy_product_query.py`**（Python 3，仅标准库）。\n\n- **默认路径段**：`ehunt/etsy/productQuery`（可用 `LINKFOX_EHUNT_PRODUCT_QUERY_PATH` 覆盖）\n- **网关**：`https://tool-gateway.linkfox.com`（可用 `LINKFOX_TOOL_GATEWAY_BASE` 覆盖）；**鉴权**：`LINKFOXAGENT_API_KEY`（申请见 https://skill.linkfox.com/linkfoxskills/guide.htm ）\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\npython scripts/etsy_product_query.py '{\"searchKey\": \"poster\", \"currencyCode\": \"USD\", \"page\": 1, \"pageSize\": 20}'\n```\n\nFile v1.0.5:skill-card.md\n\n## Description: <br>\n按多维度筛选 Etsy 商品，包括关键词或商品 URL、价格、销量、收藏、评论、上架时间、类目、商品类型和 Pick/Bestsell/Raving 等标签。 <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users and developers use this skill to search and filter Etsy product listings for product research, sourcing, and market comparison workflows. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill sends Etsy search parameters, credentials, and session metadata to LinkFox's gateway, and the gateway endpoint can be changed through environment configuration. <br>\nMitigation: Use the skill only when you trust LinkFox for the query context, keep alternate gateway configuration unset unless deliberately approved, and avoid submitting sensitive search terms. <br>\nRisk: Full query responses, cache entries, and session metadata can be saved locally under linkfox directories. <br>\nMitigation: Review local linkfox output directories after use, apply normal workspace retention controls, and remove cached or saved result files when they are no longer needed. <br>\n\n\n## Reference(s): <br>\n- [_ehunt_productQuery API reference](references/api.md) <br>\n- [LinkFox skill authorization guide](https://skill.linkfox.com/linkfoxskills/guide.htm) <br>\n- [ClawHub skill page](https://clawhub.ai/linkfox-ai/skills/linkfox-etsy-product-query) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, JSON, Files, Shell commands, Configuration guidance] <br>\n**Output Format:** [Markdown guidance with JSON responses or summaries and saved JSON data files] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Full query responses may be saved locally under linkfox directories; large responses are summarized unless inline output is requested.] <br>\n\n## Skill Version(s): <br>\n1.0.5 (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\nArchive v1.0.4: 5 files, 9917 bytes\n\nFiles: references/api.md (4946b), scripts/etsy_product_query.py (12797b), skill-card.md (2564b), SKILL.md (1773b), _meta.json (145b)\n\nFile v1.0.4:SKILL.md\n\n---\nname: linkfox-etsy-product-query\ndescription: 通过 MCP 工具 `_ehunt_productQuery`（展示名「Etsy商品查询」）按多维度筛选 Etsy 商品（关键词/URL、价格、销量、收藏、评论、上架时间、类目、手工/复古等类型、Pick/Bestsell/Raving 等标签）。当用户提到 Etsy 商品、Etsy listing、Etsy 选品、Etsy 爆款、Etsy handmade、Etsy vintage、etsy items、Etsy商品查询、_ehunt_productQuery 时触发。即使用户未提及工具名，只要在 Etsy 上搜商品、看销量/价格/标签或筛品，也应触发此技能。\n---\n\n# Etsy 商品查询（`_ehunt_productQuery`）\n\n在具备 LinkFox「第三方数据服务」MCP 时，按工具名 **`_ehunt_productQuery`** 调用（MCP 展示名：**Etsy商品查询**，以当前环境下发的工具元数据为准）。鉴权与上游路由由网关处理；若响应含根级 `code` 字段，是否成功以实网为准。\n\n## 要点\n\n- **分页**：`page` 从 1 起；`pageSize` 默认 20、最大 100（建议 ≤50）。\n- **区间入参**：与店铺接口相同思路，`begin*` / `end*` 成对。\n- **排序**：`sortBy` 为 **1~6**（上游 `sort_by`）。`sortDesc`：**1=降序，2=升序**（与 `_ehunt_storeQuery` 的 1/0 不同）。\n- **商品类型** `productType`：`1` 手工、`2` 复古、`3` 数字、`4` 定制、`9` 其他，多选用逗号。\n- **货币**：`currencyCode` 默认 `USD`。\n- **类目 id**：`category` 为单品类 ID；可先通过类目检索类技能拿到 id。\n\n## 脚本（可选）\n\n命令行调试：`python scripts/etsy_product_query.py '<JSON>'`（需 `LINKFOXAGENT_API_KEY`）。详见 [references/api.md](references/api.md) 末尾。\n\n## 参考\n\n入参/出参表见 [references/api.md](references/api.md)。\n\nFile v1.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-etsy-product-query\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1783574367355\n}\n\nFile v1.0.4:references/api.md\n\n# `_ehunt_productQuery` API 参考\n\n## 调用说明\n\n- **工具名**：`_ehunt_productQuery`（LinkFox MCP，`serverName`：第三方数据服务）。\n- **MCP 展示名**：Etsy商品查询。\n- **说明**：参数与返回结构以当前网关返回为准；若上游返回 JSON 根级 `code` 字段，成功值以实网为准。\n\n## 请求参数（JSON）\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| beginFavorites | integer，≥0 | 否 | 收藏数（起始），与结束值共同组成上游 favorites |\n| beginFavoritesWeekly | integer，≥0 | 否 | 周新增收藏数（起始），与结束值共同组成上游 favorites_weekly |\n| beginPrice | number，≥0 | 否 | 价格（起始），与结束价共同组成上游 price（如 20~100）；仅填一侧时上游为 起始~ 或 ~结束 |\n| beginReviews | integer，≥0 | 否 | 评论数（起始），与结束值共同组成上游 reviews |\n| beginReviewsWeekly | integer，≥0 | 否 | 周新增评论数（起始），与结束值共同组成上游 reviews_weekly |\n| beginSales | integer，≥0 | 否 | 总销量（起始），与结束值共同组成上游 sales |\n| beginSalesWeekly | integer，≥0 | 否 | 周销量（起始），与结束值共同组成上游 sales_weekly（如 1~100） |\n| category | string, maxLen=1000 | 否 | 商品分类 ID（单品类），详见 商品分类接口 |\n| country | string, maxLen=1000 | 否 | 发货国家 |\n| currencyCode | string, default=USD, maxLen=1000 | 否 | 货币代码 |\n| endFavorites | integer，≥0 | 否 | 收藏数（结束） |\n| endFavoritesWeekly | integer，≥0 | 否 | 周新增收藏数（结束） |\n| endPrice | number，≥0 | 否 | 价格（结束），与起始价共同组成上游 price |\n| endReviews | integer，≥0 | 否 | 评论数（结束） |\n| endReviewsWeekly | integer，≥0 | 否 | 周新增评论数（结束） |\n| endSales | integer，≥0 | 否 | 总销量（结束） |\n| endSalesWeekly | integer，≥0 | 否 | 周销量（结束） |\n| isBestsell | integer | 否 | 是否畅销商品 |\n| isPick | integer | 否 | 是否 Pick 商品 |\n| isRaving | integer | 否 | 是否 Raving 商品 |\n| listedTime | string, pattern | 否 | 上架时间不早于该日期（YYYY-MM-DD） |\n| page | integer，≥1，默认 1 | 否 | 页码（从 1 开始） |\n| pageSize | integer，1~100，默认 20 | 否 | 每页条数，最大 100，建议不超过 50 |\n| productType | string，须符合 schema 正则 | 否 | 商品类型，多个逗号分隔：1=手工 2=复古 3=数字 4=定制 9=其他 |\n| searchKey | string, maxLen=500 | 否 | 搜索关键词或 Etsy 商品 URL |\n| sortBy | integer (1~6) | 否 | 排序字段（对应上游 sort_by，取值 1~6） |\n| sortDesc | integer | 否 | 排序方向（对应上游 `desc`）。schema 示例：降序 `1`、升序 `2`（与店铺查询的 `sortDesc` 编码不同） |\n| status | integer | 否 | 商品状态（示例：1 上架，0 下架） |\n\n## 响应主要字段\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| total | integer | 记录数（本页返回条数，便于与列表长度对齐） |\n| sourceTool | string | 工具类型：ehunt |\n| sourceType | string | 来源类型：etsy |\n| columns | array | 渲染的列 |\n| costToken | integer | 消耗 token（按本页返回条数估算） |\n| productNum | integer | 符合条件的商品总数（上游 product_num） |\n| title | string | 标题 |\n| type | string | 渲染的样式 |\n| products | array | Etsy 商品列表 |\n\n### `products[]` 元素\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| category | string | 类目名称 |\n| favorites | integer | 收藏数 |\n| favoritesWeekly | integer | 周新增收藏数 |\n| imageUrl | string | 主图 URL |\n| isBestsell | integer | 是否畅销：1=是 |\n| isPick | integer | 是否 Pick：1=是 |\n| isRaving | integer | 是否 Raving：1=是 |\n| price | number | 价格 |\n| productUrl | string | 商品链接 |\n| releaseTime | string | 上架/发布时间 |\n| reviews | integer | 评论数 |\n| reviewsWeekly | integer | 周新增评论数 |\n| salesTotal | integer | 总销量 |\n| salesWeekly | integer | 周销量 |\n| shipsFrom | string | 发货国家 |\n| status | integer | 商品状态：1=上架，0=下架 |\n| storeName | string | 店铺名称 |\n| tags | string | 标签 |\n| title | string | 商品标题 |\n\n## 脚本调试（可选）\n\n仓库内提供 **`scripts/etsy_product_query.py`**（Python 3，仅标准库）。\n\n- **默认路径段**：`ehunt/etsy/productQuery`（可用 `LINKFOX_EHUNT_PRODUCT_QUERY_PATH` 覆盖）\n- **网关**：`https://tool-gateway.linkfox.com`（可用 `LINKFOX_TOOL_GATEWAY_BASE` 覆盖）；**鉴权**：`LINKFOXAGENT_API_KEY`（申请见 https://skill.linkfox.com/linkfoxskills/guide.htm ）\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\npython scripts/etsy_product_query.py '{\"searchKey\": \"poster\", \"currencyCode\": \"USD\", \"page\": 1, \"pageSize\": 20}'\n```\n\nFile v1.0.4:skill-card.md\n\n## Description: <br>\nQueries Etsy listings through LinkFox's `_ehunt_productQuery` MCP tool and filters products by keyword or URL, price, sales, favorites, reviews, listing date, category, product type, and Etsy tags. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users and developers use this skill to search, compare, and screen Etsy products with LinkFox-provided marketplace data. It supports product research workflows that need structured filters for price, sales, reviews, favorites, listing status, product type, and tags. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The optional script can send the LinkFox API key, Etsy search terms or listing URLs, and session metadata to an environment-selected gateway. <br>\nMitigation: Review the configured gateway before use, keep API keys in trusted environments only, and avoid running the script where gateway-related environment variables can be controlled by untrusted parties. <br>\nRisk: Full result files and cache data can remain on disk under linkfox directories in the workspace, home directory, or temp directory. <br>\nMitigation: Review local retention requirements, avoid sensitive queries when persistent local files are not acceptable, and clean generated linkfox data when it is no longer needed. <br>\n\n\n## Reference(s): <br>\n- [_ehunt_productQuery API reference](references/api.md) <br>\n- [ClawHub skill page](https://clawhub.ai/linkfox-ai/skills/linkfox-etsy-product-query) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [API Calls, JSON, Files, Shell commands, Guidance] <br>\n**Output Format:** [JSON responses and concise Markdown guidance; optional script output may include saved JSON files plus stdout summaries.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Optional script requires a LinkFox API key, sends query parameters and session metadata to the configured LinkFox gateway, caches responses for 24 hours, and writes full result data under linkfox directories.] <br>\n\n## Skill Version(s): <br>\n1.0.4 (source: server-resolved release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>","readmeExcerpt":"Skill: Etsy商品查询 Owner: linkfox-ai Summary: 按多维度筛选 Etsy 商品（关键词/URL、价格、销量、收藏、评论、上架时间、类目、手工/复古等类型、Pick/Bestsell/Raving 等标签）。当用户提到 Etsy 商品、Etsy listing、Etsy 选品、Etsy 爆款、Etsy handmade、Etsy vintage、etsy items、Etsy商品查询时触发。即使用户未提及工具名，只要在 Etsy 上搜商品、看销量/价格/标签或筛品，也应触发此技能。 Tags: latest:1.0.10 Version history: v1.0.10 | 2026-09-14T05:02:41.186Z | user Update from 1.0.9 to 1.0.10 v1.0.9 | 2026-08-14T14:51:09.965Z | user Update from","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"export LINKFOXAGENT_API_KEY=\"<your-key>\"\npython scripts/etsy_product_query.py '{\"searchKey\": \"poster\", \"currencyCode\": \"USD\", \"page\": 1, \"pageSize\": 20}'"},{"language":"bash","snippet":"export LINKFOXAGENT_API_KEY=\"<your-key>\"\npython scripts/etsy_product_query.py '{\"searchKey\": \"poster\", \"currencyCode\": \"USD\", \"page\": 1, \"pageSize\": 20}'"},{"language":"bash","snippet":"export LINKFOXAGENT_API_KEY=\"<your-key>\"\npython scripts/etsy_product_query.py '{\"searchKey\": \"poster\", \"currencyCode\": \"USD\", \"page\": 1, \"pageSize\": 20}'"},{"language":"bash","snippet":"export LINKFOXAGENT_API_KEY=\"<your-key>\"\npython scripts/etsy_product_query.py '{\"searchKey\": \"poster\", \"currencyCode\": \"USD\", \"page\": 1, \"pageSize\": 20}'"},{"language":"bash","snippet":"export LINKFOXAGENT_API_KEY=\"<your-key>\"\npython scripts/etsy_product_query.py '{\"searchKey\": \"poster\", \"currencyCode\": \"USD\", \"page\": 1, \"pageSize\": 20}'"},{"language":"bash","snippet":"export LINKFOXAGENT_API_KEY=\"<your-key>\"\npython scripts/etsy_product_query.py '{\"searchKey\": \"poster\", \"currencyCode\": \"USD\", \"page\": 1, \"pageSize\": 20}'"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: linkfox-etsy-product-query\ndescription: 按多维度筛选 Etsy 商品（关键词/URL、价格、销量、收藏、评论、上架时间、类目、手工/复古等类型、Pick/Bestsell/Raving 等标签）。当用户提到 Etsy 商品、Etsy listing、Etsy 选品、Etsy 爆款、Etsy handmade、Etsy vintage、etsy items、Etsy商品查询时触发。即使用户未提及工具名，只要在 Etsy 上搜商品、看销量/价格/标签或筛品，也应触发此技能。\n---\n\n# Etsy 商品查询（`_ehunt_productQuery`）\n\n## 要点\n\n- **分页**：`page` 从 1 起；`pageSize` 默认 20、最大 100（建议 ≤50）。\n- **区间入参**：与店铺接口相同思路，`begin*` / `end*` 成对。\n- **排序**：`sortBy` 为 **1~6**（上游 `sort_by`）。`sortDesc`：**1=降序，2=升序**（与 `_ehunt_storeQuery` 的 1/0 不同）。\n- **商品类型** `productType`：`1` 手工、`2` 复古、`3` 数字、`4` 定制、`9` 其他，多选用逗号。\n- **货币**：`currencyCode` 默认 `USD`。\n- **类目 id**：`category` 为单品类 ID；可先通过类目检索类技能拿到 id。\n\n## 脚本（可选）\n\n命令行调试：`python scripts/etsy_product_query.py '<JSON>'`（需 `LINKFOXAGENT_API_KEY`）。详见 [references/api.md](references/api.md) 末尾。\n\n## 参考\n\n入参/出参表见 [references/api.md](references/api.md)。\n\n## 解决认证和算力问题\n发生以下异常情况时，采用 references/onboarding.md 引导解决问题：\n\n### 异常情况\n- **未配置API Key**：环境变量未配置 `LINKFOX_AGENT_API_KEY`，也未配置 `LINKFOXAGENT_API_KEY`。\n- **响应401或402状态码**\n- **响应提示算力或余额不足**：消息含\"算力余额不足/计费不足/余额不足/quota exceeded/insufficient balance/套餐到期/需充值/请充值\"，或类似含义的内容。\n\n## 算力消耗规则\n\n按动态规则计费：消耗算力 = 返回的商品数 × 1.8。按本页返回条数计费；翻到下一页，本质上是再发一次请求，再按下一页返回条数重新计算。\n\n> **重要**：本技能的服务按倍数动态计算，可能一次性消耗大量算力，必须提醒用户，由用户决定是否继续。"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-etsy-product-query\",\n  \"version\": \"1.0.10\",\n  \"publishedAt\": 1789362161186\n}"},{"path":"references/api.md","content":"# `_ehunt_productQuery` API 参考\n\n## 调用说明\n\n- **工具名**：`_ehunt_productQuery`（LinkFox MCP，`serverName`：第三方数据服务）。\n- **MCP 展示名**：Etsy商品查询。\n- **说明**：参数与返回结构以当前网关返回为准；若上游返回 JSON 根级 `code` 字段，成功值以实网为准。\n\n## 请求参数（JSON）\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| beginFavorites | integer，≥0 | 否 | 收藏数（起始），与结束值共同组成上游 favorites |\n| beginFavoritesWeekly | integer，≥0 | 否 | 周新增收藏数（起始），与结束值共同组成上游 favorites_weekly |\n| beginPrice | number，≥0 | 否 | 价格（起始），与结束价共同组成上游 price（如 20~100）；仅填一侧时上游为 起始~ 或 ~结束 |\n| beginReviews | integer，≥0 | 否 | 评论数（起始），与结束值共同组成上游 reviews |\n| beginReviewsWeekly | integer，≥0 | 否 | 周新增评论数（起始），与结束值共同组成上游 reviews_weekly |\n| beginSales | integer，≥0 | 否 | 总销量（起始），与结束值共同组成上游 sales |\n| beginSalesWeekly | integer，≥0 | 否 | 周销量（起始），与结束值共同组成上游 sales_weekly（如 1~100） |\n| category | string, maxLen=1000 | 否 | 商品分类 ID（单品类），详见 商品分类接口 |\n| country | string, maxLen=1000 | 否 | 发货国家 |\n| currencyCode | string, default=USD, maxLen=1000 | 否 | 货币代码 |\n| endFavorites | integer，≥0 | 否 | 收藏数（结束） |\n| endFavoritesWeekly | integer，≥0 | 否 | 周新增收藏数（结束） |\n| endPrice | number，≥0 | 否 | 价格（结束），与起始价共同组成上游 price |\n| endReviews | integer，≥0 | 否 | 评论数（结束） |\n| endReviewsWeekly | integer，≥0 | 否 | 周新增评论数（结束） |\n| endSales | integer，≥0 | 否 | 总销量（结束） |\n| endSalesWeekly | integer，≥0 | 否 | 周销量（结束） |\n| isBestsell | integer | 否 | 是否畅销商品 |\n| isPick | integer | 否 | 是否 Pick 商品 |\n| isRaving | integer | 否 | 是否 Raving 商品 |\n| listedTime | string, pattern | 否 | 上架时间不早于该日期（YYYY-MM-DD） |\n| page | integer，≥1，默认 1 | 否 | 页码（从 1 开始） |\n| pageSize | integer，1~100，默认 20 | 否 | 每页条数，最大 100，建议不超过 50 |\n| productType | string，须符合 schema 正则 | 否 | 商品类型，多个逗号分隔：1=手工 2=复古 3=数字 4=定制 9=其他 |\n| searchKey | string, maxLen=500 | 否 | 搜索关键词或 Etsy 商品 URL |\n| sortBy | integer (1~6) | 否 | 排序字段（对应上游 sort_by，取值 1~6） |\n| sortDesc | integer | 否 | 排序方向（对应上游 `desc`）。schema 示例：降序 `1`、升序 `2`（与店铺查询的 `sortDesc` 编码不同） |\n| status | integer | 否 | 商品状态（示例：1 上架，0 下架） |\n\n## 响应主要字段\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| total | integer | 记录数（本页返回条数，便于与列表长度对齐） |\n| sourceTool | string | 工具类型：ehunt |\n| sourceType | string | 来源类型：etsy |\n| columns | array | 渲染的列 |\n| costToken | integer | 消耗 token（按本页返回条数估算） |\n| productNum | integer | 符合条件的商品总数（上游 product_num） |\n| title | string | 标题 |\n| type | string | 渲染的样式 |\n| products | array | Etsy 商品列表 |\n\n### `products[]` 元素\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| category | string | 类目名称 |\n| favorites | integer | 收藏数 |\n| favoritesWeekly | integer | 周新增收藏数 |\n| imageUrl | string | 主图 URL |\n| isBestsell | integer | 是否畅销：1=是 |\n| isPick | integer | 是否 Pick：1=是 |\n| isRaving | integer | 是否 Raving：1=是 |\n| price | number | 价格 |\n| productUrl | string | 商品链接 |\n| releaseTime | string | 上架/发布时间 |\n| reviews | integer | 评论数 |\n| reviewsWeekly | integer | 周新增评论数 |\n| salesTotal | integer | 总销量 |\n| salesWeekly | integer | 周销量 |\n| shipsFrom | string | 发货国家 |\n| status | integer | 商品状态：1=上架，0=下架 |\n| storeName | string | 店铺名称 |\n| tags | string | 标签 |\n| title | string | 商品标题 |\n\n## 脚本调试（可选）\n\n仓库内提供 **`scripts/etsy_product_que"},{"path":"references/onboarding.md","content":"# 解决认证和算力问题\n\n调用本 skill 时若网关返回 **auth** 或 **billing** 错误，走本 skill 自带的 `scripts/onboarding.py` 完成引导。\n\n**auth 场景**：`errcode=401` 或消息含 `authorized error`/`鉴权失败`/`未授权`/`unauthorized`；或 `LINKFOX_AGENT_API_KEY` 与 `LINKFOXAGENT_API_KEY` 均为空。\n1. 若已配置 key → 先让用户重启会话（最常见误判），仍失败让用户重新取 key 或换手机号重注册\n2. 未配置 → 询问：自助去 https://agent.linkfox.com/ 取 key，或提供手机号让脚本注册\n3. 手机号路径：\n   - `python scripts/onboarding.py send-code <phone>` → 展示 JSON 里的 phone/agreements\n   - 收到验证码后：`python scripts/onboarding.py login <phone> <code>`\n   - 拿到 `api_key` 后把下面三平台配置转发给用户，提示重启会话生效：\n     - Windows PowerShell（永久）：`setx LINKFOX_AGENT_API_KEY \"<key>\"`\n     - macOS zsh：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.zshrc && source ~/.zshrc`\n     - Linux bash：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.bashrc && source ~/.bashrc`\n     - 变量名 `LINKFOX_AGENT_API_KEY`（主推）或 `LINKFOXAGENT_API_KEY`（老规范）任一即可\n\n**billing 场景**：`errcode=402` 或消息含 `算力/余额/quota/insufficient/充值/套餐到期`。\n- `python scripts/onboarding.py list-plans` → 有 AskUserQuestion 就弹菜单，否则输出编号清单让用户选\n- 校验 `plan_id` ∈ 清单、支付方式 ∈ 该套餐 `available_methods`（通常 `wechat/alipay`）\n- `python scripts/onboarding.py order <plan_id> <method>` → 展示优先级 PNG > `pay_url` > `ascii_qr`（标注兜底）\n- 已付款可选调 `python scripts/onboarding.py query <order_id>`，不主动轮询\n\n排除 `errcode=403`（无权限，不归入这两类）。所有子命令输出 stdout JSON，`error` 字段已含阶段前缀，透传给用户即可。完整用法：`python scripts/onboarding.py --help`。"},{"path":"skill-card.md","content":"## Description:\n\nEtsy商品查询 helps agents filter Etsy listings by keyword or URL, price, sales, favorites, reviews, listing date, category, product type, and marketplace tags.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal sellers, ecommerce analysts, and agents use this skill to search and compare Etsy products by commercial signals such as sales, price, favorites, reviews, category, listing age, and product tags.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill handles LinkFox account onboarding, API keys, and paid billing flows.\n\nMitigation: Install and use it only when LinkFox is trusted, avoid exposing API keys in shared files or logs, and require explicit user confirmation before onboarding or payment commands.\n\nRisk: Endpoint override environment variables can direct requests away from the default LinkFox services.\n\nMitigation: Use endpoint overrides only when the destination is controlled and expected.\n\nRisk: Etsy product queries consume paid credits dynamically and larger result pages can increase cost.\n\nMitigation: Confirm page size and expected cost with the user before running large queries or pagination.\n\n## Reference(s):\n\n- [_ehunt_productQuery API reference](artifact/references/api.md)\n- [Authentication and billing onboarding](artifact/references/onboarding.md)\n- [ClawHub skill page](https://clawhub.ai/linkfox-ai/skills/linkfox-etsy-product-query)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, JSON, files, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with inline shell commands, JSON API parameters, stdout summaries, and saved JSON response files.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Query results may be summarized when responses are large; full responses are saved as JSON files by the query script.]\n\n## Skill Version(s):\n\n1.0.10 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"按多维度筛选 Etsy 商品（关键词/URL、价格、销量、收藏、评论、上架时间、类目、手工/复古等类型、Pick/Bestsell/Raving 等标签）。当用户提到 Etsy 商品、Etsy listing、Etsy 选品、Etsy 爆款、Etsy handmade、Etsy vintage、etsy items、Etsy商品查询时触发。即使用户未提及工具名，只要在 Etsy 上搜商品、看销量/价格/标签或筛品，也应触发此技能。 Skill: Etsy商品查询 Owner: linkfox-ai Summary: 按多维度筛选 Etsy 商品（关键词/URL、价格、销量、收藏、评论、上架时间、类目、手工/复古等类型、Pick/Bestsell/Raving 等标签）。当用户提到 Etsy 商品、Etsy listing、Etsy 选品、Etsy 爆款、Etsy handmade、Etsy vintage、etsy items、Etsy商品查询时触发。即使用户未提及工具名，只要在 Etsy 上搜商品、看销量/价格/标签或筛品，也应触发此技能。 Tags: latest:1.0.10 Version history: v1.0.10 | 2026-09-14T05:02:41.186Z | user Update from 1.0.9 to 1.0.10 v1.0.9 | 2026-08-14T14:51:09.965Z | user Update from","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1092,"uniquenessScore":52,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T14:53:33.908Z","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-10T14:53:33.908Z","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-10T17:37:23.220Z","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"}]}}}