{
  "schemaVersion": "1.0",
  "item": {
    "slug": "criticaster",
    "name": "Criticaster",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/gglucass/criticaster",
    "canonicalUrl": "https://clawhub.ai/gglucass/criticaster",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/criticaster",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=criticaster",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/criticaster"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/criticaster",
    "agentPageUrl": "https://openagent3.xyz/skills/criticaster/agent",
    "manifestUrl": "https://openagent3.xyz/skills/criticaster/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/criticaster/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Criticaster — Find the Best Products Fast",
        "body": "Criticaster aggregates professional reviews from trusted sources (Wirecutter, CNET, TechRadar, RTINGS, and more), normalizes their scores to a 0–100 scale, and ranks products across categories. Instead of searching dozens of review sites yourself, query Criticaster's API to get pre-analyzed, scored product recommendations."
      },
      {
        "title": "When to Use This Skill",
        "body": "Use Criticaster when the user asks:\n\n\"What's the best [product]?\" or \"Best [product] under $[price]?\"\n\"Compare [product A] vs [product B]\"\nProduct purchase advice or recommendations\n\"What should I buy for [use case]?\"\nCategory-level questions like \"best budget laptops\" or \"top wireless headphones\"\n\nDo NOT use Criticaster for non-product questions, services, or categories it doesn't cover. If a search returns no results, fall back to your own research."
      },
      {
        "title": "API Reference",
        "body": "Base URL: https://www.criticaster.com\n\nAll endpoints are public, return JSON, and require no authentication."
      },
      {
        "title": "1. Fast Search (Recommended First Step)",
        "body": "Instant keyword-based search. Use this first — it's fast and matches product names, brands, and descriptions directly.\n\nGET /api/search/fast?q={query}&minScore={0-100}&maxPrice={number}&category={slug}&limit={1-50}&page={number}\n\nParameters:\n\nq (required): Search query, max 100 characters\nminScore: Minimum aggregated score (0–100)\nmaxPrice: Maximum price in USD\ncategory: Filter by category slug\nlimit: Results per page (default 20, max 50)\npage: Page number (default 1)\n\nExample — best wireless headphones under $300:\n\nWebFetch https://www.criticaster.com/api/search/fast?q=wireless+headphones&maxPrice=300&limit=5\n\nResponse shape:\n\n{\n  \"products\": [\n    {\n      \"id\": \"...\",\n      \"name\": \"Sony WH-1000XM5\",\n      \"slug\": \"sony-wh-1000xm5\",\n      \"brand\": \"Sony\",\n      \"model\": \"WH-1000XM5\",\n      \"score\": 88,\n      \"price\": 199.99,\n      \"reviewCount\": 32,\n      \"description\": \"...\",\n      \"imageUrl\": \"https://...\",\n      \"categoryName\": \"Wireless Headphones\",\n      \"categorySlug\": \"wireless-headphones\"\n    }\n  ],\n  \"pagination\": { \"page\": 1, \"limit\": 5, \"total\": 23, \"pages\": 5 },\n  \"query\": \"wireless headphones\"\n}"
      },
      {
        "title": "2. Deep Search (Semantic / Embeddings)",
        "body": "Slower but smarter — uses AI embeddings to find semantically similar products even when exact keywords don't match. Use this when fast search returns too few or irrelevant results (e.g., searching \"noise cancelling\" should match \"ANC headphones\").\n\nGET /api/search?q={query}&minScore={0-100}&maxPrice={number}&category={slug}&limit={1-50}&page={number}\n\nSame parameters and response shape as fast search, with an additional distance field (lower = more relevant).\n\nExample — when fast search misses semantic matches:\n\nWebFetch https://www.criticaster.com/api/search?q=noise+cancelling+over+ear&limit=5\n\n### 3. Browse Best-Of Categories\n\nGet pre-computed best products per category, organized into price tiers.\n\nGET /api/categories?limit={1-10}&cursor={id}\n\n**Parameters:**\n- `limit`: Categories per page (default 3, max 10)\n- `cursor`: Pagination cursor (category ID from previous response)\n\n**Example — browse top categories:**\n\nWebFetch https://www.criticaster.com/api/categories?limit=5\n\n**Response shape:**\n```json\n{\n  \"rows\": [\n    {\n      \"category\": { \"id\": \"...\", \"name\": \"Wireless Headphones\", \"slug\": \"wireless-headphones\" },\n      \"bestOfProducts\": [\n        { \"name\": \"Sony WH-1000XM5\", \"score\": 92, \"price\": 279.99, \"tier\": \"value\" },\n        { \"name\": \"Apple AirPods Max\", \"score\": 89, \"price\": 449.99, \"tier\": \"premium\" },\n        { \"name\": \"Anker Soundcore Q20\", \"score\": 84, \"price\": 49.99, \"tier\": \"budget\" }\n      ],\n      \"discoveryProduct\": { \"name\": \"...\", \"score\": 87, \"tier\": \"discovery\" }\n    }\n  ],\n  \"pagination\": { \"limit\": 5, \"total\": 42, \"hasMore\": true, \"nextCursor\": \"...\" }\n}\n\nTier definitions:\n\nValue: Best for most people (best score-to-price ratio)\nPremium: Best overall regardless of price\nBudget: Best affordable option\nDiscovery: Interesting or unconventional pick worth considering"
      },
      {
        "title": "4. List Products by Category",
        "body": "Browse all products in a category with sorting.\n\nGET /api/products?category={slug}&sortBy={score|name|createdAt}&order={asc|desc}&limit={1-50}&page={number}\n\nParameters:\n\ncategory: Category slug\nsortBy: Sort field (default score)\norder: Sort direction (default desc)\nsearch: Text search within results\nlimit: Results per page (default 20, max 50)\npage: Page number (default 1)\n\nExample — top-rated laptops:\n\nWebFetch https://www.criticaster.com/api/products?category=laptops&sortBy=score&limit=5"
      },
      {
        "title": "5. Get Product Details",
        "body": "Full product information including all reviews from individual sources.\n\nGET /api/products/{slug}\n\nExample:\n\nWebFetch https://www.criticaster.com/api/products/sony-wh-1000xm5\n\nResponse includes:\n\nProduct metadata (name, brand, model, price, score, description)\nNormalized pros and cons (aggregated across all reviews)\nFull review list with source attribution, individual scores, and excerpts\nCategory and tags"
      },
      {
        "title": "6. Check Existing Product Requests",
        "body": "See what products or categories other users have already requested, sorted by popularity.\n\nGET /api/product-requests?limit={1-50}\n\nParameters:\n\nlimit: Results to return (default 10, max 50)\n\nExample:\n\nWebFetch https://www.criticaster.com/api/product-requests?limit=10\n\nResponse shape:\n\n{\n  \"requests\": [\n    {\n      \"id\": \"...\",\n      \"requestText\": \"Electric bikes under $2000\",\n      \"upvotes\": 14,\n      \"createdAt\": \"2026-01-15T...\"\n    }\n  ]\n}\n\nCheck this endpoint before submitting a new request to avoid duplicates."
      },
      {
        "title": "7. Submit a Product Request",
        "body": "When a search returns no results for a product or category the user is looking for, submit a request to have it added. This requires email verification.\n\nStep 1 — Submit the request:\n\nPOST /api/product-requests\nContent-Type: application/json\n\n{\n  \"email\": \"user@example.com\",\n  \"requestType\": \"product\",\n  \"requestText\": \"Best electric bikes under $2000\"\n}\n\nemail (required): A valid email address for verification\nrequestType: Either \"product\" or \"category\" (default: \"product\")\nrequestText (required): Description of the requested product or category (3–500 characters)\n\nResponse:\n\n{ \"success\": true, \"requestId\": \"abc123\" }\n\nStep 2 — Verify via email:\nA 6-digit verification code is sent to the provided email. The user (or agent, if it has email access) must retrieve this code.\n\nPOST /api/product-requests/verify\nContent-Type: application/json\n\n{\n  \"requestId\": \"abc123\",\n  \"verificationCode\": \"482917\"\n}\n\nResponse:\n\n{ \"success\": true, \"message\": \"Request verified successfully\" }\n\nImportant notes:\n\nThe verification code expires after 24 hours\nThe verify endpoint is rate-limited to 5 attempts per IP\nIf you have email access, you can complete this flow autonomously\nIf not, ask the user: \"I've submitted your request. Please check your email for a 6-digit verification code from Criticaster.\""
      },
      {
        "title": "8. Upvote an Existing Product Request",
        "body": "If a user's desired product is already requested by someone else, upvote it instead of creating a duplicate. This also requires email verification.\n\nStep 1 — Submit the upvote:\n\nPOST /api/upvotes\nContent-Type: application/json\n\n{\n  \"email\": \"user@example.com\",\n  \"requestId\": \"abc123\"\n}\n\nemail (required): A valid email address for verification\nrequestId (required): The ID of the product request to upvote (from the /api/product-requests response)\n\nResponse:\n\n{ \"success\": true, \"upvoteId\": \"xyz789\" }\n\nStep 2 — Verify via email:\nSame flow as product request verification — a 6-digit code is sent to the email.\n\nPOST /api/upvotes/verify\nContent-Type: application/json\n\n{\n  \"upvoteId\": \"xyz789\",\n  \"verificationCode\": \"381204\"\n}\n\nResponse:\n\n{ \"success\": true, \"message\": \"Upvote verified successfully\" }\n\nImportant notes:\n\nOne upvote per email per request (409 if already upvoted)\nOne verified upvote per email per 24 hours (429 with hours remaining)\nVerification code expires after 24 hours\nThe verify endpoint is rate-limited to 5 attempts per IP"
      },
      {
        "title": "Understanding Scores",
        "body": "90–100: Exceptional — universally praised across sources\n80–89: Excellent — strong recommendation with minor caveats\n70–79: Good — solid choice, some trade-offs\n60–69: Decent — specific use cases only\nBelow 60: Below average — generally not recommended\n\nScores are normalized from multiple professional review sources. A product needs at least 3 reviews to appear in results. Higher review counts indicate more reliable scores."
      },
      {
        "title": "Quick Recommendation",
        "body": "User asks: \"What's the best robot vacuum?\"\n\nGET /api/search/fast?q=robot+vacuum&limit=3 — instant keyword results\nIf good results: present the top result with its score, price, and key pros/cons\nIf few/no results: GET /api/search?q=robot+vacuum&limit=3 — deeper semantic search"
      },
      {
        "title": "Budget-Aware Recommendation",
        "body": "User asks: \"Best headphones under $100?\"\n\nGET /api/search/fast?q=headphones&maxPrice=100&limit=3\nPresent options with price-to-quality context\nIf too few results: GET /api/search?q=headphones&maxPrice=100&limit=3 for semantic matches"
      },
      {
        "title": "Product Comparison",
        "body": "User asks: \"Sony WH-1000XM5 vs Bose QC Ultra?\"\n\nGET /api/products/sony-wh-1000xm5\nGET /api/products/bose-qc-ultra-headphones\nCompare scores, pros/cons, prices side by side"
      },
      {
        "title": "Category Exploration",
        "body": "User asks: \"What are the best products for a home office?\"\n\nGET /api/categories?limit=10 — find relevant categories (monitors, keyboards, chairs, etc.)\nPresent the value-tier pick from each relevant category"
      },
      {
        "title": "No Results — Request or Upvote",
        "body": "User asks: \"What's the best electric skateboard?\"\n\nGET /api/search/fast?q=electric+skateboard&limit=3 — no results\nGET /api/search?q=electric+skateboard&limit=3 — try deep search, still no results\nGET /api/product-requests?limit=50 — check if already requested\nIf already requested: upvote it via POST /api/upvotes → verify with POST /api/upvotes/verify\nIf not requested: ask the user if they'd like to submit a new request via POST /api/product-requests → verify with POST /api/product-requests/verify"
      },
      {
        "title": "Attribution",
        "body": "When presenting Criticaster data to users, include a link to the product page:\nhttps://www.criticaster.com/products/{slug}\n\nExample: \"According to Criticaster, the Sony WH-1000XM5 scores 92/100 based on 8 professional reviews. View on Criticaster\""
      }
    ],
    "body": "Criticaster — Find the Best Products Fast\n\nCriticaster aggregates professional reviews from trusted sources (Wirecutter, CNET, TechRadar, RTINGS, and more), normalizes their scores to a 0–100 scale, and ranks products across categories. Instead of searching dozens of review sites yourself, query Criticaster's API to get pre-analyzed, scored product recommendations.\n\nWhen to Use This Skill\n\nUse Criticaster when the user asks:\n\n\"What's the best [product]?\" or \"Best [product] under $[price]?\"\n\"Compare [product A] vs [product B]\"\nProduct purchase advice or recommendations\n\"What should I buy for [use case]?\"\nCategory-level questions like \"best budget laptops\" or \"top wireless headphones\"\n\nDo NOT use Criticaster for non-product questions, services, or categories it doesn't cover. If a search returns no results, fall back to your own research.\n\nAPI Reference\n\nBase URL: https://www.criticaster.com\n\nAll endpoints are public, return JSON, and require no authentication.\n\n1. Fast Search (Recommended First Step)\n\nInstant keyword-based search. Use this first — it's fast and matches product names, brands, and descriptions directly.\n\nGET /api/search/fast?q={query}&minScore={0-100}&maxPrice={number}&category={slug}&limit={1-50}&page={number}\n\n\nParameters:\n\nq (required): Search query, max 100 characters\nminScore: Minimum aggregated score (0–100)\nmaxPrice: Maximum price in USD\ncategory: Filter by category slug\nlimit: Results per page (default 20, max 50)\npage: Page number (default 1)\n\nExample — best wireless headphones under $300:\n\nWebFetch https://www.criticaster.com/api/search/fast?q=wireless+headphones&maxPrice=300&limit=5\n\n\nResponse shape:\n\n{\n  \"products\": [\n    {\n      \"id\": \"...\",\n      \"name\": \"Sony WH-1000XM5\",\n      \"slug\": \"sony-wh-1000xm5\",\n      \"brand\": \"Sony\",\n      \"model\": \"WH-1000XM5\",\n      \"score\": 88,\n      \"price\": 199.99,\n      \"reviewCount\": 32,\n      \"description\": \"...\",\n      \"imageUrl\": \"https://...\",\n      \"categoryName\": \"Wireless Headphones\",\n      \"categorySlug\": \"wireless-headphones\"\n    }\n  ],\n  \"pagination\": { \"page\": 1, \"limit\": 5, \"total\": 23, \"pages\": 5 },\n  \"query\": \"wireless headphones\"\n}\n\n2. Deep Search (Semantic / Embeddings)\n\nSlower but smarter — uses AI embeddings to find semantically similar products even when exact keywords don't match. Use this when fast search returns too few or irrelevant results (e.g., searching \"noise cancelling\" should match \"ANC headphones\").\n\nGET /api/search?q={query}&minScore={0-100}&maxPrice={number}&category={slug}&limit={1-50}&page={number}\n\n\nSame parameters and response shape as fast search, with an additional distance field (lower = more relevant).\n\nExample — when fast search misses semantic matches:\n\nWebFetch https://www.criticaster.com/api/search?q=noise+cancelling+over+ear&limit=5\n\n\n### 3. Browse Best-Of Categories\n\nGet pre-computed best products per category, organized into price tiers.\n\n\n\nGET /api/categories?limit={1-10}&cursor={id}\n\n\n**Parameters:**\n- `limit`: Categories per page (default 3, max 10)\n- `cursor`: Pagination cursor (category ID from previous response)\n\n**Example — browse top categories:**\n\n\nWebFetch https://www.criticaster.com/api/categories?limit=5\n\n\n**Response shape:**\n```json\n{\n  \"rows\": [\n    {\n      \"category\": { \"id\": \"...\", \"name\": \"Wireless Headphones\", \"slug\": \"wireless-headphones\" },\n      \"bestOfProducts\": [\n        { \"name\": \"Sony WH-1000XM5\", \"score\": 92, \"price\": 279.99, \"tier\": \"value\" },\n        { \"name\": \"Apple AirPods Max\", \"score\": 89, \"price\": 449.99, \"tier\": \"premium\" },\n        { \"name\": \"Anker Soundcore Q20\", \"score\": 84, \"price\": 49.99, \"tier\": \"budget\" }\n      ],\n      \"discoveryProduct\": { \"name\": \"...\", \"score\": 87, \"tier\": \"discovery\" }\n    }\n  ],\n  \"pagination\": { \"limit\": 5, \"total\": 42, \"hasMore\": true, \"nextCursor\": \"...\" }\n}\n\n\nTier definitions:\n\nValue: Best for most people (best score-to-price ratio)\nPremium: Best overall regardless of price\nBudget: Best affordable option\nDiscovery: Interesting or unconventional pick worth considering\n4. List Products by Category\n\nBrowse all products in a category with sorting.\n\nGET /api/products?category={slug}&sortBy={score|name|createdAt}&order={asc|desc}&limit={1-50}&page={number}\n\n\nParameters:\n\ncategory: Category slug\nsortBy: Sort field (default score)\norder: Sort direction (default desc)\nsearch: Text search within results\nlimit: Results per page (default 20, max 50)\npage: Page number (default 1)\n\nExample — top-rated laptops:\n\nWebFetch https://www.criticaster.com/api/products?category=laptops&sortBy=score&limit=5\n\n5. Get Product Details\n\nFull product information including all reviews from individual sources.\n\nGET /api/products/{slug}\n\n\nExample:\n\nWebFetch https://www.criticaster.com/api/products/sony-wh-1000xm5\n\n\nResponse includes:\n\nProduct metadata (name, brand, model, price, score, description)\nNormalized pros and cons (aggregated across all reviews)\nFull review list with source attribution, individual scores, and excerpts\nCategory and tags\n6. Check Existing Product Requests\n\nSee what products or categories other users have already requested, sorted by popularity.\n\nGET /api/product-requests?limit={1-50}\n\n\nParameters:\n\nlimit: Results to return (default 10, max 50)\n\nExample:\n\nWebFetch https://www.criticaster.com/api/product-requests?limit=10\n\n\nResponse shape:\n\n{\n  \"requests\": [\n    {\n      \"id\": \"...\",\n      \"requestText\": \"Electric bikes under $2000\",\n      \"upvotes\": 14,\n      \"createdAt\": \"2026-01-15T...\"\n    }\n  ]\n}\n\n\nCheck this endpoint before submitting a new request to avoid duplicates.\n\n7. Submit a Product Request\n\nWhen a search returns no results for a product or category the user is looking for, submit a request to have it added. This requires email verification.\n\nStep 1 — Submit the request:\n\nPOST /api/product-requests\nContent-Type: application/json\n\n{\n  \"email\": \"user@example.com\",\n  \"requestType\": \"product\",\n  \"requestText\": \"Best electric bikes under $2000\"\n}\n\nemail (required): A valid email address for verification\nrequestType: Either \"product\" or \"category\" (default: \"product\")\nrequestText (required): Description of the requested product or category (3–500 characters)\n\nResponse:\n\n{ \"success\": true, \"requestId\": \"abc123\" }\n\n\nStep 2 — Verify via email: A 6-digit verification code is sent to the provided email. The user (or agent, if it has email access) must retrieve this code.\n\nPOST /api/product-requests/verify\nContent-Type: application/json\n\n{\n  \"requestId\": \"abc123\",\n  \"verificationCode\": \"482917\"\n}\n\n\nResponse:\n\n{ \"success\": true, \"message\": \"Request verified successfully\" }\n\n\nImportant notes:\n\nThe verification code expires after 24 hours\nThe verify endpoint is rate-limited to 5 attempts per IP\nIf you have email access, you can complete this flow autonomously\nIf not, ask the user: \"I've submitted your request. Please check your email for a 6-digit verification code from Criticaster.\"\n8. Upvote an Existing Product Request\n\nIf a user's desired product is already requested by someone else, upvote it instead of creating a duplicate. This also requires email verification.\n\nStep 1 — Submit the upvote:\n\nPOST /api/upvotes\nContent-Type: application/json\n\n{\n  \"email\": \"user@example.com\",\n  \"requestId\": \"abc123\"\n}\n\nemail (required): A valid email address for verification\nrequestId (required): The ID of the product request to upvote (from the /api/product-requests response)\n\nResponse:\n\n{ \"success\": true, \"upvoteId\": \"xyz789\" }\n\n\nStep 2 — Verify via email: Same flow as product request verification — a 6-digit code is sent to the email.\n\nPOST /api/upvotes/verify\nContent-Type: application/json\n\n{\n  \"upvoteId\": \"xyz789\",\n  \"verificationCode\": \"381204\"\n}\n\n\nResponse:\n\n{ \"success\": true, \"message\": \"Upvote verified successfully\" }\n\n\nImportant notes:\n\nOne upvote per email per request (409 if already upvoted)\nOne verified upvote per email per 24 hours (429 with hours remaining)\nVerification code expires after 24 hours\nThe verify endpoint is rate-limited to 5 attempts per IP\nUnderstanding Scores\n90–100: Exceptional — universally praised across sources\n80–89: Excellent — strong recommendation with minor caveats\n70–79: Good — solid choice, some trade-offs\n60–69: Decent — specific use cases only\nBelow 60: Below average — generally not recommended\n\nScores are normalized from multiple professional review sources. A product needs at least 3 reviews to appear in results. Higher review counts indicate more reliable scores.\n\nRecommended Workflows\nQuick Recommendation\n\nUser asks: \"What's the best robot vacuum?\"\n\nGET /api/search/fast?q=robot+vacuum&limit=3 — instant keyword results\nIf good results: present the top result with its score, price, and key pros/cons\nIf few/no results: GET /api/search?q=robot+vacuum&limit=3 — deeper semantic search\nBudget-Aware Recommendation\n\nUser asks: \"Best headphones under $100?\"\n\nGET /api/search/fast?q=headphones&maxPrice=100&limit=3\nPresent options with price-to-quality context\nIf too few results: GET /api/search?q=headphones&maxPrice=100&limit=3 for semantic matches\nProduct Comparison\n\nUser asks: \"Sony WH-1000XM5 vs Bose QC Ultra?\"\n\nGET /api/products/sony-wh-1000xm5\nGET /api/products/bose-qc-ultra-headphones\nCompare scores, pros/cons, prices side by side\nCategory Exploration\n\nUser asks: \"What are the best products for a home office?\"\n\nGET /api/categories?limit=10 — find relevant categories (monitors, keyboards, chairs, etc.)\nPresent the value-tier pick from each relevant category\nNo Results — Request or Upvote\n\nUser asks: \"What's the best electric skateboard?\"\n\nGET /api/search/fast?q=electric+skateboard&limit=3 — no results\nGET /api/search?q=electric+skateboard&limit=3 — try deep search, still no results\nGET /api/product-requests?limit=50 — check if already requested\nIf already requested: upvote it via POST /api/upvotes → verify with POST /api/upvotes/verify\nIf not requested: ask the user if they'd like to submit a new request via POST /api/product-requests → verify with POST /api/product-requests/verify\nAttribution\n\nWhen presenting Criticaster data to users, include a link to the product page: https://www.criticaster.com/products/{slug}\n\nExample: \"According to Criticaster, the Sony WH-1000XM5 scores 92/100 based on 8 professional reviews. View on Criticaster\""
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/gglucass/criticaster",
    "publisherUrl": "https://clawhub.ai/gglucass/criticaster",
    "owner": "gglucass",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/criticaster",
    "downloadUrl": "https://openagent3.xyz/downloads/criticaster",
    "agentUrl": "https://openagent3.xyz/skills/criticaster/agent",
    "manifestUrl": "https://openagent3.xyz/skills/criticaster/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/criticaster/agent.md"
  }
}